This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fwd: CPAN Upload: S/SA/SAPER/constant-1.12.tar.gz
[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 Mon Oct  8 10:22:27 CEST 2007 [metaconfig 3.0 PL70]
30 # (with additional metaconfig patches by perlbug@perl.org)
31
32 cat >c1$$ <<EOF
33 ARGGGHHHH!!!!!
34
35 SCO csh still thinks true is false.  Write to SCO today and tell them that next
36 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
37
38 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
39 we'd have to do is go in and swap the && and || tokens, wherever they are.)
40
41 [End of diatribe. We now return you to your regularly scheduled programming...]
42 EOF
43 cat >c2$$ <<EOF
44
45 OOPS!  You naughty creature!  You didn't run Configure with sh!
46 I will attempt to remedy the situation by running sh for you...
47 EOF
48
49 true || cat c1$$ c2$$
50 true || exec sh $0 $argv:q
51
52 (exit $?0) || cat c2$$
53 (exit $?0) || exec sh $0 $argv:q
54 rm -f c1$$ c2$$
55
56 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
57         cat >&4 <<EOF
58 ***
59 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
60 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
61 *** Please read the README.plan9 for further instructions.
62 *** Cannot continue, aborting.
63 ***
64 EOF
65         exit 1
66 fi
67
68 if test ! -c /dev/null ; then
69         cat >&4 <<EOF
70 ***
71 *** I'm sorry, but /dev/null appears to be a file rather than a device.
72 *** Please consult your operating sytem's notes for making a device
73 *** in /dev.
74 *** Cannot continue, aborting.
75 ***
76 EOF
77         exit 1
78 fi
79
80 : compute my invocation name
81 me=$0
82 case "$0" in
83 */*)
84         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
85         test "$me" || me=$0
86         ;;
87 esac
88
89 : Proper separator for the PATH environment variable
90 p_=:
91 : On OS/2 this directory should exist if this is not floppy only system :-]
92 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
93     if test -n "$OS2_SHELL"; then
94                 p_=\;
95                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
96                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
97                 is_os2=yes
98         elif test -n "$DJGPP"; then
99                 case "X${MACHTYPE:-nonesuchmach}" in
100                 *cygwin) ;;
101                 *) p_=\; ;;
102                 esac
103         fi
104 fi
105
106 : Proper PATH setting
107 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
108 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
109 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
110 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
111 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
112 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
113 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
114 paths="$paths /sbin /usr/sbin /usr/libexec"
115 paths="$paths /system/gnu_library/bin"
116
117 for p in $paths
118 do
119         case "$p_$PATH$p_" in
120         *$p_$p$p_*) ;;
121         *) test -d $p && PATH=$PATH$p_$p ;;
122         esac
123 done
124
125 PATH=.$p_$PATH
126 export PATH
127
128 : shall we be using ksh?
129 inksh=''
130 needksh=''
131 avoidksh=''
132 newsh=/bin/ksh
133 changesh=''
134 if (PATH=.; alias -x) >/dev/null 2>&1; then
135                 inksh=true
136 fi
137 if test -f /hp-ux -a -f /bin/ksh; then
138         needksh='to avoid sh bug in "here document" expansion'
139 fi
140 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
141         if test X`/usr/bin/uname -v` = X4; then
142                 avoidksh="to avoid AIX 4's /bin/sh"
143                 newsh=/usr/bin/bsh
144         fi
145 fi
146 if test -f /osf_boot -a -f /usr/sbin/setld; then
147         if test X`/usr/bin/uname -s` = XOSF1; then
148                 avoidksh="to avoid Digital UNIX' ksh"
149                 newsh=/bin/sh
150                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
151         fi
152 fi
153 case "$inksh/$needksh" in
154 /[a-z]*)
155                 ENV=''
156                 changesh=true
157                 reason="$needksh"
158         ;;
159 esac
160 case "$inksh/$avoidksh" in
161 true/[a-z]*)
162         changesh=true
163         reason="$avoidksh"
164         ;;
165 esac
166 case "$inksh/$needksh-$avoidksh-" in
167 true/--)
168                 cat <<EOM
169 (I see you are using the Korn shell.  Some ksh's blow up on $me,
170 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
171 EOM
172         ;;
173 esac
174 case "$changesh" in
175 true)
176         export newsh
177         echo "(Feeding myself to $newsh $reason.)"
178         case "$0" in
179         Configure|*/Configure) exec $newsh $0 "$@";;
180         *) exec $newsh Configure "$@";;
181         esac
182         ;;
183 esac
184 test -x "${newsh}" || unset newsh
185
186 : if needed set CDPATH to a harmless value that is not chatty
187 : avoid bash 2.02 problems with empty CDPATH.
188 case "$CDPATH" in
189 '')     ;;
190 *)      case "$SHELL" in
191         *bash*) CDPATH='.' ;;
192         *)              CDPATH='' ;;
193         esac
194         ;;
195 esac
196 : Configure runs within the UU subdirectory
197 test -d UU || mkdir UU
198 cd UU && rm -f ./*
199
200 ccname=''
201 ccversion=''
202 ccsymbols=''
203 cppccsymbols=''
204 cppsymbols=''
205 from=''
206 run=''
207 targetarch=''
208 to=''
209 usecrosscompile=''
210 mistrustnm=''
211 perllibs=''
212 dynamic_ext=''
213 extensions=''
214 known_extensions=''
215 nonxs_ext=''
216 static_ext=''
217 useopcode=''
218 useposix=''
219 extras=''
220 d_bsd=''
221 d_eunice=''
222 d_xenix=''
223 eunicefix=''
224 Mcc=''
225 ar=''
226 awk=''
227 bash=''
228 bison=''
229 byacc=''
230 cat=''
231 chgrp=''
232 chmod=''
233 chown=''
234 comm=''
235 compress=''
236 cp=''
237 cpio=''
238 cpp=''
239 csh=''
240 date=''
241 echo=''
242 egrep=''
243 emacs=''
244 expr=''
245 find=''
246 flex=''
247 gmake=''
248 grep=''
249 gzip=''
250 inews=''
251 ksh=''
252 less=''
253 line=''
254 lint=''
255 ln=''
256 lp=''
257 lpr=''
258 ls=''
259 mail=''
260 mailx=''
261 make=''
262 mkdir=''
263 more=''
264 mv=''
265 nm=''
266 nroff=''
267 perl=''
268 pg=''
269 pmake=''
270 pr=''
271 rm=''
272 rmail=''
273 sed=''
274 sendmail=''
275 shar=''
276 sleep=''
277 smail=''
278 sort=''
279 submit=''
280 tail=''
281 tar=''
282 tbl=''
283 tee=''
284 test=''
285 touch=''
286 tr=''
287 troff=''
288 uname=''
289 uniq=''
290 uuname=''
291 vi=''
292 zcat=''
293 zip=''
294 full_ar=''
295 full_sed=''
296 libswanted=''
297 hint=''
298 myuname=''
299 osname=''
300 osvers=''
301 Author=''
302 Date=''
303 Header=''
304 Id=''
305 Locker=''
306 Log=''
307 RCSfile=''
308 Revision=''
309 Source=''
310 State=''
311 _a=''
312 _exe=''
313 _o=''
314 archobjs=''
315 exe_ext=''
316 firstmakefile=''
317 lib_ext=''
318 obj_ext=''
319 path_sep=''
320 rm_try=''
321 afs=''
322 afsroot=''
323 alignbytes=''
324 ansi2knr=''
325 archlib=''
326 archlibexp=''
327 d_archlib=''
328 installarchlib=''
329 archname=''
330 myarchname=''
331 d_atolf=''
332 d_atoll=''
333 baserev=''
334 bin=''
335 binexp=''
336 initialinstalllocation=''
337 installbin=''
338 userelocatableinc=''
339 byteorder=''
340 cc=''
341 ccflags=''
342 cppflags=''
343 ldflags=''
344 lkflags=''
345 locincpth=''
346 optimize=''
347 cf_email=''
348 cf_by=''
349 cf_time=''
350 contains=''
351 cpp_stuff=''
352 cpplast=''
353 cppminus=''
354 cpprun=''
355 cppstdin=''
356 d__fwalk=''
357 d_access=''
358 d_accessx=''
359 d_aintl=''
360 d_alarm=''
361 asctime_r_proto=''
362 d_asctime_r=''
363 d_attribute_format=''
364 d_attribute_malloc=''
365 d_attribute_nonnull=''
366 d_attribute_noreturn=''
367 d_attribute_pure=''
368 d_attribute_unused=''
369 d_attribute_warn_unused_result=''
370 d_printf_format_null=''
371 d_bcmp=''
372 d_bcopy=''
373 d_builtin_choose_expr=''
374 d_builtin_expect=''
375 d_bzero=''
376 d_c99_variadic_macros=''
377 d_casti32=''
378 castflags=''
379 d_castneg=''
380 d_chown=''
381 d_chroot=''
382 d_chsize=''
383 d_class=''
384 d_clearenv=''
385 d_closedir=''
386 d_void_closedir=''
387 d_cmsghdr_s=''
388 d_const=''
389 d_copysignl=''
390 d_cplusplus=''
391 cryptlib=''
392 d_crypt=''
393 crypt_r_proto=''
394 d_crypt_r=''
395 d_csh=''
396 full_csh=''
397 d_ctermid=''
398 ctermid_r_proto=''
399 d_ctermid_r=''
400 ctime_r_proto=''
401 d_ctime_r=''
402 d_cuserid=''
403 d_dbl_dig=''
404 d_dbminitproto=''
405 d_difftime=''
406 d_dir_dd_fd=''
407 d_dirfd=''
408 d_dlerror=''
409 d_dlopen=''
410 d_dlsymun=''
411 d_dosuid=''
412 d_suidsafe=''
413 d_drand48_r=''
414 drand48_r_proto=''
415 d_drand48proto=''
416 d_dup2=''
417 d_eaccess=''
418 d_endgrent=''
419 d_endgrent_r=''
420 endgrent_r_proto=''
421 d_endhent=''
422 d_endhostent_r=''
423 endhostent_r_proto=''
424 d_endnent=''
425 d_endnetent_r=''
426 endnetent_r_proto=''
427 d_endpent=''
428 d_endprotoent_r=''
429 endprotoent_r_proto=''
430 d_endpwent=''
431 d_endpwent_r=''
432 endpwent_r_proto=''
433 d_endsent=''
434 d_endservent_r=''
435 endservent_r_proto=''
436 d_faststdio=''
437 d_fchdir=''
438 d_fchmod=''
439 d_fchown=''
440 d_fcntl=''
441 d_fcntl_can_lock=''
442 d_fd_macros=''
443 d_fd_set=''
444 d_fds_bits=''
445 d_fgetpos=''
446 d_finite=''
447 d_finitel=''
448 d_flexfnam=''
449 d_flock=''
450 d_flockproto=''
451 d_fork=''
452 d_fp_class=''
453 d_fpclass=''
454 d_fpclassify=''
455 d_fpclassl=''
456 d_fpos64_t=''
457 d_frexpl=''
458 d_fs_data_s=''
459 d_fseeko=''
460 d_fsetpos=''
461 d_fstatfs=''
462 d_fsync=''
463 d_ftello=''
464 d_ftime=''
465 d_gettimeod=''
466 d_futimes=''
467 d_Gconvert=''
468 d_getcwd=''
469 d_getespwnam=''
470 d_getfsstat=''
471 d_getgrent=''
472 d_getgrent_r=''
473 getgrent_r_proto=''
474 d_getgrgid_r=''
475 getgrgid_r_proto=''
476 d_getgrnam_r=''
477 getgrnam_r_proto=''
478 d_getgrps=''
479 d_gethbyaddr=''
480 d_gethbyname=''
481 d_gethent=''
482 aphostname=''
483 d_gethname=''
484 d_phostname=''
485 d_uname=''
486 d_gethostbyaddr_r=''
487 gethostbyaddr_r_proto=''
488 d_gethostbyname_r=''
489 gethostbyname_r_proto=''
490 d_gethostent_r=''
491 gethostent_r_proto=''
492 d_gethostprotos=''
493 d_getitimer=''
494 d_getlogin=''
495 d_getlogin_r=''
496 getlogin_r_proto=''
497 d_getmnt=''
498 d_getmntent=''
499 d_getnbyaddr=''
500 d_getnbyname=''
501 d_getnent=''
502 d_getnetbyaddr_r=''
503 getnetbyaddr_r_proto=''
504 d_getnetbyname_r=''
505 getnetbyname_r_proto=''
506 d_getnetent_r=''
507 getnetent_r_proto=''
508 d_getnetprotos=''
509 d_getpagsz=''
510 d_getpent=''
511 d_getpgid=''
512 d_getpgrp2=''
513 d_bsdgetpgrp=''
514 d_getpgrp=''
515 d_getppid=''
516 d_getprior=''
517 d_getpbyname=''
518 d_getpbynumber=''
519 d_getprotobyname_r=''
520 getprotobyname_r_proto=''
521 d_getprotobynumber_r=''
522 getprotobynumber_r_proto=''
523 d_getprotoent_r=''
524 getprotoent_r_proto=''
525 d_getprotoprotos=''
526 d_getprpwnam=''
527 d_getpwent=''
528 d_getpwent_r=''
529 getpwent_r_proto=''
530 d_getpwnam_r=''
531 getpwnam_r_proto=''
532 d_getpwuid_r=''
533 getpwuid_r_proto=''
534 d_getsent=''
535 d_getservbyname_r=''
536 getservbyname_r_proto=''
537 d_getservbyport_r=''
538 getservbyport_r_proto=''
539 d_getservent_r=''
540 getservent_r_proto=''
541 d_getservprotos=''
542 d_getspnam=''
543 d_getspnam_r=''
544 getspnam_r_proto=''
545 d_getsbyname=''
546 d_getsbyport=''
547 d_gmtime_r=''
548 gmtime_r_proto=''
549 d_gnulibc=''
550 gnulibc_version=''
551 d_hasmntopt=''
552 d_htonl=''
553 d_ilogbl=''
554 d_inetaton=''
555 d_int64_t=''
556 d_isascii=''
557 d_isfinite=''
558 d_isinf=''
559 d_isnan=''
560 d_isnanl=''
561 d_killpg=''
562 d_lchown=''
563 d_ldbl_dig=''
564 d_libm_lib_version=''
565 d_link=''
566 d_localtime_r=''
567 d_localtime_r_needs_tzset=''
568 localtime_r_proto=''
569 d_locconv=''
570 d_lockf=''
571 d_longdbl=''
572 longdblsize=''
573 d_longlong=''
574 longlongsize=''
575 d_lseekproto=''
576 d_lstat=''
577 d_madvise=''
578 d_malloc_good_size=''
579 d_malloc_size=''
580 d_mblen=''
581 d_mbstowcs=''
582 d_mbtowc=''
583 d_memchr=''
584 d_memcmp=''
585 d_memcpy=''
586 d_memmove=''
587 d_memset=''
588 d_mkdir=''
589 d_mkdtemp=''
590 d_mkfifo=''
591 d_mkstemp=''
592 d_mkstemps=''
593 d_mktime=''
594 d_mmap=''
595 mmaptype=''
596 d_modfl=''
597 d_modfl_pow32_bug=''
598 d_modflproto=''
599 d_mprotect=''
600 d_msg=''
601 d_msgctl=''
602 d_msgget=''
603 d_msghdr_s=''
604 d_msgrcv=''
605 d_msgsnd=''
606 d_msync=''
607 d_munmap=''
608 d_nice=''
609 d_nl_langinfo=''
610 d_off64_t=''
611 d_open3=''
612 d_fpathconf=''
613 d_pathconf=''
614 d_pause=''
615 d_pipe=''
616 d_poll=''
617 d_portable=''
618 d_procselfexe=''
619 procselfexe=''
620 d_old_pthread_create_joinable=''
621 old_pthread_create_joinable=''
622 d_pthread_atfork=''
623 d_pthread_attr_setscope=''
624 d_pthread_yield=''
625 d_sched_yield=''
626 sched_yield=''
627 d_qgcvt=''
628 d_random_r=''
629 random_r_proto=''
630 d_readdir64_r=''
631 readdir64_r_proto=''
632 d_readdir=''
633 d_rewinddir=''
634 d_seekdir=''
635 d_telldir=''
636 d_readdir_r=''
637 readdir_r_proto=''
638 d_readlink=''
639 d_readv=''
640 d_recvmsg=''
641 d_rename=''
642 d_rmdir=''
643 d_safebcpy=''
644 d_safemcpy=''
645 d_sanemcmp=''
646 d_sbrkproto=''
647 d_scalbnl=''
648 d_select=''
649 d_sem=''
650 d_semctl=''
651 d_semget=''
652 d_semop=''
653 d_sendmsg=''
654 d_setegid=''
655 d_seteuid=''
656 d_setgrent=''
657 d_setgrent_r=''
658 setgrent_r_proto=''
659 d_setgrps=''
660 d_sethent=''
661 d_sethostent_r=''
662 sethostent_r_proto=''
663 d_setitimer=''
664 d_setlinebuf=''
665 d_setlocale=''
666 d_setlocale_r=''
667 setlocale_r_proto=''
668 d_setnent=''
669 d_setnetent_r=''
670 setnetent_r_proto=''
671 d_setpent=''
672 d_setpgid=''
673 d_setpgrp2=''
674 d_bsdsetpgrp=''
675 d_setpgrp=''
676 d_setprior=''
677 d_setproctitle=''
678 d_setprotoent_r=''
679 setprotoent_r_proto=''
680 d_setpwent=''
681 d_setpwent_r=''
682 setpwent_r_proto=''
683 d_setregid=''
684 d_setresgid=''
685 d_setresuid=''
686 d_setreuid=''
687 d_setrgid=''
688 d_setruid=''
689 d_setsent=''
690 d_setservent_r=''
691 setservent_r_proto=''
692 d_setsid=''
693 d_setvbuf=''
694 d_sfio=''
695 usesfio=''
696 d_shm=''
697 d_shmat=''
698 d_shmatprototype=''
699 shmattype=''
700 d_shmctl=''
701 d_shmdt=''
702 d_shmget=''
703 d_sigaction=''
704 d_signbit=''
705 d_sigprocmask=''
706 d_sigsetjmp=''
707 usesitecustomize=''
708 d_snprintf=''
709 d_vsnprintf=''
710 d_sockatmark=''
711 d_sockatmarkproto=''
712 d_msg_ctrunc=''
713 d_msg_dontroute=''
714 d_msg_oob=''
715 d_msg_peek=''
716 d_msg_proxy=''
717 d_oldsock=''
718 d_scm_rights=''
719 d_socket=''
720 d_sockpair=''
721 sockethdr=''
722 socketlib=''
723 d_socklen_t=''
724 d_socks5_init=''
725 d_sprintf_returns_strlen=''
726 d_sqrtl=''
727 d_srand48_r=''
728 srand48_r_proto=''
729 d_srandom_r=''
730 srandom_r_proto=''
731 d_sresgproto=''
732 d_sresuproto=''
733 d_statblks=''
734 d_statfs_f_flags=''
735 d_statfs_s=''
736 d_fstatvfs=''
737 d_statvfs=''
738 d_stdio_cnt_lval=''
739 d_stdio_ptr_lval=''
740 d_stdio_ptr_lval_nochange_cnt=''
741 d_stdio_ptr_lval_sets_cnt=''
742 d_stdiobase=''
743 d_stdstdio=''
744 stdio_base=''
745 stdio_bufsiz=''
746 stdio_cnt=''
747 stdio_filbuf=''
748 stdio_ptr=''
749 d_index=''
750 d_strchr=''
751 d_strcoll=''
752 d_strctcpy=''
753 d_strerrm=''
754 d_strerror=''
755 d_sysernlst=''
756 d_syserrlst=''
757 d_strerror_r=''
758 strerror_r_proto=''
759 d_strftime=''
760 d_strlcat=''
761 d_strlcpy=''
762 d_strtod=''
763 d_strtol=''
764 d_strtold=''
765 d_strtoll=''
766 d_strtoq=''
767 d_strtoul=''
768 d_strtoull=''
769 d_strtouq=''
770 d_strxfrm=''
771 d_symlink=''
772 d_syscall=''
773 d_syscallproto=''
774 d_sysconf=''
775 d_system=''
776 d_tcgetpgrp=''
777 d_tcsetpgrp=''
778 d_telldirproto=''
779 d_time=''
780 timetype=''
781 clocktype=''
782 d_times=''
783 d_tmpnam_r=''
784 tmpnam_r_proto=''
785 d_truncate=''
786 d_ttyname_r=''
787 ttyname_r_proto=''
788 d_tzname=''
789 d_u32align=''
790 d_ualarm=''
791 d_umask=''
792 d_semctl_semid_ds=''
793 d_semctl_semun=''
794 d_union_semun=''
795 d_unordered=''
796 d_unsetenv=''
797 d_usleep=''
798 d_usleepproto=''
799 d_ustat=''
800 d_pseudofork=''
801 d_vfork=''
802 usevfork=''
803 d_voidsig=''
804 signal_t=''
805 d_volatile=''
806 d_charvspr=''
807 d_vprintf=''
808 d_wait4=''
809 d_waitpid=''
810 d_wcstombs=''
811 d_wctomb=''
812 d_writev=''
813 dlext=''
814 cccdlflags=''
815 ccdlflags=''
816 dlsrc=''
817 ld=''
818 lddlflags=''
819 usedl=''
820 doublesize=''
821 ebcdic=''
822 fflushNULL=''
823 fflushall=''
824 fpossize=''
825 fpostype=''
826 gccansipedantic=''
827 gccosandvers=''
828 gccversion=''
829 gidformat=''
830 gidsign=''
831 gidsize=''
832 gidtype=''
833 groupstype=''
834 h_fcntl=''
835 h_sysfile=''
836 html1dir=''
837 html1direxp=''
838 installhtml1dir=''
839 html3dir=''
840 html3direxp=''
841 installhtml3dir=''
842 i_arpainet=''
843 i_crypt=''
844 db_hashtype=''
845 db_prefixtype=''
846 db_version_major=''
847 db_version_minor=''
848 db_version_patch=''
849 i_db=''
850 i_dbm=''
851 i_rpcsvcdbm=''
852 d_dirnamlen=''
853 direntrytype=''
854 i_dirent=''
855 i_dld=''
856 i_dlfcn=''
857 i_fcntl=''
858 i_float=''
859 i_fp=''
860 i_fp_class=''
861 i_gdbm=''
862 d_grpasswd=''
863 i_grp=''
864 i_ieeefp=''
865 i_inttypes=''
866 i_langinfo=''
867 i_libutil=''
868 i_limits=''
869 i_locale=''
870 i_machcthr=''
871 i_malloc=''
872 i_math=''
873 i_memory=''
874 i_mntent=''
875 i_ndbm=''
876 i_netdb=''
877 i_neterrno=''
878 i_netinettcp=''
879 i_niin=''
880 i_sysin=''
881 i_poll=''
882 i_prot=''
883 i_pthread=''
884 d_pwage=''
885 d_pwchange=''
886 d_pwclass=''
887 d_pwcomment=''
888 d_pwexpire=''
889 d_pwgecos=''
890 d_pwpasswd=''
891 d_pwquota=''
892 i_pwd=''
893 i_sfio=''
894 i_shadow=''
895 i_socks=''
896 i_stddef=''
897 i_stdlib=''
898 i_string=''
899 strings=''
900 i_sunmath=''
901 i_sysaccess=''
902 i_sysdir=''
903 i_sysfile=''
904 d_voidtty=''
905 i_bsdioctl=''
906 i_sysfilio=''
907 i_sysioctl=''
908 i_syssockio=''
909 i_syslog=''
910 i_sysmman=''
911 i_sysmode=''
912 i_sysmount=''
913 i_sysndir=''
914 i_sysparam=''
915 i_sysresrc=''
916 i_syssecrt=''
917 i_sysselct=''
918 i_sysstat=''
919 i_sysstatfs=''
920 i_sysstatvfs=''
921 i_systimes=''
922 i_systypes=''
923 i_sysuio=''
924 i_sysun=''
925 i_sysutsname=''
926 i_sysvfs=''
927 i_syswait=''
928 i_sgtty=''
929 i_termio=''
930 i_termios=''
931 d_tm_tm_gmtoff=''
932 d_tm_tm_zone=''
933 i_systime=''
934 i_systimek=''
935 i_time=''
936 timeincl=''
937 i_unistd=''
938 i_ustat=''
939 i_utime=''
940 i_values=''
941 i_stdarg=''
942 i_varargs=''
943 i_varhdr=''
944 i_vfork=''
945 d_inc_version_list=''
946 inc_version_list=''
947 inc_version_list_init=''
948 installprefix=''
949 installprefixexp=''
950 installstyle=''
951 installusrbinperl=''
952 intsize=''
953 longsize=''
954 shortsize=''
955 issymlink=''
956 libc=''
957 ldlibpthname=''
958 libperl=''
959 shrpenv=''
960 useshrplib=''
961 glibpth=''
962 libpth=''
963 loclibpth=''
964 plibpth=''
965 xlibpth=''
966 ignore_versioned_solibs=''
967 libs=''
968 libsdirs=''
969 libsfiles=''
970 libsfound=''
971 libspath=''
972 lns=''
973 d_PRIEUldbl=''
974 d_PRIFUldbl=''
975 d_PRIGUldbl=''
976 d_PRIeldbl=''
977 d_PRIfldbl=''
978 d_PRIgldbl=''
979 d_SCNfldbl=''
980 sPRIEUldbl=''
981 sPRIFUldbl=''
982 sPRIGUldbl=''
983 sPRIeldbl=''
984 sPRIfldbl=''
985 sPRIgldbl=''
986 sSCNfldbl=''
987 lseeksize=''
988 lseektype=''
989 mad=''
990 madlyh=''
991 madlyobj=''
992 madlysrc=''
993 make_set_make=''
994 d_mymalloc=''
995 freetype=''
996 mallocobj=''
997 mallocsrc=''
998 malloctype=''
999 usemallocwrap=''
1000 usemymalloc=''
1001 installman1dir=''
1002 man1dir=''
1003 man1direxp=''
1004 man1ext=''
1005 installman3dir=''
1006 man3dir=''
1007 man3direxp=''
1008 man3ext=''
1009 modetype=''
1010 multiarch=''
1011 mydomain=''
1012 myhostname=''
1013 phostname=''
1014 c=''
1015 n=''
1016 d_eofnblk=''
1017 eagain=''
1018 o_nonblock=''
1019 rd_nodata=''
1020 need_va_copy=''
1021 netdb_hlen_type=''
1022 netdb_host_type=''
1023 netdb_name_type=''
1024 netdb_net_type=''
1025 groupcat=''
1026 hostcat=''
1027 passcat=''
1028 orderlib=''
1029 ranlib=''
1030 d_perl_otherlibdirs=''
1031 otherlibdirs=''
1032 package=''
1033 spackage=''
1034 pager=''
1035 api_revision=''
1036 api_subversion=''
1037 api_version=''
1038 api_versionstring=''
1039 patchlevel=''
1040 perl_patchlevel=''
1041 revision=''
1042 subversion=''
1043 version=''
1044 version_patchlevel_string=''
1045 perl5=''
1046 perladmin=''
1047 perlpath=''
1048 d_nv_preserves_uv=''
1049 d_nv_zero_is_allbits_zero=''
1050 i16size=''
1051 i16type=''
1052 i32size=''
1053 i32type=''
1054 i64size=''
1055 i64type=''
1056 i8size=''
1057 i8type=''
1058 ivsize=''
1059 ivtype=''
1060 nv_preserves_uv_bits=''
1061 nvsize=''
1062 nvtype=''
1063 u16size=''
1064 u16type=''
1065 u32size=''
1066 u32type=''
1067 u64size=''
1068 u64type=''
1069 u8size=''
1070 u8type=''
1071 uvsize=''
1072 uvtype=''
1073 ivdformat=''
1074 nvEUformat=''
1075 nvFUformat=''
1076 nvGUformat=''
1077 nveformat=''
1078 nvfformat=''
1079 nvgformat=''
1080 uvXUformat=''
1081 uvoformat=''
1082 uvuformat=''
1083 uvxformat=''
1084 pidtype=''
1085 prefix=''
1086 prefixexp=''
1087 installprivlib=''
1088 privlib=''
1089 privlibexp=''
1090 prototype=''
1091 ptrsize=''
1092 d_PRIXU64=''
1093 d_PRId64=''
1094 d_PRIi64=''
1095 d_PRIo64=''
1096 d_PRIu64=''
1097 d_PRIx64=''
1098 sPRIXU64=''
1099 sPRId64=''
1100 sPRIi64=''
1101 sPRIo64=''
1102 sPRIu64=''
1103 sPRIx64=''
1104 d_quad=''
1105 quadkind=''
1106 quadtype=''
1107 uquadtype=''
1108 drand01=''
1109 randbits=''
1110 randfunc=''
1111 randseedtype=''
1112 seedfunc=''
1113 installscript=''
1114 scriptdir=''
1115 scriptdirexp=''
1116 selectminbits=''
1117 selecttype=''
1118 sh=''
1119 sig_count=''
1120 sig_name=''
1121 sig_name_init=''
1122 sig_num=''
1123 sig_num_init=''
1124 sig_size=''
1125 d_sitearch=''
1126 installsitearch=''
1127 sitearch=''
1128 sitearchexp=''
1129 installsitebin=''
1130 sitebin=''
1131 sitebinexp=''
1132 installsitehtml1dir=''
1133 sitehtml1dir=''
1134 sitehtml1direxp=''
1135 installsitehtml3dir=''
1136 sitehtml3dir=''
1137 sitehtml3direxp=''
1138 installsitelib=''
1139 sitelib=''
1140 sitelib_stem=''
1141 sitelibexp=''
1142 installsiteman1dir=''
1143 siteman1dir=''
1144 siteman1direxp=''
1145 installsiteman3dir=''
1146 siteman3dir=''
1147 siteman3direxp=''
1148 siteprefix=''
1149 siteprefixexp=''
1150 installsitescript=''
1151 sitescript=''
1152 sitescriptexp=''
1153 sizesize=''
1154 sizetype=''
1155 so=''
1156 socksizetype=''
1157 sharpbang=''
1158 shsharp=''
1159 spitshell=''
1160 src=''
1161 ssizetype=''
1162 startperl=''
1163 startsh=''
1164 stdchar=''
1165 d_stdio_stream_array=''
1166 stdio_stream_array=''
1167 sysman=''
1168 trnl=''
1169 uidformat=''
1170 uidsign=''
1171 uidsize=''
1172 uidtype=''
1173 archname64=''
1174 use64bitall=''
1175 use64bitint=''
1176 usefaststdio=''
1177 ccflags_uselargefiles=''
1178 ldflags_uselargefiles=''
1179 libswanted_uselargefiles=''
1180 uselargefiles=''
1181 uselongdouble=''
1182 usemorebits=''
1183 usemultiplicity=''
1184 nm_opt=''
1185 nm_so_opt=''
1186 runnm=''
1187 usenm=''
1188 useperlio=''
1189 usesocks=''
1190 d_oldpthreads=''
1191 use5005threads=''
1192 useithreads=''
1193 usereentrant=''
1194 usethreads=''
1195 incpath=''
1196 mips_type=''
1197 usrinc=''
1198 d_vendorarch=''
1199 installvendorarch=''
1200 vendorarch=''
1201 vendorarchexp=''
1202 d_vendorbin=''
1203 installvendorbin=''
1204 vendorbin=''
1205 vendorbinexp=''
1206 installvendorhtml1dir=''
1207 vendorhtml1dir=''
1208 vendorhtml1direxp=''
1209 installvendorhtml3dir=''
1210 vendorhtml3dir=''
1211 vendorhtml3direxp=''
1212 d_vendorlib=''
1213 installvendorlib=''
1214 vendorlib=''
1215 vendorlib_stem=''
1216 vendorlibexp=''
1217 installvendorman1dir=''
1218 vendorman1dir=''
1219 vendorman1direxp=''
1220 installvendorman3dir=''
1221 vendorman3dir=''
1222 vendorman3direxp=''
1223 usevendorprefix=''
1224 vendorprefix=''
1225 vendorprefixexp=''
1226 d_vendorscript=''
1227 installvendorscript=''
1228 vendorscript=''
1229 vendorscriptexp=''
1230 versiononly=''
1231 defvoidused=''
1232 voidflags=''
1233 yacc=''
1234 yaccflags=''
1235 CONFIG=''
1236
1237 define='define'
1238 undef='undef'
1239 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1240 rmlist=''
1241
1242 : We must find out about Eunice early
1243 eunicefix=':'
1244 if test -f /etc/unixtovms; then
1245         eunicefix=/etc/unixtovms
1246 fi
1247 if test -f /etc/unixtovms.exe; then
1248         eunicefix=/etc/unixtovms.exe
1249 fi
1250
1251 : Set executable suffix now -- needed before hints available
1252 if test -f "/libs/version.library"; then
1253 : Amiga OS
1254     _exe=""
1255 elif test -f "/system/gnu_library/bin/ar.pm"; then
1256 : Stratus VOS
1257     _exe=".pm"
1258 elif test -n "$DJGPP"; then
1259 : DOS DJGPP
1260     _exe=".exe"
1261 elif test -d c:/. -o -n "$is_os2" ; then
1262 : OS/2 or cygwin
1263     _exe=".exe"
1264 fi
1265
1266 i_whoami=''
1267 : Trailing extension.  Override this in a hint file, if needed.
1268 : Extra object files, if any, needed on this platform.
1269 archobjs=''
1270 archname=''
1271 groupstype=''
1272 libnames=''
1273 : change the next line if compiling for Xenix/286 on Xenix/386
1274 xlibpth='/usr/lib/386 /lib/386'
1275 : Possible local library directories to search.
1276 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1277 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1278
1279 : general looking path for locating libraries
1280 glibpth="/lib /usr/lib $xlibpth"
1281 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1282 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1283 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1284 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1285
1286 : Private path used by Configure to find libraries.  Its value
1287 : is prepended to libpth. This variable takes care of special
1288 : machines, like the mips.  Usually, it should be empty.
1289 plibpth=''
1290
1291 : default library list
1292 libswanted=''
1293 : some systems want to use only the non-versioned libso:s
1294 ignore_versioned_solibs=''
1295 siteman1dir=''
1296 siteman3dir=''
1297 sitescript=''
1298 : set usethreads on the Configure command line to enable threads.
1299 usereentrant='undef'
1300 : full support for void wanted by default
1301 defvoidused=15
1302
1303 : Possible local include directories to search.
1304 : Set locincpth to "" in a hint file to defeat local include searches.
1305 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1306 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1307 :
1308 : no include file wanted by default
1309 inclwanted=''
1310
1311 : Enable -DEBUGGING and -DDEBUGGING from the command line
1312 EBUGGING=''
1313 DEBUGGING=old
1314
1315 ccname=''
1316 ccversion=''
1317 perllibs=''
1318 : set useposix=false in your hint file to disable the POSIX extension.
1319 useposix=true
1320 : set useopcode=false in your hint file to disable the Opcode extension.
1321 useopcode=true
1322 archname64=''
1323 ccflags_uselargefiles=''
1324 ldflags_uselargefiles=''
1325 libswanted_uselargefiles=''
1326 : set usemultiplicity on the Configure command line to enable multiplicity.
1327 : set usesocks on the Configure command line to enable socks.
1328 : List of libraries we want.
1329 : If anyone needs extra -lxxx, put those in a hint file.
1330 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1331 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1332 : We probably want to search /usr/shlib before most other libraries.
1333 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1334 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1335 glibpth="/usr/shlib $glibpth"
1336 : Do not use vfork unless overridden by a hint file.
1337 usevfork=false
1338
1339 : Find the basic shell for Bourne shell scripts
1340 case "$sh" in
1341 '')
1342         case "$SYSTYPE" in
1343         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1344         *) xxx='/bin/sh';;
1345         esac
1346         if test -f "$xxx"; then
1347                 sh="$xxx"
1348         else
1349                 : Build up a list and do a single loop so we can 'break' out.
1350                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1351                 for xxx in sh bash ksh pdksh ash; do
1352                         for p in $pth; do
1353                                 try="$try ${p}/${xxx}"
1354                         done
1355                 done
1356                 for xxx in $try; do
1357                         if test -f "$xxx"; then
1358                                 sh="$xxx";
1359                                 break
1360                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1361                                 sh="$xxx";
1362                                 break
1363                         elif test -f "$xxx.exe"; then
1364                                 sh="$xxx";
1365                                 break
1366                         fi
1367                 done
1368         fi
1369         ;;
1370 esac
1371
1372 case "$sh" in
1373 '')     cat >&2 <<EOM
1374 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1375
1376 Usually it's in /bin/sh.  How did you even get this far?
1377 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1378 we'll try to straighten this all out.
1379 EOM
1380         exit 1
1381         ;;
1382 esac
1383
1384 : see if sh knows # comments
1385 if `$sh -c '#' >/dev/null 2>&1`; then
1386         shsharp=true
1387         spitshell=cat
1388         xcat=/bin/cat
1389         test -f $xcat$_exe || xcat=/usr/bin/cat
1390         if test ! -f $xcat$_exe; then
1391                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1392                         if test -f $p/cat$_exe; then
1393                                 xcat=$p/cat
1394                                 break
1395                         fi
1396                 done
1397                 if test ! -f $xcat$_exe; then
1398                         echo "Can't find cat anywhere!"
1399                         exit 1
1400                 fi
1401         fi
1402         echo "#!$xcat" >sharp
1403         $eunicefix sharp
1404         chmod +x sharp
1405         ./sharp > today
1406         if test -s today; then
1407                 sharpbang='#!'
1408         else
1409                 echo "#! $xcat" > sharp
1410                 $eunicefix sharp
1411                 chmod +x sharp
1412                 ./sharp > today
1413                 if test -s today; then
1414                         sharpbang='#! '
1415                 else
1416                         sharpbang=': use '
1417                 fi
1418         fi
1419 else
1420         echo " "
1421         echo "Your $sh doesn't grok # comments--I will strip them later on."
1422         shsharp=false
1423         cd ..
1424         echo "exec grep -v '^[  ]*#'" >spitshell
1425         chmod +x spitshell
1426         $eunicefix spitshell
1427         spitshell=`pwd`/spitshell
1428         cd UU
1429         echo "I presume that if # doesn't work, #! won't work either!"
1430         sharpbang=': use '
1431 fi
1432 rm -f sharp today
1433
1434 : figure out how to guarantee sh startup
1435 case "$startsh" in
1436 '') startsh=${sharpbang}${sh} ;;
1437 *)
1438 esac
1439 cat >sharp <<EOSS
1440 $startsh
1441 set abc
1442 test "$?abc" != 1
1443 EOSS
1444
1445 chmod +x sharp
1446 $eunicefix sharp
1447 if ./sharp; then
1448         : echo "Yup, it does."
1449 else
1450         echo "Hmm... '$startsh' does not guarantee sh startup..."
1451         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1452 fi
1453 rm -f sharp
1454
1455
1456 : Save command line options in file UU/cmdline.opt for later use in
1457 : generating config.sh.
1458 cat > cmdline.opt <<EOSH
1459 # Configure command line arguments.
1460 config_arg0='$0'
1461 config_args='$*'
1462 config_argc=$#
1463 EOSH
1464 argn=1
1465 args_exp=''
1466 args_sep=''
1467 for arg in "$@"; do
1468         cat >>cmdline.opt <<EOSH
1469 config_arg$argn='$arg'
1470 EOSH
1471         # Extreme backslashitis: replace each ' by '"'"'
1472         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1473 $arg
1474 EOC
1475         arg_exp=`cat cmdl.opt`
1476         args_exp="$args_exp$args_sep'$arg_exp'"
1477         argn=`expr $argn + 1`
1478         args_sep=' '
1479 done
1480 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1481 # used by ./hints/os2.sh
1482 rm -f cmdl.opt
1483
1484 : produce awk script to parse command line options
1485 cat >options.awk <<'EOF'
1486 BEGIN {
1487         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1488
1489         len = length(optstr);
1490         for (i = 1; i <= len; i++) {
1491                 c = substr(optstr, i, 1);
1492                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1493                 if (a == ":") {
1494                         arg[c] = 1;
1495                         i++;
1496                 }
1497                 opt[c] = 1;
1498         }
1499 }
1500 {
1501         expect = 0;
1502         str = $0;
1503         if (substr(str, 1, 1) != "-") {
1504                 printf("'%s'\n", str);
1505                 next;
1506         }
1507         len = length($0);
1508         for (i = 2; i <= len; i++) {
1509                 c = substr(str, i, 1);
1510                 if (!opt[c]) {
1511                         printf("-%s\n", substr(str, i));
1512                         next;
1513                 }
1514                 printf("-%s\n", c);
1515                 if (arg[c]) {
1516                         if (i < len)
1517                                 printf("'%s'\n", substr(str, i + 1));
1518                         else
1519                                 expect = 1;
1520                         next;
1521                 }
1522         }
1523 }
1524 END {
1525         if (expect)
1526                 print "?";
1527 }
1528 EOF
1529
1530 : process the command line options
1531 set X `for arg in "$@"; do echo "X$arg"; done |
1532         sed -e s/X// | awk -f options.awk`
1533 eval "set $*"
1534 shift
1535 rm -f options.awk
1536
1537 : set up default values
1538 fastread=''
1539 reuseval=false
1540 config_sh=''
1541 alldone=''
1542 error=''
1543 silent=''
1544 extractsh=''
1545 override=''
1546 knowitall=''
1547 rm -f optdef.sh posthint.sh
1548 cat >optdef.sh <<EOS
1549 $startsh
1550 EOS
1551
1552
1553 : option parsing
1554 while test $# -gt 0; do
1555         case "$1" in
1556         -d) shift; fastread=yes;;
1557         -e) shift; alldone=cont;;
1558         -f)
1559                 shift
1560                 cd ..
1561                 if test -r "$1"; then
1562                         config_sh="$1"
1563                 else
1564                         echo "$me: cannot read config file $1." >&2
1565                         error=true
1566                 fi
1567                 cd UU
1568                 shift;;
1569         --help|\
1570         -h) shift; error=true;;
1571         -r) shift; reuseval=true;;
1572         -s) shift; silent=true; realsilent=true;;
1573         -E) shift; alldone=exit;;
1574         -K) shift; knowitall=true;;
1575         -O) shift; override=true;;
1576         -S) shift; silent=true; extractsh=true;;
1577         -D)
1578                 shift
1579                 case "$1" in
1580                 *=)
1581                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1582                         echo "$me: ignoring -D $1" >&2
1583                         ;;
1584                 *=*) echo "$1" | \
1585                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1586                 *) echo "$1='define'" >> optdef.sh;;
1587                 esac
1588                 shift
1589                 ;;
1590         -U)
1591                 shift
1592                 case "$1" in
1593                 *=) echo "$1" >> optdef.sh;;
1594                 *=*)
1595                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1596                         echo "$me: ignoring -U $1" >&2
1597                         ;;
1598                 *) echo "$1='undef'" >> optdef.sh;;
1599                 esac
1600                 shift
1601                 ;;
1602         -A)
1603             shift
1604             xxx=''
1605             yyy="$1"
1606             zzz=''
1607             uuu=undef
1608             case "$yyy" in
1609             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1610                  case "$zzz" in
1611                  *:*) zzz='' ;;
1612                  *)   xxx=append
1613                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1614                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1615                  esac
1616                  ;;
1617             esac
1618             case "$xxx" in
1619             '')  case "$yyy" in
1620                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1621                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1622                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1623                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1624                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1625                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1626                  esac
1627                  ;;       
1628             esac
1629             case "$xxx" in
1630             append)
1631                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1632             clear)
1633                 echo "$yyy=''"                  >> posthint.sh ;;
1634             define)
1635                 case "$zzz" in
1636                 '') zzz=define ;;
1637                 esac
1638                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1639             eval)
1640                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1641             prepend)
1642                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1643             undef)
1644                 case "$zzz" in
1645                 '') zzz="$uuu" ;;
1646                 esac
1647                 echo "$yyy=$zzz"                >> posthint.sh ;;
1648             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1649             esac
1650             shift
1651             ;;
1652         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1653             exit 0;;
1654         --) break;;
1655         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1656         *) break;;
1657         esac
1658 done
1659
1660 case "$error" in
1661 true)
1662         cat >&2 <<EOM
1663 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1664                  [-U symbol] [-U symbol=] [-A command:symbol...]
1665   -d : use defaults for all answers.
1666   -e : go on without questioning past the production of config.sh.
1667   -f : specify an alternate default configuration file.
1668   -h : print this help message and exit (with an error status).
1669   -r : reuse C symbols value if possible (skips costly nm extraction).
1670   -s : silent mode, only echoes questions and essential information.
1671   -D : define symbol to have some value:
1672          -D symbol         symbol gets the value 'define'
1673          -D symbol=value   symbol gets the value 'value'
1674        common used examples (see INSTALL for more info):
1675          -Duse64bitint            use 64bit integers
1676          -Duse64bitall            use 64bit integers and pointers
1677          -Dusethreads             use thread support
1678          -Dinc_version_list=none  do not include older perl trees in @INC
1679          -DEBUGGING=none          DEBUGGING options
1680          -Dcc=gcc                 choose your compiler
1681          -Dprefix=/opt/perl5      choose your destination
1682   -E : stop at the end of questions, after having produced config.sh.
1683   -K : do not use unless you know what you are doing.
1684   -O : let -D and -U override definitions from loaded configuration file.
1685   -S : perform variable substitutions on all .SH files (can mix with -f)
1686   -U : undefine symbol:
1687          -U symbol    symbol gets the value 'undef'
1688          -U symbol=   symbol gets completely empty
1689        e.g.:  -Uversiononly
1690   -A : manipulate symbol after the platform specific hints have been applied:
1691          -A append:symbol=value   append value to symbol
1692          -A symbol=value          like append:, but with a separating space
1693          -A define:symbol=value   define symbol to have value
1694          -A clear:symbol          define symbol to be ''
1695          -A define:symbol         define symbol to be 'define'
1696          -A eval:symbol=value     define symbol to be eval of value
1697          -A prepend:symbol=value  prepend value to symbol
1698          -A undef:symbol          define symbol to be 'undef'
1699          -A undef:symbol=         define symbol to be ''
1700        e.g.:  -A prepend:libswanted='cl pthread '
1701               -A ccflags=-DSOME_MACRO
1702   -V : print version number and exit (with a zero status).
1703 EOM
1704         exit 1
1705         ;;
1706 esac
1707
1708 : Sanity checks
1709 case "$fastread$alldone" in
1710 yescont|yesexit) ;;
1711 *)
1712         case "$extractsh" in
1713         true) ;;
1714         *)
1715                 if test ! -t 0; then
1716                         echo "Say 'sh Configure', not 'sh <Configure'"
1717                         exit 1
1718                 fi
1719                 ;;
1720         esac
1721         ;;
1722 esac
1723
1724 exec 4>&1
1725 case "$silent" in
1726 true) exec 1>/dev/null;;
1727 esac
1728
1729 : run the defines and the undefines, if any, but leave the file out there...
1730 touch optdef.sh
1731 . ./optdef.sh
1732 : create the posthint manipulation script and leave the file out there...
1733 touch posthint.sh
1734
1735 : set package name
1736 package=perl5
1737 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1738 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1739 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1740 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1741 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1742 esac
1743
1744 : Some greps do not return status, grrr.
1745 echo "grimblepritz" >grimble
1746 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1747         contains=contains
1748 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1749         contains=grep
1750 else
1751         contains=contains
1752 fi
1753 rm -f grimble
1754 : the following should work in any shell
1755 case "$contains" in
1756 contains*)
1757         echo " "
1758         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1759         cat >contains <<'EOSS'
1760 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1761 EOSS
1762 chmod +x contains
1763 esac
1764
1765 : Find the path to the source tree
1766 case "$src" in
1767 '') case "$0" in
1768     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1769          case "$src" in
1770          /*)    ;;
1771          .)     ;;
1772          *)     src=`cd ../$src && pwd` ;;
1773          esac
1774          ;;
1775     *)   src='.';;
1776     esac;;
1777 esac
1778 case "$src" in
1779 '')     src=/
1780         rsrc=/
1781         ;;
1782 /*) rsrc="$src";;
1783 *) rsrc="../$src";;
1784 esac
1785 if test -f $rsrc/Configure && \
1786         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1787 then
1788    : found it, so we are ok.
1789 else
1790         rsrc=''
1791         for src in . .. ../.. ../../.. ../../../..; do
1792                 if test -f ../$src/Configure && \
1793                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1794                 then
1795                         rsrc=../$src
1796                         break
1797                 fi
1798         done
1799 fi
1800 case "$rsrc" in
1801 '')
1802         cat <<EOM >&4
1803
1804 Sorry, I can't seem to locate the source dir for $package.  Please start
1805 Configure with an explicit path -- i.e. /some/path/Configure.
1806
1807 EOM
1808         exit 1
1809         ;;
1810 ../.)   rsrc='..';;
1811 *)
1812         echo " "
1813         echo "Sources for $package found in \"$src\"." >&4
1814         ;;
1815 esac
1816
1817 : script used to extract .SH files with variable substitutions
1818 cat >extract <<'EOS'
1819 PERL_CONFIG_SH=true
1820 echo "Doing variable substitutions on .SH files..."
1821 if test -f MANIFEST; then
1822         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1823 else
1824         echo "(Looking for .SH files under the source directory.)"
1825         set x `(cd "$src"; find . -name "*.SH" -print)`
1826 fi
1827 shift
1828 case $# in
1829 0) set x `(cd "$src"; echo *.SH)`; shift;;
1830 esac
1831 if test ! -f "$src/$1"; then
1832         shift
1833 fi
1834 mkdir_p='
1835 name=$1;
1836 create="";
1837 while test $name; do
1838         if test ! -d "$name"; then
1839                 create="$name $create";
1840                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1841                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1842         else
1843                 name="";
1844         fi;
1845 done;
1846 for file in $create; do
1847         mkdir $file;
1848 done
1849 '
1850 for file in $*; do
1851         case "$src" in
1852         ".")
1853                 case "$file" in
1854                 */*)
1855                         dir=`expr X$file : 'X\(.*\)/'`
1856                         file=`expr X$file : 'X.*/\(.*\)'`
1857                         (cd "$dir" && . ./$file)
1858                         ;;
1859                 *)
1860                         . ./$file
1861                         ;;
1862                 esac
1863                 ;;
1864         *)
1865                 case "$file" in
1866                 */*)
1867                         dir=`expr X$file : 'X\(.*\)/'`
1868                         file=`expr X$file : 'X.*/\(.*\)'`
1869                         (set x $dir; shift; eval $mkdir_p)
1870                         sh <"$src/$dir/$file"
1871                         ;;
1872                 *)
1873                         sh <"$src/$file"
1874                         ;;
1875                 esac
1876                 ;;
1877         esac
1878 done
1879 if test -f "$src/config_h.SH"; then
1880         if test ! -f config.h; then
1881         : oops, they left it out of MANIFEST, probably, so do it anyway.
1882         . "$src/config_h.SH"
1883         fi
1884 fi
1885 EOS
1886
1887 : extract files and exit if asked to do so
1888 case "$extractsh" in
1889 true)
1890         case "$realsilent" in
1891         true) ;;
1892         *) exec 1>&4;;
1893         esac
1894         case "$config_sh" in
1895         '') config_sh='config.sh';;
1896         esac
1897         echo " "
1898         echo "Fetching answers from $config_sh..."
1899         cd ..
1900         . $config_sh
1901         test "$override" && . ./optdef.sh
1902         echo " "
1903         . UU/extract
1904         rm -rf UU
1905         echo "Extraction done."
1906         exit 0
1907         ;;
1908 esac
1909
1910 : Eunice requires " " instead of "", can you believe it
1911 echo " "
1912 : Here we go...
1913 echo "Beginning of configuration questions for $package."
1914
1915 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1916
1917 : first determine how to suppress newline on echo command
1918 echo " "
1919 echo "Checking echo to see how to suppress newlines..."
1920 (echo "hi there\c" ; echo " ") >.echotmp
1921 if $contains c .echotmp >/dev/null 2>&1 ; then
1922         echo "...using -n."
1923         n='-n'
1924         c=''
1925 else
1926         cat <<'EOM'
1927 ...using \c
1928 EOM
1929         n=''
1930         c='\c'
1931 fi
1932 echo $n "The star should be here-->$c"
1933 echo '*'
1934 rm -f .echotmp
1935
1936 : Now test for existence of everything in MANIFEST
1937 echo " "
1938 if test -f "$rsrc/MANIFEST"; then
1939         echo "First let's make sure your kit is complete.  Checking..." >&4
1940         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1941         rm -f missing
1942         tmppwd=`pwd`
1943         for filelist in x??; do
1944                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1945         done
1946         if test -s missing; then
1947                 cat missing >&4
1948                 cat >&4 <<'EOM'
1949
1950 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1951
1952 You have the option of continuing the configuration process, despite the
1953 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1954 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1955 and contact the author (perlbug@perl.org).
1956
1957 EOM
1958                 echo $n "Continue? [n] $c" >&4
1959                 read ans
1960                 case "$ans" in
1961                 y*)
1962                         echo "Continuing..." >&4
1963                         rm -f missing
1964                         ;;
1965                 *)
1966                         echo "ABORTING..." >&4
1967                         kill $$
1968                         ;;
1969                 esac
1970         else
1971                 echo "Looks good..."
1972         fi
1973 else
1974         echo "There is no MANIFEST file.  I hope your kit is complete !"
1975 fi
1976 rm -f missing x??
1977
1978 echo " "
1979 : Find the appropriate value for a newline for tr
1980 if test -n "$DJGPP"; then
1981        trnl='\012'
1982 fi
1983 if test X"$trnl" = X; then
1984         case "`echo foo|tr '\n' x 2>/dev/null`" in
1985         foox) trnl='\n' ;;
1986         esac
1987 fi
1988 if test X"$trnl" = X; then
1989         case "`echo foo|tr '\012' x 2>/dev/null`" in
1990         foox) trnl='\012' ;;
1991         esac
1992 fi
1993 if test X"$trnl" = X; then
1994        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1995        fooxy) trnl='\n\r' ;;
1996        esac
1997 fi
1998 if test X"$trnl" = X; then
1999         cat <<EOM >&2
2000
2001 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2002
2003 EOM
2004         exit 1
2005 fi
2006
2007 : compute the number of columns on the terminal for proper question formatting
2008 case "$COLUMNS" in
2009 '') COLUMNS='80';;
2010 esac
2011
2012 : set up the echo used in my read
2013 myecho="case \"\$xxxm\" in
2014 '') echo $n \"\$rp $c\" >&4;;
2015 *) case \"\$rp\" in
2016         '') echo $n \"[\$xxxm] $c\";;
2017         *)
2018                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2019                         echo \"\$rp\" >&4
2020                         echo $n \"[\$xxxm] $c\" >&4
2021                 else
2022                         echo $n \"\$rp [\$xxxm] $c\" >&4
2023                 fi
2024                 ;;
2025         esac;;
2026 esac"
2027
2028 : now set up to do reads with possible shell escape and default assignment
2029 cat <<EOSC >myread
2030 $startsh
2031 xxxm=\$dflt
2032 $myecho
2033 ans='!'
2034 case "\$fastread" in
2035 yes) case "\$dflt" in
2036         '') ;;
2037         *) ans='';
2038                 case "\$silent-\$rp" in
2039                 true-) ;;
2040                 *) echo " " >&4;;
2041                 esac;;
2042         esac;;
2043 *) case "\$silent" in
2044         true) case "\$rp" in
2045                 '') ans='';;
2046                 esac;;
2047         esac;;
2048 esac
2049 while expr "X\$ans" : "X!" >/dev/null; do
2050         read answ
2051         set x \$xxxm
2052         shift
2053         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2054         case  "\$answ" in
2055         "!")
2056                 sh 1>&4
2057                 echo " "
2058                 $myecho
2059                 ;;
2060         !*)
2061                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2062                 shift
2063                 sh 1>&4 -c "\$*"
2064                 echo " "
2065                 $myecho
2066                 ;;
2067         "\$ans")
2068                 case "\$ans" in
2069                 \\&*)
2070                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2071                         shift
2072                         case "\$1" in
2073                         -d)
2074                                 fastread=yes
2075                                 echo "(OK, I'll run with -d after this question.)" >&4
2076                                 ;;
2077                         -*)
2078                                 echo "*** Sorry, \$1 not supported yet." >&4
2079                                 ;;
2080                         esac
2081                         $myecho
2082                         ans=!
2083                         ;;
2084                 esac;;
2085         *)
2086                 case "\$aok" in
2087                 y)
2088                         echo "*** Substitution done -- please confirm."
2089                         xxxm="\$ans"
2090                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2091                         xxxm="\$ans"
2092                         ans=!
2093                         ;;
2094                 *)
2095                         echo "*** Error -- try again."
2096                         ans=!
2097                         ;;
2098                 esac
2099                 $myecho
2100                 ;;
2101         esac
2102         case "\$ans\$xxxm\$nostick" in
2103         '')
2104                 ans=!
2105                 $myecho
2106                 ;;
2107         esac
2108 done
2109 case "\$ans" in
2110 '') ans="\$xxxm";;
2111 esac
2112 EOSC
2113
2114 : create .config dir to save info across Configure sessions
2115 test -d ../.config || mkdir ../.config
2116 cat >../.config/README <<EOF
2117 This directory created by Configure to save information that should
2118 persist across sessions for $package.
2119
2120 You may safely delete it if you wish.
2121 EOF
2122
2123 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2124 case "$usedevel" in
2125 $define|true|[yY]*) ;;
2126 *) case "$xversion" in
2127    *[13579])
2128         cat >&4 <<EOH
2129 *** WHOA THERE!!! ***
2130
2131     This is an UNSTABLE DEVELOPMENT release.
2132     The version of this $package distribution is $xversion, that is, odd,
2133     (as opposed to even) and that signifies a development release.
2134     If you want a maintenance release, you want an even-numbered version.
2135
2136     Do ***NOT*** install this into production use.
2137     Data corruption and crashes are possible.
2138
2139     It is most seriously suggested that you do not continue any further
2140     unless you want to help in developing and debugging Perl.
2141
2142     If you *still* want to build perl, you can answer 'y' now,
2143     or pass -Dusedevel to Configure.
2144
2145 EOH
2146         rp='Do you really want to continue?'
2147         dflt='n'
2148         . ./myread
2149         case "$ans" in
2150         [yY]) echo >&4 "Okay, continuing."
2151               usedevel="$define" ;;
2152         *) echo >&4 "Okay, bye."
2153            exit 1
2154            ;;
2155         esac
2156         ;;
2157     esac
2158     ;;
2159 esac
2160 case "$usedevel" in
2161 $define|true|[yY]*)
2162         case "$versiononly" in
2163         '') versiononly="$define" ;;
2164         esac
2165         case "$installusrbinperl" in
2166         '') installusrbinperl="$undef" ;;
2167         esac
2168         ;;
2169 esac
2170
2171 : general instructions
2172 needman=true
2173 firsttime=true
2174 user=`(logname) 2>/dev/null`
2175 case "$user" in
2176 '') user=`whoami 2>&1`;;
2177 esac
2178 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2179         firsttime=false
2180         echo " "
2181         rp='Would you like to see the instructions?'
2182         dflt=n
2183         . ./myread
2184         case "$ans" in
2185         [yY]*) ;;
2186         *) needman=false;;
2187         esac
2188 fi
2189 if $needman; then
2190         cat <<EOH
2191
2192 This installation shell script will examine your system and ask you questions
2193 to determine how the perl5 package should be installed. If you get
2194 stuck on a question, you may use a ! shell escape to start a subshell or
2195 execute a command.  Many of the questions will have default answers in square
2196 brackets; typing carriage return will give you the default.
2197
2198 On some of the questions which ask for file or directory names you are allowed
2199 to use the ~name construct to specify the login directory belonging to "name",
2200 even if you don't have a shell which knows about that.  Questions where this is
2201 allowed will be marked "(~name ok)".
2202
2203 EOH
2204         rp=''
2205         dflt='Type carriage return to continue'
2206         . ./myread
2207         cat <<'EOH'
2208
2209 The prompter used in this script allows you to use shell variables and
2210 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2211 in the default answer, as if the default line was a set of arguments given to a
2212 script shell.  This means you may also use $* to repeat the whole default line,
2213 so you do not have to re-type everything to add something to the default.
2214
2215 Everytime there is a substitution, you will have to confirm.  If there is an
2216 error (e.g. an unmatched backtick), the default answer will remain unchanged
2217 and you will be prompted again.
2218
2219 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2220 the questions and use the computed defaults (or the previous answers if there
2221 was already a config.sh file). Type 'Configure -h' for a list of options.
2222 You may also start interactively and then answer '& -d' at any prompt to turn
2223 on the non-interactive behaviour for the remainder of the execution.
2224
2225 EOH
2226         . ./myread
2227         cat <<EOH
2228
2229 Much effort has been expended to ensure that this shell script will run on any
2230 Unix system.  If despite that it blows up on yours, your best bet is to edit
2231 Configure and run it again.  If you can't run Configure for some reason,
2232 you'll have to generate a config.sh file by hand.  Whatever problems you
2233 have, let me (perlbug@perl.org) know how I blew it.
2234
2235 This installation script affects things in two ways:
2236
2237 1) it may do direct variable substitutions on some of the files included
2238    in this kit.
2239 2) it builds a config.h file for inclusion in C programs.  You may edit
2240    any of these files as the need arises after running this script.
2241
2242 If you make a mistake on a question, there is no easy way to back up to it
2243 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2244 files.  Configure will offer to let you do this before it runs the SH files.
2245
2246 EOH
2247         dflt='Type carriage return to continue'
2248         . ./myread
2249         case "$firsttime" in
2250         true) echo $user >>../.config/instruct;;
2251         esac
2252 fi
2253
2254 : find out where common programs are
2255 echo " "
2256 echo "Locating common programs..." >&4
2257 cat <<EOSC >loc
2258 $startsh
2259 case \$# in
2260 0) exit 1;;
2261 esac
2262 thing=\$1
2263 shift
2264 dflt=\$1
2265 shift
2266 for dir in \$*; do
2267         case "\$thing" in
2268         .)
2269         if test -d \$dir/\$thing; then
2270                 echo \$dir
2271                 exit 0
2272         fi
2273         ;;
2274         *)
2275         for thisthing in \$dir/\$thing; do
2276                 : just loop through to pick last item
2277         done
2278         if test -f \$thisthing; then
2279                 echo \$thisthing
2280                 exit 0
2281         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2282                 echo \$thisthing
2283                 exit 0
2284         elif test -f \$dir/\$thing.exe; then
2285                 if test -n "$DJGPP"; then
2286                         echo \$dir/\$thing.exe
2287                 elif test "$eunicefix" != ":"; then
2288                         : on Eunice apparently
2289                         echo \$dir/\$thing
2290                         exit 0
2291                 fi
2292                 exit 0
2293         fi
2294         ;;
2295         esac
2296 done
2297 echo \$dflt
2298 exit 1
2299 EOSC
2300 chmod +x loc
2301 $eunicefix loc
2302 loclist="
2303 awk
2304 cat
2305 chmod
2306 comm
2307 cp
2308 echo
2309 expr
2310 grep
2311 ls
2312 mkdir
2313 rm
2314 sed
2315 sort
2316 touch
2317 tr
2318 uniq
2319 "
2320 trylist="
2321 Mcc
2322 ar
2323 bison
2324 byacc
2325 cpp
2326 csh
2327 date
2328 egrep
2329 gmake
2330 gzip
2331 less
2332 ln
2333 make
2334 more
2335 nm
2336 nroff
2337 pg
2338 test
2339 uname
2340 zip
2341 "
2342 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2343 pth="$pth /lib /usr/lib"
2344 for file in $loclist; do
2345         eval xxx=\$$file
2346         case "$xxx" in
2347         /*|?:[\\/]*)
2348                 if test -f "$xxx"; then
2349                         : ok
2350                 else
2351                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2352                         xxx=`./loc $file $file $pth`
2353                 fi
2354                 ;;
2355         '') xxx=`./loc $file $file $pth`;;
2356         *) xxx=`./loc $xxx $xxx $pth`;;
2357         esac
2358         eval $file=$xxx$_exe
2359         eval _$file=$xxx
2360         case "$xxx" in
2361         /*)
2362                 echo $file is in $xxx.
2363                 ;;
2364         ?:[\\/]*)
2365                 echo $file is in $xxx.
2366                 ;;
2367         *)
2368                 echo "I don't know where '$file' is, and my life depends on it." >&4
2369                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2370                 exit 1
2371                 ;;
2372         esac
2373 done
2374 echo " "
2375 echo "Don't worry if any of the following aren't found..."
2376 say=offhand
2377 for file in $trylist; do
2378         eval xxx=\$$file
2379         case "$xxx" in
2380         /*|?:[\\/]*)
2381                 if test -f "$xxx"; then
2382                         : ok
2383                 else
2384                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2385                         xxx=`./loc $file $file $pth`
2386                 fi
2387                 ;;
2388         '') xxx=`./loc $file $file $pth`;;
2389         *) xxx=`./loc $xxx $xxx $pth`;;
2390         esac
2391         eval $file=$xxx$_exe
2392         eval _$file=$xxx
2393         case "$xxx" in
2394         /*)
2395                 echo $file is in $xxx.
2396                 ;;
2397         ?:[\\/]*)
2398                 echo $file is in $xxx.
2399                 ;;
2400         *)
2401                 echo "I don't see $file out there, $say."
2402                 say=either
2403                 ;;
2404         esac
2405 done
2406 case "$egrep" in
2407 egrep)
2408         echo "Substituting grep for egrep."
2409         egrep=$grep
2410         _egrep=$grep
2411         ;;
2412 esac
2413 case "$ln" in
2414 ln)
2415         echo "Substituting cp for ln."
2416         ln=$cp
2417         _ln=$cp
2418         ;;
2419 esac
2420 case "$make" in
2421 make)   
2422         case "$gmake" in
2423         gmake)
2424         echo "I can't find make or gmake, and my life depends on it." >&4
2425         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2426         exit 1
2427         ;;
2428         esac
2429         ;;
2430 esac    
2431 case "$gmake" in
2432 gmake)  ;;
2433 *)      # We can't have osname yet.
2434         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2435                 # Assume that gmake, if found, is definitely GNU make
2436                 # and prefer it over the system make.
2437                 echo "Substituting gmake for make."
2438                 make=$gmake
2439                 _make=$gmake
2440         fi
2441         ;;
2442 esac
2443 case "$test" in
2444 test)
2445         echo "Hopefully test is built into your sh."
2446         ;;
2447 *)
2448         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2449                 echo "Using the test built into your sh."
2450                 test=test
2451                 _test=test
2452         fi
2453         ;;
2454 esac
2455 case "$echo" in
2456 echo)
2457         echo "Hopefully echo is built into your sh."
2458         ;;
2459 '') ;;
2460 *)
2461         echo " "
2462 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2463         $echo $n "hi there$c" >foo1
2464         echo $n "hi there$c" >foo2
2465         if cmp foo1 foo2 >/dev/null 2>&1; then
2466                 echo "They are compatible.  In fact, they may be identical."
2467         else
2468                 case "$n" in
2469                 '-n') n='' c='\c';;
2470                 *) n='-n' c='';;
2471                 esac
2472                 cat <<FOO
2473 They are not compatible!  You are probably running ksh on a non-USG system.
2474 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2475 have echo built in and we may have to run some Bourne shell scripts.  That
2476 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2477
2478 FOO
2479                 $echo $n "The star should be here-->$c"
2480                 $echo "*"
2481         fi
2482         $rm -f foo1 foo2
2483         ;;
2484 esac
2485
2486 # This question was auctioned at YAPC::Europe-2007 in Vienna
2487 # I never promised you could answer it. I only auctioned the question.
2488 cat <<FOO
2489 The following message is sponsored by
2490
2491   Dresden.pm<--The stars should be here.
2492
2493 Dear Perl user, system administrator or package
2494 maintainer, the Perl community sends greetings to
2495 you. Do you (emblematical) greet back [Y/n]? n
2496
2497 FOO
2498
2499 cat <<EOS >trygcc
2500 $startsh
2501 EOS
2502 cat <<'EOSC' >>trygcc
2503 case "$cc" in
2504 '') ;;
2505 *)  $rm -f try try.*
2506     $cat >try.c <<EOM
2507 int main(int argc, char *argv[]) {
2508   return 0;
2509 }
2510 EOM
2511     if $cc -o try $ccflags $ldflags try.c; then
2512        :
2513     else
2514         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2515         despair=yes
2516         trygcc=yes
2517         case "$cc" in
2518         *gcc*) trygcc=no ;;
2519         esac
2520         # Skip this test because it gives a false match on output like:
2521         #    ./trygcc: line 23: cc: command not found
2522         # case "`$cc -v -c try.c 2>&1`" in
2523         # *gcc*) trygcc=no ;;
2524         # esac
2525         if $test X"$trygcc" = Xyes; then
2526             if gcc -o try -c try.c; then
2527                 echo " "
2528                 echo "You seem to have a working gcc, though." >&4
2529                 # Switching compilers may undo the work of hints files.
2530                 # The most common problem is -D_REENTRANT for threads.
2531                 # This heuristic catches that case, but gets false positives
2532                 # if -Dusethreads was not actually specified.  Better to
2533                 # bail out here with a useful message than fail 
2534                 # mysteriously later. Should we perhaps just try to
2535                 # re-invoke Configure -Dcc=gcc config_args ?
2536                 if $test -f usethreads.cbu; then
2537                         $cat >&4 <<EOM 
2538
2539 *** However, any setting of the C compiler flags (e.g. for thread support)
2540 *** will be lost.  It may be necessary for you to restart Configure and
2541 *** add -Dcc=gcc to your Configure command line.
2542
2543 EOM
2544                         rp="Would you like to go ahead and try gcc anyway?"
2545                         dflt=n
2546                 else
2547                         rp="Would you like to use it?"
2548                         dflt=y
2549                 fi
2550                 if $test -f myread; then
2551                     . ./myread
2552                 else
2553                     if $test -f UU/myread; then
2554                         . ./UU/myread
2555                     else
2556                         echo "Cannot find myread, sorry.  Aborting." >&2
2557                         exit 1
2558                     fi
2559                 fi  
2560                 case "$ans" in
2561                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2562                 esac
2563             fi
2564         fi
2565     fi
2566     $rm -f try try.*
2567     ;;
2568 esac
2569 EOSC
2570
2571 cat <<EOS >checkcc
2572 $startsh
2573 EOS
2574 cat <<'EOSC' >>checkcc
2575 case "$cc" in        
2576 '') ;;
2577 *)  $rm -f try try.*              
2578     $cat >try.c <<EOM
2579 int main(int argc, char *argv[]) {
2580   return 0;
2581 }
2582 EOM
2583     if $cc -o try $ccflags $ldflags try.c; then
2584        :
2585     else
2586         if $test X"$despair" = Xyes; then
2587            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2588         fi
2589         $cat >&4 <<EOM         
2590 You need to find a working C compiler.
2591 Either (purchase and) install the C compiler supplied by your OS vendor,
2592 or for a free C compiler try http://gcc.gnu.org/
2593 I cannot continue any further, aborting.
2594 EOM
2595         exit 1
2596     fi
2597     $rm -f try try.*
2598     ;;
2599 esac
2600 EOSC
2601
2602 : determine whether symbolic links are supported
2603 echo " "
2604 $touch blurfl
2605 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2606         echo "Symbolic links are supported." >&4
2607         lns="$ln -s"
2608 else
2609         echo "Symbolic links are NOT supported." >&4
2610         lns="$ln"
2611 fi
2612 $rm -f blurfl sym
2613
2614 : determine whether symbolic links are supported
2615 echo " "
2616 case "$lns" in
2617 *"ln"*" -s")
2618         echo "Checking how to test for symbolic links..." >&4
2619         $lns blurfl sym
2620         if $test "X$issymlink" = X; then
2621                 case "$newsh" in
2622                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2623                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2624                 esac
2625                 if test $? = 0; then
2626                         issymlink="test -h"
2627                 else
2628                         echo "Your builtin 'test -h' may be broken." >&4
2629                         case "$test" in
2630                         /*)     ;;
2631                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2632                                 for p in $pth
2633                                 do
2634                                         if test -f "$p/$test"; then
2635                                                 test="$p/$test"
2636                                                 break
2637                                         fi
2638                                 done
2639                                 ;;
2640                         esac
2641                         case "$test" in
2642                         /*)
2643                                 echo "Trying external '$test -h'." >&4
2644                                 issymlink="$test -h"
2645                                 if $test ! -h sym >/dev/null 2>&1; then
2646                                         echo "External '$test -h' is broken, too." >&4
2647                                         issymlink=''
2648                                 fi
2649                                 ;;
2650                         *)      issymlink='' ;;
2651                         esac
2652                 fi              
2653         fi
2654         if $test "X$issymlink" = X; then
2655                 if $test -L sym 2>/dev/null; then
2656                         issymlink="$test -L"
2657                         echo "The builtin '$test -L' worked." >&4
2658                 fi
2659         fi
2660         if $test "X$issymlink" != X; then
2661                 echo "You can test for symbolic links with '$issymlink'." >&4
2662         else
2663                 echo "I do not know how you can test for symbolic links." >&4
2664         fi
2665         $rm -f blurfl sym
2666         ;;
2667 *)      echo "No symbolic links, so not testing for their testing..." >&4
2668         ;;
2669 esac
2670 echo " "
2671
2672
2673 case "$mksymlinks" in
2674 $define|true|[yY]*)
2675         case "$src" in
2676         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2677                 exit 1
2678                 ;;
2679         *)      case "$lns:$issymlink" in
2680                 *"ln"*" -s:"*"test -"?)
2681                         echo "Creating the symbolic links..." >&4
2682                         echo "(First creating the subdirectories...)" >&4
2683                         cd ..
2684                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2685                                 read directory
2686                                 test -z "$directory" && break
2687                                 mkdir -p $directory
2688                         done
2689                         # Sanity check 1.
2690                         if test ! -d t/base; then
2691                                 echo "Failed to create the subdirectories.  Aborting." >&4
2692                                 exit 1
2693                         fi
2694                         echo "(Then creating the symlinks...)" >&4
2695                         awk '{print $1}' $src/MANIFEST | while true; do
2696                                 read filename
2697                                 test -z "$filename" && break
2698                                 if test -f $filename; then
2699                                         if $issymlink $filename; then
2700                                                 rm -f $filename
2701                                         fi
2702                                 fi
2703                                 if test -f $filename; then
2704                                         echo "$filename already exists, not symlinking."
2705                                 else
2706                                         ln -s $src/$filename $filename
2707                                 fi
2708                         done
2709                         # Sanity check 2.
2710                         if test ! -f t/base/lex.t; then
2711                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2712                                 exit 1
2713                         fi
2714                         cd UU
2715                         ;;
2716                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2717                         ;;
2718                 esac
2719                 ;;
2720         esac
2721         ;;
2722 esac
2723
2724
2725 case "$usecrosscompile" in
2726 $define|true|[yY]*)
2727         $echo "Cross-compiling..."
2728         croak=''
2729         case "$cc" in
2730         *-*-gcc) # A cross-compiling gcc, probably.
2731             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2732             ar=$targetarch-ar
2733             # leave out ld, choosing it is more complex
2734             nm=$targetarch-nm
2735             ranlib=$targetarch-ranlib
2736             $echo 'extern int foo;' > try.c
2737             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2738             shift
2739             if $test $# -gt 0; then
2740                 incpth="$incpth $*"
2741                 incpth="`$echo $incpth|$sed 's/^ //'`"
2742                 echo "Guessing incpth '$incpth'." >&4
2743                 for i in $*; do
2744                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2745                     if $test -d $j; then
2746                         libpth="$libpth $j"
2747                     fi
2748                 done   
2749                 libpth="`$echo $libpth|$sed 's/^ //'`"
2750                 echo "Guessing libpth '$libpth'." >&4
2751             fi
2752             $rm -f try.c
2753             ;;
2754         esac
2755         case "$targetarch" in
2756         '') echo "Targetarch not defined." >&4; croak=y ;;
2757         *)  echo "Using targetarch $targetarch." >&4 ;;
2758         esac
2759         case "$incpth" in
2760         '') echo "Incpth not defined." >&4; croak=y ;;
2761         *)  echo "Using incpth '$incpth'." >&4 ;;
2762         esac
2763         case "$libpth" in
2764         '') echo "Libpth not defined." >&4; croak=y ;;
2765         *)  echo "Using libpth '$libpth'." >&4 ;;
2766         esac
2767         case "$usrinc" in
2768         '') for i in $incpth; do
2769                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2770                     usrinc=$i
2771                     echo "Guessing usrinc $usrinc." >&4
2772                     break
2773                 fi
2774             done
2775             case "$usrinc" in
2776             '') echo "Usrinc not defined." >&4; croak=y ;;
2777             esac
2778             ;;
2779         *)  echo "Using usrinc $usrinc." >&4 ;;
2780         esac
2781         case "$targethost" in
2782         '') echo "Targethost not defined." >&4; croak=y ;;
2783         *)  echo "Using targethost $targethost." >&4
2784         esac
2785         locincpth=' '
2786         loclibpth=' '
2787         case "$croak" in
2788         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2789         esac
2790         case "$src" in
2791         /*) run=$src/Cross/run
2792             targetmkdir=$src/Cross/mkdir
2793             to=$src/Cross/to
2794             from=$src/Cross/from
2795             ;;
2796         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2797             run=$pwd/Cross/run
2798             targetmkdir=$pwd/Cross/mkdir
2799             to=$pwd/Cross/to
2800             from=$pwd/Cross/from
2801             ;;
2802         esac
2803         case "$targetrun" in
2804         '') targetrun=ssh ;;
2805         esac
2806         case "$targetto" in
2807         '') targetto=scp ;;
2808         esac
2809         case "$targetfrom" in
2810         '') targetfrom=scp ;;
2811         esac
2812         run=$run-$targetrun
2813         to=$to-$targetto
2814         from=$from-$targetfrom
2815         case "$targetdir" in
2816         '')  targetdir=/tmp
2817              echo "Guessing targetdir $targetdir." >&4
2818              ;;
2819         esac
2820         case "$targetuser" in
2821         '')  targetuser=root
2822              echo "Guessing targetuser $targetuser." >&4
2823              ;;
2824         esac
2825         case "$targetfrom" in
2826         scp)    q=-q ;;
2827         *)      q='' ;;
2828         esac
2829         case "$targetrun" in
2830         ssh|rsh)
2831             cat >$run <<EOF
2832 #!/bin/sh
2833 case "\$1" in
2834 -cwd)
2835   shift
2836   cwd=\$1
2837   shift
2838   ;;
2839 esac
2840 case "\$cwd" in
2841 '') cwd=$targetdir ;;
2842 esac
2843 exe=\$1
2844 shift
2845 if $test ! -f \$exe.xok; then
2846   $to \$exe
2847   $touch \$exe.xok
2848 fi
2849 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2850 EOF
2851             ;;
2852         *)  echo "Unknown targetrun '$targetrun'" >&4
2853             exit 1
2854             ;;
2855         esac
2856         case "$targetmkdir" in
2857         */Cross/mkdir)
2858             cat >$targetmkdir <<EOF
2859 #!/bin/sh
2860 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2861 EOF
2862             $chmod a+rx $targetmkdir
2863             ;;
2864         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2865             exit 1
2866             ;;
2867         esac
2868         case "$targetto" in
2869         scp|rcp)
2870             cat >$to <<EOF
2871 #!/bin/sh
2872 for f in \$@
2873 do
2874   case "\$f" in
2875   /*)
2876     $targetmkdir \`dirname \$f\`
2877     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2878     ;;
2879   *)
2880     $targetmkdir $targetdir/\`dirname \$f\`
2881     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2882     ;;
2883   esac
2884 done
2885 exit 0
2886 EOF
2887             ;;
2888         cp) cat >$to <<EOF
2889 #!/bin/sh
2890 for f in \$@
2891 do
2892   case "\$f" in
2893   /*)
2894     $mkdir -p $targetdir/\`dirname \$f\`
2895     $cp \$f $targetdir/\$f || exit 1
2896     ;;
2897   *)
2898     $targetmkdir $targetdir/\`dirname \$f\`
2899     $cp \$f $targetdir/\$f || exit 1
2900     ;;
2901   esac
2902 done
2903 exit 0
2904 EOF
2905             ;;
2906         *)  echo "Unknown targetto '$targetto'" >&4
2907             exit 1
2908             ;;
2909         esac
2910         case "$targetfrom" in
2911         scp|rcp)
2912           cat >$from <<EOF
2913 #!/bin/sh
2914 for f in \$@
2915 do
2916   $rm -f \$f
2917   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2918 done
2919 exit 0
2920 EOF
2921             ;;
2922         cp) cat >$from <<EOF
2923 #!/bin/sh
2924 for f in \$@
2925 do
2926   $rm -f \$f
2927   cp $targetdir/\$f . || exit 1
2928 done
2929 exit 0
2930 EOF
2931             ;;
2932         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2933             exit 1
2934             ;;
2935         esac
2936         if $test ! -f $run; then
2937             echo "Target 'run' script '$run' not found." >&4
2938         else
2939             $chmod a+rx $run
2940         fi
2941         if $test ! -f $to; then
2942             echo "Target 'to' script '$to' not found." >&4
2943         else
2944             $chmod a+rx $to
2945         fi
2946         if $test ! -f $from; then
2947             echo "Target 'from' script '$from' not found." >&4
2948         else
2949             $chmod a+rx $from
2950         fi
2951         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2952             exit 1
2953         fi
2954         cat >&4 <<EOF
2955 Using '$run' for remote execution,
2956 and '$from' and '$to'
2957 for remote file transfer.
2958 EOF
2959         ;;
2960 *)      run=''
2961         to=:
2962         from=:
2963         usecrosscompile='undef'
2964         targetarch=''
2965         ;;
2966 esac
2967
2968 : see whether [:lower:] and [:upper:] are supported character classes
2969 echo " "
2970 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2971 ABYZ)
2972         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2973         up='[:upper:]'
2974         low='[:lower:]'
2975         ;;
2976 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2977         # (0xd9 and 0xe2), therefore that is a nice testing point.
2978         if test "X$up" = X -o "X$low" = X; then
2979             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2980             rs) up='[A-Z]'
2981                 low='[a-z]'
2982                 ;;
2983             esac
2984         fi
2985         if test "X$up" = X -o "X$low" = X; then
2986             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2987             rs) up='A-Z'
2988                 low='a-z'
2989                 ;;
2990             esac
2991         fi
2992         if test "X$up" = X -o "X$low" = X; then
2993             case "`echo RS | od -x 2>/dev/null`" in
2994             *D9E2*|*d9e2*)
2995                 echo "Hey, this might be EBCDIC." >&4
2996                 if test "X$up" = X -o "X$low" = X; then
2997                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2998                     rs) up='[A-IJ-RS-Z]'
2999                         low='[a-ij-rs-z]'
3000                         ;;
3001                     esac
3002                 fi
3003                 if test "X$up" = X -o "X$low" = X; then
3004                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3005                     rs) up='A-IJ-RS-Z'
3006                         low='a-ij-rs-z'
3007                         ;;
3008                     esac
3009                 fi
3010                 ;;
3011             esac
3012         fi
3013 esac
3014 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3015 rs)
3016     echo "Using $up and $low to convert case." >&4
3017     ;;
3018 *)
3019     echo "I don't know how to translate letters from upper to lower case." >&4
3020     echo "Your tr is not acting any way I know of." >&4
3021     exit 1
3022     ;;
3023 esac
3024 : set up the translation script tr, must be called with ./tr of course
3025 cat >tr <<EOSC
3026 $startsh
3027 case "\$1\$2" in
3028 '[A-Z][a-z]') exec $tr '$up' '$low';;
3029 '[a-z][A-Z]') exec $tr '$low' '$up';;
3030 esac
3031 exec $tr "\$@"
3032 EOSC
3033 chmod +x tr
3034 $eunicefix tr
3035
3036 : Try to determine whether config.sh was made on this system
3037 case "$config_sh" in
3038 '')
3039 myuname=`$uname -a 2>/dev/null`
3040 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3041 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3042 # because the A-Z/a-z are not consecutive.
3043 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3044         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3045 newmyuname="$myuname"
3046 dflt=n
3047 case "$knowitall" in
3048 '')
3049         if test -f ../config.sh; then
3050                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3051                         eval "`grep myuname= ../config.sh`"
3052                 fi
3053                 if test "X$myuname" = "X$newmyuname"; then
3054                         dflt=y
3055                 fi
3056         fi
3057         ;;
3058 *) dflt=y;;
3059 esac
3060
3061 : Get old answers from old config file if Configure was run on the
3062 : same system, otherwise use the hints.
3063 hint=default
3064 cd ..
3065 if test -f config.sh; then
3066         echo " "
3067         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3068         . UU/myread
3069         case "$ans" in
3070         n*|N*) echo "OK, I'll ignore it."
3071                 mv config.sh config.sh.old
3072                 myuname="$newmyuname"
3073                 ;;
3074         *)  echo "Fetching default answers from your old config.sh file..." >&4
3075                 tmp_n="$n"
3076                 tmp_c="$c"
3077                 tmp_sh="$sh"
3078                 . ./config.sh
3079                 cp config.sh UU
3080                 n="$tmp_n"
3081                 c="$tmp_c"
3082                 : Older versions did not always set $sh.  Catch re-use of such
3083                 : an old config.sh.
3084                 case "$sh" in
3085                 '') sh="$tmp_sh" ;;
3086                 esac
3087                 hint=previous
3088                 ;;
3089         esac
3090 fi
3091 . ./UU/checkcc
3092 if test ! -f config.sh; then
3093         $cat <<EOM
3094
3095 First time through, eh?  I have some defaults handy for some systems
3096 that need some extra help getting the Configure answers right:
3097
3098 EOM
3099         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3100         dflt=''
3101         : Half the following guesses are probably wrong... If you have better
3102         : tests or hints, please send them to perlbug@perl.org
3103         : The metaconfig authors would also appreciate a copy...
3104         $test -f /irix && osname=irix
3105         $test -f /xenix && osname=sco_xenix
3106         $test -f /dynix && osname=dynix
3107         $test -f /dnix && osname=dnix
3108         $test -f /lynx.os && osname=lynxos
3109         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3110         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3111         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3112         $test -f /bin/mips && /bin/mips && osname=mips
3113         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3114                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3115         $test -d /usr/apollo/bin && osname=apollo
3116         $test -f /etc/saf/_sactab && osname=svr4
3117         $test -d /usr/include/minix && osname=minix
3118         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3119         if $test -d /MachTen -o -d /MachTen_Folder; then
3120                 osname=machten
3121                 if $test -x /sbin/version; then
3122                         osvers=`/sbin/version | $awk '{print $2}' |
3123                         $sed -e 's/[A-Za-z]$//'`
3124                 elif $test -x /usr/etc/version; then
3125                         osvers=`/usr/etc/version | $awk '{print $2}' |
3126                         $sed -e 's/[A-Za-z]$//'`
3127                 else
3128                         osvers="$2.$3"
3129                 fi
3130         fi
3131
3132         $test -f /sys/posix.dll &&
3133                 $test -f /usr/bin/what &&
3134                 set X `/usr/bin/what /sys/posix.dll` &&
3135                 $test "$3" = UWIN &&
3136                 osname=uwin &&
3137                 osvers="$5"
3138
3139         if $test -f $uname; then
3140                 set X $myuname
3141                 shift
3142
3143                 case "$5" in
3144                 fps*) osname=fps ;;
3145                 mips*)
3146                         case "$4" in
3147                         umips) osname=umips ;;
3148                         *) osname=mips ;;
3149                         esac;;
3150                 [23]100) osname=mips ;;
3151                 next*) osname=next ;;
3152                 i386*)
3153                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3154                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3155                                 osname='sco'
3156                                 osvers=$tmp
3157                         elif $test -f /etc/kconfig; then
3158                                 osname=isc
3159                                 if test "$lns" = "$ln -s"; then
3160                                         osvers=4
3161                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3162                                         osvers=3
3163                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3164                                         osvers=2
3165                                 fi
3166                         fi
3167                         tmp=''
3168                         ;;
3169                 pc*)
3170                         if test -n "$DJGPP"; then
3171                                 osname=dos
3172                                 osvers=djgpp
3173                         fi
3174                         ;;
3175                 esac
3176
3177                 case "$1" in
3178                 aix) osname=aix
3179                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3180                         case "$tmp" in
3181                         # oslevel can fail with:
3182                         # oslevel: Unable to acquire lock.
3183                         *not\ found) osvers="$4"."$3" ;;
3184                         '<3240'|'<>3240') osvers=3.2.0 ;;
3185                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3186                         '=3250'|'>3250') osvers=3.2.5 ;;
3187                         *) osvers=$tmp;;
3188                         esac
3189                         ;;
3190                 bsd386) osname=bsd386
3191                         osvers=`$uname -r`
3192                         ;;
3193                 cygwin*) osname=cygwin
3194                         osvers="$3"
3195                         ;;
3196                 *dc.osx) osname=dcosx
3197                         osvers="$3"
3198                         ;;
3199                 dnix) osname=dnix
3200                         osvers="$3"
3201                         ;;
3202                 domainos) osname=apollo
3203                         osvers="$3"
3204                         ;;
3205                 dgux)   osname=dgux
3206                         osvers="$3"
3207                         ;;
3208                 dragonfly) osname=dragonfly
3209                         osvers="$3"
3210                         ;;
3211                 dynixptx*) osname=dynixptx
3212                         osvers=`echo "$4"|sed 's/^v//'`
3213                         ;;
3214                 freebsd) osname=freebsd
3215                         osvers="$3" ;;
3216                 genix)  osname=genix ;;
3217                 gnu)    osname=gnu
3218                         osvers="$3" ;;
3219                 hp*)    osname=hpux
3220                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3221                         ;;
3222                 irix*)  osname=irix
3223                         case "$3" in
3224                         4*) osvers=4 ;;
3225                         5*) osvers=5 ;;
3226                         *)      osvers="$3" ;;
3227                         esac
3228                         ;;
3229                 linux)  osname=linux
3230                         case "$3" in
3231                         *)      osvers="$3" ;;
3232                         esac
3233                         ;;
3234                 MiNT)   osname=mint
3235                         ;;
3236                 netbsd*) osname=netbsd
3237                         osvers="$3"
3238                         ;;
3239                 news-os) osvers="$3"
3240                         case "$3" in
3241                         4*) osname=newsos4 ;;
3242                         *) osname=newsos ;;
3243                         esac
3244                         ;;
3245                 next*) osname=next ;;
3246                 nonstop-ux) osname=nonstopux ;;
3247                 openbsd) osname=openbsd
3248                         osvers="$3"
3249                         ;;
3250                 os2)    osname=os2
3251                         osvers="$4"
3252                         ;;
3253                 POSIX-BC | posix-bc ) osname=posix-bc
3254                         osvers="$3"
3255                         ;;
3256                 powerux | power_ux | powermax_os | powermaxos | \
3257                 powerunix | power_unix) osname=powerux
3258                         osvers="$3"
3259                         ;;
3260                 qnx) osname=qnx
3261                         osvers="$4"
3262                         ;;
3263                 solaris) osname=solaris
3264                         case "$3" in
3265                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3266                         *)      osvers="$3" ;;
3267                         esac
3268                         ;;
3269                 sunos) osname=sunos
3270                         case "$3" in
3271                         5*) osname=solaris
3272                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3273                         *)      osvers="$3" ;;
3274                         esac
3275                         ;;
3276                 titanos) osname=titanos
3277                         case "$3" in
3278                         1*) osvers=1 ;;
3279                         2*) osvers=2 ;;
3280                         3*) osvers=3 ;;
3281                         4*) osvers=4 ;;
3282                         *)      osvers="$3" ;;
3283                         esac
3284                         ;;
3285                 ultrix) osname=ultrix
3286                         osvers="$3"
3287                         ;;
3288                 osf1|mls+)      case "$5" in
3289                                 alpha)
3290                                         osname=dec_osf
3291                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3292                                         case "$osvers" in
3293                                         [1-9].[0-9]*) ;;
3294                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3295                                         esac
3296                                         ;;
3297                         hp*)    osname=hp_osf1  ;;
3298                         mips)   osname=mips_osf1 ;;
3299                         esac
3300                         ;;
3301                 # UnixWare 7.1.2 is known as Open UNIX 8
3302                 openunix|unixware) osname=svr5
3303                         osvers="$4"
3304                         ;;
3305                 uts)    osname=uts
3306                         osvers="$3"
3307                         ;;
3308                 vos) osvers="$3"
3309                         ;;
3310                 $2) case "$osname" in
3311                         *isc*) ;;
3312                         *freebsd*) ;;
3313                         svr*)
3314                                 : svr4.x or possibly later
3315                                 case "svr$3" in
3316                                 ${osname}*)
3317                                         osname=svr$3
3318                                         osvers=$4
3319                                         ;;
3320                                 esac
3321                                 case "$osname" in
3322                                 svr4.0)
3323                                         : Check for ESIX
3324                                         if test -f /stand/boot ; then
3325                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3326                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3327                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3328                                                         if test -n "$isesix"; then
3329                                                                 osname=esix4
3330                                                         fi
3331                                                 fi
3332                                         fi
3333                                         ;;
3334                                 esac
3335                                 ;;
3336                         *)      if test -f /etc/systemid; then
3337                                         osname=sco
3338                                         set `echo $3 | $sed 's/\./ /g'` $4
3339                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3340                                                 osvers=$1.$2.$3
3341                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3342                                                 osvers=$1.$2
3343                                         elif $test -f $src/hints/sco_$1.sh; then
3344                                                 osvers=$1
3345                                         fi
3346                                 else
3347                                         case "$osname" in
3348                                         '') : Still unknown.  Probably a generic Sys V.
3349                                                 osname="sysv"
3350                                                 osvers="$3"
3351                                                 ;;
3352                                         esac
3353                                 fi
3354                                 ;;
3355                         esac
3356                         ;;
3357                 *)      case "$osname" in
3358                         '') : Still unknown.  Probably a generic BSD.
3359                                 osname="$1"
3360                                 osvers="$3"
3361                                 ;;
3362                         esac
3363                         ;;
3364                 esac
3365         else
3366                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3367                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3368                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3369                                 osname=news_os
3370                         fi
3371                         $rm -f UU/kernel.what
3372                 elif test -d c:/. -o -n "$is_os2" ; then
3373                         set X $myuname
3374                         osname=os2
3375                         osvers="$5"
3376                 fi
3377         fi
3378
3379         case "$targetarch" in
3380         '') ;;
3381         *)  hostarch=$osname
3382             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3383             osvers=''
3384             ;;
3385         esac
3386
3387         : Now look for a hint file osname_osvers, unless one has been
3388         : specified already.
3389         case "$hintfile" in
3390         ''|' ')
3391                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3392                 : Also try without trailing minor version numbers.
3393                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3394                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3395                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3396                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3397                 case "$file" in
3398                 '') dflt=none ;;
3399                 *)  case "$osvers" in
3400                         '') dflt=$file
3401                                 ;;
3402                         *)  if $test -f $src/hints/$file.sh ; then
3403                                         dflt=$file
3404                                 elif $test -f $src/hints/$xfile.sh ; then
3405                                         dflt=$xfile
3406                                 elif $test -f $src/hints/$xxfile.sh ; then
3407                                         dflt=$xxfile
3408                                 elif $test -f $src/hints/$xxxfile.sh ; then
3409                                         dflt=$xxxfile
3410                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3411                                         dflt=$xxxxfile
3412                                 elif $test -f "$src/hints/${osname}.sh" ; then
3413                                         dflt="${osname}"
3414                                 else
3415                                         dflt=none
3416                                 fi
3417                                 ;;
3418                         esac
3419                         ;;
3420                 esac
3421                 if $test -f Policy.sh ; then
3422                         case "$dflt" in
3423                         *Policy*) ;;
3424                         none) dflt="Policy" ;;
3425                         *) dflt="Policy $dflt" ;;
3426                         esac
3427                 fi
3428                 ;;
3429         *)
3430                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3431                 ;;
3432         esac
3433
3434         if $test -f Policy.sh ; then
3435                 $cat <<EOM
3436
3437 There's also a Policy hint file available, which should make the
3438 site-specific (policy) questions easier to answer.
3439 EOM
3440
3441         fi
3442
3443         $cat <<EOM
3444
3445 You may give one or more space-separated answers, or "none" if appropriate.
3446 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3447 previous run of Configure, you may specify it as well as or instead of
3448 OS-specific hints.  If hints are provided for your OS, you should use them:
3449 although Perl can probably be built without hints on many platforms, using
3450 hints often improve performance and may enable features that Configure can't
3451 set up on its own. If there are no hints that match your OS, specify "none";
3452 DO NOT give a wrong version or a wrong OS.
3453
3454 EOM
3455
3456         rp="Which of these apply, if any?"
3457         . UU/myread
3458         tans=$ans
3459         for file in $tans; do
3460                 if $test X$file = XPolicy -a -f Policy.sh; then
3461                         . Policy.sh
3462                         $cat Policy.sh >> UU/config.sh
3463                 elif $test -f $src/hints/$file.sh; then
3464                         . $src/hints/$file.sh
3465                         $cat $src/hints/$file.sh >> UU/config.sh
3466                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3467                         : nothing
3468                 else
3469                         : Give one chance to correct a possible typo.
3470                         echo "$file.sh does not exist"
3471                         dflt=$file
3472                         rp="hint to use instead?"
3473                         . UU/myread
3474                         for file in $ans; do
3475                                 if $test -f "$src/hints/$file.sh"; then
3476                                         . $src/hints/$file.sh
3477                                         $cat $src/hints/$file.sh >> UU/config.sh
3478                                 elif $test X$ans = X -o X$ans = Xnone ; then
3479                                         : nothing
3480                                 else
3481                                         echo "$file.sh does not exist -- ignored."
3482                                 fi
3483                         done
3484                 fi
3485         done
3486
3487         hint=recommended
3488         : Remember our hint file for later.
3489         if $test -f "$src/hints/$file.sh" ; then
3490                 hintfile="$file"
3491         else
3492                 hintfile=''
3493         fi
3494 fi
3495 cd UU
3496 ;;
3497 *)
3498         echo " "
3499         echo "Fetching default answers from $config_sh..." >&4
3500         tmp_n="$n"
3501         tmp_c="$c"
3502         cd ..
3503         cp $config_sh config.sh 2>/dev/null
3504         chmod +w config.sh
3505         . ./config.sh
3506         cd UU
3507         cp ../config.sh .
3508         n="$tmp_n"
3509         c="$tmp_c"
3510         hint=previous
3511         ;;
3512 esac
3513 test "$override" && . ./optdef.sh
3514
3515 : Restore computed paths
3516 for file in $loclist $trylist; do
3517         eval $file="\$_$file"
3518 done
3519
3520 cat << EOM
3521
3522 Configure uses the operating system name and version to set some defaults.
3523 The default value is probably right if the name rings a bell. Otherwise,
3524 since spelling matters for me, either accept the default or answer "none"
3525 to leave it blank.
3526
3527 EOM
3528 case "$osname" in
3529         ''|' ')
3530                 case "$hintfile" in
3531                 ''|' '|none) dflt=none ;;
3532                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3533                 esac
3534                 ;;
3535         *) dflt="$osname" ;;
3536 esac
3537 rp="Operating system name?"
3538 . ./myread
3539 case "$ans" in
3540 none)  osname='' ;;
3541 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3542 esac
3543 echo " "
3544 case "$osvers" in
3545         ''|' ')
3546                 case "$hintfile" in
3547                 ''|' '|none) dflt=none ;;
3548                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3549                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3550                         case "$dflt" in
3551                         ''|' ') dflt=none ;;
3552                         esac
3553                         ;;
3554                 esac
3555                 ;;
3556         *) dflt="$osvers" ;;
3557 esac
3558 rp="Operating system version?"
3559 . ./myread
3560 case "$ans" in
3561 none)  osvers='' ;;
3562 *) osvers="$ans" ;;
3563 esac
3564
3565
3566 . ./posthint.sh
3567
3568 : who configured the system
3569 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3570 case "$cf_by" in
3571 "")
3572         cf_by=`(logname) 2>/dev/null`
3573         case "$cf_by" in
3574         "")
3575                 cf_by=`(whoami) 2>/dev/null`
3576                 case "$cf_by" in
3577                 "") cf_by=unknown ;;
3578                 esac ;;
3579         esac ;;
3580 esac
3581
3582 : decide how portable to be.  Allow command line overrides.
3583 case "$d_portable" in
3584 "$undef") ;;
3585 *)      d_portable="$define" ;;
3586 esac
3587
3588 : set up shell script to do ~ expansion
3589 cat >filexp <<EOSS
3590 $startsh
3591 : expand filename
3592 case "\$1" in
3593  ~/*|~)
3594         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3595         ;;
3596  ~*)
3597         if $test -f /bin/csh; then
3598                 /bin/csh -f -c "glob \$1"
3599                 failed=\$?
3600                 echo ""
3601                 exit \$failed
3602         else
3603                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3604                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3605                 if $test ! -d "\$dir"; then
3606                         me=\`basename \$0\`
3607                         echo "\$me: can't locate home directory for: \$name" >&2
3608                         exit 1
3609                 fi
3610                 case "\$1" in
3611                 */*)
3612                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3613                         ;;
3614                 *)
3615                         echo \$dir
3616                         ;;
3617                 esac
3618         fi
3619         ;;
3620 *)
3621         echo \$1
3622         ;;
3623 esac
3624 EOSS
3625 chmod +x filexp
3626 $eunicefix filexp
3627
3628 : now set up to get a file name
3629 cat <<EOS >getfile
3630 $startsh
3631 EOS
3632 cat <<'EOSC' >>getfile
3633 tilde=''
3634 fullpath=''
3635 already=''
3636 skip=''
3637 none_ok=''
3638 exp_file=''
3639 nopath_ok=''
3640 orig_rp="$rp"
3641 orig_dflt="$dflt"
3642 case "$gfpth" in
3643 '') gfpth='.' ;;
3644 esac
3645
3646 case "$fn" in
3647 *\(*)
3648         : getfile will accept an answer from the comma-separated list
3649         : enclosed in parentheses even if it does not meet other criteria.
3650         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3651         fn=`echo $fn | sed 's/(.*)//'`
3652         ;;
3653 esac
3654
3655 case "$fn" in
3656 *:*)
3657         loc_file=`expr $fn : '.*:\(.*\)'`
3658         fn=`expr $fn : '\(.*\):.*'`
3659         ;;
3660 esac
3661
3662 case "$fn" in
3663 *~*) tilde=true;;
3664 esac
3665 case "$fn" in
3666 */*) fullpath=true;;
3667 esac
3668 case "$fn" in
3669 *+*) skip=true;;
3670 esac
3671 case "$fn" in
3672 *n*) none_ok=true;;
3673 esac
3674 case "$fn" in
3675 *e*) exp_file=true;;
3676 esac
3677 case "$fn" in
3678 *p*) nopath_ok=true;;
3679 esac
3680
3681 case "$fn" in
3682 *f*) type='File';;
3683 *d*) type='Directory';;
3684 *l*) type='Locate';;
3685 esac
3686
3687 what="$type"
3688 case "$what" in
3689 Locate) what='File';;
3690 esac
3691
3692 case "$exp_file" in
3693 '')
3694         case "$d_portable" in
3695         "$define") ;;
3696         *) exp_file=true;;
3697         esac
3698         ;;
3699 esac
3700
3701 cd ..
3702 while test "$type"; do
3703         redo=''
3704         rp="$orig_rp"
3705         dflt="$orig_dflt"
3706         case "$tilde" in
3707         true) rp="$rp (~name ok)";;
3708         esac
3709         . UU/myread
3710         if test -f UU/getfile.ok && \
3711                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3712         then
3713                 value="$ans"
3714                 ansexp="$ans"
3715                 break
3716         fi
3717         case "$ans" in
3718         none)
3719                 value=''
3720                 ansexp=''
3721                 case "$none_ok" in
3722                 true) type='';;
3723                 esac
3724                 ;;
3725         *)
3726                 case "$tilde" in
3727                 '') value="$ans"
3728                         ansexp="$ans";;
3729                 *)
3730                         value=`UU/filexp $ans`
3731                         case $? in
3732                         0)
3733                                 if test "$ans" != "$value"; then
3734                                         echo "(That expands to $value on this system.)"
3735                                 fi
3736                                 ;;
3737                         *) value="$ans";;
3738                         esac
3739                         ansexp="$value"
3740                         case "$exp_file" in
3741                         '') value="$ans";;
3742                         esac
3743                         ;;
3744                 esac
3745                 case "$fullpath" in
3746                 true)
3747                         case "$ansexp" in
3748                         /*) value="$ansexp" ;;
3749                         [a-zA-Z]:/*) value="$ansexp" ;;
3750                         *)
3751                                 redo=true
3752                                 case "$already" in
3753                                 true)
3754                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3755                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3756                                         ;;
3757                                 *)
3758                                 echo "Please give a full path name, starting with slash." >&4
3759                                         case "$tilde" in
3760                                         true)
3761                                 echo "Note that using ~name is ok provided it expands well." >&4
3762                                                 already=true
3763                                                 ;;
3764                                         esac
3765                                 esac
3766                                 ;;
3767                         esac
3768                         ;;
3769                 esac
3770                 case "$redo" in
3771                 '')
3772                         case "$type" in
3773                         File)
3774                                 for fp in $gfpth; do
3775                                         if test "X$fp" = X.; then
3776                                             pf="$ansexp"
3777                                         else    
3778                                             pf="$fp/$ansexp"
3779                                         fi
3780                                         if test -f "$pf"; then
3781                                                 type=''
3782                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3783                                         then
3784                                                 echo "($value is not a plain file, but that's ok.)"
3785                                                 type=''
3786                                         fi
3787                                         if test X"$type" = X; then
3788                                             value="$pf"
3789                                             break
3790                                         fi
3791                                 done
3792                                 ;;
3793                         Directory)
3794                                 for fp in $gfpth; do
3795                                         if test "X$fp" = X.; then
3796                                             dir="$ans"
3797                                             direxp="$ansexp"
3798                                         else    
3799                                             dir="$fp/$ansexp"
3800                                             direxp="$fp/$ansexp"
3801                                         fi
3802                                         if test -d "$direxp"; then
3803                                                 type=''
3804                                                 value="$dir"
3805                                                 break
3806                                         fi
3807                                 done
3808                                 ;;
3809                         Locate)
3810                                 if test -d "$ansexp"; then
3811                                         echo "(Looking for $loc_file in directory $value.)"
3812                                         value="$value/$loc_file"
3813                                         ansexp="$ansexp/$loc_file"
3814                                 fi
3815                                 if test -f "$ansexp"; then
3816                                         type=''
3817                                 fi
3818                                 case "$nopath_ok" in
3819                                 true)   case "$value" in
3820                                         */*) ;;
3821                                         *)      echo "Assuming $value will be in people's path."
3822                                                 type=''
3823                                                 ;;
3824                                         esac
3825                                         ;;
3826                                 esac
3827                                 ;;
3828                         esac
3829
3830                         case "$skip" in
3831                         true) type='';
3832                         esac
3833
3834                         case "$type" in
3835                         '') ;;
3836                         *)
3837                                 if test "$fastread" = yes; then
3838                                         dflt=y
3839                                 else
3840                                         dflt=n
3841                                 fi
3842                                 rp="$what $value doesn't exist.  Use that name anyway?"
3843                                 . UU/myread
3844                                 dflt=''
3845                                 case "$ans" in
3846                                 y*) type='';;
3847                                 *) echo " ";;
3848                                 esac
3849                                 ;;
3850                         esac
3851                         ;;
3852                 esac
3853                 ;;
3854         esac
3855 done
3856 cd UU
3857 ans="$value"
3858 rp="$orig_rp"
3859 dflt="$orig_dflt"
3860 rm -f getfile.ok
3861 test "X$gfpthkeep" != Xy && gfpth=""
3862 EOSC
3863
3864 : determine root of directory hierarchy where package will be installed.
3865 case "$prefix" in
3866 '')
3867         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3868         ;;
3869 *?/)
3870         dflt=`echo "$prefix" | sed 's/.$//'`
3871         ;;
3872 *)
3873         dflt="$prefix"
3874         ;;
3875 esac
3876 $cat <<EOM
3877
3878 By default, $package will be installed in $dflt/bin, manual pages
3879 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3880 installation directories. Typically this is something like /usr/local.
3881 If you wish to have binaries under /usr/bin but other parts of the
3882 installation under /usr/local, that's ok: you will be prompted
3883 separately for each of the installation directories, the prefix being
3884 only used to set the defaults.
3885
3886 EOM
3887 fn=d~
3888 rp='Installation prefix to use?'
3889 . ./getfile
3890 oldprefix=''
3891 case "$prefix" in
3892 '') ;;
3893 *)
3894         case "$ans" in
3895         "$prefix") ;;
3896         *) oldprefix="$prefix";;
3897         esac
3898         ;;
3899 esac
3900 prefix="$ans"
3901 prefixexp="$ansexp"
3902
3903 case "$afsroot" in
3904 '')     afsroot=/afs ;;
3905 *)      afsroot=$afsroot ;;
3906 esac
3907
3908 : is AFS running?
3909 echo " "
3910 case "$afs" in
3911 $define|true)   afs=true ;;
3912 $undef|false)   afs=false ;;
3913 *)      if test -d $afsroot; then
3914                 afs=true
3915         else
3916                 afs=false
3917         fi
3918         ;;
3919 esac
3920 if $afs; then
3921         echo "AFS may be running... I'll be extra cautious then..." >&4
3922 else
3923         echo "AFS does not seem to be running..." >&4
3924 fi
3925
3926 : determine installation prefix for where package is to be installed.
3927 if $afs; then 
3928 $cat <<EOM
3929
3930 Since you are running AFS, I need to distinguish the directory in which
3931 files will reside from the directory in which they are installed (and from
3932 which they are presumably copied to the former directory by occult means).
3933
3934 EOM
3935         case "$installprefix" in
3936         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3937         *) dflt="$installprefix";;
3938         esac
3939 else
3940 $cat <<EOM
3941
3942 In some special cases, particularly when building $package for distribution,
3943 it is convenient to distinguish the directory in which files should be
3944 installed from the directory ($prefix) in which they will
3945 eventually reside.  For most users, these two directories are the same.
3946
3947 EOM
3948         case "$installprefix" in
3949         '') dflt=$prefix ;;
3950         *) dflt=$installprefix;;
3951         esac
3952 fi
3953 fn=d~
3954 rp='What installation prefix should I use for installing files?'
3955 . ./getfile
3956 installprefix="$ans"
3957 installprefixexp="$ansexp"
3958
3959 : Perform the prefixexp/installprefixexp correction if necessary
3960 cat <<EOS >installprefix
3961 $startsh
3962 EOS
3963 cat <<'EOSC' >>installprefix
3964 : Change installation prefix, if necessary.
3965 if $test X"$prefix" != X"$installprefix"; then
3966     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3967 else
3968     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3969 fi
3970 EOSC
3971 chmod +x installprefix
3972 $eunicefix installprefix
3973
3974 : Set variables such as privlib and privlibexp from the output of ./getfile
3975 : performing the prefixexp/installprefixexp correction if necessary.
3976 cat <<EOS >setprefixvar
3977 $startsh
3978 EOS
3979 cat <<'EOSC' >>setprefixvar
3980 eval "${prefixvar}=\"\$ans\""
3981 eval "${prefixvar}exp=\"\$ansexp\""
3982 . ./installprefix
3983 EOSC
3984 chmod +x setprefixvar
3985 $eunicefix setprefixvar
3986
3987 : set up the script used to warn in case of inconsistency
3988 cat <<EOS >whoa
3989 $startsh
3990 EOS
3991 cat <<'EOSC' >>whoa
3992 dflt=y
3993 case "$hint" in
3994     recommended)
3995         case "$hintfile" in
3996         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3997                 ;;
3998         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
3999                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4000                 ;;
4001         esac
4002         ;;
4003     *)  echo " "
4004         echo "*** WHOA THERE!!! ***" >&4
4005         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4006         ;;
4007 esac
4008 rp="    Keep the $hint value?"
4009 . ./myread
4010 case "$ans" in
4011 y) td=$was; tu=$was;;
4012 esac
4013 EOSC
4014
4015 : function used to set $1 to $val
4016 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4017 case "$val$was" in
4018 $define$undef) . ./whoa; eval "$var=\$td";;
4019 $undef$define) . ./whoa; eval "$var=\$tu";;
4020 *) eval "$var=$val";;
4021 esac'
4022
4023 case "$usesocks" in
4024 $define|true|[yY]*)     dflt='y';;
4025 *) dflt='n';;
4026 esac
4027 cat <<EOM
4028
4029 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4030 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4031 to use the PerlIO abstraction layer, this will be implicitly selected.
4032
4033 If this doesn't make any sense to you, just accept the default '$dflt'.
4034 EOM
4035 rp='Build Perl for SOCKS?'
4036 . ./myread
4037 case "$ans" in
4038 y|Y)    val="$define" ;;     
4039 *)      val="$undef" ;;
4040 esac
4041 set usesocks
4042 eval $setvar
4043
4044 case "$usesocks" in
4045 $define|true|[yY]*) useperlio="$define";;
4046 esac
4047
4048 case "$useperlio" in
4049 $define|true|[yY]*|'')  dflt='y';;
4050 *) dflt='n';;
4051 esac
4052 cat <<EOM
4053
4054 Previous version of $package used the standard IO mechanisms as
4055 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4056 alternate IO mechanisms via the PerlIO abstraction layer, but the
4057 stdio mechanism is still available if needed.  The abstraction layer
4058 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4059 Using PerlIO with sfio may cause problems with some extension modules.
4060
4061 If this doesn't make any sense to you, just accept the default '$dflt'.
4062 EOM
4063 rp='Use the PerlIO abstraction layer?'
4064 . ./myread
4065 case "$ans" in
4066 y|Y) 
4067         val="$define"
4068         ;;
4069 *)      
4070         echo "Ok, doing things the stdio way."
4071         val="$undef"
4072         ;;
4073 esac
4074 set useperlio
4075 eval $setvar 
4076
4077 case "$usesocks" in
4078 $define|true|[yY]*)
4079         case "$useperlio" in
4080         $define|true|[yY]*) ;;
4081         *)      cat >&4 <<EOM
4082
4083 You are using the SOCKS proxy protocol library which means that you
4084 should also use the PerlIO layer.  You may be headed for trouble.
4085
4086 EOM
4087                 ;;
4088         esac
4089         ;;
4090 esac
4091
4092         
4093 : get the patchlevel
4094 echo " "
4095 echo "Getting the current patchlevel..." >&4
4096 if $test -r $rsrc/patchlevel.h;then
4097         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4098         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4099         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4100         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4101         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4102         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4103         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4104 else
4105         revision=0
4106         patchlevel=0
4107         subversion=0
4108         api_revision=0
4109         api_version=0
4110         api_subversion=0
4111         perl_patchlevel=0
4112         $echo "(You do not have patchlevel.h.  Eek.)"
4113 fi
4114 if $test -r $rsrc/.patch ; then
4115         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4116                 perl_patchlevel=`cat $rsrc/.patch`
4117         fi
4118 fi
4119 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4120 version_patchlevel_string="version $patchlevel subversion $subversion"
4121 case "$perl_patchlevel" in
4122 0|'') ;;
4123 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4124 esac
4125
4126 $echo "(You have $package $version_patchlevel_string.)"
4127
4128 case "$osname" in
4129 dos|vms)
4130         : XXX Should be a Configure test for double-dots in filenames.
4131         version=`echo $revision $patchlevel $subversion | \
4132                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4133         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4134                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4135         ;;
4136 *)
4137         version=`echo $revision $patchlevel $subversion | \
4138                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4139         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4140                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4141         ;;
4142 esac
4143 : Special case the 5.005_xx maintenance series, which used 5.005
4144 : without any subversion label as a subdirectory in $sitelib
4145 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4146         api_versionstring='5.005'
4147 fi
4148
4149 case "$usethreads" in
4150 $define|true|[yY]*)     dflt='y';;
4151 *)     # Catch case where user specified ithreads or 5005threads but
4152        # forgot -Dusethreads (A.D. 4/2002)
4153        case "$useithreads$use5005threads" in
4154        *$define*)      
4155                 case "$useperlio" in
4156                 "$define")      dflt='y' ;;
4157                 *)              dflt='n' ;;
4158                 esac
4159                 ;;
4160        *)       dflt='n';;
4161        esac
4162        ;;
4163 esac
4164 cat <<EOM
4165
4166 Perl can be built to take advantage of threads on some systems.
4167 To do so, Configure can be run with -Dusethreads.
4168
4169 Note that Perl built with threading support runs slightly slower
4170 and uses more memory than plain Perl. The current implementation
4171 is believed to be stable, but it is fairly new, and so should be
4172 treated with caution.
4173
4174 If this doesn't make any sense to you, just accept the default '$dflt'.
4175 EOM
4176 rp='Build a threading Perl?'
4177 . ./myread
4178 case "$ans" in
4179 y|Y)    val="$define" ;;
4180 *)      val="$undef" ;;
4181 esac
4182 set usethreads
4183 eval $setvar
4184
4185 if $test $patchlevel -lt 9; then
4186     case "$usethreads" in
4187     $define)
4188         $cat <<EOM
4189
4190 Since release 5.6, Perl has had two different threading implementations,
4191 the newer interpreter-based version (ithreads) with one interpreter per
4192 thread, and the older 5.005 version (5005threads).
4193 The 5005threads version is effectively unmaintained and will probably be
4194 removed in Perl 5.10, so there should be no need to build a Perl using it
4195 unless needed for backwards compatibility with some existing 5.005threads
4196 code.
4197
4198 EOM
4199         : Default to ithreads unless overridden on command line or with
4200         : old config.sh
4201         dflt='y'
4202         case "$use5005threads" in
4203                 $define|true|[yY]*) dflt='n';;
4204         esac
4205         case "$useithreads" in
4206                 $undef|false|[nN]*) dflt='n';;
4207         esac
4208         rp='Use the newer interpreter-based ithreads?'
4209         . ./myread
4210         case "$ans" in
4211         y|Y)    val="$define" ;;
4212         *)      val="$undef" ;;
4213         esac
4214         set useithreads
4215         eval $setvar
4216         : Now set use5005threads to the opposite value.
4217         case "$useithreads" in
4218         $define) val="$undef" ;;
4219         *) val="$define" ;;
4220         esac
4221         set use5005threads
4222         eval $setvar
4223         ;;
4224     *)
4225         useithreads="$undef"
4226         use5005threads="$undef"
4227         ;;
4228     esac
4229
4230     case "$useithreads$use5005threads" in
4231     "$define$define")
4232         $cat >&4 <<EOM
4233
4234 You cannot have both the ithreads and the 5.005 threads enabled
4235 at the same time.  Disabling the 5.005 threads since they are
4236 much less stable than the ithreads.
4237
4238 EOM
4239         use5005threads="$undef"
4240         ;;
4241     esac
4242
4243 else
4244 : perl-5.9.x and later
4245
4246     if test X"$usethreads" = "X$define"; then
4247         case "$use5005threads" in
4248             $define|true|[yY]*)
4249                 $cat >&4 <<EOM
4250
4251 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4252
4253 EOM
4254             ;;
4255         esac
4256     fi
4257
4258     use5005threads="$undef"
4259     useithreads="$usethreads"
4260 fi
4261
4262 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4263         cat >&4 <<EOF
4264 ***
4265 *** To build with ithreads you must also use the PerlIO layer.
4266 *** Cannot continue, aborting.
4267 ***
4268 EOF
4269         exit 1
4270 fi
4271
4272 case "$d_oldpthreads" in
4273 '')     : Configure tests would be welcome here.  For now, assume undef.
4274         val="$undef" ;;
4275 *)      val="$d_oldpthreads" ;;
4276 esac
4277 set d_oldpthreads
4278 eval $setvar
4279
4280
4281 : Look for a hint-file generated 'call-back-unit'.  If the
4282 : user has specified that a threading perl is to be built,
4283 : we may need to set or change some other defaults.
4284 if $test -f usethreads.cbu; then
4285     echo "Your platform has some specific hints regarding threaded builds, using them..."
4286     . ./usethreads.cbu
4287 else
4288     case "$usethreads" in
4289         "$define"|true|[yY]*)
4290                 $cat <<EOM
4291 (Your platform does not have any specific hints for threaded builds.
4292  Assuming POSIX threads, then.)
4293 EOM
4294         ;;
4295     esac
4296 fi
4297
4298 cat <<EOM
4299
4300 Perl can be built so that multiple Perl interpreters can coexist
4301 within the same Perl executable.
4302 EOM
4303
4304 case "$useithreads" in
4305 $define)
4306         cat <<EOM
4307 This multiple interpreter support is required for interpreter-based threads.
4308 EOM
4309         val="$define"
4310         ;;
4311 *)      case "$usemultiplicity" in
4312         $define|true|[yY]*)     dflt='y';;
4313         *) dflt='n';;
4314         esac
4315         echo " "
4316         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4317         rp='Build Perl for multiplicity?'
4318         . ./myread
4319         case "$ans" in
4320         y|Y)    val="$define" ;;
4321         *)      val="$undef" ;;
4322         esac
4323         ;;
4324 esac
4325 set usemultiplicity
4326 eval $setvar
4327
4328
4329 case "$usemorebits" in
4330 "$define"|true|[yY]*)
4331         use64bitint="$define"
4332         uselongdouble="$define"
4333         usemorebits="$define"
4334         ;;
4335 *)      usemorebits="$undef"
4336         ;;
4337 esac
4338
4339 : make some quick guesses about what we are up against
4340 echo " "
4341 $echo $n "Hmm...  $c"
4342 echo exit 1 >bsd
4343 echo exit 1 >usg
4344 echo exit 1 >v7
4345 echo exit 1 >osf1
4346 echo exit 1 >eunice
4347 echo exit 1 >xenix
4348 echo exit 1 >venix
4349 echo exit 1 >os2
4350 d_bsd="$undef"
4351 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4352 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4353 then
4354         echo "Looks kind of like an OSF/1 system, but we'll see..."
4355         echo exit 0 >osf1
4356 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4357         xxx=`./loc addbib blurfl $pth`
4358         if $test -f $xxx; then
4359         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4360                 echo exit 0 >bsd
4361                 echo exit 0 >usg
4362         else
4363                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4364                         echo "Looks kind of like an extended USG system, but we'll see..."
4365                 else
4366                         echo "Looks kind of like a USG system, but we'll see..."
4367                 fi
4368                 echo exit 0 >usg
4369         fi
4370 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4371         echo "Looks kind of like a BSD system, but we'll see..."
4372         d_bsd="$define"
4373         echo exit 0 >bsd
4374 else
4375         echo "Looks kind of like a Version 7 system, but we'll see..."
4376         echo exit 0 >v7
4377 fi
4378 case "$eunicefix" in
4379 *unixtovms*)
4380         $cat <<'EOI'
4381 There is, however, a strange, musty smell in the air that reminds me of
4382 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4383 EOI
4384         echo exit 0 >eunice
4385         d_eunice="$define"
4386 : it so happens the Eunice I know will not run shell scripts in Unix format
4387         ;;
4388 *)
4389         echo " "
4390         echo "Congratulations.  You aren't running Eunice."
4391         d_eunice="$undef"
4392         ;;
4393 esac
4394 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4395 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4396 : semicolon as a patch separator
4397 case "$p_" in
4398 :) ;;
4399 *)
4400         $cat <<'EOI'
4401 I have the feeling something is not exactly right, however...don't tell me...
4402 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4403 (Or you may be running DOS with DJGPP.)
4404 EOI
4405         echo exit 0 >os2
4406         ;;
4407 esac
4408 if test -f /xenix; then
4409         echo "Actually, this looks more like a XENIX system..."
4410         echo exit 0 >xenix
4411         d_xenix="$define"
4412 else
4413         echo " "
4414         echo "It's not Xenix..."
4415         d_xenix="$undef"
4416 fi
4417 chmod +x xenix
4418 $eunicefix xenix
4419 if test -f /venix; then
4420         echo "Actually, this looks more like a VENIX system..."
4421         echo exit 0 >venix
4422 else
4423         echo " "
4424         if ./xenix; then
4425                 : null
4426         else
4427                 echo "Nor is it Venix..."
4428         fi
4429 fi
4430 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4431 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4432 $rm -f foo
4433
4434 case "$cc" in
4435 '') dflt=cc;;
4436 *) dflt="$cc";;
4437 esac
4438 rp="Use which C compiler?"
4439 . ./myread
4440 cc="$ans"
4441
4442 : See if they have not cc but they do have gcc
4443 . ./trygcc
4444 : Look for a hint-file generated 'call-back-unit'.  Now that the
4445 : user has specified the compiler, we may need to set or change some
4446 : other defaults.
4447 if $test -f cc.cbu; then
4448     . ./cc.cbu
4449 fi
4450 . ./checkcc
4451
4452 echo " "
4453 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4454 $cat >try.c <<EOM
4455 #include <stdio.h>
4456 int main() {
4457 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4458 #ifdef __VERSION__
4459         printf("%s\n", __VERSION__);
4460 #else
4461         printf("%s\n", "1");
4462 #endif
4463 #endif
4464         return(0);
4465 }
4466 EOM
4467 if $cc -o try $ccflags $ldflags try.c; then
4468         gccversion=`$run ./try`
4469         case "$gccversion" in
4470         '') echo "You are not using GNU cc." ;;
4471         *)  echo "You are using GNU cc $gccversion."
4472             ccname=gcc
4473             ;;
4474         esac
4475 else
4476         echo " "
4477         echo "*** WHOA THERE!!! ***" >&4
4478         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4479         case "$knowitall" in
4480         '')
4481         echo "    You'd better start hunting for one and let me know about it." >&4
4482                 exit 1
4483                 ;;
4484         esac
4485 fi
4486 $rm -f try try.*
4487 case "$gccversion" in
4488 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4489 esac
4490 case "$gccversion" in
4491 '') gccosandvers='' ;;
4492 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4493    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4494    gccshortvers=''
4495    case "$gccosandvers" in
4496    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4497    $osname$osvers) ;; # looking good
4498    $osname*) cat <<EOM >&4
4499
4500 *** WHOA THERE!!! ***
4501
4502     Your gcc has not been compiled for the exact release of
4503     your operating system ($gccosandvers versus $osname$osvers).
4504
4505     In general it is a good idea to keep gcc synchronized with
4506     the operating system because otherwise serious problems
4507     may ensue when trying to compile software, like Perl.
4508
4509     I'm trying to be optimistic here, though, and will continue.
4510     If later during the configuration and build icky compilation
4511     problems appear (headerfile conflicts being the most common
4512     manifestation), I suggest reinstalling the gcc to match
4513     your operating system release.
4514
4515 EOM
4516       ;;
4517    *) gccosandvers='' ;; # failed to parse, better be silent
4518    esac
4519    ;;
4520 esac
4521 case "$ccname" in
4522 '') ccname="$cc" ;;
4523 esac
4524
4525 # gcc 3.* complain about adding -Idirectories that they already know about,
4526 # so we will take those off from locincpth.
4527 case "$gccversion" in
4528 3*)
4529     echo "main(){}">try.c
4530     for incdir in $locincpth; do
4531        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4532              grep '^c[cp]p*[01]: warning: changing search order '`
4533        if test "X$warn" != X; then
4534            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4535        fi
4536     done
4537     $rm -f try try.*
4538 esac
4539
4540 : What should the include directory be ?
4541 echo " "
4542 $echo $n "Hmm...  $c"
4543 dflt='/usr/include'
4544 incpath=''
4545 mips_type=''
4546 if $test -f /bin/mips && /bin/mips; then
4547         echo "Looks like a MIPS system..."
4548         $cat >usr.c <<'EOCP'
4549 #ifdef SYSTYPE_BSD43
4550 /bsd43
4551 #endif
4552 EOCP
4553         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4554                 dflt='/bsd43/usr/include'
4555                 incpath='/bsd43'
4556                 mips_type='BSD 4.3'
4557         else
4558                 mips_type='System V'
4559         fi
4560         $rm -f usr.c usr.out
4561         echo "and you're compiling with the $mips_type compiler and libraries."
4562         xxx_prompt=y
4563         echo "exit 0" >mips
4564 else
4565         echo "Doesn't look like a MIPS system."
4566         xxx_prompt=n
4567         echo "exit 1" >mips
4568 fi
4569 chmod +x mips
4570 $eunicefix mips
4571 case "$usrinc" in
4572 '') ;;
4573 *) dflt="$usrinc";;
4574 esac
4575 case "$xxx_prompt" in
4576 y)      fn=d/
4577         echo " "
4578         rp='Where are the include files you want to use?'
4579         . ./getfile
4580         usrinc="$ans"
4581         ;;
4582 *)      usrinc="$dflt"
4583         ;;
4584 esac
4585
4586 : see how we invoke the C preprocessor
4587 echo " "
4588 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4589 cat <<'EOT' >testcpp.c
4590 #define ABC abc
4591 #define XYZ xyz
4592 ABC.XYZ
4593 EOT
4594 cd ..
4595 if test ! -f cppstdin; then
4596         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4597                 # AIX cc -E doesn't show the absolute headerfile
4598                 # locations but we'll cheat by using the -M flag.
4599                 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
4600         else
4601                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4602         fi
4603 else
4604         echo "Keeping your $hint cppstdin wrapper."
4605 fi
4606 chmod 755 cppstdin
4607 wrapper=`pwd`/cppstdin
4608 ok='false'
4609 cd UU
4610
4611 if $test "X$cppstdin" != "X" && \
4612         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4613         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4614 then
4615         echo "You used to use $cppstdin $cppminus so we'll use that again."
4616         case "$cpprun" in
4617         '') echo "But let's see if we can live without a wrapper..." ;;
4618         *)
4619                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4620                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4621                 then
4622                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4623                         ok='true'
4624                 else
4625                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4626                 fi
4627                 ;;
4628         esac
4629 else
4630         case "$cppstdin" in
4631         '') ;;
4632         *)
4633                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4634                 ;;
4635         esac
4636 fi
4637
4638 if $ok; then
4639         : nothing
4640 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4641         $cc -E <testcpp.c >testcpp.out 2>&1; \
4642         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4643         echo "Yup, it does."
4644         x_cpp="$cc -E"
4645         x_minus='';
4646 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4647         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4648         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4649         echo "Yup, it does."
4650         x_cpp="$cc -E"
4651         x_minus='-';
4652 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4653         $cc -P <testcpp.c >testcpp.out 2>&1; \
4654         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4655         echo "Yipee, that works!"
4656         x_cpp="$cc -P"
4657         x_minus='';
4658 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4659         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4660         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4661         echo "At long last!"
4662         x_cpp="$cc -P"
4663         x_minus='-';
4664 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4665         $cpp <testcpp.c >testcpp.out 2>&1; \
4666         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4667         echo "It works!"
4668         x_cpp="$cpp"
4669         x_minus='';
4670 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4671         $cpp - <testcpp.c >testcpp.out 2>&1; \
4672         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4673         echo "Hooray, it works!  I was beginning to wonder."
4674         x_cpp="$cpp"
4675         x_minus='-';
4676 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4677         $wrapper <testcpp.c >testcpp.out 2>&1; \
4678         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4679         x_cpp="$wrapper"
4680         x_minus=''
4681         echo "Eureka!"
4682 else
4683         dflt=''
4684         rp="No dice.  I can't find a C preprocessor.  Name one:"
4685         . ./myread
4686         x_cpp="$ans"
4687         x_minus=''
4688         $x_cpp <testcpp.c >testcpp.out 2>&1
4689         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4690                 echo "OK, that will do." >&4
4691         else
4692 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4693                 exit 1
4694         fi
4695 fi
4696
4697 case "$ok" in
4698 false)
4699         cppstdin="$x_cpp"
4700         cppminus="$x_minus"
4701         cpprun="$x_cpp"
4702         cpplast="$x_minus"
4703         set X $x_cpp
4704         shift
4705         case "$1" in
4706         "$cpp")
4707                 echo "Perhaps can we force $cc -E using a wrapper..."
4708                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4709                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4710                 then
4711                         echo "Yup, we can."
4712                         cppstdin="$wrapper"
4713                         cppminus='';
4714                 else
4715                         echo "Nope, we'll have to live without it..."
4716                 fi
4717                 ;;
4718         esac
4719         case "$cpprun" in
4720         "$wrapper")
4721                 cpprun=''
4722                 cpplast=''
4723                 ;;
4724         esac
4725         ;;
4726 esac
4727
4728 case "$cppstdin" in
4729 "$wrapper"|'cppstdin') ;;
4730 *) $rm -f $wrapper;;
4731 esac
4732 $rm -f testcpp.c testcpp.out
4733
4734 : Set private lib path
4735 case "$plibpth" in
4736 '') if ./mips; then
4737                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4738         fi;;
4739 esac
4740 case "$libpth" in
4741 ' ') dlist='';;
4742 '') dlist="$loclibpth $plibpth $glibpth";;
4743 *) dlist="$libpth";;
4744 esac
4745
4746 : Now check and see which directories actually exist, avoiding duplicates
4747 libpth=''
4748 for xxx in $dlist
4749 do
4750     if $test -d $xxx; then
4751                 case " $libpth " in
4752                 *" $xxx "*) ;;
4753                 *) libpth="$libpth $xxx";;
4754                 esac
4755     fi
4756 done
4757 $cat <<'EOM'
4758
4759 Some systems have incompatible or broken versions of libraries.  Among
4760 the directories listed in the question below, please remove any you
4761 know not to be holding relevant libraries, and add any that are needed.
4762 Say "none" for none.
4763
4764 EOM
4765 case "$libpth" in
4766 '') dflt='none';;
4767 *)
4768         set X $libpth
4769         shift
4770         dflt=${1+"$@"}
4771         ;;
4772 esac
4773 rp="Directories to use for library searches?"
4774 . ./myread
4775 case "$ans" in
4776 none) libpth=' ';;
4777 *) libpth="$ans";;
4778 esac
4779
4780 : compute shared library extension
4781 case "$so" in
4782 '')
4783         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4784                 dflt='sl'
4785         else
4786                 dflt='so'
4787         fi
4788         ;;
4789 *) dflt="$so";;
4790 esac
4791 $cat <<EOM
4792
4793 On some systems, shared libraries may be available.  Answer 'none' if
4794 you want to suppress searching of shared libraries for the remainder
4795 of this configuration.
4796
4797 EOM
4798 rp='What is the file extension used for shared libraries?'
4799 . ./myread
4800 so="$ans"
4801
4802 : Define several unixisms.
4803 : Hints files or command line option can be used to override them.
4804 : The convoluted testing is in case hints files set either the old
4805 : or the new name.
4806 case "$_exe" in
4807 '')     case "$exe_ext" in
4808         '')     ;;
4809         *)      _exe="$exe_ext" ;;
4810         esac
4811         ;;
4812 esac
4813 case "$_a" in
4814 '')     case "$lib_ext" in
4815     '') _a='.a';;
4816         *)      _a="$lib_ext" ;;
4817         esac
4818         ;;
4819 esac
4820 case "$_o" in
4821 '') case "$obj_ext" in
4822         '')     _o='.o';;
4823         *)      _o="$obj_ext";;
4824         esac
4825         ;;
4826 esac
4827 case "$p_" in
4828 '') case "$path_sep" in
4829         '')     p_=':';;
4830         *)      p_="$path_sep";;
4831         esac
4832         ;;
4833 esac
4834 exe_ext=$_exe
4835 lib_ext=$_a
4836 obj_ext=$_o
4837 path_sep=$p_
4838
4839 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4840
4841 : Which makefile gets called first.  This is used by make depend.
4842 case "$firstmakefile" in
4843 '') firstmakefile='makefile';;
4844 esac
4845
4846 case "$ccflags" in
4847 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4848 esac
4849
4850 case "$uselongdouble" in
4851 $define|true|[yY]*)     dflt='y';;
4852 *) dflt='n';;
4853 esac
4854 cat <<EOM
4855
4856 Perl can be built to take advantage of long doubles which
4857 (if available) may give more accuracy and range for floating point numbers.
4858
4859 If this doesn't make any sense to you, just accept the default '$dflt'.
4860 EOM
4861 rp='Try to use long doubles if available?'
4862 . ./myread
4863 case "$ans" in
4864 y|Y)    val="$define"   ;;
4865 *)      val="$undef"    ;;
4866 esac
4867 set uselongdouble
4868 eval $setvar
4869
4870 case "$uselongdouble" in
4871 true|[yY]*) uselongdouble="$define" ;;
4872 esac
4873
4874 : Look for a hint-file generated 'call-back-unit'.  If the
4875 : user has specified that long doubles should be used,
4876 : we may need to set or change some other defaults.
4877 if $test -f uselongdouble.cbu; then
4878     echo "Your platform has some specific hints regarding long doubles, using them..."
4879     . ./uselongdouble.cbu
4880 else
4881     case "$uselongdouble" in
4882         $define)
4883                 $cat <<EOM
4884 (Your platform does not have any specific hints for long doubles.)
4885 EOM
4886         ;;
4887     esac
4888 fi
4889
4890 : Looking for optional libraries
4891 echo " "
4892 echo "Checking for optional libraries..." >&4
4893 case "$libs" in
4894 ' '|'') dflt='';;
4895 *) dflt="$libs";;
4896 esac
4897 case "$libswanted" in
4898 '') libswanted='c_s';;
4899 esac
4900 case "$usesocks" in
4901 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4902 esac
4903 libsfound=''
4904 libsfiles=''
4905 libsdirs=''
4906 libspath=''
4907 for thisdir in $libpth $xlibpth; do
4908   test -d $thisdir && libspath="$libspath $thisdir"
4909 done
4910 for thislib in $libswanted; do
4911         for thisdir in $libspath; do
4912             xxx=''
4913             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4914                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4915                 $test -f "$xxx" && eval $libscheck
4916                 $test -f "$xxx" && libstyle=shared
4917             fi
4918             if test ! -f "$xxx"; then
4919                 xxx=$thisdir/lib$thislib.$so
4920                 $test -f "$xxx" && eval $libscheck
4921                 $test -f "$xxx" && libstyle=shared
4922             fi  
4923             if test ! -f "$xxx"; then
4924                 xxx=$thisdir/lib$thislib$_a
4925                 $test -f "$xxx" && eval $libscheck
4926                 $test -f "$xxx" && libstyle=static
4927             fi
4928             if test ! -f "$xxx"; then
4929                 xxx=$thisdir/$thislib$_a
4930                 $test -f "$xxx" && eval $libscheck
4931                 $test -f "$xxx" && libstyle=static
4932             fi
4933             if test ! -f "$xxx"; then
4934                 xxx=$thisdir/lib${thislib}_s$_a
4935                 $test -f "$xxx" && eval $libscheck
4936                 $test -f "$xxx" && libstyle=static
4937                 $test -f "$xxx" && thislib=${thislib}_s
4938             fi
4939             if test ! -f "$xxx"; then
4940                 xxx=$thisdir/Slib$thislib$_a
4941                 $test -f "$xxx" && eval $libscheck
4942                 $test -f "$xxx" && libstyle=static
4943             fi
4944             if $test -f "$xxx"; then
4945                 case "$libstyle" in
4946                 shared) echo "Found -l$thislib (shared)." ;;
4947                 static) echo "Found -l$thislib." ;;
4948                 *)      echo "Found -l$thislib ($libstyle)." ;;
4949                 esac
4950                 case " $dflt " in
4951                 *"-l$thislib "*);;
4952                 *) dflt="$dflt -l$thislib"
4953                    libsfound="$libsfound $xxx"
4954                    yyy=`basename $xxx`
4955                    libsfiles="$libsfiles $yyy"
4956                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4957                    case " $libsdirs " in
4958                    *" $yyy "*) ;;
4959                    *) libsdirs="$libsdirs $yyy" ;;
4960                    esac
4961                    ;;
4962                 esac
4963                 break
4964             fi  
4965         done
4966         if $test ! -f "$xxx"; then
4967             echo "No -l$thislib."
4968         fi
4969 done
4970 set X $dflt
4971 shift
4972 dflt="$*"
4973 case "$libs" in
4974 '') dflt="$dflt";;
4975 *) dflt="$libs";;
4976 esac
4977 case "$dflt" in
4978 ' '|'') dflt='none';;
4979 esac
4980
4981 $cat <<EOM
4982
4983 In order to compile $package on your machine, a number of libraries
4984 are usually needed.  Include any other special libraries here as well.
4985 Say "none" for none.  The default list is almost always right.
4986 EOM
4987
4988 echo " "
4989 rp="What libraries to use?"
4990 . ./myread
4991 case "$ans" in
4992 none) libs=' ';;
4993 *) libs="$ans";;
4994 esac
4995
4996 : determine optimization, if desired, or use for debug flag also
4997 case "$optimize" in
4998 ' '|$undef) dflt='none';;
4999 '') dflt='-O';;
5000 *) dflt="$optimize";;
5001 esac
5002 $cat <<EOH
5003
5004 By default, $package compiles with the -O flag to use the optimizer.
5005 Alternately, you might want to use the symbolic debugger, which uses
5006 the -g flag (on traditional Unix systems).  Either flag can be
5007 specified here.  To use neither flag, specify the word "none".
5008
5009 EOH
5010 rp="What optimizer/debugger flag should be used?"
5011 . ./myread
5012 optimize="$ans"
5013 case "$optimize" in
5014 'none') optimize=" ";;
5015 esac
5016
5017 : Check what DEBUGGING is required from the command line
5018 : -DEBUGGING      or -DDEBUGGING or
5019 : -DEBUGGING=both                       = -g + -DDEBUGGING
5020 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5021 : -DEBUGGING=none or -UDEBUGGING        =
5022 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5023 case "$EBUGGING" in
5024 '')     ;;
5025 *)      DEBUGGING=$EBUGGING ;;
5026 esac
5027
5028 case "$DEBUGGING" in
5029 -g|both|$define)
5030     case "$optimize" in
5031         *-g*) ;;
5032         *)    optimize="$optimize -g" ;;
5033     esac ;;
5034 none|$undef)
5035     case "$optimize" in
5036         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5037                 shift
5038                 optimize="$*"
5039                 ;;
5040     esac ;;
5041 esac
5042
5043 dflt=''
5044 case "$DEBUGGING" in
5045 both|$define) dflt='-DDEBUGGING'
5046 esac
5047
5048 : We will not override a previous value, but we might want to
5049 : augment a hint file
5050 case "$hint" in
5051 default|recommended)
5052         case "$gccversion" in
5053         1*) dflt="$dflt -fpcc-struct-return" ;;
5054         esac
5055         case "$optimize:$DEBUGGING" in
5056         *-g*:old) dflt="$dflt -DDEBUGGING";;
5057         esac
5058         case "$gccversion" in
5059         2*) if test -d /etc/conf/kconfig.d &&
5060                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5061                 then
5062                         # Interactive Systems (ISC) POSIX mode.
5063                         dflt="$dflt -posix"
5064                 fi
5065                 ;;
5066         esac
5067         case "$gccversion" in
5068         1*) ;;
5069         2.[0-8]*) ;;
5070         ?*)     echo " "
5071                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
5072                 echo 'int main(void) { return 0; }' > gcctest.c
5073                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
5074                         echo "Yes, it does." 2>&1
5075                         case "$ccflags" in
5076                         *strict-aliasing*)
5077                                 echo "Leaving current flags $ccflags alone." 2>&1
5078                                 ;;
5079                         *) dflt="$dflt -fno-strict-aliasing" ;;
5080                         esac
5081                 else
5082                         echo "Nope, it doesn't, but that's ok." 2>&1
5083                 fi
5084                 ;;
5085         esac
5086         # For gcc, adding -pipe speeds up compilations for some, but apparently
5087         # some assemblers can't read from stdin.  (It also slows down compilations
5088         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5089         case "$gccversion" in
5090         ?*)     echo " "
5091                 echo "Checking if your compiler accepts -pipe" 2>&1
5092                 echo 'int main(void) { return 0; }' > gcctest.c
5093                 if $cc -pipe -o gcctest gcctest.c; then
5094                         echo "Yes, it does." 2>&1
5095                         case "$ccflags" in
5096                         *-pipe*)
5097                                 echo "Leaving current flags $ccflags alone." 2>&1
5098                                 ;;
5099                         *) dflt="$dflt -pipe" ;;
5100                         esac
5101                 else
5102                         echo "Nope, it doesn't, but that's ok." 2>&1
5103                 fi
5104                 ;;
5105         esac
5106         ;;
5107 esac
5108
5109 case "$mips_type" in
5110 *BSD*|'') inclwanted="$locincpth $usrinc";;
5111 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5112 esac
5113 for thisincl in $inclwanted; do
5114         if $test -d $thisincl; then
5115                 if $test x$thisincl != x$usrinc; then
5116                         case "$dflt" in
5117                         *" -I$thisincl "*);;
5118                         *) dflt="$dflt -I$thisincl ";;
5119                         esac
5120                 fi
5121         fi
5122 done
5123
5124 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5125         xxx=true;
5126 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5127         xxx=true;
5128 else
5129         xxx=false;
5130 fi;
5131 if $xxx; then
5132         case "$dflt" in
5133         *$2*);;
5134         *) dflt="$dflt -D$2";;
5135         esac;
5136 fi'
5137
5138 set signal.h LANGUAGE_C; eval $inctest
5139
5140 case "$usesocks" in
5141 $define)
5142         ccflags="$ccflags -DSOCKS"
5143         ;;
5144 esac
5145
5146 case "$hint" in
5147 default|recommended) dflt="$ccflags $dflt" ;;
5148 *) dflt="$ccflags";;
5149 esac
5150
5151 case "$dflt" in
5152 ''|' ') dflt=none;;
5153 esac
5154
5155 $cat <<EOH
5156
5157 Your C compiler may want other flags.  For this question you should include
5158 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5159 but you should NOT include libraries or ld flags like -lwhatever.  If you
5160 want $package to honor its debug switch, you should include -DDEBUGGING here.
5161 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5162
5163 To use no flags, specify the word "none".
5164
5165 EOH
5166 set X $dflt
5167 shift
5168 dflt=${1+"$@"}
5169 rp="Any additional cc flags?"
5170 . ./myread
5171 case "$ans" in
5172 none) ccflags='';;
5173 *) ccflags="$ans";;
5174 esac
5175
5176 : the following weeds options from ccflags that are of no interest to cpp
5177 case "$cppflags" in
5178 '') cppflags="$ccflags" ;;
5179 *)  cppflags="$cppflags $ccflags" ;;
5180 esac
5181 case "$gccversion" in
5182 1*) cppflags="$cppflags -D__GNUC__"
5183 esac
5184 case "$mips_type" in
5185 '');;
5186 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5187 esac
5188 case "$cppflags" in
5189 '');;
5190 *)
5191         echo " "
5192         echo "Let me guess what the preprocessor flags are..." >&4
5193         set X $cppflags
5194         shift
5195         cppflags=''
5196         $cat >cpp.c <<'EOM'
5197 #define BLURFL foo
5198
5199 BLURFL xx LFRULB
5200 EOM
5201         previous=''
5202         for flag in $*
5203         do
5204                 case "$flag" in
5205                 -*) ftry="$flag";;
5206                 *) ftry="$previous $flag";;
5207                 esac
5208                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5209                         >cpp1.out 2>/dev/null && \
5210                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5211                         >cpp2.out 2>/dev/null && \
5212                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5213                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5214                 then
5215                         cppflags="$cppflags $ftry"
5216                         previous=''
5217                 else
5218                         previous="$flag"
5219                 fi
5220         done
5221         set X $cppflags
5222         shift
5223         cppflags=${1+"$@"}
5224         case "$cppflags" in
5225         *-*)  echo "They appear to be: $cppflags";;
5226         esac
5227         $rm -f cpp.c cpp?.out
5228         ;;
5229 esac
5230
5231 : flags used in final linking phase
5232 case "$ldflags" in
5233 '') if ./venix; then
5234                 dflt='-i -z'
5235         else
5236                 dflt=''
5237         fi
5238         case "$ccflags" in
5239         *-posix*) dflt="$dflt -posix" ;;
5240         esac
5241         ;;
5242 *) dflt="$ldflags";;
5243 esac
5244
5245 : Try to guess additional flags to pick up local libraries.
5246 for thislibdir in $libpth; do
5247         case " $loclibpth " in
5248         *" $thislibdir "*)
5249                 case "$dflt " in
5250                 *"-L$thislibdir "*) ;;
5251                 *)  dflt="$dflt -L$thislibdir" ;;
5252                 esac
5253                 ;;
5254         esac
5255 done
5256
5257 case "$dflt" in
5258 '') dflt='none' ;;
5259 esac
5260
5261 $cat <<EOH
5262
5263 Your C linker may need flags.  For this question you should
5264 include -L/whatever and any other flags used by the C linker, but you
5265 should NOT include libraries like -lwhatever.
5266
5267 Make sure you include the appropriate -L/path flags if your C linker
5268 does not normally search all of the directories you specified above,
5269 namely
5270         $libpth
5271 To use no flags, specify the word "none".
5272
5273 EOH
5274
5275 rp="Any additional ld flags (NOT including libraries)?"
5276 . ./myread
5277 case "$ans" in
5278 none) ldflags='';;
5279 *) ldflags="$ans";;
5280 esac
5281 rmlist="$rmlist pdp11"
5282
5283 : coherency check
5284 echo " "
5285 echo "Checking your choice of C compiler and flags for coherency..." >&4
5286 $cat > try.c <<'EOF'
5287 #include <stdio.h>
5288 int main() { printf("Ok\n"); return(0); }
5289 EOF
5290 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5291 shift
5292 $cat >try.msg <<'EOM'
5293 I've tried to compile and run the following simple program:
5294
5295 EOM
5296 $cat try.c >> try.msg
5297
5298 $cat >> try.msg <<EOM
5299
5300 I used the command:
5301
5302         $*
5303         $run ./try
5304
5305 and I got the following output:
5306
5307 EOM
5308 dflt=y
5309 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5310         if $sh -c "$run ./try" >>try.msg 2>&1; then
5311                 xxx=`$run ./try`
5312                 case "$xxx" in
5313                 "Ok") dflt=n ;;
5314                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5315                         case " $libs " in
5316                         *" -lsfio "*)
5317                                 cat >> try.msg <<'EOQS'
5318 If $libs contains -lsfio, and sfio is mis-configured, then it
5319 sometimes (apparently) runs and exits with a 0 status, but with no
5320 output!  It may have to do with sfio's use of _exit vs. exit.
5321
5322 EOQS
5323                                 rp="You have a big problem.  Shall I abort Configure"
5324                                 dflt=y
5325                                 ;;
5326                         esac
5327                         ;;
5328                 esac
5329         else
5330                 echo "The program compiled OK, but exited with status $?." >>try.msg
5331                 rp="You have a problem.  Shall I abort Configure"
5332                 dflt=y
5333         fi
5334 else
5335         echo "I can't compile the test program." >>try.msg
5336         rp="You have a BIG problem.  Shall I abort Configure"
5337         dflt=y
5338 fi
5339 case "$dflt" in
5340 y)
5341         $cat try.msg >&4
5342         case "$knowitall" in
5343         '')
5344                 echo "(The supplied flags or libraries might be incorrect.)"
5345                 ;;
5346         *) dflt=n;;
5347         esac
5348         echo " "
5349         . ./myread
5350         case "$ans" in
5351         n*|N*) ;;
5352         *)      echo "Ok.  Stopping Configure." >&4
5353                 exit 1
5354                 ;;
5355         esac
5356         ;;
5357 n) echo "OK, that should do.";;
5358 esac
5359 $rm_try
5360
5361 : define a shorthand compile call
5362 compile='
5363 mc_file=$1;
5364 shift;
5365 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5366 : define a shorthand compile call for compilations that should be ok.
5367 compile_ok='
5368 mc_file=$1;
5369 shift;
5370 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5371
5372 : determine filename position in cpp output
5373 echo " "
5374 echo "Computing filename position in cpp output for #include directives..." >&4
5375 case "$osname" in
5376 vos) testaccess=-e ;;
5377 *)   testaccess=-r ;;
5378 esac
5379 echo '#include <stdio.h>' > foo.c
5380 $cat >fieldn <<EOF
5381 $startsh
5382 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5383 $grep '^[       ]*#.*stdio\.h' | \
5384 while read cline; do
5385         pos=1
5386         set \$cline
5387         while $test \$# -gt 0; do
5388                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5389                         echo "\$pos"
5390                         exit 0
5391                 fi
5392                 shift
5393                 pos=\`expr \$pos + 1\`
5394         done
5395 done
5396 EOF
5397 chmod +x fieldn
5398 fieldn=`./fieldn`
5399 $rm -f foo.c fieldn
5400 case $fieldn in
5401 '') pos='???';;
5402 1) pos=first;;
5403 2) pos=second;;
5404 3) pos=third;;
5405 *) pos="${fieldn}th";;
5406 esac
5407 echo "Your cpp writes the filename in the $pos field of the line."
5408
5409 case "$osname" in
5410 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5411 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5412 *)   cppfilter='' ;;
5413 esac
5414 : locate header file
5415 $cat >findhdr <<EOF
5416 $startsh
5417 wanted=\$1
5418 name=''
5419 for usrincdir in $usrinc
5420 do
5421         if test -f \$usrincdir/\$wanted; then
5422                 echo "\$usrincdir/\$wanted"
5423                 exit 0
5424         fi
5425 done
5426 awkprg='{ print \$$fieldn }'
5427 echo "#include <\$wanted>" > foo\$\$.c
5428 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5429 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5430 while read cline; do
5431         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5432         case "\$name" in
5433         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5434         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5435         *) exit 2;;
5436         esac;
5437 done;
5438 #
5439 # status = 0: grep returned 0 lines, case statement not executed
5440 # status = 1: headerfile found
5441 # status = 2: while loop executed, no headerfile found
5442 #
5443 status=\$?
5444 $rm -f foo\$\$.c;
5445 if test \$status -eq 1; then
5446         exit 0;
5447 fi
5448 exit 1
5449 EOF
5450 chmod +x findhdr
5451
5452 : define an alternate in-header-list? function
5453 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5454 cont=true; xxf="echo \"<\$1> found.\" >&4";
5455 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5456 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5457 esac;
5458 case $# in 4) instead=instead;; *) instead="at last";; esac;
5459 while $test "$cont"; do
5460         xxx=`./findhdr $1`
5461         var=$2; eval "was=\$$2";
5462         if $test "$xxx" && $test -r "$xxx";
5463         then eval $xxf;
5464         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5465                 cont="";
5466         else eval $xxnf;
5467         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5468         set $yyy; shift; shift; yyy=$@;
5469         case $# in 0) cont="";;
5470         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5471                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5472         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5473                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5474         esac;
5475 done;
5476 while $test "$yyy";
5477 do set $yyy; var=$2; eval "was=\$$2";
5478         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5479         set $yyy; shift; shift; yyy=$@;
5480 done'
5481
5482 : see if stdlib is available
5483 set stdlib.h i_stdlib
5484 eval $inhdr
5485
5486 : check for lengths of integral types
5487 echo " "
5488 case "$intsize" in
5489 '')
5490         echo "Checking to see how big your integers are..." >&4
5491         $cat >try.c <<EOCP
5492 #include <stdio.h>
5493 #$i_stdlib I_STDLIB
5494 #ifdef I_STDLIB
5495 #include <stdlib.h>
5496 #endif
5497 int main()
5498 {
5499         printf("intsize=%d;\n", (int)sizeof(int));
5500         printf("longsize=%d;\n", (int)sizeof(long));
5501         printf("shortsize=%d;\n", (int)sizeof(short));
5502         exit(0);
5503 }
5504 EOCP
5505         set try
5506         if eval $compile_ok && $run ./try > /dev/null; then
5507                 eval `$run ./try`
5508                 echo "Your integers are $intsize bytes long."
5509                 echo "Your long integers are $longsize bytes long."
5510                 echo "Your short integers are $shortsize bytes long."
5511         else
5512                 $cat >&4 <<EOM
5513 !
5514 Help! I can't compile and run the intsize test program: please enlighten me!
5515 (This is probably a misconfiguration in your system or libraries, and
5516 you really ought to fix it.  Still, I'll try anyway.)
5517 !
5518 EOM
5519                 dflt=4
5520                 rp="What is the size of an integer (in bytes)?"
5521                 . ./myread
5522                 intsize="$ans"
5523                 dflt=$intsize
5524                 rp="What is the size of a long integer (in bytes)?"
5525                 . ./myread
5526                 longsize="$ans"
5527                 dflt=2
5528                 rp="What is the size of a short integer (in bytes)?"
5529                 . ./myread
5530                 shortsize="$ans"
5531         fi
5532         ;;
5533 esac
5534 $rm_try
5535
5536 : check for long long
5537 echo " "
5538 echo "Checking to see if you have long long..." >&4
5539 echo 'int main() { long long x = 7; return 0; }' > try.c
5540 set try
5541 if eval $compile; then
5542         val="$define"
5543         echo "You have long long."
5544 else
5545         val="$undef"
5546         echo "You do not have long long."
5547 fi
5548 $rm_try
5549 set d_longlong
5550 eval $setvar
5551
5552 : check for length of long long
5553 case "${d_longlong}${longlongsize}" in
5554 $define)
5555         echo " "
5556         echo "Checking to see how big your long longs are..." >&4
5557         $cat >try.c <<'EOCP'
5558 #include <stdio.h>
5559 int main()
5560 {
5561     printf("%d\n", (int)sizeof(long long));
5562     return(0);
5563 }
5564 EOCP
5565         set try
5566         if eval $compile_ok; then
5567                 longlongsize=`$run ./try`
5568                 echo "Your long longs are $longlongsize bytes long."
5569         else
5570                 dflt='8'
5571                 echo " "
5572                 echo "(I can't seem to compile the test program.  Guessing...)"
5573                 rp="What is the size of a long long (in bytes)?"
5574                 . ./myread
5575                 longlongsize="$ans"
5576         fi
5577         if $test "X$longsize" = "X$longlongsize"; then
5578                 echo "(That isn't any different from an ordinary long.)"
5579         fi
5580         ;;
5581 esac
5582 $rm_try
5583
5584 : see if inttypes.h is available
5585 : we want a real compile instead of Inhdr because some systems
5586 : have an inttypes.h which includes non-existent headers
5587 echo " "
5588 $cat >try.c <<EOCP
5589 #include <inttypes.h>
5590 int main() {
5591         static int32_t foo32 = 0x12345678;
5592 }
5593 EOCP
5594 set try
5595 if eval $compile; then
5596         echo "<inttypes.h> found." >&4
5597         val="$define"
5598 else
5599         echo "<inttypes.h> NOT found." >&4
5600         val="$undef"
5601 fi
5602 $rm_try
5603 set i_inttypes
5604 eval $setvar
5605
5606 : check for int64_t
5607 echo " "
5608 echo "Checking to see if you have int64_t..." >&4
5609 $cat >try.c <<EOCP
5610 #include <sys/types.h>
5611 #$i_inttypes I_INTTYPES
5612 #ifdef I_INTTYPES
5613 #include <inttypes.h>
5614 #endif
5615 int main() { int64_t x = 7; }
5616 EOCP
5617 set try
5618 if eval $compile; then
5619         val="$define"
5620         echo "You have int64_t."
5621 else
5622         val="$undef"
5623         echo "You do not have int64_t."
5624 fi
5625 $rm_try
5626 set d_int64_t
5627 eval $setvar
5628
5629
5630 echo " "
5631 echo "Checking which 64-bit integer type we could use..." >&4
5632
5633 case "$intsize" in
5634 8) val=int
5635    set quadtype
5636    eval $setvar
5637    val='"unsigned int"'
5638    set uquadtype
5639    eval $setvar
5640    quadkind=1
5641    ;;
5642 *) case "$longsize" in
5643    8) val=long
5644       set quadtype
5645       eval $setvar
5646       val='"unsigned long"'
5647       set uquadtype
5648       eval $setvar
5649       quadkind=2
5650       ;;
5651    *) case "$d_longlong:$longlongsize" in
5652       define:8)
5653         val='"long long"'
5654         set quadtype
5655         eval $setvar
5656         val='"unsigned long long"'
5657         set uquadtype
5658         eval $setvar
5659         quadkind=3
5660         ;;
5661       *) case "$d_int64_t" in
5662          define)
5663            val=int64_t
5664            set quadtype
5665            eval $setvar
5666            val=uint64_t
5667            set uquadtype
5668            eval $setvar
5669            quadkind=4
5670            ;;
5671          esac
5672          ;;
5673       esac
5674       ;;
5675    esac
5676    ;;
5677 esac
5678
5679 case "$quadtype" in
5680 '')     echo "Alas, no 64-bit integer types in sight." >&4
5681         d_quad="$undef"
5682         ;;
5683 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5684         d_quad="$define"
5685         ;;
5686 esac
5687
5688
5689 case "$uselonglong" in
5690 "$define"|true|[yY]*)
5691         cat <<EOM >&4
5692
5693 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5694 EOM
5695         use64bitint="$define"
5696         ;;
5697 esac                          
5698 case "$use64bits" in
5699 "$define"|true|[yY]*)
5700         cat <<EOM >&4
5701
5702 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5703 EOM
5704         use64bitint="$define"
5705         ;;
5706 esac                          
5707 case "$use64bitints" in
5708 "$define"|true|[yY]*)
5709         cat <<EOM >&4
5710
5711 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5712 EOM
5713         use64bitint="$define"
5714         ;;
5715 esac                          
5716 case "$use64bitsint" in
5717 "$define"|true|[yY]*)
5718         cat <<EOM >&4
5719
5720 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5721 EOM
5722         use64bitint="$define"
5723         ;;
5724 esac                          
5725 case "$uselonglongs" in
5726 "$define"|true|[yY]*)
5727         cat <<EOM >&4
5728
5729 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5730 EOM
5731         use64bitint="$define"
5732         ;;
5733 esac                          
5734 case "$use64bitsall" in
5735 "$define"|true|[yY]*)
5736         cat <<EOM >&4
5737
5738 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5739 EOM
5740         use64bitall="$define"
5741         ;;
5742 esac                          
5743
5744 case "$ccflags" in
5745 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5746 esac
5747 case "$use64bitall" in
5748 "$define"|true|[yY]*) use64bitint="$define" ;;
5749 esac
5750
5751 case "$longsize" in
5752 8) cat <<EOM
5753
5754 You have natively 64-bit long integers.
5755 EOM
5756    val="$define"
5757    ;;
5758 *) case "$use64bitint" in
5759    "$define"|true|[yY]*) dflt='y';;
5760    *) dflt='n';;
5761    esac
5762    case "$d_quad" in
5763    "$define") ;;
5764    *) dflt='n' ;;
5765    esac
5766    cat <<EOM
5767
5768 Perl can be built to take advantage of 64-bit integer types
5769 on some systems.  To do so, Configure can be run with -Duse64bitint.
5770 Choosing this option will most probably introduce binary incompatibilities.
5771
5772 If this doesn't make any sense to you, just accept the default '$dflt'.
5773 (The default has been chosen based on your configuration.)
5774 EOM
5775    rp='Try to use 64-bit integers, if available?'
5776    . ./myread
5777    case "$ans" in
5778    [yY]*) val="$define" ;;
5779    *)     val="$undef"  ;;
5780    esac
5781    ;;
5782 esac
5783 set use64bitint
5784 eval $setvar
5785
5786 case "$use64bitall" in
5787 "$define"|true|[yY]*) dflt='y' ;;
5788 *) case "$longsize" in
5789    8) dflt='y' ;;
5790    *) dflt='n' ;;
5791    esac
5792    ;;
5793 esac    
5794 cat <<EOM
5795
5796 You may also choose to try maximal 64-bitness.  It means using as much
5797 64-bitness as possible on the platform.  This in turn means even more
5798 binary incompatibilities.  On the other hand, your platform may not
5799 have any more 64-bitness available than what you already have chosen.
5800
5801 If this doesn't make any sense to you, just accept the default '$dflt'.
5802 (The default has been chosen based on your configuration.)
5803 EOM
5804 rp='Try to use maximal 64-bit support, if available?'
5805 . ./myread
5806 case "$ans" in
5807 [yY]*) val="$define" ;;
5808 *)     val="$undef"  ;;
5809 esac
5810 set use64bitall
5811 eval $setvar
5812 case "$use64bitall" in
5813 "$define")
5814         case "$use64bitint" in
5815         "$undef")
5816                 cat <<EOM
5817
5818 Since you have chosen a maximally 64-bit build, I'm also turning on
5819 the use of 64-bit integers.
5820 EOM
5821                 use64bitint="$define" ;;
5822         esac
5823         ;;
5824 esac
5825
5826 : Look for a hint-file generated 'call-back-unit'.  If the
5827 : user has specified that a 64-bit perl is to be built,
5828 : we may need to set or change some other defaults.
5829 if $test -f use64bitint.cbu; then
5830         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5831         . ./use64bitint.cbu
5832 fi
5833 case "$use64bitint" in
5834 "$define"|true|[yY]*)
5835         case "$longsize" in
5836         4) case "$archname64" in
5837            '') archname64=64int ;;
5838            esac
5839            ;;
5840         esac
5841         ;;
5842 esac
5843
5844 : Look for a hint-file generated 'call-back-unit'.  If the
5845 : user has specified that a maximally 64-bit perl is to be built,
5846 : we may need to set or change some other defaults.
5847 if $test -f use64bitall.cbu; then
5848         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5849         . ./use64bitall.cbu
5850 fi
5851 case "$use64bitall" in
5852 "$define"|true|[yY]*)
5853         case "$longsize" in
5854         4) case "$archname64" in
5855            ''|64int) archname64=64all ;;
5856            esac
5857            ;;
5858         esac
5859         ;;
5860 esac
5861
5862 case "$d_quad:$use64bitint" in
5863 $undef:$define)
5864         cat >&4 <<EOF
5865
5866 *** You have chosen to use 64-bit integers,
5867 *** but none can be found.
5868 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5869 *** Cannot continue, aborting.
5870
5871 EOF
5872         exit 1
5873         ;;
5874 esac
5875
5876 : check for length of double
5877 echo " "
5878 case "$doublesize" in
5879 '')
5880         echo "Checking to see how big your double precision numbers are..." >&4
5881         $cat >try.c <<EOCP
5882 #include <stdio.h>
5883 #$i_stdlib I_STDLIB
5884 #ifdef I_STDLIB
5885 #include <stdlib.h>
5886 #endif
5887 int main()
5888 {
5889     printf("%d\n", (int)sizeof(double));
5890     exit(0);
5891 }
5892 EOCP
5893         set try
5894         if eval $compile_ok; then
5895                 doublesize=`$run ./try`
5896                 echo "Your double is $doublesize bytes long."
5897         else
5898                 dflt='8'
5899                 echo "(I can't seem to compile the test program.  Guessing...)"
5900                 rp="What is the size of a double precision number (in bytes)?"
5901                 . ./myread
5902                 doublesize="$ans"
5903         fi
5904         ;;
5905 esac
5906 $rm_try
5907
5908 : check for long doubles
5909 echo " "
5910 echo "Checking to see if you have long double..." >&4
5911 echo 'int main() { long double x = 7.0; }' > try.c
5912 set try
5913 if eval $compile; then
5914         val="$define"
5915         echo "You have long double."
5916 else
5917         val="$undef"
5918         echo "You do not have long double."
5919 fi
5920 $rm_try
5921 set d_longdbl
5922 eval $setvar
5923
5924 : check for length of long double
5925 case "${d_longdbl}${longdblsize}" in
5926 $define)
5927         echo " "
5928         echo "Checking to see how big your long doubles are..." >&4
5929         $cat >try.c <<'EOCP'
5930 #include <stdio.h>
5931 int main()
5932 {
5933         printf("%d\n", sizeof(long double));
5934 }
5935 EOCP
5936         set try
5937         set try
5938         if eval $compile; then
5939                 longdblsize=`$run ./try`
5940                 echo "Your long doubles are $longdblsize bytes long."
5941         else
5942                 dflt='8'
5943                 echo " "
5944                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5945                 rp="What is the size of a long double (in bytes)?"
5946                 . ./myread
5947                 longdblsize="$ans"
5948         fi
5949         if $test "X$doublesize" = "X$longdblsize"; then
5950                 echo "That isn't any different from an ordinary double."
5951                 echo "I'll keep your setting anyway, but you may see some"
5952                 echo "harmless compilation warnings."
5953         fi
5954         ;;
5955 esac
5956 $rm_try
5957
5958 : determine the architecture name
5959 echo " "
5960 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5961         tarch=`arch`"-$osname"
5962 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5963         if uname -m > tmparch 2>&1 ; then
5964                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5965                         -e 's/$/'"-$osname/" tmparch`
5966         else
5967                 tarch="$osname"
5968         fi
5969         $rm -f tmparch
5970 else
5971         tarch="$osname"
5972 fi
5973 case "$myarchname" in
5974 ''|"$tarch") ;;
5975 *)
5976         echo "(Your architecture name used to be $myarchname.)"
5977         archname=''
5978         ;;
5979 esac
5980 case "$targetarch" in
5981 '') ;;
5982 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5983 esac
5984 myarchname="$tarch"
5985 case "$archname" in
5986 '') dflt="$tarch";;
5987 *) dflt="$archname";;
5988 esac
5989 rp='What is your architecture name'
5990 . ./myread
5991 archname="$ans"
5992 case "$usethreads" in
5993 $define)
5994         echo "Threads selected." >&4
5995         case "$archname" in
5996         *-thread*) echo "...and architecture name already has -thread." >&4
5997                 ;;
5998         *)      archname="$archname-thread"
5999                 echo "...setting architecture name to $archname." >&4
6000                 ;;
6001         esac
6002         ;;
6003 esac
6004 case "$usemultiplicity" in
6005 $define)
6006         echo "Multiplicity selected." >&4
6007         case "$archname" in
6008         *-multi*) echo "...and architecture name already has -multi." >&4
6009                 ;;
6010         *)      archname="$archname-multi"
6011                 echo "...setting architecture name to $archname." >&4
6012                 ;;
6013         esac
6014         ;;
6015 esac
6016 case "$use64bitint$use64bitall" in
6017 *"$define"*)
6018         case "$archname64" in
6019         '')
6020                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6021                 ;;
6022         *)
6023                 case "$use64bitint" in
6024                 "$define") echo "64 bit integers selected." >&4 ;;
6025                 esac
6026                 case "$use64bitall" in
6027                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6028                 esac
6029                 case "$archname" in
6030                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6031                         ;;
6032                 *)      archname="$archname-$archname64"
6033                         echo "...setting architecture name to $archname." >&4
6034                         ;;
6035                 esac
6036                 ;;
6037         esac
6038 esac
6039 case "$uselongdouble" in
6040 $define)
6041         echo "Long doubles selected." >&4
6042         case "$longdblsize" in
6043         $doublesize)
6044                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6045                 ;;
6046         *)
6047                 case "$archname" in
6048                 *-ld*) echo "...and architecture name already has -ld." >&4
6049                         ;;
6050                 *)      archname="$archname-ld"
6051                         echo "...setting architecture name to $archname." >&4
6052                         ;;
6053                 esac
6054                 ;;
6055         esac
6056         ;;
6057 esac
6058 case "$useperlio" in
6059 $define)
6060         echo "Perlio selected." >&4
6061         ;;
6062 *)
6063         echo "Perlio not selected, using stdio." >&4
6064         case "$archname" in
6065         *-stdio*) echo "...and architecture name already has -stdio." >&4
6066                 ;;
6067         *)      archname="$archname-stdio"
6068                 echo "...setting architecture name to $archname." >&4
6069                 ;;
6070         esac
6071         ;;
6072 esac
6073 if $test -f archname.cbu; then
6074         echo "Your platform has some specific hints for architecture name, using them..."
6075         . ./archname.cbu
6076 fi
6077
6078 : set the prefixit variable, to compute a suitable default value
6079 prefixit='case "$3" in
6080 ""|none)
6081         case "$oldprefix" in
6082         "") eval "$1=\"\$$2\"";;
6083         *)
6084                 case "$3" in
6085                 "") eval "$1=";;
6086                 none)
6087                         eval "tp=\"\$$2\"";
6088                         case "$tp" in
6089                         ""|" ") eval "$1=\"\$$2\"";;
6090                         *) eval "$1=";;
6091                         esac;;
6092                 esac;;
6093         esac;;
6094 *)
6095         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6096         case "$tp" in
6097         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6098         /*-$oldprefix/*|\~*-$oldprefix/*)
6099                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6100         *) eval "$1=\"\$$2\"";;
6101         esac;;
6102 esac'
6103
6104 : determine installation style
6105 : For now, try to deduce it from prefix unless it is already set.
6106 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6107 case "$installstyle" in
6108 '')     case "$prefix" in
6109                 *perl*) dflt='lib';;
6110                 *) dflt='lib/perl5' ;;
6111         esac
6112         ;;
6113 *)      dflt="$installstyle" ;;
6114 esac
6115 : Probably not worth prompting for this since we prompt for all
6116 : the directories individually, and the prompt would be too long and
6117 : confusing anyway.
6118 installstyle=$dflt
6119
6120 : determine where public executables go
6121 echo " "
6122 set dflt bin bin
6123 eval $prefixit
6124 fn=d~
6125 rp='Pathname where the public executables will reside?'
6126 . ./getfile
6127 if $test "X$ansexp" != "X$binexp"; then
6128         installbin=''
6129 fi
6130 prefixvar=bin
6131 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6132 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6133 :     this via initialinstalllocation
6134 . ./setprefixvar
6135
6136 case "$userelocatableinc" in
6137 $define|true|[yY]*)     dflt='y' ;;
6138 *)                      dflt='n' ;;
6139 esac
6140 cat <<EOM
6141
6142 Would you like to build Perl so that the installation is relocatable, so that
6143 library paths in @INC are determined relative to the path of the perl binary?
6144 This is not advised for system Perl installs, or if you need to run setid
6145 scripts or scripts under taint mode.
6146
6147 If this doesn't make any sense to you, just accept the default '$dflt'.
6148 EOM
6149 rp='Use relocatable @INC?'
6150 . ./myread
6151 case "$ans" in
6152 y|Y)    val="$define" ;;
6153 *)      val="$undef"  ;;
6154 esac
6155 set userelocatableinc
6156 eval $setvar
6157
6158 initialinstalllocation="$binexp"
6159 : Default prefix is now "up one level from where the binaries are"
6160 case "$userelocatableinc" in
6161 $define|true|[yY]*)
6162     bin=".../"
6163     binexp=".../"
6164     prefix=".../.."
6165     prefixexp=".../.."
6166     installprefixexp=".../.."
6167     ;;
6168 esac
6169
6170 : determine where private library files go
6171 : Usual default is /usr/local/lib/perl5/$version.
6172 : Also allow things like /opt/perl/lib/$version, since
6173 : /opt/perl/lib/perl5... would be redundant.
6174 : The default "style" setting is made in installstyle.U
6175 case "$installstyle" in
6176 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6177 *)       set dflt privlib lib/$version ;;
6178 esac
6179 eval $prefixit
6180 $cat <<EOM
6181
6182 There are some auxiliary files for $package that need to be put into a
6183 private library directory that is accessible by everyone.
6184
6185 EOM
6186 fn=$binexp
6187 fn=d~+
6188 rp='Pathname where the private library files will reside?'
6189 . ./getfile
6190 prefixvar=privlib
6191 . ./setprefixvar
6192
6193 : set the prefixup variable, to restore leading tilda escape
6194 prefixup='case "$prefixexp" in
6195 "$prefix") ;;
6196 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6197 esac'
6198
6199 : determine where public architecture dependent libraries go
6200 set archlib archlib
6201 eval $prefixit
6202 : privlib default is /usr/local/lib/$package/$version
6203 : archlib default is /usr/local/lib/$package/$version/$archname
6204 : privlib may have an optional trailing /share.
6205 tdflt=`echo $privlib | $sed 's,/share$,,'`
6206 tdflt=$tdflt/$archname
6207 case "$archlib" in
6208 '')     dflt=$tdflt
6209         ;;
6210 *)      dflt="$archlib"
6211     ;;
6212 esac
6213 $cat <<EOM
6214
6215 $spackage contains architecture-dependent library files.  If you are
6216 sharing libraries in a heterogeneous environment, you might store
6217 these files in a separate location.  Otherwise, you can just include
6218 them with the rest of the public library files.
6219
6220 EOM
6221 fn=$binexp
6222 fn=d+~
6223 rp='Where do you want to put the public architecture-dependent libraries?'
6224 . ./getfile
6225 prefixvar=archlib
6226 . ./setprefixvar
6227 if $test X"$archlib" = X"$privlib"; then
6228         d_archlib="$undef"
6229 else
6230         d_archlib="$define"
6231 fi
6232
6233 : see if setuid scripts can be secure
6234 $cat <<EOM
6235
6236 Some kernels have a bug that prevents setuid #! scripts from being
6237 secure.  Some sites have disabled setuid #! scripts because of this.
6238
6239 First let's decide if your kernel supports secure setuid #! scripts.
6240 (If setuid #! scripts would be secure but have been disabled anyway,
6241 don't say that they are secure if asked.)
6242
6243 EOM
6244
6245 val="$undef"
6246 if $test -d /dev/fd; then
6247         echo "#!$ls" >reflect
6248         chmod +x,u+s reflect
6249         ./reflect >flect 2>&1
6250         if $contains "/dev/fd" flect >/dev/null; then
6251                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6252                 val="$define"
6253         else
6254                 $cat <<EOM
6255 If you are not sure if they are secure, I can check but I'll need a
6256 username and password different from the one you are using right now.
6257 If you don't have such a username or don't want me to test, simply
6258 enter 'none'.
6259
6260 EOM
6261                 rp='Other username to test security of setuid scripts with?'
6262                 dflt='none'
6263                 . ./myread
6264                 case "$ans" in
6265                 n|none)
6266                         case "$d_suidsafe" in
6267                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6268                                 dflt=n;;
6269                         "$undef")
6270                                 echo "Well, the $hint value is *not* secure." >&4
6271                                 dflt=n;;
6272                         *)      echo "Well, the $hint value *is* secure." >&4
6273                                 dflt=y;;
6274                         esac
6275                         ;;
6276                 *)
6277                         $rm -f reflect flect
6278                         echo "#!$ls" >reflect
6279                         chmod +x,u+s reflect
6280                         echo >flect
6281                         chmod a+w flect
6282                         echo '"su" will (probably) prompt you for '"$ans's password."
6283                         su $ans -c './reflect >flect'
6284                         if $contains "/dev/fd" flect >/dev/null; then
6285                                 echo "Okay, it looks like setuid scripts are secure." >&4
6286                                 dflt=y
6287                         else
6288                                 echo "I don't think setuid scripts are secure." >&4
6289                                 dflt=n
6290                         fi
6291                         ;;
6292                 esac
6293                 rp='Does your kernel have *secure* setuid scripts?'
6294                 . ./myread
6295                 case "$ans" in
6296                 [yY]*)  val="$define";;
6297                 *)      val="$undef";;
6298                 esac
6299         fi
6300 else
6301         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6302         echo "(That's for file descriptors, not floppy disks.)"
6303         val="$undef"
6304 fi
6305 set d_suidsafe
6306 eval $setvar
6307
6308 $rm -f reflect flect
6309
6310 : now see if they want to do setuid emulation
6311 echo " "
6312 val="$undef"
6313 case "$d_suidsafe" in
6314 "$define")
6315         val="$undef"
6316         echo "No need to emulate SUID scripts since they are secure here." >&4
6317         ;;
6318 *)
6319         $cat <<EOM
6320 Some systems have disabled setuid scripts, especially systems where
6321 setuid scripts cannot be secure.  On systems where setuid scripts have
6322 been disabled, the setuid/setgid bits on scripts are currently
6323 useless.  It is possible for $package to detect those bits and emulate
6324 setuid/setgid in a secure fashion.  This emulation will only work if
6325 setuid scripts have been disabled in your kernel.
6326
6327 EOM
6328         case "$d_dosuid" in
6329         "$define") dflt=y ;;
6330         *) dflt=n ;;
6331         esac
6332         rp="Do you want to do setuid/setgid emulation?"
6333         . ./myread
6334         case "$ans" in
6335         [yY]*)  val="$define";;
6336         *)      val="$undef";;
6337         esac
6338         ;;
6339 esac
6340 set d_dosuid
6341 eval $setvar
6342
6343 : Find perl5.005 or later.
6344 echo "Looking for a previously installed perl5.005 or later... "
6345 case "$perl5" in
6346 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6347                 : Check if this perl is recent and can load a simple module
6348                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6349                         perl5=$tdir/perl
6350                         break;
6351                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6352                         perl5=$tdir/perl5
6353                         break;
6354                 fi
6355         done
6356         ;;
6357 *)      perl5="$perl5"
6358         ;;
6359 esac
6360 case "$perl5" in
6361 '')     echo "None found.  That's ok.";;
6362 *)      echo "Using $perl5." ;;
6363 esac
6364
6365 $cat <<EOM
6366
6367 After $package is installed, you may wish to install various
6368 add-on modules and utilities.  Typically, these add-ons will
6369 be installed under $prefix with the rest
6370 of this package.  However, you may wish to install such add-ons
6371 elsewhere under a different prefix.
6372
6373 If you do not wish to put everything under a single prefix, that's
6374 ok.  You will be prompted for the individual locations; this siteprefix
6375 is only used to suggest the defaults.
6376
6377 The default should be fine for most people.
6378
6379 EOM
6380 fn=d~+
6381 rp='Installation prefix to use for add-on modules and utilities?'
6382 : XXX Here might be another good place for an installstyle setting.
6383 case "$siteprefix" in
6384 '') dflt=$prefix ;;
6385 *)  dflt=$siteprefix ;;
6386 esac
6387 . ./getfile
6388 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6389 oldsiteprefix=''
6390 case "$siteprefix" in
6391 '') ;;
6392 *)      case "$ans" in
6393         "$prefix") ;;
6394         *) oldsiteprefix="$prefix";;
6395         esac
6396         ;;
6397 esac
6398 siteprefix="$ans"
6399 siteprefixexp="$ansexp"
6400
6401 : determine where site specific libraries go.
6402 : Usual default is /usr/local/lib/perl5/site_perl/$version
6403 : The default "style" setting is made in installstyle.U
6404 : XXX No longer works with Prefixit stuff.
6405 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6406 case "$sitelib" in
6407 '') case "$installstyle" in
6408         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6409         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6410         esac
6411         ;;
6412 *)      dflt="$sitelib"
6413         ;;
6414 esac
6415 $cat <<EOM
6416
6417 The installation process will create a directory for
6418 site-specific extensions and modules.  Most users find it convenient
6419 to place all site-specific files in this directory rather than in the
6420 main distribution directory.
6421
6422 EOM
6423 fn=d~+
6424 rp='Pathname for the site-specific library files?'
6425 . ./getfile
6426 prefixvar=sitelib
6427 . ./setprefixvar
6428 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6429
6430 : Determine list of previous versions to include in @INC
6431 $cat > getverlist <<EOPL
6432 #!$perl5 -w
6433 use File::Basename;
6434 \$api_versionstring = "$api_versionstring";
6435 \$version = "$version";
6436 \$stem = "$sitelib_stem";
6437 \$archname = "$archname";
6438 EOPL
6439         $cat >> getverlist <<'EOPL'
6440 # The list found is store twice for each entry: the original name, and
6441 # the binary broken down version as pack "sss", so sorting is easy and
6442 # unambiguous. This will work for all versions that have a maximum of
6443 # three digit groups, separate by '.'s or '_'s. Names are extended with
6444 # ".0.0" to ensure at least three elements for the pack.
6445 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6446
6447 # Can't have leading @ because metaconfig interprets it as a command!
6448 ;@inc_version_list=();
6449 # XXX Redo to do opendir/readdir?
6450 if (-d $stem) {
6451     chdir($stem);
6452     ;@candidates = map {
6453         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6454 }
6455 else {
6456     ;@candidates = ();
6457 }
6458
6459 ($pversion, $aversion, $vsn5005) = map {
6460     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6461 foreach $d (@candidates) {
6462     if ($d->[1] lt $pversion) {
6463         if ($d->[1] ge $aversion) {
6464             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6465         }
6466         elsif ($d->[1] ge $vsn5005) {
6467             unshift(@inc_version_list, grep { -d } $d->[0]);
6468         }
6469     }
6470     else {
6471         # Skip newer version.  I.e. don't look in
6472         # 5.7.0 if we're installing 5.6.1.
6473     }
6474 }
6475
6476 if (@inc_version_list) {
6477     print join(' ', @inc_version_list);
6478 }
6479 else {
6480     # Blank space to preserve value for next Configure run.
6481     print " ";
6482 }
6483 EOPL
6484 chmod +x getverlist
6485 case "$inc_version_list" in
6486 '')     if test -x "$perl5$exe_ext"; then
6487                 dflt=`$perl5 getverlist`
6488         else
6489                 dflt='none'
6490         fi
6491         ;;
6492 $undef) dflt='none' ;;
6493 *)  eval dflt=\"$inc_version_list\" ;;
6494 esac
6495 case "$dflt" in
6496 ''|' ') dflt=none ;;
6497 esac
6498 case "$dflt" in
6499 5.005) dflt=none ;;
6500 esac
6501 $cat <<EOM
6502
6503 In order to ease the process of upgrading, this version of perl
6504 can be configured to use modules built and installed with earlier
6505 versions of perl that were installed under $prefix.  Specify here
6506 the list of earlier versions that this version of perl should check.
6507 If Configure detected no earlier versions of perl installed under
6508 $prefix, then the list will be empty.  Answer 'none' to tell perl
6509 to not search earlier versions.
6510
6511 The default should almost always be sensible, so if you're not sure,
6512 just accept the default.
6513 EOM
6514
6515 rp='List of earlier versions to include in @INC?'
6516 . ./myread
6517 case "$ans" in
6518 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6519 *) inc_version_list="$ans" ;;
6520 esac
6521 case "$inc_version_list" in
6522 ''|' ')
6523         inc_version_list_init='0'
6524         d_inc_version_list="$undef"
6525         ;;
6526 *)      inc_version_list_init=`echo $inc_version_list |
6527                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6528         d_inc_version_list="$define"
6529         ;;
6530 esac
6531 $rm -f getverlist
6532
6533 : see if this is a malloc.h system
6534 : we want a real compile instead of Inhdr because some systems have a
6535 : malloc.h that just gives a compile error saying to use stdlib.h instead
6536 echo " "
6537 $cat >try.c <<EOCP
6538 #include <stdlib.h>
6539 #include <malloc.h>
6540 int main () { return 0; }
6541 EOCP
6542 set try
6543 if eval $compile; then
6544     echo "<malloc.h> found." >&4
6545     val="$define"
6546 else
6547     echo "<malloc.h> NOT found." >&4
6548     val="$undef"
6549 fi
6550 $rm_try
6551 set i_malloc
6552 eval $setvar
6553
6554 : check for void type
6555 echo " "
6556 echo "Checking to see how well your C compiler groks the void type..." >&4
6557 case "$voidflags" in
6558 '')
6559         $cat >try.c <<EOCP
6560 #$i_stdlib I_STDLIB
6561 #ifdef I_STDLIB
6562 #include <stdlib.h>
6563 #endif
6564 #if TRY & 1
6565 void sub() {
6566 #else
6567 sub() {
6568 #endif
6569         extern void moo();      /* function returning void */
6570         void (*goo)();          /* ptr to func returning void */
6571 #if TRY & 8
6572         void *hue;              /* generic ptr */
6573 #endif
6574 #if TRY & 2
6575         void (*foo[10])();
6576 #endif
6577
6578 #if TRY & 4
6579         if(goo == moo) {
6580                 exit(0);
6581         }
6582 #endif
6583         exit(0);
6584 }
6585 int main() { sub(); }
6586 EOCP
6587         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6588                 voidflags=$defvoidused
6589         echo "Good.  It appears to support void to the level $package wants.">&4
6590                 if $contains warning .out >/dev/null 2>&1; then
6591                         echo "However, you might get some warnings that look like this:"
6592                         $cat .out
6593                 fi
6594         else
6595 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6596                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6597                         echo "It supports 1..."
6598                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6599                                 echo "It also supports 2..."
6600                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6601                                         voidflags=7
6602                                         echo "And it supports 4 but not 8 definitely."
6603                                 else
6604                                         echo "It doesn't support 4..."
6605                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6606                                                 voidflags=11
6607                                                 echo "But it supports 8."
6608                                         else
6609                                                 voidflags=3
6610                                                 echo "Neither does it support 8."
6611                                         fi
6612                                 fi
6613                         else
6614                                 echo "It does not support 2..."
6615                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6616                                         voidflags=13
6617                                         echo "But it supports 4 and 8."
6618                                 else
6619                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6620                                                 voidflags=5
6621                                                 echo "And it supports 4 but has not heard about 8."
6622                                         else
6623                                                 echo "However it supports 8 but not 4."
6624                                         fi
6625                                 fi
6626                         fi
6627                 else
6628                         echo "There is no support at all for void."
6629                         voidflags=0
6630                 fi
6631         fi
6632 esac
6633 case "$voidflags" in
6634 "$defvoidused") ;;
6635 *)      $cat >&4 <<'EOM'
6636   Support flag bits are:
6637     1: basic void declarations.
6638     2: arrays of pointers to functions returning void.
6639     4: operations between pointers to and addresses of void functions.
6640     8: generic void pointers.
6641 EOM
6642         dflt="$voidflags";
6643         rp="Your void support flags add up to what?"
6644         . ./myread
6645         voidflags="$ans"
6646         ;;
6647 esac
6648 $rm_try
6649
6650 : check for length of pointer
6651 echo " "
6652 case "$ptrsize" in
6653 '')
6654         echo "Checking to see how big your pointers are..." >&4
6655         if test "$voidflags" -gt 7; then
6656                 echo '#define VOID_PTR char *' > try.c
6657         else
6658                 echo '#define VOID_PTR void *' > try.c
6659         fi
6660         $cat >>try.c <<EOCP
6661 #include <stdio.h>
6662 #$i_stdlib I_STDLIB
6663 #ifdef I_STDLIB
6664 #include <stdlib.h>
6665 #endif
6666 int main()
6667 {
6668     printf("%d\n", (int)sizeof(VOID_PTR));
6669     exit(0);
6670 }
6671 EOCP
6672         set try
6673         if eval $compile_ok; then
6674                 ptrsize=`$run ./try`
6675                 echo "Your pointers are $ptrsize bytes long."
6676         else
6677                 dflt='4'
6678                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6679                 rp="What is the size of a pointer (in bytes)?"
6680                 . ./myread
6681                 ptrsize="$ans"
6682         fi
6683         ;;
6684 esac
6685 $rm_try
6686 case "$use64bitall" in
6687 "$define"|true|[yY]*)
6688         case "$ptrsize" in
6689         4)      cat <<EOM >&4
6690
6691 *** You have chosen a maximally 64-bit build,
6692 *** but your pointers are only 4 bytes wide.
6693 *** Please rerun Configure without -Duse64bitall.
6694 EOM
6695                 case "$d_quad" in
6696                 define)
6697                         cat <<EOM >&4
6698 *** Since you have quads, you could possibly try with -Duse64bitint.
6699 EOM
6700                         ;;
6701                 esac
6702                 cat <<EOM >&4
6703 *** Cannot continue, aborting.
6704
6705 EOM
6706
6707                 exit 1
6708                 ;;
6709         esac
6710         ;;
6711 esac
6712
6713
6714 : determine whether to use malloc wrapping
6715 echo " "
6716 case "$usemallocwrap" in
6717 [yY]*|true|$define)     dflt='y' ;;
6718 [nN]*|false|$undef)     dflt='n' ;;
6719 *)      case "$usedevel" in
6720         [yY]*|true|$define)     dflt='y' ;;
6721         *) dflt='n' ;;
6722         esac
6723         ;;
6724 esac
6725 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6726 . ./myread
6727 usemallocwrap="$ans"
6728 case "$ans" in
6729 y*|true)
6730         usemallocwrap="$define" ;;
6731 *)
6732         usemallocwrap="$undef" ;;
6733 esac
6734
6735 : determine which malloc to compile in
6736 echo " "
6737 case "$usemymalloc" in
6738 [yY]*|true|$define)     dflt='y' ;;
6739 [nN]*|false|$undef)     dflt='n' ;;
6740 *)      case "$ptrsize" in
6741         4) dflt='y' ;;
6742         *) dflt='n' ;;
6743         esac
6744         ;;
6745 esac
6746 rp="Do you wish to attempt to use the malloc that comes with $package?"
6747 . ./myread
6748 usemymalloc="$ans"
6749 case "$ans" in
6750 y*|true)
6751         usemymalloc='y'
6752         mallocsrc='malloc.c'
6753         mallocobj="malloc$_o"
6754         d_mymalloc="$define"
6755         case "$libs" in
6756         *-lmalloc*)
6757                 : Remove malloc from list of libraries to use
6758                 echo "Removing unneeded -lmalloc from library list" >&4
6759                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6760                 shift
6761                 libs="$*"
6762                 echo "libs = $libs" >&4
6763                 ;;
6764         esac
6765         ;;
6766 *)
6767         usemymalloc='n'
6768         mallocsrc=''
6769         mallocobj=''
6770         d_mymalloc="$undef"
6771         ;;
6772 esac
6773
6774 : compute the return types of malloc and free
6775 echo " "
6776 $cat >malloc.c <<END
6777 #$i_malloc I_MALLOC
6778 #$i_stdlib I_STDLIB
6779 #include <stdio.h>
6780 #include <sys/types.h>
6781 #ifdef I_MALLOC
6782 #include <malloc.h>
6783 #endif
6784 #ifdef I_STDLIB
6785 #include <stdlib.h>
6786 #endif
6787 #ifdef TRY_MALLOC
6788 void *malloc();
6789 #endif
6790 #ifdef TRY_FREE
6791 void free();
6792 #endif
6793 END
6794 case "$malloctype" in
6795 '')
6796         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6797                 malloctype='void *'
6798         else
6799                 malloctype='char *'
6800         fi
6801         ;;
6802 esac
6803 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6804
6805 case "$freetype" in
6806 '')
6807         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6808                 freetype='void'
6809         else
6810                 freetype='int'
6811         fi
6812         ;;
6813 esac
6814 echo "Your system uses $freetype free(), it would seem." >&4
6815 $rm -f malloc.[co]
6816 : determine where site specific architecture-dependent libraries go.
6817 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6818 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6819 : sitelib may have an optional trailing /share.
6820 case "$sitearch" in
6821 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6822         dflt="$dflt/$archname"
6823         ;;
6824 *)      dflt="$sitearch"
6825         ;;
6826 esac
6827 set sitearch sitearch none
6828 eval $prefixit
6829 $cat <<EOM
6830
6831 The installation process will also create a directory for
6832 architecture-dependent site-specific extensions and modules.
6833
6834 EOM
6835 fn=d~+
6836 rp='Pathname for the site-specific architecture-dependent library files?'
6837 . ./getfile
6838 prefixvar=sitearch
6839 . ./setprefixvar
6840 if $test X"$sitearch" = X"$sitelib"; then
6841         d_sitearch="$undef"
6842 else
6843         d_sitearch="$define"
6844 fi
6845
6846 $cat <<EOM
6847
6848 The installation process will also create a directory for
6849 vendor-supplied add-ons.  Vendors who supply perl with their system
6850 may find it convenient to place all vendor-supplied files in this
6851 directory rather than in the main distribution directory.  This will
6852 ease upgrades between binary-compatible maintenance versions of perl.
6853
6854 Of course you may also use these directories in whatever way you see
6855 fit.  For example, you might use them to access modules shared over a
6856 company-wide network.
6857
6858 The default answer should be fine for most people.
6859 This causes further questions about vendor add-ons to be skipped
6860 and no vendor-specific directories will be configured for perl.
6861
6862 EOM
6863 rp='Do you want to configure vendor-specific add-on directories?'
6864 case "$usevendorprefix" in
6865 define|true|[yY]*) dflt=y ;;
6866 *)      : User may have set vendorprefix directly on Configure command line.
6867         case "$vendorprefix" in
6868         ''|' ') dflt=n ;;
6869         *)      dflt=y ;;
6870         esac
6871         ;;
6872 esac
6873 . ./myread
6874 case "$ans" in
6875 [yY]*)  fn=d~+
6876         rp='Installation prefix to use for vendor-supplied add-ons?'
6877         case "$vendorprefix" in
6878         '') dflt='' ;;
6879         *)  dflt=$vendorprefix ;;
6880         esac
6881         . ./getfile
6882         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6883         oldvendorprefix=''
6884         case "$vendorprefix" in
6885         '') ;;
6886         *)      case "$ans" in
6887                 "$prefix") ;;
6888                 *) oldvendorprefix="$prefix";;
6889                 esac
6890                 ;;
6891         esac
6892         usevendorprefix="$define"
6893         vendorprefix="$ans"
6894         vendorprefixexp="$ansexp"
6895         ;;
6896 *)      usevendorprefix="$undef"
6897         vendorprefix=''
6898         vendorprefixexp=''
6899         ;;
6900 esac
6901
6902 case "$vendorprefix" in
6903 '')     d_vendorlib="$undef"
6904         vendorlib=''
6905         vendorlibexp=''
6906         ;;
6907 *)      d_vendorlib="$define"
6908         : determine where vendor-supplied modules go.
6909         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6910         case "$vendorlib" in
6911         '')
6912                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6913                 case "$installstyle" in
6914                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6915                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6916                 esac
6917                 ;;
6918         *)      dflt="$vendorlib"
6919                 ;;
6920         esac
6921         fn=d~+
6922         rp='Pathname for the vendor-supplied library files?'
6923         . ./getfile
6924         vendorlib="$ans"
6925         vendorlibexp="$ansexp"
6926         ;;
6927 esac
6928 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6929 prefixvar=vendorlib
6930 . ./installprefix
6931
6932 case "$vendorprefix" in
6933 '')     d_vendorarch="$undef"
6934         vendorarch=''
6935         vendorarchexp=''
6936         ;;
6937 *)      d_vendorarch="$define"
6938         : determine where vendor-supplied architecture-dependent libraries go.
6939         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6940         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6941         : vendorlib may have an optional trailing /share.
6942         case "$vendorarch" in
6943         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6944                 dflt="$dflt/$archname"
6945                 ;;
6946         *)      dflt="$vendorarch" ;;
6947         esac
6948         fn=d~+
6949         rp='Pathname for vendor-supplied architecture-dependent files?'
6950         . ./getfile
6951         vendorarch="$ans"
6952         vendorarchexp="$ansexp"
6953         ;;
6954 esac
6955 prefixvar=vendorarch
6956 . ./installprefix
6957
6958 : Final catch-all directories to search
6959 $cat <<EOM
6960
6961 Lastly, you can have perl look in other directories for extensions and
6962 modules in addition to those already specified.
6963 These directories will be searched after 
6964         $sitearch 
6965         $sitelib 
6966 EOM
6967 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6968 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6969 echo ' '
6970 case "$otherlibdirs" in
6971 ''|' ') dflt='none' ;;
6972 *)      dflt="$otherlibdirs" ;;
6973 esac
6974 $cat <<EOM
6975 Enter a colon-separated set of extra paths to include in perl's @INC
6976 search path, or enter 'none' for no extra paths.
6977
6978 EOM
6979
6980 rp='Colon-separated list of additional directories for perl to search?'
6981 . ./myread
6982 case "$ans" in
6983 ' '|''|none)    otherlibdirs=' ' ;;     
6984 *)      otherlibdirs="$ans" ;;
6985 esac
6986 case "$otherlibdirs" in
6987 ' ') val=$undef ;;
6988 *)      val=$define ;;
6989 esac
6990 set d_perl_otherlibdirs
6991 eval $setvar
6992
6993 : Cruising for prototypes
6994 echo " "
6995 echo "Checking out function prototypes..." >&4
6996 $cat >prototype.c <<EOCP
6997 #$i_stdlib I_STDLIB
6998 #ifdef I_STDLIB
6999 #include <stdlib.h>
7000 #endif
7001 int main(int argc, char *argv[]) {
7002         exit(0);}
7003 EOCP
7004 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7005         echo "Your C compiler appears to support function prototypes."
7006         val="$define"
7007 else
7008         echo "Your C compiler doesn't seem to understand function prototypes."
7009         val="$undef"
7010 fi
7011 set prototype
7012 eval $setvar
7013 $rm -f prototype*
7014
7015 case "$prototype" in
7016 "$define") ;;
7017 *)      ansi2knr='ansi2knr'
7018         echo " "
7019         cat <<EOM >&4
7020
7021 $me:  FATAL ERROR:
7022 This version of $package can only be compiled by a compiler that 
7023 understands function prototypes.  Unfortunately, your C compiler 
7024         $cc $ccflags
7025 doesn't seem to understand them.  Sorry about that.
7026
7027 If GNU cc is available for your system, perhaps you could try that instead.  
7028
7029 Eventually, we hope to support building Perl with pre-ANSI compilers.
7030 If you would like to help in that effort, please contact <perlbug@perl.org>.
7031
7032 Aborting Configure now.
7033 EOM
7034         exit 2
7035         ;;
7036 esac
7037
7038 echo " "
7039 case "$extras" in
7040 '') dflt='n';;
7041 *) dflt='y';;
7042 esac
7043 cat <<EOM
7044 Perl can be built with extra modules or bundles of modules which
7045 will be fetched from the CPAN and installed alongside Perl.
7046
7047 Notice that you will need access to the CPAN; either via the Internet,
7048 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7049 be asked later to configure the CPAN.pm module which will in turn do
7050 the installation of the rest of the extra modules or bundles.)
7051
7052 Notice also that if the modules require any external software such as
7053 libraries and headers (the libz library and the zlib.h header for the
7054 Compress::Zlib module, for example) you MUST have any such software
7055 already installed, this configuration process will NOT install such
7056 things for you.
7057
7058 If this doesn't make any sense to you, just accept the default '$dflt'.
7059 EOM
7060 rp='Install any extra modules (y or n)?'
7061 . ./myread
7062 case "$ans" in
7063 y|Y)
7064         cat <<EOM
7065
7066 Please list any extra modules or bundles to be installed from CPAN,
7067 with spaces between the names.  The names can be in any format the
7068 'install' command of CPAN.pm will understand.  (Answer 'none',
7069 without the quotes, to install no extra modules or bundles.)
7070 EOM
7071         rp='Extras?'
7072         dflt="$extras"
7073         . ./myread
7074         extras="$ans"
7075 esac
7076 case "$extras" in
7077 ''|'none')
7078         val=''
7079         $rm -f ../extras.lst
7080         ;;
7081 *)      echo "(Saving the list of extras for later...)"
7082         echo "$extras" > ../extras.lst
7083         val="'$extras'"
7084         ;;
7085 esac
7086 set extras
7087 eval $setvar
7088 echo " "
7089
7090 : determine where html pages for programs go
7091 set html1dir html1dir none
7092 eval $prefixit
7093 $cat <<EOM
7094
7095 If you wish to install html files for programs in $spackage, indicate
7096 the appropriate directory here.  To skip installing html files,
7097 answer "none".
7098 EOM
7099 case "$html1dir" in
7100 ''|none|$undef|' ') dflt=none ;;
7101 *) dflt=$html1dir ;;
7102 esac
7103 fn=dn+~
7104 rp="Directory for the main $spackage html pages?"
7105 . ./getfile
7106 prefixvar=html1dir
7107 . ./setprefixvar
7108 : Use ' ' for none so value is preserved next time through Configure
7109 $test X"$html1dir" = "X" && html1dir=' '
7110
7111 : determine where html pages for libraries and modules go
7112 set html3dir html3dir none
7113 eval $prefixit
7114 $cat <<EOM
7115
7116 If you wish to install html files for modules associated with $spackage,
7117 indicate the appropriate directory here.  To skip installing html files,
7118 answer "none".
7119 EOM
7120 : There is no obvious default.  If they have specified html1dir, then
7121 : try to key off that, possibly changing .../html1 into .../html3.
7122 case "$html3dir" in
7123 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7124 *) dflt=$html3dir ;;
7125 esac
7126 fn=dn+~
7127 rp="Directory for the $spackage module html pages?"
7128 . ./getfile
7129 prefixvar=html3dir
7130 . ./setprefixvar
7131 : Use ' ' for none so value is preserved next time through Configure
7132 $test X"$html3dir" = "X" && html3dir=' '
7133
7134 : determine whether to install perl also as /usr/bin/perl
7135
7136 echo " "
7137 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7138         $cat <<EOM
7139 Many scripts expect perl to be installed as /usr/bin/perl.
7140
7141 If you want to, I can install the perl you are about to compile
7142 as /usr/bin/perl (in addition to $bin/perl).
7143 EOM
7144         if test -f /usr/bin/perl; then
7145             $cat <<EOM
7146
7147 However, please note that because you already have a /usr/bin/perl,
7148 overwriting that with a new Perl would very probably cause problems.
7149 Therefore I'm assuming you don't want to do that (unless you insist).
7150
7151 EOM
7152             case "$installusrbinperl" in
7153             "$define"|[yY]*)    dflt='y';;
7154             *)                  dflt='n';;
7155             esac
7156         else
7157             $cat <<EOM
7158
7159 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7160
7161 EOM
7162             case "$installusrbinperl" in
7163             "$undef"|[nN]*)     dflt='n';;
7164             *)                  dflt='y';;
7165             esac
7166         fi
7167         rp="Do you want to install perl as /usr/bin/perl?"
7168         . ./myread
7169         case "$ans" in
7170         [yY]*)  val="$define";;
7171         *)      val="$undef" ;;
7172         esac
7173 else
7174         val="$undef"
7175 fi
7176 set installusrbinperl
7177 eval $setvar
7178
7179 echo " "
7180 echo "Checking for GNU C Library..." >&4
7181 cat >try.c <<'EOCP'
7182 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7183    alone are insufficient to distinguish different versions, such as
7184    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7185    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7186 */
7187 #include <stdio.h>
7188 int main(void)
7189 {
7190 #ifdef __GLIBC__
7191 #   ifdef __GLIBC_MINOR__
7192 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7193 #           include <gnu/libc-version.h>
7194             printf("%s\n",  gnu_get_libc_version());
7195 #       else
7196             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7197 #       endif
7198 #   else
7199         printf("%d\n",  __GLIBC__);
7200 #   endif
7201     return 0;
7202 #else
7203     return 1;
7204 #endif
7205 }
7206 EOCP
7207 set try
7208 if eval $compile_ok && $run ./try > glibc.ver; then
7209         val="$define"
7210         gnulibc_version=`$cat glibc.ver`
7211         echo "You are using the GNU C Library version $gnulibc_version"
7212 else
7213         val="$undef"
7214         gnulibc_version=''
7215         echo "You are not using the GNU C Library"
7216 fi
7217 $rm_try glibc.ver
7218 set d_gnulibc
7219 eval $setvar
7220
7221 : see if nm is to be used to determine whether a symbol is defined or not
7222 case "$usenm" in
7223 '')
7224         dflt=''
7225         case "$d_gnulibc" in
7226         "$define")
7227                 echo " "
7228                 echo "nm probably won't work on the GNU C Library." >&4
7229                 dflt=n
7230                 ;;
7231         esac
7232         case "$dflt" in
7233         '') 
7234                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7235                         echo " "
7236                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7237                         echo "'nm' won't be sufficient on this sytem." >&4
7238                         dflt=n
7239                 fi
7240                 ;;
7241         esac
7242         case "$dflt" in
7243         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7244                 if $test $dflt -gt 20; then
7245                         dflt=y
7246                 else
7247                         dflt=n
7248                 fi
7249                 ;;
7250         esac
7251         ;;
7252 *)
7253         case "$usenm" in
7254         true|$define) dflt=y;;
7255         *) dflt=n;;
7256         esac
7257         ;;
7258 esac
7259 $cat <<EOM
7260
7261 I can use $nm to extract the symbols from your C libraries. This
7262 is a time consuming task which may generate huge output on the disk (up
7263 to 3 megabytes) but that should make the symbols extraction faster. The
7264 alternative is to skip the 'nm' extraction part and to compile a small
7265 test program instead to determine whether each symbol is present. If
7266 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7267 this may be the best solution.
7268
7269 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7270
7271 EOM
7272 rp="Shall I use $nm to extract C symbols from the libraries?"
7273 . ./myread
7274 case "$ans" in
7275 [Nn]*) usenm=false;;
7276 *) usenm=true;;
7277 esac
7278
7279 runnm=$usenm
7280 case "$reuseval" in
7281 true) runnm=false;;
7282 esac
7283
7284 : nm options which may be necessary
7285 case "$nm_opt" in
7286 '') if $test -f /mach_boot; then
7287                 nm_opt=''       # Mach
7288         elif $test -d /usr/ccs/lib; then
7289                 nm_opt='-p'     # Solaris (and SunOS?)
7290         elif $test -f /dgux; then
7291                 nm_opt='-p'     # DG-UX
7292         elif $test -f /lib64/rld; then
7293                 nm_opt='-p'     # 64-bit Irix
7294         else
7295                 nm_opt=''
7296         fi;;
7297 esac
7298
7299 : nm options which may be necessary for shared libraries but illegal
7300 : for archive libraries.  Thank you, Linux.
7301 case "$nm_so_opt" in
7302 '')     case "$myuname" in
7303         *linux*|gnu*)
7304                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7305                         nm_so_opt='--dynamic'
7306                 fi
7307                 ;;
7308         esac
7309         ;;
7310 esac
7311
7312 case "$runnm" in
7313 true)
7314 : get list of predefined functions in a handy place
7315 echo " "
7316 case "$libc" in
7317 '') libc=unknown
7318         case "$libs" in
7319         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7320         esac
7321         ;;
7322 esac
7323 case "$libs" in
7324 '') ;;
7325 *)  for thislib in $libs; do
7326         case "$thislib" in
7327         -lc|-lc_s)
7328                 : Handle C library specially below.
7329                 ;;
7330         -l*)
7331                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7332                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7333                         :
7334                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7335                         :
7336                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7337                         :
7338                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7339                         :
7340                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7341                         :
7342                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7343                         :
7344                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7345                         :
7346                 else
7347                         try=''
7348                 fi
7349                 libnames="$libnames $try"
7350                 ;;
7351         *) libnames="$libnames $thislib" ;;
7352         esac
7353         done
7354         ;;
7355 esac
7356 xxx=normal
7357 case "$libc" in
7358 unknown)
7359         set /lib/libc.$so
7360         for xxx in $libpth; do
7361                 $test -r $1 || set $xxx/libc.$so
7362                 : The messy sed command sorts on library version numbers.
7363                 $test -r $1 || \
7364                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7365                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7366                                 h
7367                                 s/[0-9][0-9]*/0000&/g
7368                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7369                                 G
7370                                 s/\n/ /' | \
7371                          $sort | $sed -e 's/^.* //'`
7372                 eval set \$$#
7373         done
7374         $test -r $1 || set /usr/ccs/lib/libc.$so
7375         $test -r $1 || set /lib/libsys_s$_a
7376         ;;
7377 *)
7378         set blurfl
7379         ;;
7380 esac
7381 if $test -r "$1"; then
7382         echo "Your (shared) C library seems to be in $1."
7383         libc="$1"
7384 elif $test -r /lib/libc && $test -r /lib/clib; then
7385         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7386         xxx=apollo
7387         libc='/lib/clib /lib/libc'
7388         if $test -r /lib/syslib; then
7389                 echo "(Your math library is in /lib/syslib.)"
7390                 libc="$libc /lib/syslib"
7391         fi
7392 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7393         echo "Your C library seems to be in $libc, as you said before."
7394 elif $test -r $incpath/usr/lib/libc$_a; then
7395         libc=$incpath/usr/lib/libc$_a;
7396         echo "Your C library seems to be in $libc.  That's fine."
7397 elif $test -r /lib/libc$_a; then
7398         libc=/lib/libc$_a;
7399         echo "Your C library seems to be in $libc.  You're normal."
7400 else
7401         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7402                 :
7403         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7404                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7405         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7406                 :
7407         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7408                 :
7409         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7410                 :
7411         else
7412                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7413         fi
7414         if $test -r "$tans"; then
7415                 echo "Your C library seems to be in $tans, of all places."
7416                 libc=$tans
7417         else
7418                 libc='blurfl'
7419         fi
7420 fi
7421 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7422         dflt="$libc"
7423         cat <<EOM
7424
7425 If the guess above is wrong (which it might be if you're using a strange
7426 compiler, or your machine supports multiple models), you can override it here.
7427
7428 EOM
7429 else
7430         dflt=''
7431         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7432         cat >&4 <<EOM
7433 I can't seem to find your C library.  I've looked in the following places:
7434
7435 EOM
7436         $sed 's/^/      /' libpath
7437         cat <<EOM
7438
7439 None of these seems to contain your C library. I need to get its name...
7440
7441 EOM
7442 fi
7443 fn=f
7444 rp='Where is your C library?'
7445 . ./getfile
7446 libc="$ans"
7447
7448 echo " "
7449 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7450 set X `cat libnames`
7451 shift
7452 xxx=files
7453 case $# in 1) xxx=file; esac
7454 echo "Extracting names from the following $xxx for later perusal:" >&4
7455 echo " "
7456 $sed 's/^/      /' libnames >&4
7457 echo " "
7458 $echo $n "This may take a while...$c" >&4
7459
7460 for file in $*; do
7461         case $file in
7462         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7463         *) $nm $nm_opt $file 2>/dev/null;;
7464         esac
7465 done >libc.tmp
7466
7467 $echo $n ".$c"
7468 $grep fprintf libc.tmp > libc.ptf
7469 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7470 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7471 xxx='[ADTSIW]'
7472 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7473         eval $xscan;\
7474         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7475                 eval $xrun
7476 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7477         eval $xscan;\
7478         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7479                 eval $xrun
7480 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7481         eval $xscan;\
7482         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7483                 eval $xrun
7484 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7485         eval $xscan;\
7486         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7487                 eval $xrun
7488 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7489         eval $xscan;\
7490         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7491                 eval $xrun
7492 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7493         eval $xscan;\
7494         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7495                 eval $xrun
7496 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7497                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7498         eval $xscan;\
7499         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7500                 eval $xrun
7501 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7502         eval $xscan;\
7503         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7504                 eval $xrun
7505 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7506         eval $xscan;\
7507         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7508                 eval $xrun
7509 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7510         eval $xscan;\
7511         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7512                 eval $xrun
7513 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7514         eval $xscan;\
7515         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7516                 eval $xrun
7517 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7518         eval $xscan;\
7519         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7520                 eval $xrun
7521 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7522         eval $xscan;\
7523         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7524                 eval $xrun
7525 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7526         eval $xscan;\
7527         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7528                 eval $xrun
7529 else
7530         $nm -p $* 2>/dev/null >libc.tmp
7531         $grep fprintf libc.tmp > libc.ptf
7532         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7533                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7534         then
7535                 nm_opt='-p'
7536                 eval $xrun
7537         else
7538                 echo " "
7539                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7540                 com=''
7541                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7542                         for thisname in $libnames $libc; do
7543                                 $ar t $thisname >>libc.tmp
7544                         done
7545                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7546                         echo "Ok." >&4
7547                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7548                         # Repeat libc to extract forwarders to DLL entries too
7549                         for thisname in $libnames $libc; do
7550                                 $ar tv $thisname >>libc.tmp
7551                                 # Revision 50 of EMX has bug in $ar.
7552                                 # it will not extract forwarders to DLL entries
7553                                 # Use emximp which will extract exactly them.
7554                                 emximp -o tmp.imp $thisname \
7555                                     2>/dev/null && \
7556                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7557                                     < tmp.imp >>libc.tmp
7558                                 $rm tmp.imp
7559                         done
7560                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7561                         echo "Ok." >&4
7562                 else
7563                         echo "$ar didn't seem to work right." >&4
7564                         echo "Maybe this is a Cray...trying bld instead..." >&4
7565                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7566                         then
7567                                 for thisname in $libnames; do
7568                                         bld t $libnames | \
7569                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7570                                         $ar t $thisname >>libc.tmp
7571                                 done
7572                                 echo "Ok." >&4
7573                         else
7574                                 echo "That didn't work either.  Giving up." >&4
7575                                 exit 1
7576                         fi
7577                 fi
7578         fi
7579 fi
7580 nm_extract="$com"
7581 case "$PASE" in
7582 define)
7583     echo " "
7584     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7585     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7586     ;;
7587 *)  if $test -f /lib/syscalls.exp; then
7588         echo " "
7589         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7590         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7591     fi
7592     ;;
7593 esac
7594 ;;
7595 esac
7596 $rm -f libnames libpath
7597
7598 : see if dld is available
7599 set dld.h i_dld
7600 eval $inhdr
7601
7602
7603 echo " "
7604 echo "Checking for C++..." >&4
7605 $cat >try.c <<'EOCP'
7606 #include <stdio.h>
7607 int main(void)
7608 {
7609 #ifdef __cplusplus
7610     return 0;
7611 #else
7612     return 1;
7613 #endif
7614 }
7615 EOCP
7616 set try
7617 if eval $compile_ok && $run ./try; then
7618         val="$define"
7619         echo "You are using a C++ compiler."
7620 else
7621         val="$undef"
7622         echo "You are not using a C++ compiler."
7623 fi
7624 $rm_try cplusplus$$
7625 set d_cplusplus
7626 eval $setvar
7627
7628 : is a C symbol defined?
7629 csym='tlook=$1;
7630 case "$3" in
7631 -v) tf=libc.tmp; tdc="";;
7632 -a) tf=libc.tmp; tdc="[]";;
7633 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7634 esac;
7635 tx=yes;
7636 case "$reuseval-$4" in
7637 true-) ;;
7638 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7639 esac;
7640 case "$tx" in
7641 yes)
7642         tval=false;
7643         case "$d_cplusplus" in
7644                 $define) extern_C=\"C\";;
7645         esac;
7646         if $test "$runnm" = true; then
7647                 if $contains $tlook $tf >/dev/null 2>&1; then
7648                         tval=true;
7649                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7650                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7651                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7652                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7653                         $rm_try;
7654                 fi;
7655         else
7656                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7657                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7658                 $rm_try;
7659         fi;
7660         ;;
7661 *)
7662         case "$tval" in
7663         $define) tval=true;;
7664         *) tval=false;;
7665         esac;
7666         ;;
7667 esac;
7668 eval "$2=$tval"'
7669
7670 : define an is-in-libc? function
7671 inlibc='echo " "; td=$define; tu=$undef;
7672 sym=$1; var=$2; eval "was=\$$2";
7673 tx=yes;
7674 case "$reuseval$was" in
7675 true) ;;
7676 true*) tx=no;;
7677 esac;
7678 case "$tx" in
7679 yes)
7680         set $sym tres -f;
7681         eval $csym;
7682         case "$tres" in
7683         true)
7684                 echo "$sym() found." >&4;
7685                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7686         *)
7687                 echo "$sym() NOT found." >&4;
7688                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7689         esac;;
7690 *)
7691         case "$was" in
7692         $define) echo "$sym() found." >&4;;
7693         *) echo "$sym() NOT found." >&4;;
7694         esac;;
7695 esac'
7696
7697 : see if dlopen exists
7698 xxx_runnm="$runnm"
7699 xxx_ccflags="$ccflags"
7700 runnm=false
7701 : with g++ one needs -shared to get is-in-libc to work for dlopen
7702 case "$gccversion" in
7703 '')     ;;
7704 *)      case "$d_cplusplus" in
7705         "$define") ccflags="$ccflags -shared" ;;
7706         esac
7707         ;;
7708 esac
7709 set dlopen d_dlopen
7710 eval $inlibc
7711 runnm="$xxx_runnm"
7712 ccflags="$xxx_ccflags"
7713
7714 : see if this is a unistd.h system
7715 set unistd.h i_unistd
7716 eval $inhdr
7717
7718 : determine which dynamic loading, if any, to compile in
7719 echo " "
7720 dldir="ext/DynaLoader"
7721 case "$usedl" in
7722 $define|y|true)
7723         dflt='y'
7724         usedl="$define"
7725         ;;
7726 $undef|n|false)
7727         dflt='n'
7728         usedl="$undef"
7729         ;;
7730 *)
7731         dflt='n'
7732         case "$d_dlopen" in
7733             $define) dflt='y' ;;
7734         esac
7735         case "$i_dld" in
7736             $define) dflt='y' ;;
7737         esac
7738         : Does a dl_xxx.xs file exist for this operating system
7739         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7740         ;;
7741 esac
7742 rp="Do you wish to use dynamic loading?"
7743 . ./myread
7744 usedl="$ans"
7745 case "$ans" in
7746 y*) usedl="$define"
7747         case "$dlsrc" in
7748         '')
7749                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7750                         dflt="$dldir/dl_${osname}.xs"
7751                 elif $test "$d_dlopen" = "$define" ; then
7752                         dflt="$dldir/dl_dlopen.xs"
7753                 elif $test "$i_dld" = "$define" ; then
7754                         dflt="$dldir/dl_dld.xs"
7755                 else
7756                         dflt=''
7757                 fi
7758                 ;;
7759         *)      dflt="$dldir/$dlsrc"
7760                 ;;
7761         esac
7762     echo "The following dynamic loading files are available:"
7763         : Can not go over to $dldir because getfile has path hard-coded in.
7764         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7765         rp="Source file to use for dynamic loading"
7766         fn="fne"
7767         gfpth="$src"
7768         . ./getfile
7769         usedl="$define"
7770         : emulate basename
7771         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7772
7773         $cat << EOM
7774
7775 Some systems may require passing special flags to $cc -c to
7776 compile modules that will be used to create a shared library.
7777 To use no flags, say "none".
7778
7779 EOM
7780     case "$cccdlflags" in
7781     '') case "$gccversion" in
7782                 '') case "$osname" in
7783                         hpux)   dflt='+z' ;;
7784                         next)   dflt='none' ;;
7785                         irix*)  dflt='-KPIC' ;;
7786                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7787                         sunos)  dflt='-pic' ;;
7788                         *)      dflt='none' ;;
7789                     esac
7790                         ;;
7791                 *)  case "$osname" in
7792                         darwin) dflt='none' ;;
7793                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7794                         *)      dflt='-fpic' ;;
7795                     esac ;;
7796             esac ;;
7797         ' ') dflt='none' ;;
7798     *)  dflt="$cccdlflags" ;;
7799     esac
7800     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7801     . ./myread
7802     case "$ans" in
7803     none) cccdlflags=' ' ;;
7804     *) cccdlflags="$ans" ;;
7805     esac
7806
7807     cat << EOM
7808
7809 Some systems use ld to create libraries that can be dynamically loaded,
7810 while other systems (such as those using ELF) use $cc.
7811
7812 EOM
7813         case "$ld" in
7814         '')     $cat >try.c <<EOM
7815 /* Test for whether ELF binaries are produced */
7816 #include <fcntl.h>
7817 #$i_stdlib I_STDLIB
7818 #ifdef I_STDLIB
7819 #include <stdlib.h>
7820 #endif
7821 #$i_unistd I_UNISTD
7822 #ifdef I_UNISTD
7823 #include <unistd.h>
7824 #endif
7825 int main() {
7826         char b[4];
7827         int i = open("a.out",O_RDONLY);
7828         if(i == -1)
7829                 exit(1); /* fail */
7830         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7831                 exit(0); /* succeed (yes, it's ELF) */
7832         else
7833                 exit(1); /* fail */
7834 }
7835 EOM
7836                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7837                         cat <<EOM
7838 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7839 EOM
7840                         dflt="$cc"
7841                 else
7842                         echo "I'll use ld to build dynamic libraries."
7843                         dflt='ld'
7844                 fi
7845                 $rm_try
7846                 ;;
7847         *)      dflt="$ld"
7848                 ;;
7849         esac
7850
7851     rp="What command should be used to create dynamic libraries?"
7852     . ./myread
7853         ld="$ans"
7854
7855     cat << EOM
7856
7857 Some systems may require passing special flags to $ld to create a
7858 library that can be dynamically loaded.  If your ld flags include
7859 -L/other/path options to locate libraries outside your loader's normal
7860 search path, you may need to specify those -L options here as well.  To
7861 use no flags, say "none".
7862
7863 EOM
7864     case "$lddlflags" in
7865     '') case "$osname" in
7866                         beos) dflt='-nostart' ;;
7867                         hpux) dflt='-b';
7868                               case "$gccversion" in
7869                               '') dflt="$dflt +vnocompatwarnings" ;;
7870                               esac
7871                               ;;
7872                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
7873                         next)  dflt='none' ;;
7874                         solaris) dflt='-G' ;;
7875                         sunos) dflt='-assert nodefinitions' ;;
7876                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7877                 *)     dflt='none' ;;
7878                         esac
7879                         ;;
7880     *) dflt="$lddlflags" ;;
7881     esac
7882
7883         : Try to guess additional flags to pick up local libraries.
7884         : Be careful not to append to a plain 'none'
7885         case "$dflt" in
7886         none) dflt='' ;;
7887         esac
7888         for thisflag in $ldflags; do
7889                 case "$thisflag" in
7890                 -L*|-R*|-Wl,-R*)
7891                         case " $dflt " in
7892                         *" $thisflag "*) ;;
7893                         *) dflt="$dflt $thisflag" ;;
7894                         esac
7895                         ;;
7896                 esac
7897         done
7898
7899         case "$dflt" in
7900         ''|' ') dflt='none' ;;
7901         esac
7902
7903     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7904     . ./myread
7905     case "$ans" in
7906     none) lddlflags=' ' ;;
7907     *) lddlflags="$ans" ;;
7908     esac
7909
7910         cat <<EOM
7911
7912 Some systems may require passing special flags to $cc to indicate that
7913 the resulting executable will use dynamic linking.  To use no flags,
7914 say "none".
7915
7916 EOM
7917     case "$ccdlflags" in
7918     '') case "$osname" in
7919             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
7920             next|sunos) dflt='none' ;;
7921             *)          dflt='none' ;;
7922             esac ;;
7923     ' ')  dflt='none' ;;
7924     *)  dflt="$ccdlflags" ;;
7925     esac
7926     rp="Any special flags to pass to $cc to use dynamic linking?"
7927     . ./myread
7928     case "$ans" in
7929     none) ccdlflags=' ' ;;
7930     *) ccdlflags="$ans" ;;
7931     esac
7932     ;;
7933 *)  usedl="$undef"
7934         ld='ld'
7935     dlsrc='dl_none.xs'
7936     lddlflags=''
7937     ccdlflags=''
7938     ;;
7939 esac
7940
7941 also=''
7942 case "$usedl" in
7943 $undef)
7944         # No dynamic loading being used, so don't bother even to prompt.
7945         useshrplib='false'
7946         ;;
7947 *)      case "$useshrplib" in
7948         '')     case "$osname" in
7949                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7950                         dflt=y
7951                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7952                         ;;
7953                 next*)
7954                         case "$osvers" in
7955                         4*)     dflt=y
7956                                 also='Building a shared libperl is needed for MAB support.'
7957                                 ;;
7958                         *)      dflt=n
7959                                 ;;
7960                         esac
7961                         ;;
7962                 *)      dflt=n
7963                         ;;
7964                 esac
7965                 ;;
7966         $define|true|[Yy]*)
7967                 dflt=y
7968                 ;;
7969         *)      dflt=n
7970                 ;;
7971         esac
7972         $cat << EOM
7973
7974 The perl executable is normally obtained by linking perlmain.c with
7975 libperl${_a}, any static extensions (usually just DynaLoader), and
7976 any other libraries needed on this system (such as -lm, etc.).  Since
7977 your system supports dynamic loading, it is probably possible to build
7978 a shared libperl.$so.  If you will have more than one executable linked
7979 to libperl.$so, this will significantly reduce the size of each
7980 executable, but it may have a noticeable effect on performance.  The
7981 default is probably sensible for your system.
7982 $also
7983
7984 EOM
7985         rp="Build a shared libperl.$so (y/n)"
7986         . ./myread
7987         case "$ans" in
7988         true|$define|[Yy]*)
7989                 useshrplib='true'  ;;
7990         *)      useshrplib='false' ;;
7991         esac
7992         ;;
7993 esac
7994
7995 case "$useshrplib" in
7996 true)
7997         case "$libperl" in
7998         '')
7999                 # Figure out a good name for libperl.so.  Since it gets stored in
8000                 # a version-specific architecture-dependent library, the version
8001                 # number isn't really that important, except for making cc/ld happy.
8002                 #
8003                 # A name such as libperl.so.3.1
8004                 majmin="libperl.$so.$patchlevel.$subversion"
8005                 # A name such as libperl.so.301
8006                 majonly=`echo $patchlevel $subversion |
8007                         $awk '{printf "%d%02d", $1, $2}'`
8008                 majonly=libperl.$so.$majonly
8009                 # I'd prefer to keep the os-specific stuff here to a minimum, and
8010                 # rely on figuring it out from the naming of libc.
8011                 case "${osname}${osvers}" in
8012                 next4*)
8013                         dflt=libperl.5.$so
8014                         # XXX How handle the --version stuff for MAB?
8015                         ;;
8016                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
8017                         dflt=libperl.$so
8018                         ;;
8019                 cygwin*) # ld links against an importlib
8020                         dflt=libperl$lib_ext
8021                         ;;
8022                 *)      # Try to guess based on whether libc has major.minor.
8023                         case "$libc" in
8024                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8025                         *libc.$so.[0-9]*) dflt=$majonly ;;
8026                         *)      dflt=libperl.$so ;;
8027                         esac
8028                         ;;
8029                 esac
8030                 ;;
8031         *)      dflt=$libperl
8032                 ;;
8033         esac
8034         cat << EOM
8035
8036 I need to select a good name for the shared libperl.  If your system uses
8037 library names with major and minor numbers, then you might want something
8038 like $majmin.  Alternatively, if your system uses a single version
8039 number for shared libraries, then you might want to use $majonly.
8040 Or, your system might be quite happy with a simple libperl.$so.
8041
8042 Since the shared libperl will get installed into a version-specific
8043 architecture-dependent directory, the version number of the shared perl
8044 library probably isn't important, so the default should be o.k.
8045
8046 EOM
8047         rp='What name do you want to give to the shared libperl?'
8048         . ./myread
8049         libperl=$ans
8050         echo "Ok, I'll use $libperl"
8051         ;;
8052 *)
8053         libperl="libperl${_a}"
8054         ;;
8055 esac
8056
8057 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8058 case "$shrpdir" in
8059 '') ;;
8060 *)      $cat >&4 <<EOM
8061 WARNING:  Use of the shrpdir variable for the installation location of
8062 the shared $libperl is not supported.  It was never documented and
8063 will not work in this version.  Let me (perlbug@perl.org)
8064 know of any problems this may cause.
8065
8066 EOM
8067         case "$shrpdir" in
8068         "$archlibexp/CORE")
8069                 $cat >&4 <<EOM
8070 But your current setting of $shrpdir is
8071 the default anyway, so it's harmless.
8072 EOM
8073                 ;;
8074         *)
8075                 $cat >&4 <<EOM
8076 Further, your current attempted setting of $shrpdir
8077 conflicts with the value of $archlibexp/CORE
8078 that installperl will use.
8079 EOM
8080                 ;;
8081         esac
8082         ;;
8083 esac
8084
8085 # How will the perl executable find the installed shared $libperl?
8086 # Add $xxx to ccdlflags.
8087 # If we can't figure out a command-line option, use $shrpenv to
8088 # set env LD_RUN_PATH.  The main perl makefile uses this.
8089 shrpdir=$archlibexp/CORE
8090 xxx=''
8091 tmp_shrpenv=''
8092 if "$useshrplib"; then
8093     case "$osname" in 
8094         aix)
8095                 # We'll set it in Makefile.SH...
8096                 ;;
8097         solaris)
8098                 xxx="-R $shrpdir"
8099                 ;;
8100         freebsd|netbsd|openbsd|interix|dragonfly)
8101                 xxx="-Wl,-R$shrpdir"
8102                 ;;
8103         bsdos|linux|irix*|dec_osf|gnu*)
8104                 xxx="-Wl,-rpath,$shrpdir"
8105                 ;;
8106         next)
8107                 # next doesn't like the default...
8108                 ;;
8109         beos)
8110                 # beos doesn't like the default, either.
8111                 ;;
8112         hpux*)
8113                 # hpux doesn't like the default, either.
8114                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8115                 ;;
8116         *)
8117                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8118                 ;;
8119         esac
8120         case "$xxx" in
8121         '') ;;
8122         *)      
8123                 # Only add $xxx if it isn't already in ccdlflags.
8124                 case " $ccdlflags " in
8125                 *" $xxx "*)     ;;
8126                 *)      ccdlflags="$ccdlflags $xxx"
8127                         cat <<EOM >&4
8128
8129 Adding $xxx to the flags
8130 passed to $ld so that the perl executable will find the 
8131 installed shared $libperl.
8132
8133 EOM
8134                         ;;
8135                 esac
8136                 ;;
8137         esac
8138 fi
8139 # Fix ccdlflags in AIX for building external extensions.
8140 # (For building Perl itself bare -bE:perl.exp is needed,
8141 #  Makefile.SH takes care of this.)
8142 case "$osname" in
8143 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8144 esac
8145 # Respect a hint or command-line value.
8146 case "$shrpenv" in
8147 '') shrpenv="$tmp_shrpenv" ;;
8148 esac
8149 case "$ldlibpthname" in
8150 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8151 none)   ldlibpthname='' ;;
8152 esac
8153
8154 : determine where manual pages are on this system
8155 echo " "
8156 case "$sysman" in
8157 '') 
8158         syspath='/usr/share/man/man1 /usr/man/man1'
8159         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8160         syspath="$syspath /usr/man/u_man/man1"
8161         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8162         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8163         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8164         sysman=`./loc . /usr/man/man1 $syspath`
8165         ;;
8166 esac
8167 if $test -d "$sysman"; then
8168         echo "System manual is in $sysman." >&4
8169 else
8170         echo "Could not find manual pages in source form." >&4
8171 fi
8172
8173 : determine where manual pages go
8174 set man1dir man1dir none
8175 eval $prefixit
8176 $cat <<EOM
8177
8178 $spackage has manual pages available in source form.
8179 EOM
8180 case "$nroff" in
8181 nroff)
8182         echo "However, you don't have nroff, so they're probably useless to you."
8183         case "$man1dir" in
8184         '') man1dir="none";;
8185         esac;;
8186 esac
8187 echo "If you don't want the manual sources installed, answer 'none'."
8188 case "$man1dir" in
8189 ' ') dflt=none
8190         ;;
8191 '')
8192         lookpath="$prefixexp/share/man/man1"
8193         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8194         lookpath="$lookpath $prefixexp/man/p_man/man1"
8195         lookpath="$lookpath $prefixexp/man/u_man/man1"
8196         lookpath="$lookpath $prefixexp/man/man.1"
8197         case "$sysman" in
8198         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8199         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8200         esac
8201         set dflt
8202         eval $prefixup
8203         ;;
8204 *)  dflt="$man1dir"
8205         ;;
8206 esac
8207 echo " "
8208 fn=dn+~
8209 rp="Where do the main $spackage manual pages (source) go?"
8210 . ./getfile
8211 if $test "X$man1direxp" != "X$ansexp"; then
8212         installman1dir=''
8213 fi
8214 prefixvar=man1dir
8215 . ./setprefixvar
8216
8217 case "$man1dir" in
8218 '')     man1dir=' '
8219         installman1dir='';;
8220 esac
8221
8222 : What suffix to use on installed man pages
8223
8224 case "$man1dir" in
8225 ' ')
8226         man1ext='0'
8227         ;;
8228 *)
8229         rp="What suffix should be used for the main $spackage man pages?"
8230         case "$man1ext" in
8231         '')     case "$man1dir" in
8232                 *1)  dflt=1 ;;
8233                 *1p) dflt=1p ;;
8234                 *1pm) dflt=1pm ;;
8235                 *l) dflt=l;;
8236                 *n) dflt=n;;
8237                 *o) dflt=o;;
8238                 *p) dflt=p;;
8239                 *C) dflt=C;;
8240                 *L) dflt=L;;
8241                 *L1) dflt=L1;;
8242                 *) dflt=1;;
8243                 esac
8244                 ;;
8245         *)      dflt="$man1ext";;
8246         esac
8247         . ./myread
8248         man1ext="$ans"
8249         ;;
8250 esac
8251
8252 : see if we can have long filenames
8253 echo " "
8254 first=123456789abcdef
8255 $rm -f $first
8256 if (echo hi >$first) 2>/dev/null; then
8257         if $test -f 123456789abcde; then
8258                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8259                 val="$undef"
8260         else
8261                 echo 'You can have filenames longer than 14 characters.'>&4
8262                 val="$define"
8263         fi
8264 else
8265         $cat <<'EOM'
8266 You can't have filenames longer than 14 chars.
8267 You can't even think about them!
8268 EOM
8269         val="$undef"
8270 fi 
8271 set d_flexfnam
8272 eval $setvar
8273 $rm -rf 123456789abcde*
8274
8275 : determine where library module manual pages go
8276 set man3dir man3dir none
8277 eval $prefixit
8278 $cat <<EOM
8279
8280 $spackage has manual pages for many of the library modules.
8281 EOM
8282
8283 case "$nroff" in
8284 nroff)
8285         $cat <<'EOM'
8286 However, you don't have nroff, so they're probably useless to you.
8287 EOM
8288         case "$man3dir" in
8289         '') man3dir="none";;
8290         esac;;
8291 esac
8292
8293 case "$d_flexfnam" in
8294 undef)
8295         $cat <<'EOM'
8296 However, your system can't handle the long file names like File::Basename.3.
8297 EOM
8298         case "$man3dir" in
8299         '') man3dir="none";;
8300         esac;;
8301 esac
8302
8303 echo "If you don't want the manual sources installed, answer 'none'."
8304 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8305 case "$man3dir" in
8306 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8307         if $test -d "$privlib/man/man3"; then
8308                 cat <<EOM >&4
8309
8310 WARNING:  Previous versions of perl installed man3 pages into
8311 $privlib/man/man3.  This version will suggest a
8312 new default of $dflt.
8313 EOM
8314                 tdflt=$dflt
8315                 dflt='n'
8316                 rp='Do you wish to preserve the old behavior?(y/n)'
8317                 . ./myread
8318                 case "$ans" in
8319                 y*) dflt="$privlib/man/man3" ;;
8320                 *)  dflt=$tdflt ;;
8321                 esac
8322     fi
8323         ;;
8324 *)      dflt="$man3dir" ;;
8325 esac
8326 case "$dflt" in
8327 ' ') dflt=none ;;
8328 esac
8329 echo " "
8330 fn=dn+~
8331 rp="Where do the $package library man pages (source) go?"
8332 . ./getfile
8333 prefixvar=man3dir
8334 . ./setprefixvar
8335
8336 case "$man3dir" in
8337 '')     man3dir=' '
8338         installman3dir='';;
8339 esac
8340
8341 : What suffix to use on installed man pages
8342 case "$man3dir" in
8343 ' ')
8344         man3ext='0'
8345         ;;
8346 *)
8347         rp="What suffix should be used for the $package library man pages?"
8348         case "$man3ext" in
8349         '')     case "$man3dir" in
8350                 *3)  dflt=3 ;;
8351                 *3p) dflt=3p ;;
8352                 *3pm) dflt=3pm ;;
8353                 *l) dflt=l;;
8354                 *n) dflt=n;;
8355                 *o) dflt=o;;
8356                 *p) dflt=p;;
8357                 *C) dflt=C;;
8358                 *L) dflt=L;;
8359                 *L3) dflt=L3;;
8360                 *) dflt=3;;
8361                 esac
8362                 ;;
8363         *)      dflt="$man3ext";;
8364         esac
8365         . ./myread
8366         man3ext="$ans"
8367         ;;
8368 esac
8369
8370 : see if we have to deal with yellow pages, now NIS.
8371 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8372         if $test -f /usr/etc/nibindd; then
8373                 echo " "
8374                 echo "I'm fairly confident you're on a NeXT."
8375                 echo " "
8376                 rp='Do you get the hosts file via NetInfo?'
8377                 dflt=y
8378                 case "$hostcat" in
8379                 nidump*) ;;
8380                 '') ;;
8381                 *) dflt=n;;
8382                 esac
8383                 . ./myread
8384                 case "$ans" in
8385                 y*) hostcat='nidump hosts .';;
8386                 *)      case "$hostcat" in
8387                         nidump*) hostcat='';;
8388                         esac
8389                         ;;
8390                 esac
8391         fi
8392         case "$hostcat" in
8393         nidump*) ;;
8394         *)
8395                 case "$hostcat" in
8396                 *ypcat*) dflt=y;;
8397                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8398                                 dflt=y
8399                         else
8400                                 dflt=n
8401                         fi;;
8402                 *) dflt=n;;
8403                 esac
8404                 echo " "
8405                 rp='Are you getting the hosts file via yellow pages?'
8406                 . ./myread
8407                 case "$ans" in
8408                 y*) hostcat='ypcat hosts';;
8409                 *) hostcat='cat /etc/hosts';;
8410                 esac
8411                 ;;
8412         esac
8413 fi
8414 case "$hostcat" in
8415 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8416 esac
8417 case "$groupcat" in
8418 '') test -f /etc/group && groupcat='cat /etc/group';;
8419 esac
8420 case "$passcat" in
8421 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8422 esac
8423
8424 : now get the host name
8425 echo " "
8426 echo "Figuring out host name..." >&4
8427 case "$myhostname" in
8428 '') cont=true
8429         echo 'Maybe "hostname" will work...'
8430         if tans=`sh -c hostname 2>&1` ; then
8431                 myhostname=$tans
8432                 phostname=hostname
8433                 cont=''
8434         fi
8435         ;;
8436 *) cont='';;
8437 esac
8438 if $test "$cont"; then
8439         if ./xenix; then
8440                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8441                 if tans=`cat /etc/systemid 2>&1` ; then
8442                         myhostname=$tans
8443                         phostname='cat /etc/systemid'
8444                         echo "Whadyaknow.  Xenix always was a bit strange..."
8445                         cont=''
8446                 fi
8447         elif $test -r /etc/systemid; then
8448                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8449         fi
8450 fi
8451 if $test "$cont"; then
8452         echo 'No, maybe "uuname -l" will work...'
8453         if tans=`sh -c 'uuname -l' 2>&1` ; then
8454                 myhostname=$tans
8455                 phostname='uuname -l'
8456         else
8457                 echo 'Strange.  Maybe "uname -n" will work...'
8458                 if tans=`sh -c 'uname -n' 2>&1` ; then
8459                         myhostname=$tans
8460                         phostname='uname -n'
8461                 else
8462                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8463                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8464                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8465                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8466                         else
8467                                 case "$myhostname" in
8468                                 '') echo "Does this machine have an identity crisis or something?"
8469                                         phostname='';;
8470                                 *)
8471                                         echo "Well, you said $myhostname before..."
8472                                         phostname='echo $myhostname';;
8473                                 esac
8474                         fi
8475                 fi
8476         fi
8477 fi
8478 case "$myhostname" in
8479 '') myhostname=noname ;;
8480 esac
8481 : you do not want to know about this
8482 set $myhostname
8483 myhostname=$1
8484
8485 : verify guess
8486 if $test "$myhostname" ; then
8487         dflt=y
8488         rp='Your host name appears to be "'$myhostname'".'" Right?"
8489         . ./myread
8490         case "$ans" in
8491         y*) ;;
8492         *) myhostname='';;
8493         esac
8494 fi
8495
8496 : bad guess or no guess
8497 while $test "X$myhostname" = X ; do
8498         dflt=''
8499         rp="Please type the (one word) name of your host:"
8500         . ./myread
8501         myhostname="$ans"
8502 done
8503
8504 : translate upper to lower if necessary
8505 case "$myhostname" in
8506 *[A-Z]*)
8507         echo "(Normalizing case in your host name)"
8508         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8509         ;;
8510 esac
8511
8512 case "$myhostname" in
8513 *.*)
8514         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8515         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8516         echo "(Trimming domain name from host name--host name is now $myhostname)"
8517         ;;
8518 *) case "$mydomain" in
8519         '')
8520                 {
8521                         test "X$hostcat" = "Xypcat hosts" &&
8522                         ypmatch "$myhostname" hosts 2>/dev/null |\
8523                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8524                         $test -s hosts
8525                 } || {
8526                         test "X$hostcat" != "X" &&
8527                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8528                                         /[       ]$myhostname[  . ]/p" > hosts
8529                 }
8530                 tmp_re="[       . ]"
8531                 if $test -f hosts; then
8532                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8533                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8534                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8535                                 hosts | $sort | $uniq | \
8536                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8537                         case `$echo X$dflt` in
8538                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8539                                 dflt=.
8540                                 ;;
8541                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8542                                 ;;
8543                         esac
8544                 else
8545                         echo "(I cannot locate a hosts database anywhere)"
8546                         dflt=.
8547                 fi
8548                 case "$dflt" in
8549                 .)
8550                         tans=`./loc resolv.conf X /etc /usr/etc`
8551                         if $test -f "$tans"; then
8552                                 echo "(Attempting domain name extraction from $tans)"
8553                                 dflt=.`$sed -n -e 's/   / /g' \
8554                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8555                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8556                                 case "$dflt" in
8557                                 .) dflt=.`$sed -n -e 's/        / /g' \
8558                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8559                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8560                                         ;;
8561                                 esac
8562                         fi
8563                         ;;
8564                 esac
8565                 case "$dflt" in
8566                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8567                         dflt=.`sh -c domainname 2>/dev/null`
8568                         case "$dflt" in
8569                         '') dflt='.';;
8570                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8571                         esac
8572                         ;;
8573                 esac
8574                 case "$dflt$osname" in
8575                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8576                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8577                         ;;
8578                 esac
8579                 case "$dflt" in
8580                 .) echo "(Lost all hope -- silly guess then)"
8581                         dflt='.nonet'
8582                         ;;
8583                 esac
8584                 $rm -f hosts
8585                 ;;
8586         *) dflt="$mydomain";;
8587         esac;;
8588 esac
8589 echo " "
8590 rp="What is your domain name?"
8591 . ./myread
8592 tans="$ans"
8593 case "$ans" in
8594 '') ;;
8595 .*) ;;
8596 *) tans=".$tans";;
8597 esac
8598 mydomain="$tans"
8599
8600 : translate upper to lower if necessary
8601 case "$mydomain" in
8602 *[A-Z]*)
8603         echo "(Normalizing case in your domain name)"
8604         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8605         ;;
8606 esac
8607
8608 : a little sanity check here
8609 case "$phostname" in
8610 '') ;;
8611 *)
8612         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8613         $myhostname$mydomain|$myhostname) ;;
8614         *)
8615                 case "$phostname" in
8616                 sed*)
8617                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8618                         ;;
8619                 *)
8620                         echo "(That doesn't agree with your $phostname command, by the way.)"
8621                         ;;
8622                 esac
8623         ;;
8624         esac
8625         ;;
8626 esac
8627
8628 $cat <<EOM
8629
8630 I need to get your e-mail address in Internet format if possible, i.e.
8631 something like user@host.domain. Please answer accurately since I have
8632 no easy means to double check it. The default value provided below
8633 is most probably close to reality but may not be valid from outside
8634 your organization...
8635
8636 EOM
8637 cont=x
8638 while test "$cont"; do
8639         case "$cf_email" in
8640         '') dflt="$cf_by@$myhostname$mydomain";;
8641         *) dflt="$cf_email";;
8642         esac
8643         rp='What is your e-mail address?'
8644         . ./myread
8645         cf_email="$ans"
8646         case "$cf_email" in
8647         *@*.*) cont='' ;;
8648         *)
8649                 rp='Address does not look like an Internet one.  Use it anyway?'
8650                 case "$fastread" in
8651                 yes) dflt=y ;;
8652                 *) dflt=n ;;
8653                 esac
8654                 . ./myread
8655                 case "$ans" in
8656                 y*) cont='' ;;
8657                 *) echo " " ;;
8658                 esac
8659                 ;;
8660         esac
8661 done
8662
8663 $cat <<EOM
8664
8665 If you or somebody else will be maintaining perl at your site, please
8666 fill in the correct e-mail address here so that they may be contacted
8667 if necessary. Currently, the "perlbug" program included with perl
8668 will send mail to this address in addition to perlbug@perl.org. You may
8669 enter "none" for no administrator.
8670
8671 EOM
8672 case "$perladmin" in
8673 '') dflt="$cf_email";;
8674 *) dflt="$perladmin";;
8675 esac
8676 rp='Perl administrator e-mail address'
8677 . ./myread
8678 perladmin="$ans"
8679
8680 : determine whether to only install version-specific parts.
8681 echo " "
8682 $cat <<EOM
8683 Do you want to install only the version-specific parts of the perl
8684 distribution?  Usually you do *not* want to do this.
8685 EOM
8686 case "$versiononly" in
8687 "$define"|[Yy]*|true) dflt='y' ;;
8688 *) dflt='n';
8689 esac
8690 rp="Do you want to install only the version-specific parts of perl?"
8691 . ./myread
8692 case "$ans" in
8693 [yY]*)  val="$define";;
8694 *)      val="$undef" ;;
8695 esac
8696 set versiononly
8697 eval $setvar
8698
8699 case "$versiononly" in
8700 "$define") inc_version_list=''
8701            inc_version_list_init=0
8702            ;;
8703 esac
8704
8705 : figure out how to guarantee perl startup
8706 : XXX Note that this currently takes advantage of the bug that binexp ignores
8707 :     the Configure -Dinstallprefix setting, which in turn means that under
8708 :     relocatable @INC, initialinstalllocation is what binexp started as.
8709 case "$startperl" in
8710 '')
8711         case "$sharpbang" in
8712         *!)
8713                 $cat <<EOH
8714
8715 I can use the #! construct to start perl on your system. This will
8716 make startup of perl scripts faster, but may cause problems if you
8717 want to share those scripts and perl is not in a standard place
8718 ($initialinstalllocation/perl) on all your platforms. The alternative
8719 is to force a shell by starting the script with a single ':' character.
8720
8721 EOH
8722                 case "$versiononly" in
8723                 "$define")      dflt="$initialinstalllocation/perl$version";;
8724                 *)              dflt="$initialinstalllocation/perl";;
8725                 esac
8726                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8727                 . ./myread
8728                 case "$ans" in
8729                 none)   startperl=": # use perl";;
8730                 *)      startperl="#!$ans"
8731                         if $test 30 -lt `echo "$ans" | wc -c`; then
8732                                 $cat >&4 <<EOM
8733
8734 WARNING:  Some systems limit the #! command to 32 characters.
8735 If you experience difficulty running Perl scripts with #!, try
8736 installing Perl in a directory with a shorter pathname.
8737
8738 EOM
8739                         fi ;;
8740                 esac
8741                 ;;
8742         *) startperl=": # use perl"
8743                 ;;
8744         esac
8745         ;;
8746 esac
8747 echo "I'll use $startperl to start perl scripts."
8748
8749 : figure best path for perl in scripts
8750 case "$perlpath" in
8751 '')
8752         case "$versiononly" in
8753         "$define")      perlpath="$initialinstalllocation/perl$version";;
8754         *)              perlpath="$initialinstalllocation/perl";;
8755         esac
8756         case "$startperl" in
8757         *!*) ;;
8758         *)
8759                 $cat <<EOH
8760
8761 I will use the "eval 'exec'" idiom to start Perl on your system.
8762 I can use the full path of your Perl binary for this purpose, but
8763 doing so may cause problems if you want to share those scripts and
8764 Perl is not always in a standard place ($initialinstalllocation/perl).
8765
8766 EOH
8767                 dflt="$initialinstalllocation/perl"
8768                 rp="What path shall I use in \"eval 'exec'\"?"
8769                 . ./myread
8770                 perlpath="$ans"
8771                 ;;
8772         esac
8773         ;;
8774 esac
8775 case "$startperl" in
8776 *!*)    ;;
8777 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8778 esac
8779
8780 : determine where public executable scripts go
8781 set scriptdir scriptdir
8782 eval $prefixit
8783 case "$scriptdir" in
8784 '')
8785         dflt="$bin"
8786         : guess some guesses
8787         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8788         $test -d /usr/share/bin     && dflt=/usr/share/bin
8789         $test -d /usr/local/script  && dflt=/usr/local/script
8790         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8791         $test -d $prefixexp/script  && dflt=$prefixexp/script
8792         set dflt
8793         eval $prefixup
8794         ;;
8795 *)  dflt="$scriptdir"
8796         ;;
8797 esac
8798 $cat <<EOM
8799
8800 Some installations have a separate directory just for executable scripts so
8801 that they can mount it across multiple architectures but keep the scripts in
8802 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8803 Or you might just lump your scripts in with all your other executables.
8804
8805 EOM
8806 fn=d~
8807 rp='Where do you keep publicly executable scripts?'
8808 . ./getfile
8809 if $test "X$ansexp" != "X$scriptdirexp"; then
8810         installscript=''
8811 fi
8812 installscriptdir=''
8813 prefixvar=scriptdir
8814 . ./setprefixvar
8815 : A little fix up for an irregularly named variable.
8816 installscript="$installscriptdir"
8817
8818 : determine where add-on public executables go
8819 case "$sitebin" in
8820 '')     dflt=$siteprefix/bin ;;
8821 *)      dflt=$sitebin ;;
8822 esac
8823 fn=d~
8824 rp='Pathname where the add-on public executables should be installed?'
8825 . ./getfile
8826 prefixvar=sitebin
8827 . ./setprefixvar
8828
8829 : determine where add-on html pages go
8830 : There is no standard location, so try to copy the previously-selected
8831 : directory structure for the core html pages.
8832 case "$sitehtml1dir" in
8833 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8834 *)     dflt=$sitehtml1dir ;;
8835 esac
8836 case "$dflt" in
8837 ''|' ') dflt=none ;;
8838 esac
8839 fn=dn+~
8840 rp='Pathname where the site-specific html pages should be installed?'
8841 . ./getfile
8842 prefixvar=sitehtml1dir
8843 . ./setprefixvar
8844
8845 : determine where add-on library html pages go
8846 : There is no standard location, so try to copy the previously-selected
8847 : directory structure for the core html pages.
8848 case "$sitehtml3dir" in
8849 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8850 *)     dflt=$sitehtml3dir ;;
8851 esac
8852 case "$dflt" in
8853 ''|' ') dflt=none ;;
8854 esac
8855 fn=dn+~
8856 rp='Pathname where the site-specific library html pages should be installed?'
8857 . ./getfile
8858 prefixvar=sitehtml3dir
8859 . ./setprefixvar
8860
8861 : determine where add-on manual pages go
8862 case "$siteman1dir" in
8863 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8864 *)      dflt=$siteman1dir ;;
8865 esac
8866 case "$dflt" in
8867 ''|' ') dflt=none ;;
8868 esac
8869 fn=dn+~
8870 rp='Pathname where the site-specific manual pages should be installed?'
8871 . ./getfile
8872 prefixvar=siteman1dir
8873 . ./setprefixvar
8874
8875 : determine where add-on library man pages go
8876 case "$siteman3dir" in
8877 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8878 *)      dflt=$siteman3dir ;;
8879 esac
8880 case "$dflt" in
8881 ''|' ') dflt=none ;;
8882 esac
8883 fn=dn+~
8884 rp='Pathname where the site-specific library manual pages should be installed?'
8885 . ./getfile
8886 prefixvar=siteman3dir
8887 . ./setprefixvar
8888
8889 : determine where add-on public executable scripts go
8890 case "$sitescript" in
8891 '')     dflt=$siteprefix/script
8892         $test -d $dflt || dflt=$sitebin ;;
8893 *)  dflt="$sitescript" ;;
8894 esac
8895 fn=d~+
8896 rp='Pathname where add-on public executable scripts should be installed?'
8897 . ./getfile
8898 prefixvar=sitescript
8899 . ./setprefixvar
8900
8901 case "$usefaststdio" in
8902 $define|true|[yY]*|'')
8903         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8904         case "$xversion" in
8905         [68])   dflt='y' ;;
8906         *)      dflt='n' ;;
8907         esac
8908         ;;
8909 *) dflt='n';;
8910 esac
8911 cat <<EOM
8912
8913 Perl can be built to use 'fast stdio', which means using the stdio
8914 library but also directly manipulating the stdio buffers to enable
8915 faster I/O.  Using stdio is better for backward compatibility (especially
8916 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8917 interface has been preferred instead of stdio.
8918
8919 If this doesn't make any sense to you, just accept the default '$dflt'.
8920 EOM
8921 rp='Use the "fast stdio" if available?'
8922 . ./myread
8923 case "$ans" in
8924 y|Y)    val="$define" ;;     
8925 *)      val="$undef" ;;
8926 esac
8927 set usefaststdio
8928 eval $setvar
8929
8930
8931 : define an is-a-typedef? function
8932 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8933 case "$inclist" in
8934 "") inclist="sys/types.h";;
8935 esac;
8936 eval "varval=\$$var";
8937 case "$varval" in
8938 "")
8939         $rm -f temp.c;
8940         for inc in $inclist; do
8941                 echo "#include <$inc>" >>temp.c;
8942         done;
8943         echo "#ifdef $type" >> temp.c;
8944         echo "printf(\"We have $type\");" >> temp.c;
8945         echo "#endif" >> temp.c;
8946         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8947         if $contains $type temp.E >/dev/null 2>&1; then
8948                 eval "$var=\$type";
8949         else
8950                 eval "$var=\$def";
8951         fi;
8952         $rm -f temp.?;;
8953 *) eval "$var=\$varval";;
8954 esac'
8955
8956 : define an is-a-typedef? function that prompts if the type is not available.
8957 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8958 case "$inclist" in
8959 "") inclist="sys/types.h";;
8960 esac;
8961 eval "varval=\$$var";
8962 case "$varval" in
8963 "")
8964         $rm -f temp.c;
8965         for inc in $inclist; do
8966                 echo "#include <$inc>" >>temp.c;
8967         done;
8968         echo "#ifdef $type" >> temp.c;
8969         echo "printf(\"We have $type\");" >> temp.c;
8970         echo "#endif" >> temp.c;
8971         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8972         echo " " ;
8973         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8974         if $contains $type temp.E >/dev/null 2>&1; then
8975                 echo "$type found." >&4;
8976                 eval "$var=\$type";
8977         else
8978                 echo "$type NOT found." >&4;
8979                 dflt="$def";
8980                 . ./myread ;
8981                 eval "$var=\$ans";
8982         fi;
8983         $rm -f temp.?;;
8984 *) eval "$var=\$varval";;
8985 esac'
8986
8987 : see what type lseek is declared as in the kernel
8988 rp="What is the type used for lseek's offset on this system?"
8989 set off_t lseektype long stdio.h sys/types.h
8990 eval $typedef_ask
8991
8992 echo " "
8993 echo "Checking to see how big your file offsets are..." >&4
8994 $cat >try.c <<EOCP
8995 #include <sys/types.h>
8996 #include <stdio.h>
8997 int main()
8998 {
8999     printf("%d\n", (int)sizeof($lseektype));
9000     return(0);
9001 }
9002 EOCP
9003 set try
9004 if eval $compile_ok; then
9005         lseeksize=`$run ./try`
9006         echo "Your file offsets are $lseeksize bytes long."
9007 else
9008         dflt=$longsize
9009         echo " "
9010         echo "(I can't seem to compile the test program.  Guessing...)"
9011         rp="What is the size of your file offsets (in bytes)?"
9012         . ./myread
9013         lseeksize="$ans"
9014 fi
9015 $rm_try
9016
9017 : see what type file positions are declared as in the library
9018 rp="What is the type for file position used by fsetpos()?"
9019 set fpos_t fpostype long stdio.h sys/types.h
9020 eval $typedef_ask
9021
9022 echo " "
9023 case "$fpostype" in
9024 *_t) zzz="$fpostype"    ;;
9025 *)   zzz="fpos_t"       ;;
9026 esac
9027 echo "Checking the size of $zzz..." >&4 
9028 cat > try.c <<EOCP
9029 #include <sys/types.h>
9030 #include <stdio.h>
9031 #$i_stdlib I_STDLIB
9032 #ifdef I_STDLIB
9033 #include <stdlib.h>
9034 #endif
9035 int main() {
9036     printf("%d\n", (int)sizeof($fpostype));
9037     exit(0);
9038 }
9039 EOCP
9040 set try
9041 if eval $compile_ok; then
9042         yyy=`$run ./try`
9043         case "$yyy" in
9044         '')     fpossize=4
9045                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9046                 ;;
9047         *)      fpossize=$yyy
9048                 echo "Your $zzz is $fpossize bytes long."
9049                 ;;
9050         esac
9051 else
9052         dflt="$longsize"
9053         echo " " >&4
9054         echo "(I can't compile the test program.  Guessing...)" >&4
9055         rp="What is the size of your file positions (in bytes)?"
9056         . ./myread
9057         fpossize="$ans"
9058 fi
9059
9060 # Backward compatibility (uselfs is deprecated).
9061 case "$uselfs" in
9062 "$define"|true|[yY]*)
9063         cat <<EOM >&4
9064
9065 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9066 EOM
9067         uselargefiles="$define"
9068         ;;
9069 esac
9070
9071 case "$lseeksize:$fpossize" in
9072 8:8) cat <<EOM
9073
9074 You can have files larger than 2 gigabytes.
9075 EOM
9076    val="$define" ;;
9077 *)    case "$uselargefiles" in
9078    "$undef"|false|[nN]*) dflt='n' ;;
9079    *)   dflt='y' ;;
9080    esac
9081    cat <<EOM
9082
9083 Perl can be built to understand large files (files larger than 2 gigabytes)
9084 on some systems.  To do so, Configure can be run with -Duselargefiles.
9085
9086 If this doesn't make any sense to you, just accept the default '$dflt'.
9087 EOM
9088    rp='Try to understand large files, if available?'
9089    . ./myread
9090    case "$ans" in
9091    y|Y)         val="$define" ;;
9092    *)           val="$undef"  ;;
9093    esac
9094    ;;
9095 esac
9096 set uselargefiles
9097 eval $setvar
9098 : Look for a hint-file generated 'call-back-unit'.  If the
9099 : user has specified that a large files perl is to be built,
9100 : we may need to set or change some other defaults.
9101 if $test -f uselargefiles.cbu; then
9102         echo "Your platform has some specific hints regarding large file builds, using them..."
9103         . ./uselargefiles.cbu
9104 fi
9105 case "$uselargefiles" in
9106 "$define")
9107         if $test -f uselargefiles.cbu; then
9108                 echo " "
9109                 echo "Rechecking to see how big your file offsets are..." >&4
9110                 $cat >try.c <<EOCP
9111 #include <sys/types.h>
9112 #include <stdio.h>
9113 int main()
9114 {
9115     printf("%d\n", (int)sizeof($lseektype));
9116     return(0);
9117 }
9118 EOCP
9119                 set try
9120                 if eval $compile_ok; then
9121                         lseeksize=`$run ./try`
9122                         $echo "Your file offsets are now $lseeksize bytes long."
9123                 else
9124                         dflt="$lseeksize"
9125                         echo " "
9126                         echo "(I can't seem to compile the test program.  Guessing...)"
9127                         rp="What is the size of your file offsets (in bytes)?"
9128                         . ./myread
9129                         lseeksize="$ans"
9130                 fi
9131                 case "$fpostype" in
9132                 *_t) zzz="$fpostype"    ;;
9133                 *)   zzz="fpos_t"       ;;
9134                 esac
9135                 $echo $n "Rechecking the size of $zzz...$c" >&4
9136                 $cat > try.c <<EOCP
9137 #include <sys/types.h>
9138 #include <stdio.h>
9139 #$i_stdlib I_STDLIB
9140 #ifdef I_STDLIB
9141 #include <stdlib.h>
9142 #endif
9143 int main() {
9144     printf("%d\n", (int)sizeof($fpostype));
9145     return(0);
9146 }
9147 EOCP
9148                 set try
9149                 if eval $compile_ok; then
9150                         yyy=`$run ./try`
9151                         dflt="$lseeksize"
9152                         case "$yyy" in
9153                         '')     echo " "
9154                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9155                                 ;;
9156                         *)      fpossize=$yyy
9157                                 echo " $fpossize bytes." >&4
9158                                 ;;
9159                         esac
9160                 else
9161                         dflt="$fpossize"
9162                         echo " "
9163                         echo "(I can't compile the test program.  Guessing...)" >&4
9164                         rp="What is the size of your file positions (in bytes)?"
9165                         . ./myread
9166                         fpossize="$ans"
9167                 fi
9168                 $rm_try
9169         fi
9170         ;;
9171 esac
9172
9173 case "$vendorprefix" in
9174 '')     d_vendorbin="$undef"
9175         vendorbin=''
9176         vendorbinexp=''
9177         ;;
9178 *)      d_vendorbin="$define"
9179         : determine where vendor-supplied executables go.
9180         case "$vendorbin" in
9181         '') dflt=$vendorprefix/bin ;;
9182         *)      dflt="$vendorbin" ;;
9183         esac
9184         fn=d~+
9185         rp='Pathname for the vendor-supplied executables directory?'
9186         . ./getfile
9187         vendorbin="$ans"
9188         vendorbinexp="$ansexp"
9189         ;;
9190 esac
9191 prefixvar=vendorbin
9192 . ./installprefix
9193
9194 case "$vendorprefix" in
9195 '')     vendorhtml1dir=''
9196         vendorhtml1direxp=''
9197         ;;
9198 *)      : determine where vendor-supplied html pages go.
9199         : There is no standard location, so try to copy the previously-selected
9200         : directory structure for the core html pages.
9201         : XXX Better default suggestions would be welcome.
9202         case "$vendorhtml1dir" in
9203         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9204         *)      dflt=$vendorhtml1dir ;;
9205         esac
9206         case "$dflt" in
9207         ''|' ') dflt=none ;;
9208         esac
9209         fn=dn+~
9210         rp='Pathname for the vendor-supplied html pages?'
9211         . ./getfile
9212         vendorhtml1dir="$ans"
9213         vendorhtml1direxp="$ansexp"
9214         ;;
9215 esac
9216 : Use ' ' for none so value is preserved next time through Configure
9217 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9218 prefixvar=vendorhtml1dir
9219 . ./installprefix
9220
9221 case "$vendorprefix" in
9222 '')     vendorhtml3dir=''
9223         vendorhtml3direxp=''
9224         ;;
9225 *)      : determine where vendor-supplied module html pages go.
9226         : There is no standard location, so try to copy the previously-selected
9227         : directory structure for the core html pages.
9228         : XXX Better default suggestions would be welcome.
9229         case "$vendorhtml3dir" in
9230         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9231         *)      dflt=$vendorhtml3dir ;;
9232         esac
9233         case "$dflt" in
9234         ''|' ') dflt=none ;;
9235         esac
9236         fn=dn+~
9237         rp='Pathname for the vendor-supplied html pages?'
9238         . ./getfile
9239         vendorhtml3dir="$ans"
9240         vendorhtml3direxp="$ansexp"
9241         ;;
9242 esac
9243 : Use ' ' for none so value is preserved next time through Configure
9244 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9245 prefixvar=vendorhtml3dir
9246 . ./installprefix
9247
9248 case "$vendorprefix" in
9249 '')     vendorman1dir=''
9250         vendorman1direxp=''
9251         ;;
9252 *)      : determine where vendor-supplied manual pages go.
9253         case "$vendorman1dir" in
9254         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9255         *)      dflt=$vendorman1dir ;;
9256         esac
9257         case "$dflt" in
9258         ''|' ') dflt=none ;;
9259         esac
9260         fn=nd~+
9261         rp='Pathname for the vendor-supplied manual section 1 pages?'
9262         . ./getfile
9263         vendorman1dir="$ans"
9264         vendorman1direxp="$ansexp"
9265         ;;
9266 esac
9267 : Use ' ' for none so value is preserved next time through Configure
9268 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9269 prefixvar=vendorman1dir
9270 . ./installprefix
9271
9272 case "$vendorprefix" in
9273 '')     vendorman3dir=''
9274         vendorman3direxp=''
9275         ;;
9276 *)      : determine where vendor-supplied module manual pages go.
9277         case "$vendorman3dir" in
9278         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9279         *)      dflt=$vendorman3dir ;;
9280         esac
9281         case "$dflt" in
9282         ''|' ') dflt=none ;;
9283         esac
9284         fn=nd~+
9285         rp='Pathname for the vendor-supplied manual section 3 pages?'
9286         . ./getfile
9287         vendorman3dir="$ans"
9288         vendorman3direxp="$ansexp"
9289         ;;
9290 esac
9291 : Use ' ' for none so value is preserved next time through Configure
9292 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9293 prefixvar=vendorman3dir
9294 . ./installprefix
9295
9296 case "$vendorprefix" in
9297 '')     d_vendorscript="$undef"
9298         vendorscript=''
9299         vendorscriptexp=''
9300         ;;
9301 *)      d_vendorscript="$define"
9302         : determine where vendor-supplied scripts go.
9303         case "$vendorscript" in
9304         '')     dflt=$vendorprefix/script
9305                 $test -d $dflt || dflt=$vendorbin ;;
9306         *)  dflt="$vendorscript" ;;
9307         esac
9308         $cat <<EOM
9309
9310 The installation process will create a directory for
9311 vendor-supplied scripts.
9312
9313 EOM
9314         fn=d~+
9315         rp='Pathname for the vendor-supplied scripts directory?'
9316         . ./getfile
9317         vendorscript="$ans"
9318         vendorscriptexp="$ansexp"
9319         ;;
9320 esac
9321 prefixvar=vendorscript
9322 . ./installprefix
9323
9324 : see if qgcvt exists
9325 set qgcvt d_qgcvt
9326 eval $inlibc
9327
9328 echo " "
9329
9330 if $test X"$d_longdbl" = X"$define"; then
9331
9332 echo "Checking how to print long doubles..." >&4
9333
9334 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9335         $cat >try.c <<'EOCP'
9336 #include <sys/types.h>
9337 #include <stdio.h>
9338 int main() {
9339   double d = 123.456;
9340   printf("%.3f\n", d);
9341 }
9342 EOCP
9343         set try
9344         if eval $compile; then
9345                 yyy=`$run ./try`
9346                 case "$yyy" in
9347                 123.456)
9348                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9349                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9350                         echo "We will use %f."
9351                         ;;
9352                 esac
9353         fi
9354 fi
9355
9356 if $test X"$sPRIfldbl" = X; then
9357         $cat >try.c <<'EOCP'
9358 #include <sys/types.h>
9359 #include <stdio.h>
9360 int main() {
9361   long double d = 123.456;
9362   printf("%.3Lf\n", d);
9363 }
9364 EOCP
9365         set try
9366         if eval $compile; then
9367                 yyy=`$run ./try`
9368                 case "$yyy" in
9369                 123.456)
9370                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9371                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9372                         echo "We will use %Lf."
9373                         ;;
9374                 esac
9375         fi
9376 fi
9377
9378 if $test X"$sPRIfldbl" = X; then
9379         $cat >try.c <<'EOCP'
9380 #include <sys/types.h>
9381 #include <stdio.h>
9382 int main() {
9383   long double d = 123.456;
9384   printf("%.3llf\n", d);
9385 }
9386 EOCP
9387         set try
9388         if eval $compile; then
9389                 yyy=`$run ./try`
9390                 case "$yyy" in
9391                 123.456)
9392                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9393                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9394                         echo "We will use %llf."
9395                         ;;
9396                 esac
9397         fi
9398 fi
9399
9400 if $test X"$sPRIfldbl" = X; then
9401         $cat >try.c <<'EOCP'
9402 #include <sys/types.h>
9403 #include <stdio.h>
9404 int main() {
9405   long double d = 123.456;
9406   printf("%.3lf\n", d);
9407 }
9408 EOCP
9409         set try
9410         if eval $compile; then
9411                 yyy=`$run ./try`
9412                 case "$yyy" in
9413                 123.456)
9414                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9415                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9416                         echo "We will use %lf."
9417                         ;;
9418                 esac
9419         fi
9420 fi
9421
9422 if $test X"$sPRIfldbl" = X; then
9423         echo "Cannot figure out how to print long doubles." >&4
9424 else
9425         sSCNfldbl=$sPRIfldbl    # expect consistency
9426 fi
9427
9428 $rm_try
9429
9430 fi # d_longdbl
9431
9432 case "$sPRIfldbl" in
9433 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9434         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9435         d_SCNfldbl="$undef";
9436         ;;
9437 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9438         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9439         d_SCNfldbl="$define";
9440         ;;
9441 esac
9442
9443 : Check how to convert floats to strings.
9444
9445 if test "X$d_Gconvert" = X; then
9446
9447 echo " "
9448 echo "Checking for an efficient way to convert floats to strings."
9449 echo " " > try.c
9450 case "$uselongdouble" in
9451 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9452 esac
9453 case "$d_longdbl" in
9454 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9455 esac
9456 case "$d_PRIgldbl" in
9457 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9458 esac
9459 $cat >>try.c <<EOP
9460 #ifdef TRY_gconvert
9461 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9462 char *myname = "gconvert";
9463 #endif
9464 #ifdef TRY_gcvt
9465 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9466 char *myname = "gcvt";
9467 #endif
9468 #ifdef TRY_qgcvt
9469 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9470 char *myname = "qgcvt";
9471 #define DOUBLETYPE long double
9472 #endif
9473 #ifdef TRY_sprintf
9474 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9475 #ifdef HAS_PRIgldbl
9476 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9477 #else
9478 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9479 #endif
9480 #else
9481 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9482 #endif
9483 char *myname = "sprintf";
9484 #endif
9485
9486 #ifndef DOUBLETYPE
9487 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9488 #define DOUBLETYPE long double
9489 #else
9490 #define DOUBLETYPE double
9491 #endif
9492 #endif
9493
9494 #include <stdio.h>
9495
9496 #define I_STDLIB $i_stdlib
9497 #ifdef I_STDLIB
9498 #include <stdlib.h>
9499 #endif
9500
9501 int
9502 checkit(expect, got)
9503 char *expect;
9504 char *got;
9505 {
9506     if (strcmp(expect, got)) {
9507                 printf("%s oddity:  Expected %s, got %s\n",
9508                         myname, expect, got);
9509                 exit(1);
9510         }
9511 }
9512
9513 int main()
9514 {
9515         char buf[64];
9516         buf[63] = '\0';
9517
9518         /* This must be 1st test on (which?) platform */
9519         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9520         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9521         checkit("0.1", buf);
9522
9523         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9524         checkit("0.01", buf);
9525
9526         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9527         checkit("0.001", buf);
9528
9529         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9530         checkit("0.0001", buf);
9531
9532         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9533         if (strlen(buf) > 5)
9534             checkit("9e-005", buf); /* for Microsoft ?? */
9535         else
9536             checkit("9e-05", buf);
9537
9538         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9539         checkit("1", buf);
9540
9541         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9542         checkit("1.1", buf);
9543
9544         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9545         checkit("1.01", buf);
9546
9547         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9548         checkit("1.001", buf);
9549
9550         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9551         checkit("1.0001", buf);
9552
9553         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9554         checkit("1.00001", buf);
9555
9556         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9557         checkit("1.000001", buf);
9558
9559         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9560         checkit("0", buf);
9561
9562         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9563         checkit("-1", buf);
9564
9565         /* Some Linux gcvt's give 1.e+5 here. */
9566         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9567         checkit("100000", buf);
9568
9569         /* Some Linux gcvt's give -1.e+5 here. */
9570         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9571         checkit("-100000", buf);
9572
9573         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9574         checkit("123.456", buf);
9575
9576         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9577         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9578         /* 34 should be enough to scare even long double
9579          * places into using the e notation. */
9580         if (strlen(buf) > 5)
9581             checkit("1e+034", buf); /* for Microsoft */
9582         else
9583             checkit("1e+34", buf);
9584
9585         /* For Perl, if you add additional tests here, also add them to
9586          * t/base/num.t for benefit of platforms not using Configure or
9587          * overriding d_Gconvert */
9588
9589         exit(0);
9590 }
9591 EOP
9592 : first add preferred functions to our list
9593 xxx_list=""
9594 for xxx_convert in $gconvert_preference; do
9595     case $xxx_convert in
9596     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9597     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9598     esac
9599 done
9600 : then add any others
9601 for xxx_convert in gconvert gcvt sprintf; do
9602     case "$xxx_list" in
9603     *$xxx_convert*) ;;
9604     *) xxx_list="$xxx_list $xxx_convert" ;;
9605     esac
9606 done
9607
9608 case "$d_longdbl$uselongdouble" in
9609 "$define$define")
9610     : again, add prefered functions to our list first
9611     xxx_ld_list=""
9612     for xxx_convert in $gconvert_ld_preference; do
9613         case $xxx_convert in
9614         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9615         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9616         esac
9617     done
9618     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9619     for xxx_convert in qgcvt sprintf $xxx_list; do
9620         case "$xxx_ld_list" in
9621         $xxx_convert*|*" $xxx_convert"*) ;;
9622         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9623         esac
9624     done
9625     : if sprintf cannot do long doubles, move it to the end
9626     if test "$d_PRIgldbl" != "$define"; then
9627         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9628     fi
9629     : if no qgcvt, remove it
9630     if test "$d_qgcvt" != "$define"; then
9631         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9632     fi
9633     : use the ld_list
9634     xxx_list="$xxx_ld_list"
9635     ;;
9636 esac
9637
9638 for xxx_convert in $xxx_list; do
9639         echo "Trying $xxx_convert..."
9640         $rm -f try try$_o core
9641         set try -DTRY_$xxx_convert
9642         if eval $compile; then
9643                 echo "$xxx_convert() found." >&4
9644                 if $run ./try; then
9645                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9646                         break;
9647                 else
9648                         echo "...But $xxx_convert didn't work as I expected."
9649                         xxx_convert=''
9650                 fi
9651         else
9652                 echo "$xxx_convert NOT found." >&4
9653         fi
9654 done
9655
9656 if test X$xxx_convert = X; then
9657     echo "*** WHOA THERE!!! ***" >&4
9658     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9659     xxx_convert=sprintf
9660 fi
9661
9662 case "$xxx_convert" in
9663 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9664 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9665 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9666 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9667    "$define$define$define")
9668       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9669    "$define$define$undef")
9670       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9671    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9672    esac
9673    ;;
9674 esac
9675
9676 fi
9677 $rm_try
9678
9679 : see if _fwalk exists
9680 set fwalk d__fwalk
9681 eval $inlibc
9682
9683 : Initialize h_fcntl
9684 h_fcntl=false
9685
9686 : Initialize h_sysfile
9687 h_sysfile=false
9688
9689 : access call always available on UNIX
9690 set access d_access
9691 eval $inlibc
9692
9693 : locate the flags for 'access()'
9694 case "$d_access" in
9695 "$define")
9696         echo " "
9697         $cat >access.c <<EOCP
9698 #include <sys/types.h>
9699 #ifdef I_FCNTL
9700 #include <fcntl.h>
9701 #endif
9702 #ifdef I_SYS_FILE
9703 #include <sys/file.h>
9704 #endif
9705 #ifdef I_UNISTD
9706 #include <unistd.h>
9707 #endif
9708 #$i_stdlib I_STDLIB
9709 #ifdef I_STDLIB
9710 #include <stdlib.h>
9711 #endif
9712 int main() {
9713         exit(R_OK);
9714 }
9715 EOCP
9716         : check sys/file.h first, no particular reason here
9717         if $test `./findhdr sys/file.h` && \
9718                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9719                 h_sysfile=true;
9720                 echo "<sys/file.h> defines the *_OK access constants." >&4
9721         elif $test `./findhdr fcntl.h` && \
9722                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9723                 h_fcntl=true;
9724                 echo "<fcntl.h> defines the *_OK access constants." >&4
9725         elif $test `./findhdr unistd.h` && \
9726                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9727                 echo "<unistd.h> defines the *_OK access constants." >&4
9728         else
9729                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9730         fi
9731         ;;
9732 esac
9733 $rm -f access*
9734
9735 : see if accessx exists
9736 set accessx d_accessx
9737 eval $inlibc
9738
9739 : see if aintl exists
9740 set aintl d_aintl
9741 eval $inlibc
9742
9743 : see if alarm exists
9744 set alarm d_alarm
9745 eval $inlibc
9746
9747 : see if POSIX threads are available
9748 set pthread.h i_pthread
9749 eval $inhdr
9750
9751 : define a fucntion to check prototypes
9752 $cat > protochk <<EOSH
9753 $startsh
9754 cc="$cc"
9755 optimize="$optimize"
9756 ccflags="$ccflags"
9757 prototype="$prototype"
9758 define="$define"
9759 rm_try="$rm_try"
9760 usethreads=$usethreads
9761 i_pthread=$i_pthread
9762 pthread_h_first=$pthread_h_first
9763 EOSH
9764
9765 $cat >> protochk <<'EOSH'
9766
9767 $rm_try
9768 foo="$1"
9769 shift
9770 while test $# -ge 2; do
9771         case "$1" in
9772                 $define) echo "#include <$2>" >> try.c ;;
9773                 literal) echo "$2" >> try.c ;;
9774         esac
9775     # Extra magic for the benefit of systems that need pthread.h
9776     # to be included early to correctly detect threadsafe functions.
9777     # Such functions must guarantee themselves, though, that the usethreads
9778     # and i_pthread have been defined, before calling protochk.
9779     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9780         echo "#include <pthread.h>" >> try.c
9781         pthread_h_done=yes
9782     fi
9783     shift 2
9784 done
9785 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9786 cat >> try.c <<'EOCP'
9787 #ifdef CAN_PROTOTYPE
9788 #define _(args) args
9789 #else
9790 #define _(args) ()
9791 #endif
9792 EOCP
9793 echo "$foo" >> try.c
9794 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9795 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9796 status=$?
9797 $rm_try
9798 exit $status
9799 EOSH
9800 chmod +x protochk
9801 $eunicefix protochk
9802
9803 hasproto='varname=$1; func=$2; shift; shift;
9804 while $test $# -ge 2; do
9805         case "$1" in
9806         $define) echo "#include <$2>";;
9807         esac ;
9808     shift 2;
9809 done > try.c;
9810 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9811 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9812         echo "$func() prototype found.";
9813         val="$define";
9814 else
9815         echo "$func() prototype NOT found.";
9816         val="$undef";
9817 fi;
9818 set $varname;
9819 eval $setvar;
9820 $rm_try tryout.c'
9821
9822 : see if sys/types.h has to be included
9823 set sys/types.h i_systypes
9824 eval $inhdr
9825
9826 : see if sys/select.h has to be included
9827 set sys/select.h i_sysselct
9828 eval $inhdr
9829
9830 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9831 while $test $# -ge 2; do
9832         case "$1" in
9833         $define) echo "#include <$2>";;
9834         esac ;
9835     shift 2;
9836 done > try.c;
9837 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9838 set try;
9839 if eval $compile; then
9840         val="$define";
9841 else
9842         val="$undef";
9843 fi;
9844 set $varname;
9845 eval $setvar;
9846 $rm_try'
9847
9848 : see if we should include time.h, sys/time.h, or both
9849 echo " "
9850 if test "X$timeincl" = X; then
9851         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9852         $echo $n "I'm now running the test program...$c"
9853         $cat >try.c <<EOCP
9854 #include <sys/types.h>
9855 #ifdef I_TIME
9856 #include <time.h>
9857 #endif
9858 #ifdef I_SYSTIME
9859 #ifdef SYSTIMEKERNEL
9860 #define KERNEL
9861 #endif
9862 #include <sys/time.h>
9863 #endif
9864 #ifdef I_SYSSELECT
9865 #include <sys/select.h>
9866 #endif
9867 #$i_stdlib I_STDLIB
9868 #ifdef I_STDLIB
9869 #include <stdlib.h>
9870 #endif
9871 int main()
9872 {
9873         struct tm foo;
9874 #ifdef S_TIMEVAL
9875         struct timeval bar;
9876 #endif
9877 #ifdef S_TIMEZONE
9878         struct timezone tzp;
9879 #endif
9880         if (foo.tm_sec == foo.tm_sec)
9881                 exit(0);
9882 #ifdef S_TIMEVAL
9883         if (bar.tv_sec == bar.tv_sec)
9884                 exit(0);
9885 #endif
9886         exit(1);
9887 }
9888 EOCP
9889         flags=''
9890         for s_timezone in '-DS_TIMEZONE' ''; do
9891         sysselect=''
9892         for s_timeval in '-DS_TIMEVAL' ''; do
9893         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9894         for i_time in '' '-DI_TIME'; do
9895         for i_systime in '-DI_SYSTIME' ''; do
9896                 case "$flags" in
9897                 '') $echo $n ".$c"
9898                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9899                         if eval $compile; then
9900                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9901                                 shift
9902                                 flags="$*"
9903                                 echo " "
9904                                 $echo $n "Succeeded with $flags$c"
9905                         fi
9906                         ;;
9907                 esac
9908         done
9909         done
9910         done
9911         done
9912         done
9913         timeincl=''
9914         echo " "
9915         case "$flags" in
9916         *SYSTIMEKERNEL*) i_systimek="$define"
9917                 timeincl=`./findhdr sys/time.h`
9918                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9919         *) i_systimek="$undef";;
9920         esac
9921         case "$flags" in
9922         *I_TIME*) i_time="$define"
9923                 timeincl=`./findhdr time.h`" $timeincl"
9924                 echo "We'll include <time.h>." >&4;;
9925         *) i_time="$undef";;
9926         esac
9927         case "$flags" in
9928         *I_SYSTIME*) i_systime="$define"
9929                 timeincl=`./findhdr sys/time.h`" $timeincl"
9930                 echo "We'll include <sys/time.h>." >&4;;
9931         *) i_systime="$undef";;
9932         esac
9933         $rm_try
9934 fi
9935 : see if struct tm knows about tm_zone
9936 case "$i_systime$i_time" in
9937 *$define*)
9938         echo " "
9939         echo "Checking to see if your struct tm has tm_zone field..." >&4
9940         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9941         eval $hasfield
9942         ;;
9943 *)      val="$undef"
9944         set d_tm_tm_zone
9945         eval $setvar
9946         ;;
9947 esac
9948 case "$d_tm_tm_zone" in
9949 "$define")      echo "Yes, it does."   ;;
9950 *)              echo "No, it doesn't." ;;
9951 esac
9952 : see if struct tm knows about tm_gmtoff
9953 case "$i_systime$i_time" in
9954 *$define*)
9955         echo " "
9956         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9957         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9958         eval $hasfield
9959         ;;
9960 *)      val="$undef"
9961         set d_tm_tm_gmtoff
9962         eval $setvar
9963         ;;
9964 esac
9965 case "$d_tm_tm_gmtoff" in
9966 "$define")      echo "Yes, it does."   ;;
9967 *)              echo "No, it doesn't." ;;
9968 esac
9969
9970 : see if asctime_r exists
9971 set asctime_r d_asctime_r
9972 eval $inlibc
9973 case "$d_asctime_r" in
9974 "$define")
9975         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9976         case "$d_asctime_r_proto:$usethreads" in
9977         ":define")      d_asctime_r_proto=define
9978                 set d_asctime_r_proto asctime_r $hdrs
9979                 eval $hasproto ;;
9980         *)      ;;
9981         esac
9982         case "$d_asctime_r_proto" in
9983         define)
9984         case "$asctime_r_proto" in
9985         ''|0) try='char* asctime_r(const struct tm*, char*);'
9986         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9987         esac
9988         case "$asctime_r_proto" in
9989         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9990         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9991         esac
9992         case "$asctime_r_proto" in
9993         ''|0) try='int asctime_r(const struct tm*, char*);'
9994         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9995         esac
9996         case "$asctime_r_proto" in
9997         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9998         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9999         esac
10000         case "$asctime_r_proto" in
10001         ''|0)   d_asctime_r=undef
10002                 asctime_r_proto=0
10003                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10004         * )     case "$asctime_r_proto" in
10005                 REENTRANT_PROTO*) ;;
10006                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
10007                 esac
10008                 echo "Prototype: $try" ;;
10009         esac
10010         ;;
10011         *)      case "$usethreads" in
10012                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
10013                 esac
10014                 d_asctime_r=undef
10015                 asctime_r_proto=0
10016                 ;;
10017         esac
10018         ;;
10019 *)      asctime_r_proto=0
10020         ;;
10021 esac
10022
10023 : see if atolf exists
10024 set atolf d_atolf
10025 eval $inlibc
10026
10027 : see if atoll exists
10028 set atoll d_atoll
10029 eval $inlibc
10030
10031 : Look for GCC-style attribute format
10032 case "$d_attribute_format" in
10033 '')
10034 echo " "
10035 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10036 $cat >attrib.c <<'EOCP'
10037 #include <stdio.h>
10038 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10039 EOCP
10040 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10041         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10042                 echo "Your C compiler doesn't support __attribute__((format))."
10043                 val="$undef"
10044         else
10045                 echo "Your C compiler supports __attribute__((format))."
10046                 val="$define"
10047         fi
10048 else
10049         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10050         val="$undef"
10051 fi
10052 ;;
10053 *) val="$d_attribute_format" ;;
10054 esac
10055 set d_attribute_format
10056 eval $setvar
10057 $rm -f attrib*
10058
10059 : Look for GCC-style attribute format with null format allowed
10060 case "$d_printf_format_null" in
10061 '') case "$d_attribute_format" in
10062     $define)
10063         echo " "
10064         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10065 $cat >attrib.c <<EOCP
10066 #include <stdio.h>
10067 #$i_stdlib I_STDLIB
10068 #ifdef I_STDLIB
10069 #include <stdlib.h>
10070 #endif
10071 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10072 int null_printf (char* pat,...) { return (int)pat; }
10073 int main () { exit(null_printf(NULL)); }
10074 EOCP
10075         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10076             : run the executable in case it produces a run-time warning
10077             if $run ./attrib >>attrib.out 2>&1; then
10078                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10079                     echo "Your C compiler doesn't allow __printf__ format to be null."
10080                     val="$undef"
10081                 else
10082                     echo "Your C compiler allows __printf__ format to be null."
10083                     val="$define"
10084                 fi
10085             else
10086             echo "Your C compiler executable failed with __printf__ format null."
10087             val="$undef"
10088         fi
10089     else
10090         echo "Your C compiler fails with __printf__ format null."
10091         val="$undef"
10092     fi
10093     ;;
10094     *)  val="$undef" ;;
10095     esac
10096 ;;
10097 *)  val="$d_printf_format_null" ;;
10098 esac
10099 set d_printf_format_null
10100 eval $setvar
10101 $rm -f attrib*
10102
10103 : Look for GCC-style attribute malloc
10104 case "$d_attribute_malloc" in
10105 '')
10106 echo " "
10107 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10108 $cat >attrib.c <<'EOCP'
10109 #include <stdio.h>
10110 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10111 EOCP
10112 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10113         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10114                 echo "Your C compiler doesn't support __attribute__((malloc))."
10115                 val="$undef"
10116         else
10117                 echo "Your C compiler supports __attribute__((malloc))."
10118                 val="$define"
10119         fi
10120 else
10121         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10122         val="$undef"
10123 fi
10124 ;;
10125 *) val="$d_attribute_malloc" ;;
10126 esac
10127 set d_attribute_malloc
10128 eval $setvar
10129 $rm -f attrib*
10130
10131 : Look for GCC-style attribute nonnull
10132 case "$d_attribute_nonnull" in
10133 '')
10134 echo " "
10135 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10136 $cat >attrib.c <<'EOCP'
10137 #include <stdio.h>
10138 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10139 EOCP
10140 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10141         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10142                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10143                 val="$undef"
10144         else
10145                 echo "Your C compiler supports __attribute__((nonnull))."
10146                 val="$define"
10147         fi
10148 else
10149         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10150         val="$undef"
10151 fi
10152 ;;
10153 *) val="$d_attribute_nonnull" ;;
10154 esac
10155 set d_attribute_nonnull
10156 eval $setvar
10157 $rm -f attrib*
10158
10159 : Look for GCC-style attribute noreturn
10160 case "$d_attribute_noreturn" in
10161 '')
10162 echo " "
10163 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10164 $cat >attrib.c <<'EOCP'
10165 #include <stdio.h>
10166 void fall_over_dead( void ) __attribute__((noreturn));
10167 EOCP
10168 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10169         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10170                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10171                 val="$undef"
10172         else
10173                 echo "Your C compiler supports __attribute__((noreturn))."
10174                 val="$define"
10175         fi
10176 else
10177         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10178         val="$undef"
10179 fi
10180 ;;
10181 *) val="$d_attribute_noreturn" ;;
10182 esac
10183 set d_attribute_noreturn
10184 eval $setvar
10185 $rm -f attrib*
10186
10187 : Look for GCC-style attribute pure
10188 case "$d_attribute_pure" in
10189 '')
10190 echo " "
10191 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10192 $cat >attrib.c <<'EOCP'
10193 #include <stdio.h>
10194 int square( int n ) __attribute__((pure));
10195 EOCP
10196 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10197         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10198                 echo "Your C compiler doesn't support __attribute__((pure))."
10199                 val="$undef"
10200         else
10201                 echo "Your C compiler supports __attribute__((pure))."
10202                 val="$define"
10203         fi
10204 else
10205         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10206         val="$undef"
10207 fi
10208 ;;
10209 *) val="$d_attribute_pure" ;;
10210 esac
10211 set d_attribute_pure
10212 eval $setvar
10213 $rm -f attrib*
10214
10215 : Look for GCC-style attribute unused
10216 case "$d_attribute_unused" in
10217 '')
10218 echo " "
10219 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10220 $cat >attrib.c <<'EOCP'
10221 #include <stdio.h>
10222 int do_something( int dummy __attribute__((unused)), int n );
10223 EOCP
10224 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10225         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10226                 echo "Your C compiler doesn't support __attribute__((unused))."
10227                 val="$undef"
10228         else
10229                 echo "Your C compiler supports __attribute__((unused))."
10230                 val="$define"
10231         fi
10232 else
10233         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10234         val="$undef"
10235 fi
10236 ;;
10237 *) val="$d_attribute_unused" ;;
10238 esac
10239 set d_attribute_unused
10240 eval $setvar
10241 $rm -f attrib*
10242
10243 : Look for GCC-style attribute warn_unused_result
10244 case "$d_attribute_warn_unused_result" in
10245 '')
10246 echo " "
10247 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10248 $cat >attrib.c <<'EOCP'
10249 #include <stdio.h>
10250 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10251 EOCP
10252 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10253         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10254                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10255                 val="$undef"
10256         else
10257                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10258                 val="$define"
10259         fi
10260 else
10261         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10262         val="$undef"
10263 fi
10264 ;;
10265 *) val="$d_attribute_warn_unused_result" ;;
10266 esac
10267 set d_attribute_warn_unused_result
10268 eval $setvar
10269 $rm -f attrib*
10270
10271 : see if bcmp exists
10272 set bcmp d_bcmp
10273 eval $inlibc
10274
10275 : see if bcopy exists
10276 set bcopy d_bcopy
10277 eval $inlibc
10278
10279 : see if getpgrp exists
10280 set getpgrp d_getpgrp
10281 eval $inlibc
10282
10283 case "$d_getpgrp" in
10284 "$define")
10285         echo " "
10286         echo "Checking to see which flavor of getpgrp is in use..."
10287         $cat >try.c <<EOP
10288 #$i_unistd I_UNISTD
10289 #include <sys/types.h>
10290 #ifdef I_UNISTD
10291 #  include <unistd.h>
10292 #endif
10293 #$i_stdlib I_STDLIB
10294 #ifdef I_STDLIB
10295 #include <stdlib.h>
10296 #endif
10297 int main()
10298 {
10299         if (getuid() == 0) {
10300                 printf("(I see you are running Configure as super-user...)\n");
10301                 setuid(1);
10302         }
10303 #ifdef TRY_BSD_PGRP
10304         if (getpgrp(1) == 0)
10305                 exit(0);
10306 #else
10307         if (getpgrp() > 0)
10308                 exit(0);
10309 #endif
10310         exit(1);
10311 }
10312 EOP
10313         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10314                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10315                 val="$define"
10316         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10317                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10318                 val="$undef"
10319         else
10320                 echo "I can't seem to compile and run the test program."
10321                 if ./usg; then
10322                         xxx="a USG one, i.e. you use getpgrp()."
10323                 else
10324                         # SVR4 systems can appear rather BSD-ish.
10325                         case "$i_unistd" in
10326                         $undef)
10327                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10328                                 val="$define"
10329                                 ;;
10330                         $define)
10331                                 xxx="probably a USG one, i.e. you use getpgrp()."
10332                                 val="$undef"
10333                                 ;;
10334                         esac
10335                 fi
10336                 echo "Assuming your getpgrp is $xxx" >&4
10337         fi
10338         ;;
10339 *) val="$undef";;
10340 esac
10341 set d_bsdgetpgrp
10342 eval $setvar
10343 $rm_try
10344
10345 : see if setpgrp exists
10346 set setpgrp d_setpgrp
10347 eval $inlibc
10348
10349 case "$d_setpgrp" in
10350 "$define")
10351         echo " "
10352         echo "Checking to see which flavor of setpgrp is in use..."
10353         $cat >try.c <<EOP
10354 #$i_unistd I_UNISTD
10355 #include <sys/types.h>
10356 #ifdef I_UNISTD
10357 #  include <unistd.h>
10358 #endif
10359 #$i_stdlib I_STDLIB
10360 #ifdef I_STDLIB
10361 #include <stdlib.h>
10362 #endif
10363 int main()
10364 {
10365         if (getuid() == 0) {
10366                 printf("(I see you are running Configure as super-user...)\n");
10367                 setuid(1);
10368         }
10369 #ifdef TRY_BSD_PGRP
10370         if (-1 == setpgrp(1, 1))
10371                 exit(0);
10372 #else
10373         if (setpgrp() != -1)
10374                 exit(0);
10375 #endif
10376         exit(1);
10377 }
10378 EOP
10379         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10380                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10381                 val="$define"
10382         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10383                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10384                 val="$undef"
10385         else
10386                 echo "(I can't seem to compile and run the test program.)"
10387                 if ./usg; then
10388                         xxx="a USG one, i.e. you use setpgrp()."
10389                 else
10390                         # SVR4 systems can appear rather BSD-ish.
10391                         case "$i_unistd" in
10392                         $undef)
10393                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10394                                 val="$define"
10395                                 ;;
10396                         $define)
10397                                 xxx="probably a USG one, i.e. you use setpgrp()."
10398                                 val="$undef"
10399                                 ;;
10400                         esac
10401                 fi
10402                 echo "Assuming your setpgrp is $xxx" >&4
10403         fi
10404         ;;
10405 *) val="$undef";;
10406 esac
10407 set d_bsdsetpgrp
10408 eval $setvar
10409 $rm_try
10410
10411 : Look for GCC-style __builtin_choose_expr
10412 case "$d_builtin_choose_expr" in
10413 '')
10414     echo " "
10415     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10416     $cat >try.c <<'EOCP'
10417 #include <assert.h>
10418 #include <stdlib.h>
10419 #include <stdio.h>
10420
10421 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10422
10423 int main(void) {
10424     assert( SYRINX(1) == 2112 );
10425     assert( SYRINX(1) != 5150 );
10426     assert( SYRINX(0) == 5150 );
10427     assert( SYRINX(0) != 2112 );
10428     puts( "All good!" );
10429     exit(0);
10430 }
10431
10432 EOCP
10433     set try
10434     if eval $compile; then
10435         echo "Your C compiler supports __builtin_choose_expr."
10436         val="$define"
10437     else
10438         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10439         val="$undef"
10440     fi
10441 ;;
10442 *) val="$d_builtin_choose_expr" ;;
10443 esac
10444
10445 set d_builtin_choose_expr
10446 eval $setvar
10447 $rm_try
10448
10449 : Look for GCC-style __builtin_expect
10450 case "$d_builtin_expect" in
10451 '')
10452     echo " "
10453     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10454     $cat >builtin.c <<'EOCP'
10455 int main(void) {
10456     int n = 50;
10457     if ( __builtin_expect(n, 0) ) n = 1;
10458 }
10459 EOCP
10460     set try
10461     if eval $compile; then
10462         echo "Your C compiler supports __builtin_choose_expr."
10463         val="$define"
10464     else
10465         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10466         val="$undef"
10467     fi
10468     ;;
10469 *) val="$d_builtin_expect" ;;
10470 esac
10471
10472 set d_builtin_expect
10473 eval $setvar
10474 $rm_try
10475
10476 : see if bzero exists
10477 set bzero d_bzero
10478 eval $inlibc
10479
10480 : see if stdarg is available
10481 echo " "
10482 if $test `./findhdr stdarg.h`; then
10483         echo "<stdarg.h> found." >&4
10484         valstd="$define"
10485 else
10486         echo "<stdarg.h> NOT found." >&4
10487         valstd="$undef"
10488 fi
10489
10490 : see if varags is available
10491 echo " "
10492 if $test `./findhdr varargs.h`; then
10493         echo "<varargs.h> found." >&4
10494 else
10495         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10496 fi
10497
10498 : set up the varargs testing programs
10499 $cat > varargs.c <<EOP
10500 #ifdef I_STDARG
10501 #include <stdarg.h>
10502 #endif
10503 #ifdef I_VARARGS
10504 #include <varargs.h>
10505 #endif
10506
10507 #ifdef I_STDARG
10508 int f(char *p, ...)
10509 #else
10510 int f(va_alist)
10511 va_dcl
10512 #endif
10513 {
10514         va_list ap;
10515 #ifndef I_STDARG
10516         char *p;
10517 #endif
10518 #ifdef I_STDARG
10519         va_start(ap,p);
10520 #else
10521         va_start(ap);
10522         p = va_arg(ap, char *);
10523 #endif
10524         va_end(ap);
10525         return 0;
10526 }
10527 EOP
10528 $cat > varargs <<EOP
10529 $startsh
10530 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10531         echo "true"
10532 else
10533         echo "false"
10534 fi
10535 $rm -f varargs$_o
10536 EOP
10537 chmod +x varargs
10538
10539 : now check which varargs header should be included
10540 echo " "
10541 i_varhdr=''
10542 case "$valstd" in
10543 "$define")
10544         if `./varargs I_STDARG`; then
10545                 val='stdarg.h'
10546         elif `./varargs I_VARARGS`; then
10547                 val='varargs.h'
10548         fi
10549         ;;
10550 *)
10551         if `./varargs I_VARARGS`; then
10552                 val='varargs.h'
10553         fi
10554         ;;
10555 esac
10556 case "$val" in
10557 '')
10558 echo "I could not find the definition for va_dcl... You have problems..." >&4
10559         val="$undef"; set i_stdarg; eval $setvar
10560         val="$undef"; set i_varargs; eval $setvar
10561         ;;
10562 *) 
10563         set i_varhdr
10564         eval $setvar
10565         case "$i_varhdr" in
10566         stdarg.h)
10567                 val="$define"; set i_stdarg; eval $setvar
10568                 val="$undef"; set i_varargs; eval $setvar
10569                 ;;
10570         varargs.h)
10571                 val="$undef"; set i_stdarg; eval $setvar
10572                 val="$define"; set i_varargs; eval $setvar
10573                 ;;
10574         esac
10575         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10576 esac
10577 $rm -f varargs*
10578
10579 : see if the Compiler supports C99 variadic macros
10580 case "$i_stdarg$i_stdlib" in
10581     "$define$define")
10582     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10583     $cat >try.c <<EOCP
10584 #include <stdio.h>
10585 #include <stdarg.h>
10586
10587 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10588
10589 int main() {
10590   char buf[20];
10591   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10592   puts(buf);
10593   return 0;
10594 }
10595 EOCP
10596     set try
10597     if eval $compile && $run ./try 2>&1 >/dev/null; then
10598         case "`$run ./try`" in
10599             "123 456 789")
10600             echo "You have C99 variadic macros." >&4
10601             d_c99_variadic_macros="$define"
10602             ;;
10603             *)
10604             echo "You don't have functional C99 variadic macros." >&4
10605             d_c99_variadic_macros="$undef"
10606             ;;
10607         esac
10608     else
10609         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10610         d_c99_variadic_macros="$undef"
10611     fi
10612     $rm_try
10613     ;;
10614     *)
10615     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10616     d_c99_variadic_macros="$undef"
10617     ;;
10618 esac
10619
10620 : see if signal is declared as pointer to function returning int or void
10621 echo " "
10622 xxx=`./findhdr signal.h`
10623 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10624 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10625         echo "You have int (*signal())() instead of void." >&4
10626         val="$undef"
10627 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10628         echo "You have void (*signal())()." >&4
10629         val="$define"
10630 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10631         echo "You have int (*signal())() instead of void." >&4
10632         val="$undef"
10633 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10634         echo "You have void (*signal())()." >&4
10635         val="$define"
10636 else
10637         case "$d_voidsig" in
10638         '')
10639         echo "I can't determine whether signal handler returns void or int..." >&4
10640                 dflt=void
10641                 rp="What type does your signal handler return?"
10642                 . ./myread
10643                 case "$ans" in
10644                 v*) val="$define";;
10645                 *) val="$undef";;
10646                 esac;;
10647         "$define")
10648                 echo "As you already told me, signal handler returns void." >&4
10649                 val="$define"
10650                 ;;
10651         *)      echo "As you already told me, signal handler returns int." >&4
10652                 val="$undef"
10653                 ;;
10654         esac
10655 fi
10656 set d_voidsig
10657 eval $setvar
10658 case "$d_voidsig" in
10659 "$define") signal_t="void";;
10660 *) signal_t="int";;
10661 esac
10662 $rm -f $$.tmp
10663
10664 : check for ability to cast large floats to 32-bit ints.
10665 echo " "
10666 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10667 if $test "$intsize" -ge 4; then
10668         xxx=int
10669 else
10670         xxx=long
10671 fi
10672 $cat >try.c <<EOCP
10673 #include <stdio.h>
10674 #$i_stdlib I_STDLIB
10675 #ifdef I_STDLIB
10676 #include <stdlib.h>
10677 #endif
10678 #include <sys/types.h>
10679 #include <signal.h>
10680 $signal_t blech(int s) { exit(3); }
10681 int main()
10682 {
10683         $xxx i32;
10684         double f, g;
10685         int result = 0;
10686         char str[16];
10687         signal(SIGFPE, blech);
10688
10689         /* Don't let compiler optimize the test away.  Store the number
10690            in a writable string for gcc to pass to sscanf under HP/UX.
10691         */
10692         sprintf(str, "2147483647");
10693         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10694         g = 10 * f;
10695         i32  = ($xxx) g;
10696
10697         /* x86 processors will probably give 0x8000 0000, which is a
10698            sign change.  We don't want that.  We want to mimic SPARC
10699            behavior here, which is to preserve the sign and give
10700            back 0x7fff ffff.
10701         */
10702         if (i32 != ($xxx) f)
10703                 result |= 1;
10704         exit(result);
10705 }
10706 EOCP
10707 set try
10708 if eval $compile_ok; then
10709         $run ./try
10710         yyy=$?
10711 else
10712         echo "(I can't seem to compile the test program--assuming it can't)"
10713         yyy=1
10714 fi
10715 case "$yyy" in
10716 0)      val="$define"
10717         echo "Yup, it can."
10718         ;;
10719 *)      val="$undef"
10720         echo "Nope, it can't."
10721         ;;
10722 esac
10723 set d_casti32
10724 eval $setvar
10725 $rm_try
10726
10727 : check for ability to cast negative floats to unsigned
10728 echo " "
10729 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10730 $cat >try.c <<EOCP
10731 #include <stdio.h>
10732 #$i_stdlib I_STDLIB
10733 #ifdef I_STDLIB
10734 #include <stdlib.h>
10735 #endif
10736 #include <sys/types.h>
10737 #include <signal.h>
10738 $signal_t blech(int s) { exit(7); }
10739 $signal_t blech_in_list(int s) { exit(4); }
10740 unsigned long dummy_long(unsigned long p) { return p; }
10741 unsigned int dummy_int(unsigned int p) { return p; }
10742 unsigned short dummy_short(unsigned short p) { return p; }
10743 int main()
10744 {
10745         double f;
10746         unsigned long along;
10747         unsigned int aint;
10748         unsigned short ashort;
10749         int result = 0;
10750         char str[16];
10751
10752         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10753            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10754            optimized the whole file away
10755         */
10756         /* Store the number in a writable string for gcc to pass to
10757            sscanf under HP/UX.
10758         */
10759         sprintf(str, "-123");
10760         sscanf(str, "%lf", &f);  /* f = -123.; */
10761
10762         signal(SIGFPE, blech);
10763         along = (unsigned long)f;
10764         aint = (unsigned int)f;
10765         ashort = (unsigned short)f;
10766         if (along != (unsigned long)-123)
10767                 result |= 1;
10768         if (aint != (unsigned int)-123)
10769                 result |= 1;
10770         if (ashort != (unsigned short)-123)
10771                 result |= 1;
10772         sprintf(str, "1073741824.");
10773         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10774         f = f + f;
10775         along = 0;
10776         along = (unsigned long)f;
10777         if (along != 0x80000000)
10778                 result |= 2;
10779         f -= 1.;
10780         along = 0;
10781         along = (unsigned long)f;
10782         if (along != 0x7fffffff)
10783                 result |= 1;
10784         f += 2.;
10785         along = 0;
10786         along = (unsigned long)f;
10787         if (along != 0x80000001)
10788                 result |= 2;
10789         if (result)
10790                 exit(result);
10791         signal(SIGFPE, blech_in_list);
10792         sprintf(str, "123.");
10793         sscanf(str, "%lf", &f);  /* f = 123.; */
10794         along = dummy_long((unsigned long)f);
10795         aint = dummy_int((unsigned int)f);
10796         ashort = dummy_short((unsigned short)f);
10797         if (along != (unsigned long)123)
10798                 result |= 4;
10799         if (aint != (unsigned int)123)
10800                 result |= 4;
10801         if (ashort != (unsigned short)123)
10802                 result |= 4;
10803         exit(result);
10804
10805 }
10806 EOCP
10807 set try
10808 if eval $compile_ok; then
10809         $run ./try
10810         castflags=$?
10811 else
10812         echo "(I can't seem to compile the test program--assuming it can't)"
10813         castflags=7
10814 fi
10815 case "$castflags" in
10816 0)      val="$define"
10817         echo "Yup, it can."
10818         ;;
10819 *)      val="$undef"
10820         echo "Nope, it can't."
10821         ;;
10822 esac
10823 set d_castneg
10824 eval $setvar
10825 $rm_try
10826
10827 : see if vprintf exists
10828 echo " "
10829 if set vprintf val -f d_vprintf; eval $csym; $val; then
10830         echo 'vprintf() found.' >&4
10831         val="$define"
10832         $cat >try.c <<EOF
10833 #$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
10834 #$i_varargs I_VARARGS
10835
10836 #$i_stdlib I_STDLIB
10837 #$i_unistd I_UNISTD
10838
10839 #ifdef I_STDARG
10840 #  include <stdarg.h>
10841 #else /* I_VARARGS */
10842 #  include <varargs.h>
10843 #endif
10844
10845 #ifdef I_UNISTD
10846 #  include <unistd.h>
10847 #endif
10848
10849 #ifdef I_STDLIB
10850 #  include <stdlib.h>
10851 #endif
10852
10853 #include <stdio.h> /* vsprintf prototype */
10854
10855 #ifdef I_STDARG
10856 void xxx(int n, ...)
10857 {
10858     va_list args;
10859     char buf[10];
10860     va_start(args, n);
10861     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10862 }
10863 int main() { xxx(1, "foo"); }
10864
10865 #else /* I_VARARGS */
10866
10867 xxx(va_alist)
10868 va_dcl
10869 {
10870     va_list args;
10871     char buf[10];
10872     va_start(args);
10873     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10874 }
10875 int main() { xxx("foo"); }
10876
10877 #endif
10878
10879 EOF
10880         set try
10881         if eval $compile_ok; then
10882                 if $run ./try; then
10883                         echo "Your vsprintf() returns (int)." >&4
10884                         val2="$undef"
10885                 else
10886                         echo "Your vsprintf() returns (char*)." >&4
10887                         val2="$define"
10888                 fi
10889         else
10890                 echo 'I am unable to compile the vsprintf() test program.' >&4
10891                 # We shouldn't get here.  If we do, assume the standard signature,
10892                 # not the old BSD one.
10893                 echo 'Guessing that vsprintf() returns (int).' >&4
10894                 val2="$undef"
10895         fi
10896 else
10897         echo 'vprintf() NOT found.' >&4
10898         val="$undef"
10899         val2="$undef"
10900 fi
10901 $rm_try
10902 set d_vprintf
10903 eval $setvar
10904 val=$val2
10905 set d_charvspr
10906 eval $setvar
10907
10908 : see if chown exists
10909 set chown d_chown
10910 eval $inlibc
10911
10912 : see if chroot exists
10913 set chroot d_chroot
10914 eval $inlibc
10915
10916 : see if chsize exists
10917 set chsize d_chsize
10918 eval $inlibc
10919
10920 : see if class exists
10921 set class d_class
10922 eval $inlibc
10923
10924 : see if clearenv exists
10925 set clearenv d_clearenv
10926 eval $inlibc
10927
10928 hasstruct='varname=$1; struct=$2; shift; shift;
10929 while $test $# -ge 2; do
10930         case "$1" in
10931         $define) echo "#include <$2>";;
10932         esac ;
10933     shift 2;
10934 done > try.c;
10935 echo "int main () { struct $struct foo; }" >> try.c;
10936 set try;
10937 if eval $compile; then
10938         val="$define";
10939 else
10940         val="$undef";
10941 fi;
10942 set $varname;
10943 eval $setvar;
10944 $rm_try'
10945
10946 socketlib=''
10947 sockethdr=''
10948 : see whether socket exists
10949 echo " "
10950 $echo $n "Hmm... $c" >&4
10951 if set socket val -f d_socket; eval $csym; $val; then
10952         echo "Looks like you have Berkeley networking support." >&4
10953         d_socket="$define"
10954         if set setsockopt val -f; eval $csym; $val; then
10955                 d_oldsock="$undef"
10956         else
10957                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10958                 d_oldsock="$define"
10959         fi
10960 else
10961         if $contains socklib libc.list >/dev/null 2>&1; then
10962                 echo "Looks like you have Berkeley networking support." >&4
10963                 d_socket="$define"
10964                 : we will have to assume that it supports the 4.2 BSD interface
10965                 d_oldsock="$undef"
10966         else
10967                 echo "You don't have Berkeley networking in libc$_a..." >&4
10968                 if test "X$d_socket" = "X$define"; then
10969                    echo "...but you seem to believe that you have sockets." >&4
10970                 else
10971                         for net in net socket
10972                         do
10973                                 if test -f /usr/lib/lib$net$_a; then
10974                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10975                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10976                                         if $contains socket libc.list >/dev/null 2>&1; then
10977                                                 d_socket="$define"
10978                                                 socketlib="-l$net"
10979                                                 case "$net" in
10980                                                 net)
10981                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10982                                                         sockethdr="-I/usr/netinclude"
10983                                                         ;;
10984                                                 esac
10985                                                 echo "Found Berkeley sockets interface in lib$net." >&4
10986                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10987                                                         d_oldsock="$undef"
10988                                                 else
10989                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10990                                                         d_oldsock="$define"
10991                                                 fi
10992                                                 break
10993                                         fi
10994                                 fi
10995                         done
10996                         if test "X$d_socket" != "X$define"; then
10997                            echo "or anywhere else I see." >&4
10998                            d_socket="$undef"
10999                            d_oldsock="$undef"
11000                         fi
11001                 fi
11002         fi
11003 fi
11004
11005 : see if socketpair exists
11006 set socketpair d_sockpair
11007 eval $inlibc
11008
11009
11010 echo " "
11011 echo "Checking the availability of certain socket constants..." >&4
11012 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
11013         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
11014         $cat >try.c <<EOF
11015 #include <sys/types.h>
11016 #include <sys/socket.h>
11017 int main() {
11018     int i = $ENUM;
11019 }
11020 EOF
11021         val="$undef"
11022         set try; if eval $compile; then
11023                 val="$define"
11024         fi
11025         set d_${enum}; eval $setvar
11026         $rm_try
11027 done
11028
11029 : see if this is a sys/uio.h system
11030 set sys/uio.h i_sysuio
11031 eval $inhdr
11032
11033
11034 echo " "
11035 echo "Checking to see if your system supports struct cmsghdr..." >&4
11036 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11037 eval $hasstruct
11038 case "$d_cmsghdr_s" in
11039 "$define")      echo "Yes, it does."   ;;
11040 *)              echo "No, it doesn't." ;;
11041 esac
11042
11043
11044 : check for const keyword
11045 echo " "
11046 echo 'Checking to see if your C compiler knows about "const"...' >&4
11047 $cat >const.c <<'EOCP'
11048 typedef struct spug { int drokk; } spug;
11049 int main()
11050 {
11051         const char *foo;
11052         const spug y = { 0 };
11053 }
11054 EOCP
11055 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11056         val="$define"
11057         echo "Yup, it does."
11058 else
11059         val="$undef"
11060         echo "Nope, it doesn't."
11061 fi
11062 set d_const
11063 eval $setvar
11064
11065 : see if copysignl exists
11066 set copysignl d_copysignl
11067 eval $inlibc
11068
11069 : see if crypt exists
11070 echo " "
11071 set crypt d_crypt
11072 eval $inlibc
11073 case "$d_crypt" in
11074 $define) cryptlib='' ;;
11075 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11076                 echo 'crypt() found.' >&4
11077                 val="$define"
11078                 cryptlib=''
11079         else
11080                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11081                 if $test -z "$cryptlib"; then
11082                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11083                 else
11084                         cryptlib=-lcrypt
11085                 fi
11086                 if $test -z "$cryptlib"; then
11087                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11088                 else
11089                         cryptlib=-lcrypt
11090                 fi
11091                 if $test -z "$cryptlib"; then
11092                         cryptlib=`./loc libcrypt$_a "" $libpth`
11093                 else
11094                         cryptlib=-lcrypt
11095                 fi
11096                 if $test -z "$cryptlib"; then
11097                         echo 'crypt() NOT found.' >&4
11098                         val="$undef"
11099                 else
11100                         val="$define"
11101                 fi
11102         fi
11103         set d_crypt
11104         eval $setvar
11105         ;;
11106 esac
11107
11108 : see if this is a crypt.h system
11109 set crypt.h i_crypt
11110 eval $inhdr
11111
11112 : see if crypt_r exists
11113 set crypt_r d_crypt_r
11114 eval $inlibc
11115 case "$d_crypt_r" in
11116 "$define")
11117         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11118         case "$d_crypt_r_proto:$usethreads" in
11119         ":define")      d_crypt_r_proto=define
11120                 set d_crypt_r_proto crypt_r $hdrs
11121                 eval $hasproto ;;
11122         *)      ;;
11123         esac
11124         case "$d_crypt_r_proto" in
11125         define)
11126         case "$crypt_r_proto" in
11127         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11128         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11129         esac
11130         case "$crypt_r_proto" in
11131         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11132         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11133         esac
11134         case "$crypt_r_proto" in
11135         ''|0)   d_crypt_r=undef
11136                 crypt_r_proto=0
11137                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11138         * )     case "$crypt_r_proto" in
11139                 REENTRANT_PROTO*) ;;
11140                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11141                 esac
11142                 echo "Prototype: $try" ;;
11143         esac
11144         ;;
11145         *)      case "$usethreads" in
11146                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11147                 esac
11148                 d_crypt_r=undef
11149                 crypt_r_proto=0
11150                 ;;
11151         esac
11152         ;;
11153 *)      crypt_r_proto=0
11154         ;;
11155 esac
11156
11157 : get csh whereabouts
11158 case "$csh" in
11159 'csh') val="$undef" ;;
11160 *) val="$define" ;;
11161 esac
11162 set d_csh
11163 eval $setvar
11164 : Respect a hint or command line value for full_csh.
11165 case "$full_csh" in
11166 '') full_csh=$csh ;;
11167 esac
11168
11169 : see if ctermid exists
11170 set ctermid d_ctermid
11171 eval $inlibc
11172
11173 : see if ctermid_r exists
11174 set ctermid_r d_ctermid_r
11175 eval $inlibc
11176 case "$d_ctermid_r" in
11177 "$define")
11178         hdrs="$i_systypes sys/types.h define stdio.h "
11179         case "$d_ctermid_r_proto:$usethreads" in
11180         ":define")      d_ctermid_r_proto=define
11181                 set d_ctermid_r_proto ctermid_r $hdrs
11182                 eval $hasproto ;;
11183         *)      ;;
11184         esac
11185         case "$d_ctermid_r_proto" in
11186         define)
11187         case "$ctermid_r_proto" in
11188         ''|0) try='char* ctermid_r(char*);'
11189         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11190         esac
11191         case "$ctermid_r_proto" in
11192         ''|0)   d_ctermid_r=undef
11193                 ctermid_r_proto=0
11194                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11195         * )     case "$ctermid_r_proto" in
11196                 REENTRANT_PROTO*) ;;
11197                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11198                 esac
11199                 echo "Prototype: $try" ;;
11200         esac
11201         ;;
11202         *)      case "$usethreads" in
11203                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11204                 esac
11205                 d_ctermid_r=undef
11206                 ctermid_r_proto=0
11207                 ;;
11208         esac
11209         ;;
11210 *)      ctermid_r_proto=0
11211         ;;
11212 esac
11213
11214 : see if ctime_r exists
11215 set ctime_r d_ctime_r
11216 eval $inlibc
11217 case "$d_ctime_r" in
11218 "$define")
11219         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11220         case "$d_ctime_r_proto:$usethreads" in
11221         ":define")      d_ctime_r_proto=define
11222                 set d_ctime_r_proto ctime_r $hdrs
11223                 eval $hasproto ;;
11224         *)      ;;
11225         esac
11226         case "$d_ctime_r_proto" in
11227         define)
11228         case "$ctime_r_proto" in
11229         ''|0) try='char* ctime_r(const time_t*, char*);'
11230         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11231         esac
11232         case "$ctime_r_proto" in
11233         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11234         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11235         esac
11236         case "$ctime_r_proto" in
11237         ''|0) try='int ctime_r(const time_t*, char*);'
11238         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11239         esac
11240         case "$ctime_r_proto" in
11241         ''|0) try='int ctime_r(const time_t*, char*, int);'
11242         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11243         esac
11244         case "$ctime_r_proto" in
11245         ''|0)   d_ctime_r=undef
11246                 ctime_r_proto=0
11247                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11248         * )     case "$ctime_r_proto" in
11249                 REENTRANT_PROTO*) ;;
11250                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11251                 esac
11252                 echo "Prototype: $try" ;;
11253         esac
11254         ;;
11255         *)      case "$usethreads" in
11256                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11257                 esac
11258                 d_ctime_r=undef
11259                 ctime_r_proto=0
11260                 ;;
11261         esac
11262         ;;
11263 *)      ctime_r_proto=0
11264         ;;
11265 esac
11266
11267 : see if cuserid exists
11268 set cuserid d_cuserid
11269 eval $inlibc
11270
11271 : see if this is a limits.h system
11272 set limits.h i_limits
11273 eval $inhdr
11274
11275 : see if this is a float.h system
11276 set float.h i_float
11277 eval $inhdr
11278
11279 : See if number of significant digits in a double precision number is known
11280 echo " "
11281 $cat >dbl_dig.c <<EOM
11282 #$i_limits I_LIMITS
11283 #$i_float I_FLOAT
11284 #ifdef I_LIMITS
11285 #include <limits.h>
11286 #endif
11287 #ifdef I_FLOAT
11288 #include <float.h>
11289 #endif
11290 #ifdef DBL_DIG
11291 printf("Contains DBL_DIG");
11292 #endif
11293 EOM
11294 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11295 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11296         echo "DBL_DIG found." >&4
11297         val="$define"
11298 else
11299         echo "DBL_DIG NOT found." >&4
11300         val="$undef"
11301 fi
11302 $rm -f dbl_dig.?
11303 set d_dbl_dig
11304 eval $setvar
11305
11306 : see if dbm.h is available
11307 : see if dbmclose exists
11308 set dbmclose d_dbmclose
11309 eval $inlibc
11310
11311 case "$d_dbmclose" in
11312 $define)
11313         set dbm.h i_dbm
11314         eval $inhdr
11315         case "$i_dbm" in
11316         $define)
11317                 val="$undef"
11318                 set i_rpcsvcdbm
11319                 eval $setvar
11320                 ;;
11321         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11322                 eval $inhdr
11323                 ;;
11324         esac
11325         ;;
11326 *)      echo "We won't be including <dbm.h>"
11327         val="$undef"
11328         set i_dbm
11329         eval $setvar
11330         val="$undef"
11331         set i_rpcsvcdbm
11332         eval $setvar
11333         ;;
11334 esac
11335
11336 : see if prototype for dbminit is available
11337 echo " "
11338 set d_dbminitproto dbminit $i_dbm dbm.h
11339 eval $hasproto
11340
11341 : see if difftime exists
11342 set difftime d_difftime
11343 eval $inlibc
11344
11345 : see if this is a dirent system
11346 echo " "
11347 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11348         val="$define"
11349         echo "<dirent.h> found." >&4
11350 else
11351         val="$undef"
11352         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11353                 echo "<sys/dir.h> found." >&4
11354                 echo " "
11355         else
11356                 xinc=`./findhdr sys/ndir.h`
11357         fi
11358         echo "<dirent.h> NOT found." >&4
11359 fi
11360 set i_dirent
11361 eval $setvar
11362
11363 : Look for type of directory structure.
11364 echo " "
11365 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11366
11367 case "$direntrytype" in
11368 ''|' ')
11369         case "$i_dirent" in
11370         $define) guess1='struct dirent' ;;
11371         *) guess1='struct direct'  ;;
11372         esac
11373         ;;
11374 *)      guess1="$direntrytype"
11375         ;;
11376 esac
11377
11378 case "$guess1" in
11379 'struct dirent') guess2='struct direct' ;;
11380 *) guess2='struct dirent' ;;
11381 esac
11382
11383 if $contains "$guess1" try.c >/dev/null 2>&1; then
11384         direntrytype="$guess1"
11385         echo "Your directory entries are $direntrytype." >&4
11386 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11387         direntrytype="$guess2"
11388         echo "Your directory entries seem to be $direntrytype." >&4
11389 else
11390         echo "I don't recognize your system's directory entries." >&4
11391         rp="What type is used for directory entries on this system?"
11392         dflt="$guess1"
11393         . ./myread
11394         direntrytype="$ans"
11395 fi
11396 $rm_try
11397
11398 : see if the directory entry stores field length
11399 echo " "
11400 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11401 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11402         echo "Good, your directory entry keeps length information in d_namlen." >&4
11403         val="$define"
11404 else
11405         echo "Your directory entry does not know about the d_namlen field." >&4
11406         val="$undef"
11407 fi
11408 set d_dirnamlen
11409 eval $setvar
11410 $rm_try
11411
11412 : Look for DIR.dd_fd
11413 case "$i_dirent" in
11414 "$define")
11415     echo "Checking to see if DIR has a dd_fd member variable" >&4
11416     $cat >try.c <<EOCP
11417 #$i_stdlib I_STDLIB
11418 #ifdef I_STDLIB
11419 #include <stdlib.h>
11420 #endif
11421 #include <dirent.h>
11422
11423 int main() {
11424     DIR dir;
11425     dir.dd_fd = 1;
11426     return 0;
11427 }
11428 EOCP
11429     val=$undef
11430     set try
11431     if eval $compile; then
11432         echo "Yes, it does."
11433         val="$define"
11434     else
11435         echo "No, it does not."
11436         val="$undef"
11437     fi
11438     ;;
11439 *)
11440     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11441     val="$undef"
11442     ;;
11443 esac
11444 set d_dir_dd_fd
11445 eval $setvar
11446 $rm_try
11447
11448 : see if this is an sysdir system
11449 set sys/dir.h i_sysdir
11450 eval $inhdr
11451
11452 : see if this is an sysndir system
11453 set sys/ndir.h i_sysndir
11454 eval $inhdr
11455
11456 : Look for dirfd
11457 echo " "
11458 $cat >dirfd.c <<EOM
11459 #include <stdio.h>
11460 #$i_stdlib I_STDLIB
11461 #ifdef I_STDLIB
11462 #include <stdlib.h>
11463 #endif
11464 #$i_dirent I_DIRENT             /**/
11465 #$i_sysdir I_SYS_DIR            /**/
11466 #$i_sysndir I_SYS_NDIR          /**/
11467 #$i_systypes I_SYS_TYPES        /**/
11468 #if defined(I_SYS_TYPES)
11469 #include <sys/types.h>
11470 #endif
11471 #if defined(I_DIRENT)
11472 #include <dirent.h>
11473 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11474 #include <sys/dir.h>
11475 #endif
11476 #else
11477 #ifdef I_SYS_NDIR
11478 #include <sys/ndir.h>
11479 #else
11480 #ifdef I_SYS_DIR
11481 #ifdef hp9000s500
11482 #include <ndir.h>       /* may be wrong in the future */
11483 #else
11484 #include <sys/dir.h>
11485 #endif
11486 #endif
11487 #endif
11488 #endif 
11489 int main() {
11490         DIR *dirp = opendir(".");
11491         if (dirfd(dirp) >= 0)
11492                 exit(0);
11493         else
11494                 exit(1);
11495 }
11496 EOM
11497 val=$undef
11498 set dirfd
11499 if eval $compile; then
11500         val="$define"
11501 fi
11502 case "$val" in
11503 $define)        echo "dirfd() found." >&4       ;;
11504 *)              echo "dirfd() NOT found." >&4   ;;
11505 esac
11506 set d_dirfd
11507 eval $setvar
11508 $rm -f dirfd*
11509
11510 : see if dlerror exists
11511 xxx_runnm="$runnm"
11512 runnm=false
11513 set dlerror d_dlerror
11514 eval $inlibc
11515 runnm="$xxx_runnm"
11516
11517 : see if dlfcn is available
11518 set dlfcn.h i_dlfcn
11519 eval $inhdr
11520
11521 case "$usedl" in
11522 $define|y|true)
11523         $cat << EOM
11524
11525 On a few systems, the dynamically loaded modules that perl generates and uses
11526 will need a different extension than shared libs. The default will probably
11527 be appropriate.
11528
11529 EOM
11530         case "$dlext" in
11531         '')     dflt="$so" ;;
11532         *)      dflt="$dlext" ;;
11533         esac
11534         rp='What is the extension of dynamically loaded modules'
11535         . ./myread
11536         dlext="$ans"
11537         ;;
11538 *)
11539         dlext="none"
11540         ;;
11541 esac
11542
11543 : Check if dlsym need a leading underscore
11544 echo " "
11545 val="$undef"
11546
11547 case "$dlsrc" in
11548 dl_dlopen.xs)
11549         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11550         $cat >dyna.c <<'EOM'
11551 fred () { }
11552 EOM
11553
11554 $cat >fred.c<<EOM
11555
11556 #include <stdio.h>
11557 #$i_stdlib I_STDLIB
11558 #ifdef I_STDLIB
11559 #include <stdlib.h>
11560 #endif
11561 #$i_dlfcn I_DLFCN
11562 #ifdef I_DLFCN
11563 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11564 #else
11565 #include <sys/types.h>
11566 #include <nlist.h>
11567 #include <link.h>
11568 #endif
11569
11570 extern int fred() ;
11571
11572 int main()
11573 {
11574     void * handle ;
11575     void * symbol ;
11576 #ifndef RTLD_LAZY
11577     int mode = 1 ;
11578 #else
11579     int mode = RTLD_LAZY ;
11580 #endif
11581     handle = dlopen("./dyna.$dlext", mode) ;
11582     if (handle == NULL) {
11583         printf ("1\n") ;
11584         fflush (stdout) ;
11585         exit(0);
11586     }
11587     symbol = dlsym(handle, "fred") ;
11588     if (symbol == NULL) {
11589         /* try putting a leading underscore */
11590         symbol = dlsym(handle, "_fred") ;
11591         if (symbol == NULL) {
11592             printf ("2\n") ;
11593             fflush (stdout) ;
11594             exit(0);
11595         }
11596         printf ("3\n") ;
11597     }
11598     else
11599         printf ("4\n") ;
11600     fflush (stdout) ;
11601     exit(0);
11602 }
11603 EOM
11604         : Call the object file tmp-dyna.o in case dlext=o.
11605         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
11606                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
11607                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
11608                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11609                 xxx=`$run ./fred`
11610                 case $xxx in
11611                 1)      echo "Test program failed using dlopen." >&4
11612                         echo "Perhaps you should not use dynamic loading." >&4;;
11613                 2)      echo "Test program failed using dlsym." >&4
11614                         echo "Perhaps you should not use dynamic loading." >&4;;
11615                 3)      echo "dlsym needs a leading underscore" >&4
11616                         val="$define" ;;
11617                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11618                 esac
11619         else
11620                 echo "I can't compile and run the test program." >&4
11621                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11622         fi
11623         ;;
11624 esac
11625                 
11626 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11627
11628 set d_dlsymun
11629 eval $setvar
11630
11631 : see if drand48_r exists
11632 set drand48_r d_drand48_r
11633 eval $inlibc
11634 case "$d_drand48_r" in
11635 "$define")
11636         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11637         case "$d_drand48_r_proto:$usethreads" in
11638         ":define")      d_drand48_r_proto=define
11639                 set d_drand48_r_proto drand48_r $hdrs
11640                 eval $hasproto ;;
11641         *)      ;;
11642         esac
11643         case "$d_drand48_r_proto" in
11644         define)
11645         case "$drand48_r_proto" in
11646         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11647         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11648         esac
11649         case "$drand48_r_proto" in
11650         ''|0)   d_drand48_r=undef
11651                 drand48_r_proto=0
11652                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11653         * )     case "$drand48_r_proto" in
11654                 REENTRANT_PROTO*) ;;
11655                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11656                 esac
11657                 echo "Prototype: $try" ;;
11658         esac
11659         ;;
11660         *)      case "$usethreads" in
11661                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11662                 esac
11663                 d_drand48_r=undef
11664                 drand48_r_proto=0
11665                 ;;
11666         esac
11667         ;;
11668 *)      drand48_r_proto=0
11669         ;;
11670 esac
11671
11672 : see if prototype for drand48 is available
11673 echo " "
11674 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11675 eval $hasproto
11676
11677 : see if dup2 exists
11678 set dup2 d_dup2
11679 eval $inlibc
11680
11681 : see if eaccess exists
11682 set eaccess d_eaccess
11683 eval $inlibc
11684
11685 : see if endgrent exists
11686 set endgrent d_endgrent
11687 eval $inlibc
11688
11689 : see if this is an grp system
11690 set grp.h i_grp
11691 eval $inhdr
11692
11693 case "$i_grp" in
11694 $define)
11695         xxx=`./findhdr grp.h`
11696         $cppstdin $cppflags $cppminus < $xxx >$$.h
11697
11698         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11699                 val="$define"
11700         else
11701                 val="$undef"
11702         fi
11703         set d_grpasswd
11704         eval $setvar
11705
11706         $rm -f $$.h
11707         ;;
11708 *)
11709         val="$undef";
11710         set d_grpasswd; eval $setvar
11711         ;;
11712 esac
11713
11714 : see if endgrent_r exists
11715 set endgrent_r d_endgrent_r
11716 eval $inlibc
11717 case "$d_endgrent_r" in
11718 "$define")
11719         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11720         case "$d_endgrent_r_proto:$usethreads" in
11721         ":define")      d_endgrent_r_proto=define
11722                 set d_endgrent_r_proto endgrent_r $hdrs
11723                 eval $hasproto ;;
11724         *)      ;;
11725         esac
11726         case "$d_endgrent_r_proto" in
11727         define)
11728         case "$endgrent_r_proto" in
11729         ''|0) try='int endgrent_r(FILE**);'
11730         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11731         esac
11732         case "$endgrent_r_proto" in
11733         ''|0) try='void endgrent_r(FILE**);'
11734         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11735         esac
11736         case "$endgrent_r_proto" in
11737         ''|0)   d_endgrent_r=undef
11738                 endgrent_r_proto=0
11739                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11740         * )     case "$endgrent_r_proto" in
11741                 REENTRANT_PROTO*) ;;
11742                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11743                 esac
11744                 echo "Prototype: $try" ;;
11745         esac
11746         ;;
11747         *)      case "$usethreads" in
11748                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11749                 esac
11750                 d_endgrent_r=undef
11751                 endgrent_r_proto=0
11752                 ;;
11753         esac
11754         ;;
11755 *)      endgrent_r_proto=0
11756         ;;
11757 esac
11758
11759 : see if endhostent exists
11760 set endhostent d_endhent
11761 eval $inlibc
11762
11763 : see if this is a netdb.h system
11764 set netdb.h i_netdb
11765 eval $inhdr
11766
11767 : see if endhostent_r exists
11768 set endhostent_r d_endhostent_r
11769 eval $inlibc
11770 case "$d_endhostent_r" in
11771 "$define")
11772         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11773         case "$d_endhostent_r_proto:$usethreads" in
11774         ":define")      d_endhostent_r_proto=define
11775                 set d_endhostent_r_proto endhostent_r $hdrs
11776                 eval $hasproto ;;
11777         *)      ;;
11778         esac
11779         case "$d_endhostent_r_proto" in
11780         define)
11781         case "$endhostent_r_proto" in
11782         ''|0) try='int endhostent_r(struct hostent_data*);'
11783         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11784         esac
11785         case "$endhostent_r_proto" in
11786         ''|0) try='void endhostent_r(struct hostent_data*);'
11787         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11788         esac
11789         case "$endhostent_r_proto" in
11790         ''|0)   d_endhostent_r=undef
11791                 endhostent_r_proto=0
11792                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11793         * )     case "$endhostent_r_proto" in
11794                 REENTRANT_PROTO*) ;;
11795                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11796                 esac
11797                 echo "Prototype: $try" ;;
11798         esac
11799         ;;
11800         *)      case "$usethreads" in
11801                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11802                 esac
11803                 d_endhostent_r=undef
11804                 endhostent_r_proto=0
11805                 ;;
11806         esac
11807         ;;
11808 *)      endhostent_r_proto=0
11809         ;;
11810 esac
11811
11812 : see if endnetent exists
11813 set endnetent d_endnent
11814 eval $inlibc
11815
11816 : see if endnetent_r exists
11817 set endnetent_r d_endnetent_r
11818 eval $inlibc
11819 case "$d_endnetent_r" in
11820 "$define")
11821         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11822         case "$d_endnetent_r_proto:$usethreads" in
11823         ":define")      d_endnetent_r_proto=define
11824                 set d_endnetent_r_proto endnetent_r $hdrs
11825                 eval $hasproto ;;
11826         *)      ;;
11827         esac
11828         case "$d_endnetent_r_proto" in
11829         define)
11830         case "$endnetent_r_proto" in
11831         ''|0) try='int endnetent_r(struct netent_data*);'
11832         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11833         esac
11834         case "$endnetent_r_proto" in
11835         ''|0) try='void endnetent_r(struct netent_data*);'
11836         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11837         esac
11838         case "$endnetent_r_proto" in
11839         ''|0)   d_endnetent_r=undef
11840                 endnetent_r_proto=0
11841                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11842         * )     case "$endnetent_r_proto" in
11843                 REENTRANT_PROTO*) ;;
11844                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11845                 esac
11846                 echo "Prototype: $try" ;;
11847         esac
11848         ;;
11849         *)      case "$usethreads" in
11850                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11851                 esac
11852                 d_endnetent_r=undef
11853                 endnetent_r_proto=0
11854                 ;;
11855         esac
11856         ;;
11857 *)      endnetent_r_proto=0
11858         ;;
11859 esac
11860
11861 : see if endprotoent exists
11862 set endprotoent d_endpent
11863 eval $inlibc
11864
11865 : see if endprotoent_r exists
11866 set endprotoent_r d_endprotoent_r
11867 eval $inlibc
11868 case "$d_endprotoent_r" in
11869 "$define")
11870         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11871         case "$d_endprotoent_r_proto:$usethreads" in
11872         ":define")      d_endprotoent_r_proto=define
11873                 set d_endprotoent_r_proto endprotoent_r $hdrs
11874                 eval $hasproto ;;
11875         *)      ;;
11876         esac
11877         case "$d_endprotoent_r_proto" in
11878         define)
11879         case "$endprotoent_r_proto" in
11880         ''|0) try='int endprotoent_r(struct protoent_data*);'
11881         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11882         esac
11883         case "$endprotoent_r_proto" in
11884         ''|0) try='void endprotoent_r(struct protoent_data*);'
11885         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11886         esac
11887         case "$endprotoent_r_proto" in
11888         ''|0)   d_endprotoent_r=undef
11889                 endprotoent_r_proto=0
11890                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11891         * )     case "$endprotoent_r_proto" in
11892                 REENTRANT_PROTO*) ;;
11893                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11894                 esac
11895                 echo "Prototype: $try" ;;
11896         esac
11897         ;;
11898         *)      case "$usethreads" in
11899                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11900                 esac
11901                 d_endprotoent_r=undef
11902                 endprotoent_r_proto=0
11903                 ;;
11904         esac
11905         ;;
11906 *)      endprotoent_r_proto=0
11907         ;;
11908 esac
11909
11910 : see if endpwent exists
11911 set endpwent d_endpwent
11912 eval $inlibc
11913
11914 : see if this is a pwd.h system
11915 set pwd.h i_pwd
11916 eval $inhdr
11917
11918 case "$i_pwd" in
11919 $define)
11920         xxx=`./findhdr pwd.h`
11921         $cppstdin $cppflags $cppminus < $xxx >$$.h
11922
11923         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11924                 val="$define"
11925         else
11926                 val="$undef"
11927         fi
11928         set d_pwquota
11929         eval $setvar
11930
11931         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11932                 val="$define"
11933         else
11934                 val="$undef"
11935         fi
11936         set d_pwage
11937         eval $setvar
11938
11939         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11940                 val="$define"
11941         else
11942                 val="$undef"
11943         fi
11944         set d_pwchange
11945         eval $setvar
11946
11947         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11948                 val="$define"
11949         else
11950                 val="$undef"
11951         fi
11952         set d_pwclass
11953         eval $setvar
11954
11955         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11956                 val="$define"
11957         else
11958                 val="$undef"
11959         fi
11960         set d_pwexpire
11961         eval $setvar
11962
11963         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11964                 val="$define"
11965         else
11966                 val="$undef"
11967         fi
11968         set d_pwcomment
11969         eval $setvar
11970
11971         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11972                 val="$define"
11973         else
11974                 val="$undef"
11975         fi
11976         set d_pwgecos
11977         eval $setvar
11978
11979         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11980                 val="$define"
11981         else
11982                 val="$undef"
11983         fi
11984         set d_pwpasswd
11985         eval $setvar
11986
11987         $rm -f $$.h
11988         ;;
11989 *)
11990         val="$undef"; 
11991         set d_pwquota; eval $setvar
11992         set d_pwage; eval $setvar
11993         set d_pwchange; eval $setvar
11994         set d_pwclass; eval $setvar
11995         set d_pwexpire; eval $setvar
11996         set d_pwcomment; eval $setvar
11997         set d_pwgecos; eval $setvar
11998         set d_pwpasswd; eval $setvar
11999         ;;
12000 esac
12001
12002 : see if endpwent_r exists
12003 set endpwent_r d_endpwent_r
12004 eval $inlibc
12005 case "$d_endpwent_r" in
12006 "$define")
12007         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12008         case "$d_endpwent_r_proto:$usethreads" in
12009         ":define")      d_endpwent_r_proto=define
12010                 set d_endpwent_r_proto endpwent_r $hdrs
12011                 eval $hasproto ;;
12012         *)      ;;
12013         esac
12014         case "$d_endpwent_r_proto" in
12015         define)
12016         case "$endpwent_r_proto" in
12017         ''|0) try='int endpwent_r(FILE**);'
12018         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
12019         esac
12020         case "$endpwent_r_proto" in
12021         ''|0) try='void endpwent_r(FILE**);'
12022         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
12023         esac
12024         case "$endpwent_r_proto" in
12025         ''|0)   d_endpwent_r=undef
12026                 endpwent_r_proto=0
12027                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12028         * )     case "$endpwent_r_proto" in
12029                 REENTRANT_PROTO*) ;;
12030                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12031                 esac
12032                 echo "Prototype: $try" ;;
12033         esac
12034         ;;
12035         *)      case "$usethreads" in
12036                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12037                 esac
12038                 d_endpwent_r=undef
12039                 endpwent_r_proto=0
12040                 ;;
12041         esac
12042         ;;
12043 *)      endpwent_r_proto=0
12044         ;;
12045 esac
12046
12047 : see if endservent exists
12048 set endservent d_endsent
12049 eval $inlibc
12050
12051 : see if endservent_r exists
12052 set endservent_r d_endservent_r
12053 eval $inlibc
12054 case "$d_endservent_r" in
12055 "$define")
12056         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12057         case "$d_endservent_r_proto:$usethreads" in
12058         ":define")      d_endservent_r_proto=define
12059                 set d_endservent_r_proto endservent_r $hdrs
12060                 eval $hasproto ;;
12061         *)      ;;
12062         esac
12063         case "$d_endservent_r_proto" in
12064         define)
12065         case "$endservent_r_proto" in
12066         ''|0) try='int endservent_r(struct servent_data*);'
12067         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12068         esac
12069         case "$endservent_r_proto" in
12070         ''|0) try='void endservent_r(struct servent_data*);'
12071         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12072         esac
12073         case "$endservent_r_proto" in
12074         ''|0)   d_endservent_r=undef
12075                 endservent_r_proto=0
12076                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12077         * )     case "$endservent_r_proto" in
12078                 REENTRANT_PROTO*) ;;
12079                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12080                 esac
12081                 echo "Prototype: $try" ;;
12082         esac
12083         ;;
12084         *)      case "$usethreads" in
12085                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12086                 esac
12087                 d_endservent_r=undef
12088                 endservent_r_proto=0
12089                 ;;
12090         esac
12091         ;;
12092 *)      endservent_r_proto=0
12093         ;;
12094 esac
12095
12096 : Locate the flags for 'open()'
12097 echo " "
12098 $cat >try.c <<EOCP
12099 #include <sys/types.h>
12100 #ifdef I_FCNTL
12101 #include <fcntl.h>
12102 #endif
12103 #ifdef I_SYS_FILE
12104 #include <sys/file.h>
12105 #endif
12106 #$i_stdlib I_STDLIB
12107 #ifdef I_STDLIB
12108 #include <stdlib.h>
12109 #endif
12110 int main() {
12111         if(O_RDONLY);
12112 #ifdef O_TRUNC
12113         exit(0);
12114 #else
12115         exit(1);
12116 #endif
12117 }
12118 EOCP
12119 : check sys/file.h first to get FREAD on Sun
12120 if $test `./findhdr sys/file.h` && \
12121                 set try -DI_SYS_FILE && eval $compile; then
12122         h_sysfile=true;
12123         echo "<sys/file.h> defines the O_* constants..." >&4
12124         if $run ./try; then
12125                 echo "and you have the 3 argument form of open()." >&4
12126                 val="$define"
12127         else
12128                 echo "but not the 3 argument form of open().  Oh, well." >&4
12129                 val="$undef"
12130         fi
12131 elif $test `./findhdr fcntl.h` && \
12132                 set try -DI_FCNTL && eval $compile; then
12133         h_fcntl=true;
12134         echo "<fcntl.h> defines the O_* constants..." >&4
12135         if $run ./try; then
12136                 echo "and you have the 3 argument form of open()." >&4
12137                 val="$define"
12138         else
12139                 echo "but not the 3 argument form of open().  Oh, well." >&4
12140                 val="$undef"
12141         fi
12142 else
12143         val="$undef"
12144         echo "I can't find the O_* constant definitions!  You got problems." >&4
12145 fi
12146 set d_open3
12147 eval $setvar
12148 $rm_try
12149
12150 : see which of string.h or strings.h is needed
12151 echo " "
12152 strings=`./findhdr string.h`
12153 if $test "$strings" && $test -r "$strings"; then
12154         echo "Using <string.h> instead of <strings.h>." >&4
12155         val="$define"
12156 else
12157         val="$undef"
12158         strings=`./findhdr strings.h`
12159         if $test "$strings" && $test -r "$strings"; then
12160                 echo "Using <strings.h> instead of <string.h>." >&4
12161         else
12162                 echo "No string header found -- You'll surely have problems." >&4
12163         fi
12164 fi
12165 set i_string
12166 eval $setvar
12167 case "$i_string" in
12168 "$undef") strings=`./findhdr strings.h`;;
12169 *)        strings=`./findhdr string.h`;;
12170 esac
12171
12172 : see if this is a sys/file.h system
12173 val=''
12174 set sys/file.h val
12175 eval $inhdr
12176
12177 : do we need to include sys/file.h ?
12178 case "$val" in
12179 "$define")
12180         echo " "
12181         if $h_sysfile; then
12182                 val="$define"
12183                 echo "We'll be including <sys/file.h>." >&4
12184         else
12185                 val="$undef"
12186                 echo "We won't be including <sys/file.h>." >&4
12187         fi
12188         ;;
12189 *)
12190         h_sysfile=false
12191         ;;
12192 esac
12193 set i_sysfile
12194 eval $setvar
12195
12196 : see if fcntl.h is there
12197 val=''
12198 set fcntl.h val
12199 eval $inhdr
12200
12201 : see if we can include fcntl.h
12202 case "$val" in
12203 "$define")
12204         echo " "
12205         if $h_fcntl; then
12206                 val="$define"
12207                 echo "We'll be including <fcntl.h>." >&4
12208         else
12209                 val="$undef"
12210                 if $h_sysfile; then
12211         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12212                 else
12213                         echo "We won't be including <fcntl.h>." >&4
12214                 fi
12215         fi
12216         ;;
12217 *)
12218         h_fcntl=false
12219         val="$undef"
12220         ;;
12221 esac
12222 set i_fcntl
12223 eval $setvar
12224
12225 : see if fork exists
12226 set fork d_fork
12227 eval $inlibc
12228
12229 : see if pipe exists
12230 set pipe d_pipe
12231 eval $inlibc
12232
12233 : check for non-blocking I/O stuff
12234 case "$h_sysfile" in
12235 true) echo "#include <sys/file.h>" > head.c;;
12236 *)
12237        case "$h_fcntl" in
12238        true) echo "#include <fcntl.h>" > head.c;;
12239        *) echo "#include <sys/fcntl.h>" > head.c;;
12240        esac
12241        ;;
12242 esac
12243 echo " "
12244 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12245 case "$o_nonblock" in
12246 '')
12247         $cat head.c > try.c
12248         $cat >>try.c <<EOCP
12249 #include <stdio.h>
12250 #$i_stdlib I_STDLIB
12251 #ifdef I_STDLIB
12252 #include <stdlib.h>
12253 #endif
12254 #$i_fcntl I_FCNTL
12255 #ifdef I_FCNTL
12256 #include <fcntl.h>
12257 #endif
12258 int main() {
12259 #ifdef O_NONBLOCK
12260         printf("O_NONBLOCK\n");
12261         exit(0);
12262 #endif
12263 #ifdef O_NDELAY
12264         printf("O_NDELAY\n");
12265         exit(0);
12266 #endif
12267 #ifdef FNDELAY
12268         printf("FNDELAY\n");
12269         exit(0);
12270 #endif
12271         exit(0);
12272 }
12273 EOCP
12274         set try
12275         if eval $compile_ok; then
12276                 o_nonblock=`$run ./try`
12277                 case "$o_nonblock" in
12278                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12279                 *) echo "Seems like we can use $o_nonblock.";;
12280                 esac
12281         else
12282                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12283         fi
12284         ;;
12285 *) echo "Using $hint value $o_nonblock.";;
12286 esac
12287 $rm_try
12288
12289 echo " "
12290 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12291 case "$eagain" in
12292 '')
12293         case "$d_fork:$d_pipe" in
12294         define:define)
12295         $cat head.c > try.c
12296         $cat >>try.c <<EOCP
12297 #include <errno.h>
12298 #include <sys/types.h>
12299 #include <signal.h>
12300 #include <stdio.h>
12301 #$i_stdlib I_STDLIB
12302 #ifdef I_STDLIB
12303 #include <stdlib.h>
12304 #endif
12305 #$i_fcntl I_FCNTL
12306 #ifdef I_FCNTL
12307 #include <fcntl.h>
12308 #endif
12309 #define MY_O_NONBLOCK $o_nonblock
12310 #ifndef errno  /* XXX need better Configure test */
12311 extern int errno;
12312 #endif
12313 #$i_unistd I_UNISTD
12314 #ifdef I_UNISTD
12315 #include <unistd.h>
12316 #endif
12317 #$i_string I_STRING
12318 #ifdef I_STRING
12319 #include <string.h>
12320 #else
12321 #include <strings.h>
12322 #endif
12323 $signal_t blech(int x) { exit(3); }
12324 EOCP
12325         $cat >> try.c <<'EOCP'
12326 int main()
12327 {
12328         int pd[2];
12329         int pu[2];
12330         char buf[1];
12331         char string[100];
12332
12333         pipe(pd);       /* Down: child -> parent */
12334         pipe(pu);       /* Up: parent -> child */
12335         if (0 != fork()) {
12336                 int ret;
12337                 close(pd[1]);   /* Parent reads from pd[0] */
12338                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12339 #ifdef F_SETFL
12340                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12341                         exit(1);
12342 #else
12343                 exit(4);
12344 #endif
12345                 signal(SIGALRM, blech);
12346                 alarm(5);
12347                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12348                         exit(2);
12349                 sprintf(string, "%d\n", ret);
12350                 write(2, string, strlen(string));
12351                 alarm(0);
12352 #ifdef EAGAIN
12353                 if (errno == EAGAIN) {
12354                         printf("EAGAIN\n");
12355                         goto ok;
12356                 }
12357 #endif
12358 #ifdef EWOULDBLOCK
12359                 if (errno == EWOULDBLOCK)
12360                         printf("EWOULDBLOCK\n");
12361 #endif
12362         ok:
12363                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12364                 sleep(2);                               /* Give it time to close our pipe */
12365                 alarm(5);
12366                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12367                 alarm(0);
12368                 sprintf(string, "%d\n", ret);
12369                 write(4, string, strlen(string));
12370                 exit(0);
12371         }
12372
12373         close(pd[0]);                   /* We write to pd[1] */
12374         close(pu[1]);                   /* We read from pu[0] */
12375         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12376         close(pd[1]);                   /* Pipe pd is now fully closed! */
12377         exit(0);                                /* Bye bye, thank you for playing! */
12378 }
12379 EOCP
12380         set try
12381         if eval $compile_ok; then
12382                 echo "$startsh" >mtry
12383                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12384                 chmod +x mtry
12385                 ./mtry >/dev/null 2>&1
12386                 case $? in
12387                 0) eagain=`$cat try.out`;;
12388                 1) echo "Could not perform non-blocking setting!";;
12389                 2) echo "I did a successful read() for something that was not there!";;
12390                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12391                 4) echo "Could not find F_SETFL!";;
12392                 *) echo "Something terribly wrong happened during testing.";;
12393                 esac
12394                 rd_nodata=`$cat try.ret`
12395                 echo "A read() system call with no data present returns $rd_nodata."
12396                 case "$rd_nodata" in
12397                 0|-1) ;;
12398                 *)
12399                         echo "(That's peculiar, fixing that to be -1.)"
12400                         rd_nodata=-1
12401                         ;;
12402                 esac
12403                 case "$eagain" in
12404                 '')
12405                         echo "Forcing errno EAGAIN on read() with no data available."
12406                         eagain=EAGAIN
12407                         ;;
12408                 *)
12409                         echo "Your read() sets errno to $eagain when no data is available."
12410                         ;;
12411                 esac
12412                 status=`$cat try.err`
12413                 case "$status" in
12414                 0) echo "And it correctly returns 0 to signal EOF.";;
12415                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12416                 *) echo "However, your read() returns '$status' on EOF??";;
12417                 esac
12418                 val="$define"
12419                 if test "$status" = "$rd_nodata"; then
12420                         echo "WARNING: you can't distinguish between EOF and no data!"
12421                         val="$undef"
12422                 fi
12423         else
12424                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12425                 eagain=EAGAIN
12426         fi
12427         ;;
12428         *)      echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12429                 eagain=EAGAIN
12430                 val="$define"
12431                 ;;
12432         esac
12433         set d_eofnblk
12434         eval $setvar
12435         ;;
12436 *)
12437         echo "Using $hint value $eagain."
12438         echo "Your read() returns $rd_nodata when no data is present."
12439         case "$d_eofnblk" in
12440         "$define") echo "And you can see EOF because read() returns 0.";;
12441         "$undef") echo "But you can't see EOF status from read() returned value.";;
12442         *)
12443                 echo "(Assuming you can't see EOF status from read anyway.)"
12444                 d_eofnblk=$undef
12445                 ;;
12446         esac
12447         ;;
12448 esac
12449 $rm_try head.c mtry
12450
12451 : see if _ptr and _cnt from stdio act std
12452 echo " "
12453
12454 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12455         echo "(Looks like you have stdio.h from BSD.)"
12456         case "$stdio_ptr" in
12457         '') stdio_ptr='((fp)->_p)'
12458                 ptr_lval=$define
12459                 ;;
12460         *)      ptr_lval=$d_stdio_ptr_lval;;
12461         esac
12462         case "$stdio_cnt" in
12463         '') stdio_cnt='((fp)->_r)'
12464                 cnt_lval=$define
12465                 ;;
12466         *)      cnt_lval=$d_stdio_cnt_lval;;
12467         esac
12468         case "$stdio_base" in
12469         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12470         esac
12471         case "$stdio_bufsiz" in
12472         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12473         esac
12474 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12475         echo "(Looks like you have stdio.h from Linux.)"
12476         case "$stdio_ptr" in
12477         '') stdio_ptr='((fp)->_IO_read_ptr)'
12478                 ptr_lval=$define
12479                 ;;
12480         *)      ptr_lval=$d_stdio_ptr_lval;;
12481         esac
12482         case "$stdio_cnt" in
12483         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12484                 cnt_lval=$undef
12485                 ;;
12486         *)      cnt_lval=$d_stdio_cnt_lval;;
12487         esac
12488         case "$stdio_base" in
12489         '') stdio_base='((fp)->_IO_read_base)';;
12490         esac
12491         case "$stdio_bufsiz" in
12492         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12493         esac
12494 else
12495         case "$stdio_ptr" in
12496         '') stdio_ptr='((fp)->_ptr)'
12497                 ptr_lval=$define
12498                 ;;
12499         *)      ptr_lval=$d_stdio_ptr_lval;;
12500         esac
12501         case "$stdio_cnt" in
12502         '') stdio_cnt='((fp)->_cnt)'
12503                 cnt_lval=$define
12504                 ;;
12505         *)      cnt_lval=$d_stdio_cnt_lval;;
12506         esac
12507         case "$stdio_base" in
12508         '') stdio_base='((fp)->_base)';;
12509         esac
12510         case "$stdio_bufsiz" in
12511         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12512         esac
12513 fi
12514
12515 : test whether _ptr and _cnt really work
12516 echo "Checking how std your stdio is..." >&4
12517 $cat >try.c <<EOP
12518 #include <stdio.h>
12519 #$i_stdlib I_STDLIB
12520 #ifdef I_STDLIB
12521 #include <stdlib.h>
12522 #endif
12523 #define FILE_ptr(fp)    $stdio_ptr
12524 #define FILE_cnt(fp)    $stdio_cnt
12525 int main() {
12526         FILE *fp = fopen("try.c", "r");
12527         char c = getc(fp);
12528         if (
12529                 18 <= FILE_cnt(fp) &&
12530                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12531         )
12532                 exit(0);
12533         exit(1);
12534 }
12535 EOP
12536 val="$undef"
12537 set try
12538 if eval $compile && $to try.c; then
12539         if $run ./try; then
12540                 echo "Your stdio acts pretty std."
12541                 val="$define"
12542         else
12543                 echo "Your stdio isn't very std."
12544         fi
12545 else
12546         echo "Your stdio doesn't appear very std."
12547 fi
12548 $rm_try
12549
12550 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12551 # direct buffer manipulation no longer works.  The Configure tests
12552 # should be changed to correctly detect this, but until then,
12553 # the following check should at least let perl compile and run.
12554 # (This quick fix should be updated before 5.8.1.)
12555 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12556 # A. Dougherty, June 3, 2002.
12557 case "$d_gnulibc" in
12558 $define)
12559         case "$gnulibc_version" in
12560         2.[01]*)  ;;
12561         2.2) ;;
12562         2.2.[0-9]) ;;
12563         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12564                 val="$undef"
12565                 ;;
12566         esac
12567         ;;
12568 esac
12569 set d_stdstdio
12570 eval $setvar
12571
12572 : Can _ptr be used as an lvalue?
12573 case "$d_stdstdio$ptr_lval" in
12574 $define$define) val=$define ;;
12575 *) val=$undef ;;
12576 esac
12577 set d_stdio_ptr_lval
12578 eval $setvar
12579
12580 : Can _cnt be used as an lvalue?
12581 case "$d_stdstdio$cnt_lval" in
12582 $define$define) val=$define ;;
12583 *) val=$undef ;;
12584 esac
12585 set d_stdio_cnt_lval
12586 eval $setvar
12587
12588
12589 : test whether setting _ptr sets _cnt as a side effect
12590 d_stdio_ptr_lval_sets_cnt="$undef"
12591 d_stdio_ptr_lval_nochange_cnt="$undef"
12592 case "$d_stdio_ptr_lval$d_stdstdio" in
12593 $define$define)
12594         echo "Checking to see what happens if we set the stdio ptr..." >&4
12595 $cat >try.c <<EOP
12596 #include <stdio.h>
12597 /* Can we scream? */
12598 /* Eat dust sed :-) */
12599 /* In the buffer space, no one can hear you scream. */
12600 #$i_stdlib I_STDLIB
12601 #ifdef I_STDLIB
12602 #include <stdlib.h>
12603 #endif
12604 #define FILE_ptr(fp)    $stdio_ptr
12605 #define FILE_cnt(fp)    $stdio_cnt
12606 #include <sys/types.h>
12607 int main() {
12608         FILE *fp = fopen("try.c", "r");
12609         int c;
12610         char *ptr;
12611         size_t cnt;
12612         if (!fp) {
12613             puts("Fail even to read");
12614             exit(1);
12615         }
12616         c = getc(fp); /* Read away the first # */
12617         if (c == EOF) {
12618             puts("Fail even to read");
12619             exit(1);
12620         }
12621         if (!(
12622                 18 <= FILE_cnt(fp) &&
12623                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12624         )) {
12625                 puts("Fail even to read");
12626                 exit (1);
12627         }
12628         ptr = (char*) FILE_ptr(fp);
12629         cnt = (size_t)FILE_cnt(fp);
12630
12631         FILE_ptr(fp) += 42;
12632
12633         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12634                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12635                 exit (1);
12636         }
12637         if (FILE_cnt(fp) <= 20) {
12638                 printf ("Fail (<20 chars to test)");
12639                 exit (1);
12640         }
12641         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12642                 puts("Fail compare");
12643                 exit (1);
12644         }
12645         if (cnt == FILE_cnt(fp)) {
12646                 puts("Pass_unchanged");
12647                 exit (0);
12648         }
12649         if (FILE_cnt(fp) == (cnt - 42)) {
12650                 puts("Pass_changed");
12651                 exit (0);
12652         }
12653         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12654         return 1;
12655
12656 }
12657 EOP
12658         set try
12659         if eval $compile && $to try.c; then
12660                 case `$run ./try` in
12661                 Pass_changed)
12662                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12663                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12664                 Pass_unchanged)
12665                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12666                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12667                 Fail*)
12668                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12669                 *)
12670                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12671         esac
12672         else
12673                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12674         fi
12675         $rm_try
12676         ;;
12677 esac
12678
12679 : see if _base is also standard
12680 val="$undef"
12681 case "$d_stdstdio" in
12682 $define)
12683         $cat >try.c <<EOP
12684 #include <stdio.h>
12685 #$i_stdlib I_STDLIB
12686 #ifdef I_STDLIB
12687 #include <stdlib.h>
12688 #endif
12689 #define FILE_base(fp)   $stdio_base
12690 #define FILE_bufsiz(fp) $stdio_bufsiz
12691 int main() {
12692         FILE *fp = fopen("try.c", "r");
12693         char c = getc(fp);
12694         if (
12695                 19 <= FILE_bufsiz(fp) &&
12696                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12697         )
12698                 exit(0);
12699         exit(1);
12700 }
12701 EOP
12702         set try
12703         if eval $compile && $to try.c; then
12704                 if $run ./try; then
12705                         echo "And its _base field acts std."
12706                         val="$define"
12707                 else
12708                         echo "But its _base field isn't std."
12709                 fi
12710         else
12711                 echo "However, it seems to be lacking the _base field."
12712         fi
12713         $rm_try
12714         ;;
12715 esac
12716 set d_stdiobase
12717 eval $setvar
12718
12719 : see if fast_stdio exists
12720 val="$undef"
12721 case "$d_stdstdio:$d_stdio_ptr_lval" in
12722 "$define:$define")
12723         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12724         *$define*)
12725                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12726                 val="$define"
12727                 ;;
12728         esac
12729         ;;
12730 esac
12731 set d_faststdio
12732 eval $setvar
12733
12734
12735
12736 : see if fchdir exists
12737 set fchdir d_fchdir
12738 eval $inlibc
12739
12740 : see if fchmod exists
12741 set fchmod d_fchmod
12742 eval $inlibc
12743
12744 : see if fchown exists
12745 set fchown d_fchown
12746 eval $inlibc
12747
12748 : see if this is an fcntl system
12749 set fcntl d_fcntl
12750 eval $inlibc
12751
12752 echo " "
12753 : See if fcntl-based locking works.
12754 $cat >try.c <<EOCP
12755 #$i_stdlib I_STDLIB
12756 #ifdef I_STDLIB
12757 #include <stdlib.h>
12758 #endif
12759 #include <unistd.h>
12760 #include <fcntl.h>
12761 #include <signal.h>
12762 $signal_t blech(int x) { exit(3); }
12763 int main() {
12764 #if defined(F_SETLK) && defined(F_SETLKW)
12765      struct flock flock;
12766      int retval, fd;
12767      fd = open("try.c", O_RDONLY);
12768      flock.l_type = F_RDLCK;
12769      flock.l_whence = SEEK_SET;
12770      flock.l_start = flock.l_len = 0;
12771      signal(SIGALRM, blech);
12772      alarm(10);
12773      retval = fcntl(fd, F_SETLK, &flock);
12774      close(fd);
12775      (retval < 0 ? exit(2) : exit(0));
12776 #else
12777      exit(2);
12778 #endif
12779 }
12780 EOCP
12781 echo "Checking if fcntl-based file locking works... "
12782 case "$d_fcntl" in
12783 "$define")
12784         set try
12785         if eval $compile_ok; then
12786                 if $run ./try; then
12787                         echo "Yes, it seems to work."
12788                         val="$define"
12789                 else
12790                         echo "Nope, it didn't work."
12791                         val="$undef"
12792                         case "$?" in
12793                         3) $cat >&4 <<EOM
12794 ***
12795 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12796 *** This is (almost) impossible.
12797 *** If your NFS lock daemons are not feeling well, something like
12798 *** this may happen, please investigate.  Cannot continue, aborting.
12799 ***
12800 EOM
12801                                 exit 1
12802                                 ;;
12803                         esac
12804                 fi
12805         else
12806                 echo "I'm unable to compile the test program, so I'll assume not."
12807                 val="$undef"
12808         fi
12809         ;;
12810 *) val="$undef";
12811         echo "Nope, since you don't even have fcntl()."
12812         ;;
12813 esac
12814 set d_fcntl_can_lock
12815 eval $setvar
12816 $rm_try
12817
12818 : check for fd_set items
12819 $cat <<EOM
12820
12821 Checking to see how well your C compiler handles fd_set and friends ...
12822 EOM
12823 $cat >try.c <<EOCP
12824 #$i_stdlib I_STDLIB
12825 #ifdef I_STDLIB
12826 #include <stdlib.h>
12827 #endif
12828 #$i_systime I_SYS_TIME
12829 #$i_sysselct I_SYS_SELECT
12830 #$d_socket HAS_SOCKET
12831 #include <sys/types.h>
12832 #ifdef HAS_SOCKET
12833 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12834 #endif
12835 #ifdef I_SYS_TIME
12836 #include <sys/time.h>
12837 #endif
12838 #ifdef I_SYS_SELECT
12839 #include <sys/select.h>
12840 #endif
12841 int main() {
12842         fd_set fds;
12843
12844 #ifdef TRYBITS
12845         if(fds.fds_bits);
12846 #endif
12847
12848 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12849         exit(0);
12850 #else
12851         exit(1);
12852 #endif
12853 }
12854 EOCP
12855 set try -DTRYBITS
12856 if eval $compile; then
12857         d_fds_bits="$define"
12858         d_fd_set="$define"
12859         echo "Well, your system knows about the normal fd_set typedef..." >&4
12860         if $run ./try; then
12861                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12862                 d_fd_macros="$define"
12863         else
12864                 $cat >&4 <<'EOM'
12865 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12866 EOM
12867                 d_fd_macros="$undef"
12868         fi
12869 else
12870         $cat <<'EOM'
12871 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12872 EOM
12873         set try
12874         if eval $compile; then
12875                 d_fds_bits="$undef"
12876                 d_fd_set="$define"
12877                 echo "Well, your system has some sort of fd_set available..." >&4
12878                 if $run ./try; then
12879                         echo "and you have the normal fd_set macros." >&4
12880                         d_fd_macros="$define"
12881                 else
12882                         $cat <<'EOM'
12883 but not the normal fd_set macros!  Gross!  More work for me...
12884 EOM
12885                         d_fd_macros="$undef"
12886                 fi
12887         else
12888         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12889                 d_fd_set="$undef"
12890                 d_fds_bits="$undef"
12891                 d_fd_macros="$undef"
12892         fi
12893 fi
12894 $rm_try
12895
12896 : see if fgetpos exists
12897 set fgetpos d_fgetpos
12898 eval $inlibc
12899
12900 : see if finite exists
12901 set finite d_finite
12902 eval $inlibc
12903
12904 : see if finitel exists
12905 set finitel d_finitel
12906 eval $inlibc
12907
12908 : see if flock exists
12909 set flock d_flock
12910 eval $inlibc
12911
12912 : see if prototype for flock is available
12913 echo " "
12914 set d_flockproto flock $i_sysfile sys/file.h
12915 eval $hasproto
12916
12917 : see if fp_class exists
12918 set fp_class d_fp_class
12919 eval $inlibc
12920
12921 : see if pathconf exists
12922 set pathconf d_pathconf
12923 eval $inlibc
12924
12925 : see if fpathconf exists
12926 set fpathconf d_fpathconf
12927 eval $inlibc
12928
12929 : see if fpclass exists
12930 set fpclass d_fpclass
12931 eval $inlibc
12932
12933 : see if fpclassify exists
12934 set fpclassify d_fpclassify
12935 eval $inlibc
12936
12937 : see if fpclassl exists
12938 set fpclassl d_fpclassl
12939 eval $inlibc
12940
12941
12942 : check for fpos64_t
12943 echo " "
12944 echo "Checking to see if you have fpos64_t..." >&4
12945 $cat >try.c <<EOCP
12946 #include <stdio.h>
12947 int main() { fpos64_t x = 7; }
12948 EOCP
12949 set try
12950 if eval $compile; then
12951         val="$define"
12952         echo "You have fpos64_t."
12953 else
12954         val="$undef"
12955         echo "You do not have fpos64_t."
12956         case "$fpossize" in
12957         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12958         esac
12959 fi
12960 $rm_try
12961 set d_fpos64_t
12962 eval $setvar
12963
12964 : see if frexpl exists
12965 set frexpl d_frexpl
12966 eval $inlibc
12967
12968 : see if this is a sys/param system
12969 set sys/param.h i_sysparam
12970 eval $inhdr
12971
12972 : see if this is a sys/mount.h system
12973 set sys/mount.h i_sysmount
12974 eval $inhdr
12975
12976
12977 echo " "
12978 echo "Checking to see if your system supports struct fs_data..." >&4
12979 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12980 eval $hasstruct
12981 case "$d_fs_data_s" in
12982 "$define")      echo "Yes, it does."   ;;
12983 *)              echo "No, it doesn't." ;;
12984 esac
12985
12986 : see if fseeko exists
12987 set fseeko d_fseeko
12988 eval $inlibc
12989 case "$longsize" in
12990 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12991 esac
12992
12993 : see if fsetpos exists
12994 set fsetpos d_fsetpos
12995 eval $inlibc
12996
12997
12998 : see if fstatfs exists
12999 set fstatfs d_fstatfs
13000 eval $inlibc
13001
13002
13003 : see if statvfs exists
13004 set statvfs d_statvfs
13005 eval $inlibc
13006
13007 : see if fstatvfs exists
13008 set fstatvfs d_fstatvfs
13009 eval $inlibc
13010
13011
13012 : see if fsync exists
13013 set fsync d_fsync
13014 eval $inlibc
13015
13016 : see if ftello exists
13017 set ftello d_ftello
13018 eval $inlibc
13019 case "$longsize" in
13020 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
13021 esac
13022
13023 d_futimes="$undef"
13024 : check for a working futimes
13025 echo " "
13026 echo "Checking if you have a working futimes()" >&4
13027 $cat >try.c <<EOCP
13028 #include <stdio.h>
13029 #include <sys/time.h>
13030 #include <errno.h>
13031 #include <fcntl.h>
13032
13033 int main ()
13034 {
13035     int fd, rv;
13036     fd = open ("try.c", O_RDWR);
13037     if (-1 == fd) exit (1);
13038     rv = futimes (fd, NULL);
13039     exit (rv == -1 ? errno : 0);
13040 }
13041 EOCP
13042 set try
13043 if eval $compile; then
13044     `$run ./try`
13045     rc=$?
13046     case "$rc" in
13047         0)  echo "Yes, you have" >&4
13048             d_futimes="$define"
13049             ;;
13050         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13051             ;;
13052     esac
13053 else
13054     echo "No, it does not (probably harmless)" >&4
13055 fi
13056 $rm_try
13057
13058 : see if getcwd exists
13059 set getcwd d_getcwd
13060 eval $inlibc
13061
13062 : see if getespwnam exists
13063 set getespwnam d_getespwnam
13064 eval $inlibc
13065
13066
13067 : see if getfsstat exists
13068 set getfsstat d_getfsstat
13069 eval $inlibc
13070
13071 : see if getgrent exists
13072 set getgrent d_getgrent
13073 eval $inlibc
13074
13075 : see if getgrent_r exists
13076 set getgrent_r d_getgrent_r
13077 eval $inlibc
13078 case "$d_getgrent_r" in
13079 "$define")
13080         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13081         case "$d_getgrent_r_proto:$usethreads" in
13082         ":define")      d_getgrent_r_proto=define
13083                 set d_getgrent_r_proto getgrent_r $hdrs
13084                 eval $hasproto ;;
13085         *)      ;;
13086         esac
13087         case "$d_getgrent_r_proto" in
13088         define)
13089         case "$getgrent_r_proto" in
13090         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13091         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13092         esac
13093         case "$getgrent_r_proto" in
13094         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13095         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13096         esac
13097         case "$getgrent_r_proto" in
13098         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13099         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13100         esac
13101         case "$getgrent_r_proto" in
13102         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13103         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13104         esac
13105         case "$getgrent_r_proto" in
13106         ''|0) try='int getgrent_r(struct group*, char*, int);'
13107         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13108         esac
13109         case "$getgrent_r_proto" in
13110         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13111         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13112         esac
13113         case "$getgrent_r_proto" in
13114         ''|0)   d_getgrent_r=undef
13115                 getgrent_r_proto=0
13116                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13117         * )     case "$getgrent_r_proto" in
13118                 REENTRANT_PROTO*) ;;
13119                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13120                 esac
13121                 echo "Prototype: $try" ;;
13122         esac
13123         ;;
13124         *)      case "$usethreads" in
13125                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13126                 esac
13127                 d_getgrent_r=undef
13128                 getgrent_r_proto=0
13129                 ;;
13130         esac
13131         ;;
13132 *)      getgrent_r_proto=0
13133         ;;
13134 esac
13135
13136 : see if getgrgid_r exists
13137 set getgrgid_r d_getgrgid_r
13138 eval $inlibc
13139 case "$d_getgrgid_r" in
13140 "$define")
13141         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13142         case "$d_getgrgid_r_proto:$usethreads" in
13143         ":define")      d_getgrgid_r_proto=define
13144                 set d_getgrgid_r_proto getgrgid_r $hdrs
13145                 eval $hasproto ;;
13146         *)      ;;
13147         esac
13148         case "$d_getgrgid_r_proto" in
13149         define)
13150         case "$getgrgid_r_proto" in
13151         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13152         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13153         esac
13154         case "$getgrgid_r_proto" in
13155         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13156         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13157         esac
13158         case "$getgrgid_r_proto" in
13159         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13160         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13161         esac
13162         case "$getgrgid_r_proto" in
13163         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13164         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13165         esac
13166         case "$getgrgid_r_proto" in
13167         ''|0)   d_getgrgid_r=undef
13168                 getgrgid_r_proto=0
13169                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13170         * )     case "$getgrgid_r_proto" in
13171                 REENTRANT_PROTO*) ;;
13172                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13173                 esac
13174                 echo "Prototype: $try" ;;
13175         esac
13176         ;;
13177         *)      case "$usethreads" in
13178                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13179                 esac
13180                 d_getgrgid_r=undef
13181                 getgrgid_r_proto=0
13182                 ;;
13183         esac
13184         ;;
13185 *)      getgrgid_r_proto=0
13186         ;;
13187 esac
13188
13189 : see if getgrnam_r exists
13190 set getgrnam_r d_getgrnam_r
13191 eval $inlibc
13192 case "$d_getgrnam_r" in
13193 "$define")
13194         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13195         case "$d_getgrnam_r_proto:$usethreads" in
13196         ":define")      d_getgrnam_r_proto=define
13197                 set d_getgrnam_r_proto getgrnam_r $hdrs
13198                 eval $hasproto ;;
13199         *)      ;;
13200         esac
13201         case "$d_getgrnam_r_proto" in
13202         define)
13203         case "$getgrnam_r_proto" in
13204         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13205         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13206         esac
13207         case "$getgrnam_r_proto" in
13208         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13209         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13210         esac
13211         case "$getgrnam_r_proto" in
13212         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13213         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13214         esac
13215         case "$getgrnam_r_proto" in
13216         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13217         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13218         esac
13219         case "$getgrnam_r_proto" in
13220         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13221         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13222         esac
13223         case "$getgrnam_r_proto" in
13224         ''|0)   d_getgrnam_r=undef
13225                 getgrnam_r_proto=0
13226                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13227         * )     case "$getgrnam_r_proto" in
13228                 REENTRANT_PROTO*) ;;
13229                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13230                 esac
13231                 echo "Prototype: $try" ;;
13232         esac
13233         ;;
13234         *)      case "$usethreads" in
13235                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13236                 esac
13237                 d_getgrnam_r=undef
13238                 getgrnam_r_proto=0
13239                 ;;
13240         esac
13241         ;;
13242 *)      getgrnam_r_proto=0
13243         ;;
13244 esac
13245
13246 : see if gethostbyaddr exists
13247 set gethostbyaddr d_gethbyaddr
13248 eval $inlibc
13249
13250 : see if gethostbyname exists
13251 set gethostbyname d_gethbyname
13252 eval $inlibc
13253
13254 : see if gethostent exists
13255 set gethostent d_gethent
13256 eval $inlibc
13257
13258 : see how we will look up host name
13259 echo " "
13260 call=''
13261 if set gethostname val -f d_gethname; eval $csym; $val; then
13262         echo 'gethostname() found.' >&4
13263         d_gethname="$define"
13264         call=gethostname
13265 fi
13266 if set uname val -f d_uname; eval $csym; $val; then
13267         if ./xenix; then
13268                 $cat <<'EOM'
13269 uname() was found, but you're running xenix, and older versions of xenix
13270 have a broken uname(). If you don't really know whether your xenix is old
13271 enough to have a broken system call, use the default answer.
13272
13273 EOM
13274                 dflt=y
13275                 case "$d_uname" in
13276                 "$define") dflt=n;;
13277                 esac
13278                 rp='Is your uname() broken?'
13279                 . ./myread
13280                 case "$ans" in
13281                 n*) d_uname="$define"; call=uname;;
13282                 esac
13283         else
13284                 echo 'uname() found.' >&4
13285                 d_uname="$define"
13286                 case "$call" in
13287                 '') call=uname ;;
13288                 esac
13289         fi
13290 fi
13291 case "$d_gethname" in
13292 '') d_gethname="$undef";;
13293 esac
13294 case "$d_uname" in
13295 '') d_uname="$undef";;
13296 esac
13297 case "$d_uname$d_gethname" in
13298 *define*)
13299         dflt=n
13300         cat <<EOM
13301  
13302 Every now and then someone has a $call() that lies about the hostname
13303 but can't be fixed for political or economic reasons.  If you wish, I can
13304 pretend $call() isn't there and maybe compute hostname at run-time
13305 thanks to the '$phostname' command.
13306
13307 EOM
13308         rp="Shall I ignore $call() from now on?"
13309         . ./myread
13310         case "$ans" in
13311         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13312         esac;;
13313 esac
13314 case "$phostname" in
13315 '') aphostname='';;
13316 *) case "$aphostname" in
13317         /*) ;;
13318         *) set X $phostname
13319                 shift
13320                 file=$1
13321                 shift
13322                 file=`./loc $file $file $pth`
13323                 aphostname=`echo $file $*`
13324                 ;;
13325         esac
13326         ;;
13327 esac
13328 case "$d_uname$d_gethname" in
13329 *define*) ;;
13330 *)
13331         case "$phostname" in
13332         '')
13333                 echo "There will be no way for $package to get your hostname." >&4;;
13334         *)
13335         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13336                 ;;
13337         esac;;
13338 esac
13339 case "$d_phostname" in
13340 '') d_phostname="$undef";;
13341 esac
13342
13343 : see if gethostbyaddr_r exists
13344 set gethostbyaddr_r d_gethostbyaddr_r
13345 eval $inlibc
13346 case "$d_gethostbyaddr_r" in
13347 "$define")
13348         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13349         case "$d_gethostbyaddr_r_proto:$usethreads" in
13350         ":define")      d_gethostbyaddr_r_proto=define
13351                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13352                 eval $hasproto ;;
13353         *)      ;;
13354         esac
13355         case "$d_gethostbyaddr_r_proto" in
13356         define)
13357         case "$gethostbyaddr_r_proto" in
13358         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13359         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13360         esac
13361         case "$gethostbyaddr_r_proto" in
13362         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13363         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13364         esac
13365         case "$gethostbyaddr_r_proto" in
13366         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13367         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13368         esac
13369         case "$gethostbyaddr_r_proto" in
13370         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13371         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13372         esac
13373         case "$gethostbyaddr_r_proto" in
13374         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13375         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13376         esac
13377         case "$gethostbyaddr_r_proto" in
13378         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13379         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13380         esac
13381         case "$gethostbyaddr_r_proto" in
13382         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13383         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13384         esac
13385         case "$gethostbyaddr_r_proto" in
13386         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13387         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13388         esac
13389         case "$gethostbyaddr_r_proto" in
13390         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13391         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13392         esac
13393         case "$gethostbyaddr_r_proto" in
13394         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13395         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13396         esac
13397         case "$gethostbyaddr_r_proto" in
13398         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13399         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13400         esac
13401         case "$gethostbyaddr_r_proto" in
13402         ''|0)   d_gethostbyaddr_r=undef
13403                 gethostbyaddr_r_proto=0
13404                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13405         * )     case "$gethostbyaddr_r_proto" in
13406                 REENTRANT_PROTO*) ;;
13407                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13408                 esac
13409                 echo "Prototype: $try" ;;
13410         esac
13411         ;;
13412         *)      case "$usethreads" in
13413                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13414                 esac
13415                 d_gethostbyaddr_r=undef
13416                 gethostbyaddr_r_proto=0
13417                 ;;
13418         esac
13419         ;;
13420 *)      gethostbyaddr_r_proto=0
13421         ;;
13422 esac
13423
13424 : see if gethostbyname_r exists
13425 set gethostbyname_r d_gethostbyname_r
13426 eval $inlibc
13427 case "$d_gethostbyname_r" in
13428 "$define")
13429         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13430         case "$d_gethostbyname_r_proto:$usethreads" in
13431         ":define")      d_gethostbyname_r_proto=define
13432                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13433                 eval $hasproto ;;
13434         *)      ;;
13435         esac
13436         case "$d_gethostbyname_r_proto" in
13437         define)
13438         case "$gethostbyname_r_proto" in
13439         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13440         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13441         esac
13442         case "$gethostbyname_r_proto" in
13443         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13444         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13445         esac
13446         case "$gethostbyname_r_proto" in
13447         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13448         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13449         esac
13450         case "$gethostbyname_r_proto" in
13451         ''|0)   d_gethostbyname_r=undef
13452                 gethostbyname_r_proto=0
13453                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13454         * )     case "$gethostbyname_r_proto" in
13455                 REENTRANT_PROTO*) ;;
13456                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13457                 esac
13458                 echo "Prototype: $try" ;;
13459         esac
13460         ;;
13461         *)      case "$usethreads" in
13462                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13463                 esac
13464                 d_gethostbyname_r=undef
13465                 gethostbyname_r_proto=0
13466                 ;;
13467         esac
13468         ;;
13469 *)      gethostbyname_r_proto=0
13470         ;;
13471 esac
13472
13473 : see if gethostent_r exists
13474 set gethostent_r d_gethostent_r
13475 eval $inlibc
13476 case "$d_gethostent_r" in
13477 "$define")
13478         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13479         case "$d_gethostent_r_proto:$usethreads" in
13480         ":define")      d_gethostent_r_proto=define
13481                 set d_gethostent_r_proto gethostent_r $hdrs
13482                 eval $hasproto ;;
13483         *)      ;;
13484         esac
13485         case "$d_gethostent_r_proto" in
13486         define)
13487         case "$gethostent_r_proto" in
13488         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13489         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13490         esac
13491         case "$gethostent_r_proto" in
13492         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13493         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13494         esac
13495         case "$gethostent_r_proto" in
13496         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13497         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13498         esac
13499         case "$gethostent_r_proto" in
13500         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13501         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13502         esac
13503         case "$gethostent_r_proto" in
13504         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13505         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13506         esac
13507         case "$gethostent_r_proto" in
13508         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13509         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13510         esac
13511         case "$gethostent_r_proto" in
13512         ''|0)   d_gethostent_r=undef
13513                 gethostent_r_proto=0
13514                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13515         * )     case "$gethostent_r_proto" in
13516                 REENTRANT_PROTO*) ;;
13517                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13518                 esac
13519                 echo "Prototype: $try" ;;
13520         esac
13521         ;;
13522         *)      case "$usethreads" in
13523                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13524                 esac
13525                 d_gethostent_r=undef
13526                 gethostent_r_proto=0
13527                 ;;
13528         esac
13529         ;;
13530 *)      gethostent_r_proto=0
13531         ;;
13532 esac
13533
13534 : see if prototypes for various gethostxxx netdb.h functions are available
13535 echo " "
13536 set d_gethostprotos gethostent $i_netdb netdb.h
13537 eval $hasproto
13538
13539 : see if getitimer exists
13540 set getitimer d_getitimer
13541 eval $inlibc
13542
13543 : see if getlogin exists
13544 set getlogin d_getlogin
13545 eval $inlibc
13546
13547 : see if getlogin_r exists
13548 set getlogin_r d_getlogin_r
13549 eval $inlibc
13550 case "$d_getlogin_r" in
13551 "$define")
13552         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13553         case "$d_getlogin_r_proto:$usethreads" in
13554         ":define")      d_getlogin_r_proto=define
13555                 set d_getlogin_r_proto getlogin_r $hdrs
13556                 eval $hasproto ;;
13557         *)      ;;
13558         esac
13559         case "$d_getlogin_r_proto" in
13560         define)
13561         case "$getlogin_r_proto" in
13562         ''|0) try='int getlogin_r(char*, size_t);'
13563         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13564         esac
13565         case "$getlogin_r_proto" in
13566         ''|0) try='int getlogin_r(char*, int);'
13567         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13568         esac
13569         case "$getlogin_r_proto" in
13570         ''|0) try='char* getlogin_r(char*, size_t);'
13571         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13572         esac
13573         case "$getlogin_r_proto" in
13574         ''|0) try='char* getlogin_r(char*, int);'
13575         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13576         esac
13577         case "$getlogin_r_proto" in
13578         ''|0)   d_getlogin_r=undef
13579                 getlogin_r_proto=0
13580                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13581         * )     case "$getlogin_r_proto" in
13582                 REENTRANT_PROTO*) ;;
13583                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13584                 esac
13585                 echo "Prototype: $try" ;;
13586         esac
13587         ;;
13588         *)      case "$usethreads" in
13589                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13590                 esac
13591                 d_getlogin_r=undef
13592                 getlogin_r_proto=0
13593                 ;;
13594         esac
13595         ;;
13596 *)      getlogin_r_proto=0
13597         ;;
13598 esac
13599
13600 : see if getmnt exists
13601 set getmnt d_getmnt
13602 eval $inlibc
13603
13604 : see if getmntent exists
13605 set getmntent d_getmntent
13606 eval $inlibc
13607
13608 : see if getnetbyaddr exists
13609 set getnetbyaddr d_getnbyaddr
13610 eval $inlibc
13611
13612 : see if getnetbyname exists
13613 set getnetbyname d_getnbyname
13614 eval $inlibc
13615
13616 : see if getnetent exists
13617 set getnetent d_getnent
13618 eval $inlibc
13619
13620 : see if getnetbyaddr_r exists
13621 set getnetbyaddr_r d_getnetbyaddr_r
13622 eval $inlibc
13623 case "$d_getnetbyaddr_r" in
13624 "$define")
13625         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13626         case "$d_getnetbyaddr_r_proto:$usethreads" in
13627         ":define")      d_getnetbyaddr_r_proto=define
13628                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13629                 eval $hasproto ;;
13630         *)      ;;
13631         esac
13632         case "$d_getnetbyaddr_r_proto" in
13633         define)
13634         case "$getnetbyaddr_r_proto" in
13635         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13636         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13637         esac
13638         case "$getnetbyaddr_r_proto" in
13639         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13640         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13641         esac
13642         case "$getnetbyaddr_r_proto" in
13643         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13644         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13645         esac
13646         case "$getnetbyaddr_r_proto" in
13647         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13648         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13649         esac
13650         case "$getnetbyaddr_r_proto" in
13651         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13652         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13653         esac
13654         case "$getnetbyaddr_r_proto" in
13655         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13656         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13657         esac
13658         case "$getnetbyaddr_r_proto" in
13659         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13660         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13661         esac
13662         case "$getnetbyaddr_r_proto" in
13663         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13664         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13665         esac
13666         case "$getnetbyaddr_r_proto" in
13667         ''|0)   d_getnetbyaddr_r=undef
13668                 getnetbyaddr_r_proto=0
13669                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13670         * )     case "$getnetbyaddr_r_proto" in
13671                 REENTRANT_PROTO*) ;;
13672                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13673                 esac
13674                 echo "Prototype: $try" ;;
13675         esac
13676         ;;
13677         *)      case "$usethreads" in
13678                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13679                 esac
13680                 d_getnetbyaddr_r=undef
13681                 getnetbyaddr_r_proto=0
13682                 ;;
13683         esac
13684         ;;
13685 *)      getnetbyaddr_r_proto=0
13686         ;;
13687 esac
13688
13689 : see if getnetbyname_r exists
13690 set getnetbyname_r d_getnetbyname_r
13691 eval $inlibc
13692 case "$d_getnetbyname_r" in
13693 "$define")
13694         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13695         case "$d_getnetbyname_r_proto:$usethreads" in
13696         ":define")      d_getnetbyname_r_proto=define
13697                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13698                 eval $hasproto ;;
13699         *)      ;;
13700         esac
13701         case "$d_getnetbyname_r_proto" in
13702         define)
13703         case "$getnetbyname_r_proto" in
13704         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13705         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13706         esac
13707         case "$getnetbyname_r_proto" in
13708         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13709         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13710         esac
13711         case "$getnetbyname_r_proto" in
13712         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13713         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13714         esac
13715         case "$getnetbyname_r_proto" in
13716         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13717         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13718         esac
13719         case "$getnetbyname_r_proto" in
13720         ''|0)   d_getnetbyname_r=undef
13721                 getnetbyname_r_proto=0
13722                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13723         * )     case "$getnetbyname_r_proto" in
13724                 REENTRANT_PROTO*) ;;
13725                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13726                 esac
13727                 echo "Prototype: $try" ;;
13728         esac
13729         ;;
13730         *)      case "$usethreads" in
13731                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13732                 esac
13733                 d_getnetbyname_r=undef
13734                 getnetbyname_r_proto=0
13735                 ;;
13736         esac
13737         ;;
13738 *)      getnetbyname_r_proto=0
13739         ;;
13740 esac
13741
13742 : see if getnetent_r exists
13743 set getnetent_r d_getnetent_r
13744 eval $inlibc
13745 case "$d_getnetent_r" in
13746 "$define")
13747         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13748         case "$d_getnetent_r_proto:$usethreads" in
13749         ":define")      d_getnetent_r_proto=define
13750                 set d_getnetent_r_proto getnetent_r $hdrs
13751                 eval $hasproto ;;
13752         *)      ;;
13753         esac
13754         case "$d_getnetent_r_proto" in
13755         define)
13756         case "$getnetent_r_proto" in
13757         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13758         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13759         esac
13760         case "$getnetent_r_proto" in
13761         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13762         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13763         esac
13764         case "$getnetent_r_proto" in
13765         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13766         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13767         esac
13768         case "$getnetent_r_proto" in
13769         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13770         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13771         esac
13772         case "$getnetent_r_proto" in
13773         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13774         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13775         esac
13776         case "$getnetent_r_proto" in
13777         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13778         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13779         esac
13780         case "$getnetent_r_proto" in
13781         ''|0)   d_getnetent_r=undef
13782                 getnetent_r_proto=0
13783                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13784         * )     case "$getnetent_r_proto" in
13785                 REENTRANT_PROTO*) ;;
13786                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13787                 esac
13788                 echo "Prototype: $try" ;;
13789         esac
13790         ;;
13791         *)      case "$usethreads" in
13792                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13793                 esac
13794                 d_getnetent_r=undef
13795                 getnetent_r_proto=0
13796                 ;;
13797         esac
13798         ;;
13799 *)      getnetent_r_proto=0
13800         ;;
13801 esac
13802
13803 : see if prototypes for various getnetxxx netdb.h functions are available
13804 echo " "
13805 set d_getnetprotos getnetent $i_netdb netdb.h
13806 eval $hasproto
13807
13808 : see if getpagesize exists
13809 set getpagesize d_getpagsz
13810 eval $inlibc
13811
13812
13813 : see if getprotobyname exists
13814 set getprotobyname d_getpbyname
13815 eval $inlibc
13816
13817 : see if getprotobynumber exists
13818 set getprotobynumber d_getpbynumber
13819 eval $inlibc
13820
13821 : see if getprotoent exists
13822 set getprotoent d_getpent
13823 eval $inlibc
13824
13825 : see if getpgid exists
13826 set getpgid d_getpgid
13827 eval $inlibc
13828
13829 : see if getpgrp2 exists
13830 set getpgrp2 d_getpgrp2
13831 eval $inlibc
13832
13833 : see if getppid exists
13834 set getppid d_getppid
13835 eval $inlibc
13836
13837 : see if getpriority exists
13838 set getpriority d_getprior
13839 eval $inlibc
13840
13841 : see if getprotobyname_r exists
13842 set getprotobyname_r d_getprotobyname_r
13843 eval $inlibc
13844 case "$d_getprotobyname_r" in
13845 "$define")
13846         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13847         case "$d_getprotobyname_r_proto:$usethreads" in
13848         ":define")      d_getprotobyname_r_proto=define
13849                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13850                 eval $hasproto ;;
13851         *)      ;;
13852         esac
13853         case "$d_getprotobyname_r_proto" in
13854         define)
13855         case "$getprotobyname_r_proto" in
13856         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13857         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13858         esac
13859         case "$getprotobyname_r_proto" in
13860         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13861         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13862         esac
13863         case "$getprotobyname_r_proto" in
13864         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13865         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13866         esac
13867         case "$getprotobyname_r_proto" in
13868         ''|0)   d_getprotobyname_r=undef
13869                 getprotobyname_r_proto=0
13870                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13871         * )     case "$getprotobyname_r_proto" in
13872                 REENTRANT_PROTO*) ;;
13873                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13874                 esac
13875                 echo "Prototype: $try" ;;
13876         esac
13877         ;;
13878         *)      case "$usethreads" in
13879                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13880                 esac
13881                 d_getprotobyname_r=undef
13882                 getprotobyname_r_proto=0
13883                 ;;
13884         esac
13885         ;;
13886 *)      getprotobyname_r_proto=0
13887         ;;
13888 esac
13889
13890 : see if getprotobynumber_r exists
13891 set getprotobynumber_r d_getprotobynumber_r
13892 eval $inlibc
13893 case "$d_getprotobynumber_r" in
13894 "$define")
13895         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13896         case "$d_getprotobynumber_r_proto:$usethreads" in
13897         ":define")      d_getprotobynumber_r_proto=define
13898                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13899                 eval $hasproto ;;
13900         *)      ;;
13901         esac
13902         case "$d_getprotobynumber_r_proto" in
13903         define)
13904         case "$getprotobynumber_r_proto" in
13905         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13906         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13907         esac
13908         case "$getprotobynumber_r_proto" in
13909         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13910         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13911         esac
13912         case "$getprotobynumber_r_proto" in
13913         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13914         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13915         esac
13916         case "$getprotobynumber_r_proto" in
13917         ''|0)   d_getprotobynumber_r=undef
13918                 getprotobynumber_r_proto=0
13919                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13920         * )     case "$getprotobynumber_r_proto" in
13921                 REENTRANT_PROTO*) ;;
13922                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13923                 esac
13924                 echo "Prototype: $try" ;;
13925         esac
13926         ;;
13927         *)      case "$usethreads" in
13928                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13929                 esac
13930                 d_getprotobynumber_r=undef
13931                 getprotobynumber_r_proto=0
13932                 ;;
13933         esac
13934         ;;
13935 *)      getprotobynumber_r_proto=0
13936         ;;
13937 esac
13938
13939 : see if getprotoent_r exists
13940 set getprotoent_r d_getprotoent_r
13941 eval $inlibc
13942 case "$d_getprotoent_r" in
13943 "$define")
13944         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13945         case "$d_getprotoent_r_proto:$usethreads" in
13946         ":define")      d_getprotoent_r_proto=define
13947                 set d_getprotoent_r_proto getprotoent_r $hdrs
13948                 eval $hasproto ;;
13949         *)      ;;
13950         esac
13951         case "$d_getprotoent_r_proto" in
13952         define)
13953         case "$getprotoent_r_proto" in
13954         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13955         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13956         esac
13957         case "$getprotoent_r_proto" in
13958         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13959         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13960         esac
13961         case "$getprotoent_r_proto" in
13962         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13963         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13964         esac
13965         case "$getprotoent_r_proto" in
13966         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13967         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13968         esac
13969         case "$getprotoent_r_proto" in
13970         ''|0)   d_getprotoent_r=undef
13971                 getprotoent_r_proto=0
13972                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13973         * )     case "$getprotoent_r_proto" in
13974                 REENTRANT_PROTO*) ;;
13975                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13976                 esac
13977                 echo "Prototype: $try" ;;
13978         esac
13979         ;;
13980         *)      case "$usethreads" in
13981                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13982                 esac
13983                 d_getprotoent_r=undef
13984                 getprotoent_r_proto=0
13985                 ;;
13986         esac
13987         ;;
13988 *)      getprotoent_r_proto=0
13989         ;;
13990 esac
13991
13992 : see if prototypes for various getprotoxxx netdb.h functions are available
13993 echo " "
13994 set d_getprotoprotos getprotoent $i_netdb netdb.h
13995 eval $hasproto
13996
13997 : see if getprpwnam exists
13998 set getprpwnam d_getprpwnam
13999 eval $inlibc
14000
14001 : see if getpwent exists
14002 set getpwent d_getpwent
14003 eval $inlibc
14004
14005 : see if getpwent_r exists
14006 set getpwent_r d_getpwent_r
14007 eval $inlibc
14008 case "$d_getpwent_r" in
14009 "$define")
14010         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14011         case "$d_getpwent_r_proto:$usethreads" in
14012         ":define")      d_getpwent_r_proto=define
14013                 set d_getpwent_r_proto getpwent_r $hdrs
14014                 eval $hasproto ;;
14015         *)      ;;
14016         esac
14017         case "$d_getpwent_r_proto" in
14018         define)
14019         case "$getpwent_r_proto" in
14020         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
14021         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
14022         esac
14023         case "$getpwent_r_proto" in
14024         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
14025         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14026         esac
14027         case "$getpwent_r_proto" in
14028         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14029         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14030         esac
14031         case "$getpwent_r_proto" in
14032         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14033         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14034         esac
14035         case "$getpwent_r_proto" in
14036         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14037         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14038         esac
14039         case "$getpwent_r_proto" in
14040         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14041         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14042         esac
14043         case "$getpwent_r_proto" in
14044         ''|0)   d_getpwent_r=undef
14045                 getpwent_r_proto=0
14046                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14047         * )     case "$getpwent_r_proto" in
14048                 REENTRANT_PROTO*) ;;
14049                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14050                 esac
14051                 echo "Prototype: $try" ;;
14052         esac
14053         ;;
14054         *)      case "$usethreads" in
14055                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14056                 esac
14057                 d_getpwent_r=undef
14058                 getpwent_r_proto=0
14059                 ;;
14060         esac
14061         ;;
14062 *)      getpwent_r_proto=0
14063         ;;
14064 esac
14065
14066 : see if getpwnam_r exists
14067 set getpwnam_r d_getpwnam_r
14068 eval $inlibc
14069 case "$d_getpwnam_r" in
14070 "$define")
14071         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14072         case "$d_getpwnam_r_proto:$usethreads" in
14073         ":define")      d_getpwnam_r_proto=define
14074                 set d_getpwnam_r_proto getpwnam_r $hdrs
14075                 eval $hasproto ;;
14076         *)      ;;
14077         esac
14078         case "$d_getpwnam_r_proto" in
14079         define)
14080         case "$getpwnam_r_proto" in
14081         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14082         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14083         esac
14084         case "$getpwnam_r_proto" in
14085         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14086         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14087         esac
14088         case "$getpwnam_r_proto" in
14089         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14090         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14091         esac
14092         case "$getpwnam_r_proto" in
14093         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14094         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14095         esac
14096         case "$getpwnam_r_proto" in
14097         ''|0)   d_getpwnam_r=undef
14098                 getpwnam_r_proto=0
14099                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14100         * )     case "$getpwnam_r_proto" in
14101                 REENTRANT_PROTO*) ;;
14102                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14103                 esac
14104                 echo "Prototype: $try" ;;
14105         esac
14106         ;;
14107         *)      case "$usethreads" in
14108                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14109                 esac
14110                 d_getpwnam_r=undef
14111                 getpwnam_r_proto=0
14112                 ;;
14113         esac
14114         ;;
14115 *)      getpwnam_r_proto=0
14116         ;;
14117 esac
14118
14119 : see if getpwuid_r exists
14120 set getpwuid_r d_getpwuid_r
14121 eval $inlibc
14122 case "$d_getpwuid_r" in
14123 "$define")
14124         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14125         case "$d_getpwuid_r_proto:$usethreads" in
14126         ":define")      d_getpwuid_r_proto=define
14127                 set d_getpwuid_r_proto getpwuid_r $hdrs
14128                 eval $hasproto ;;
14129         *)      ;;
14130         esac
14131         case "$d_getpwuid_r_proto" in
14132         define)
14133         case "$getpwuid_r_proto" in
14134         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14135         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14136         esac
14137         case "$getpwuid_r_proto" in
14138         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14139         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14140         esac
14141         case "$getpwuid_r_proto" in
14142         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14143         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14144         esac
14145         case "$getpwuid_r_proto" in
14146         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14147         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14148         esac
14149         case "$getpwuid_r_proto" in
14150         ''|0)   d_getpwuid_r=undef
14151                 getpwuid_r_proto=0
14152                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14153         * )     case "$getpwuid_r_proto" in
14154                 REENTRANT_PROTO*) ;;
14155                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14156                 esac
14157                 echo "Prototype: $try" ;;
14158         esac
14159         ;;
14160         *)      case "$usethreads" in
14161                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14162                 esac
14163                 d_getpwuid_r=undef
14164                 getpwuid_r_proto=0
14165                 ;;
14166         esac
14167         ;;
14168 *)      getpwuid_r_proto=0
14169         ;;
14170 esac
14171
14172
14173 : see if getservbyname exists
14174 set getservbyname d_getsbyname
14175 eval $inlibc
14176
14177 : see if getservbyport exists
14178 set getservbyport d_getsbyport
14179 eval $inlibc
14180
14181 : see if getservent exists
14182 set getservent d_getsent
14183 eval $inlibc
14184
14185 : see if getservbyname_r exists
14186 set getservbyname_r d_getservbyname_r
14187 eval $inlibc
14188 case "$d_getservbyname_r" in
14189 "$define")
14190         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14191         case "$d_getservbyname_r_proto:$usethreads" in
14192         ":define")      d_getservbyname_r_proto=define
14193                 set d_getservbyname_r_proto getservbyname_r $hdrs
14194                 eval $hasproto ;;
14195         *)      ;;
14196         esac
14197         case "$d_getservbyname_r_proto" in
14198         define)
14199         case "$getservbyname_r_proto" in
14200         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14201         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14202         esac
14203         case "$getservbyname_r_proto" in
14204         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14205         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14206         esac
14207         case "$getservbyname_r_proto" in
14208         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14209         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14210         esac
14211         case "$getservbyname_r_proto" in
14212         ''|0)   d_getservbyname_r=undef
14213                 getservbyname_r_proto=0
14214                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14215         * )     case "$getservbyname_r_proto" in
14216                 REENTRANT_PROTO*) ;;
14217                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14218                 esac
14219                 echo "Prototype: $try" ;;
14220         esac
14221         ;;
14222         *)      case "$usethreads" in
14223                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14224                 esac
14225                 d_getservbyname_r=undef
14226                 getservbyname_r_proto=0
14227                 ;;
14228         esac
14229         ;;
14230 *)      getservbyname_r_proto=0
14231         ;;
14232 esac
14233
14234 : see if getservbyport_r exists
14235 set getservbyport_r d_getservbyport_r
14236 eval $inlibc
14237 case "$d_getservbyport_r" in
14238 "$define")
14239         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14240         case "$d_getservbyport_r_proto:$usethreads" in
14241         ":define")      d_getservbyport_r_proto=define
14242                 set d_getservbyport_r_proto getservbyport_r $hdrs
14243                 eval $hasproto ;;
14244         *)      ;;
14245         esac
14246         case "$d_getservbyport_r_proto" in
14247         define)
14248         case "$getservbyport_r_proto" in
14249         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14250         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14251         esac
14252         case "$getservbyport_r_proto" in
14253         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14254         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14255         esac
14256         case "$getservbyport_r_proto" in
14257         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14258         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14259         esac
14260         case "$getservbyport_r_proto" in
14261         ''|0)   d_getservbyport_r=undef
14262                 getservbyport_r_proto=0
14263                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14264         * )     case "$getservbyport_r_proto" in
14265                 REENTRANT_PROTO*) ;;
14266                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14267                 esac
14268                 echo "Prototype: $try" ;;
14269         esac
14270         ;;
14271         *)      case "$usethreads" in
14272                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14273                 esac
14274                 d_getservbyport_r=undef
14275                 getservbyport_r_proto=0
14276                 ;;
14277         esac
14278         ;;
14279 *)      getservbyport_r_proto=0
14280         ;;
14281 esac
14282
14283 : see if getservent_r exists
14284 set getservent_r d_getservent_r
14285 eval $inlibc
14286 case "$d_getservent_r" in
14287 "$define")
14288         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14289         case "$d_getservent_r_proto:$usethreads" in
14290         ":define")      d_getservent_r_proto=define
14291                 set d_getservent_r_proto getservent_r $hdrs
14292                 eval $hasproto ;;
14293         *)      ;;
14294         esac
14295         case "$d_getservent_r_proto" in
14296         define)
14297         case "$getservent_r_proto" in
14298         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14299         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14300         esac
14301         case "$getservent_r_proto" in
14302         ''|0) try='int getservent_r(struct servent*, char*, int);'
14303         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14304         esac
14305         case "$getservent_r_proto" in
14306         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14307         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14308         esac
14309         case "$getservent_r_proto" in
14310         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14311         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14312         esac
14313         case "$getservent_r_proto" in
14314         ''|0)   d_getservent_r=undef
14315                 getservent_r_proto=0
14316                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14317         * )     case "$getservent_r_proto" in
14318                 REENTRANT_PROTO*) ;;
14319                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14320                 esac
14321                 echo "Prototype: $try" ;;
14322         esac
14323         ;;
14324         *)      case "$usethreads" in
14325                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14326                 esac
14327                 d_getservent_r=undef
14328                 getservent_r_proto=0
14329                 ;;
14330         esac
14331         ;;
14332 *)      getservent_r_proto=0
14333         ;;
14334 esac
14335
14336 : see if prototypes for various getservxxx netdb.h functions are available
14337 echo " "
14338 set d_getservprotos getservent $i_netdb netdb.h
14339 eval $hasproto
14340
14341 : see if getspnam exists
14342 set getspnam d_getspnam
14343 eval $inlibc
14344
14345 : see if this is a shadow.h system
14346 set shadow.h i_shadow
14347 eval $inhdr
14348
14349 : see if getspnam_r exists
14350 set getspnam_r d_getspnam_r
14351 eval $inlibc
14352 case "$d_getspnam_r" in
14353 "$define")
14354         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14355         case "$d_getspnam_r_proto:$usethreads" in
14356         ":define")      d_getspnam_r_proto=define
14357                 set d_getspnam_r_proto getspnam_r $hdrs
14358                 eval $hasproto ;;
14359         *)      ;;
14360         esac
14361         case "$d_getspnam_r_proto" in
14362         define)
14363         case "$getspnam_r_proto" in
14364         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14365         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14366         esac
14367         case "$getspnam_r_proto" in
14368         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14369         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14370         esac
14371         case "$getspnam_r_proto" in
14372         ''|0)   d_getspnam_r=undef
14373                 getspnam_r_proto=0
14374                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14375         * )     case "$getspnam_r_proto" in
14376                 REENTRANT_PROTO*) ;;
14377                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14378                 esac
14379                 echo "Prototype: $try" ;;
14380         esac
14381         ;;
14382         *)      case "$usethreads" in
14383                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14384                 esac
14385                 d_getspnam_r=undef
14386                 getspnam_r_proto=0
14387                 ;;
14388         esac
14389         ;;
14390 *)      getspnam_r_proto=0
14391         ;;
14392 esac
14393
14394 : see if gettimeofday or ftime exists
14395 set gettimeofday d_gettimeod
14396 eval $inlibc
14397 case "$d_gettimeod" in
14398 "$undef")
14399         set ftime d_ftime 
14400         eval $inlibc
14401         ;;
14402 *)
14403         val="$undef"; set d_ftime; eval $setvar
14404         ;;
14405 esac
14406 case "$d_gettimeod$d_ftime" in
14407 "$undef$undef")
14408         echo " "
14409         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14410         ;;
14411 esac
14412
14413 : see if gmtime_r exists
14414 set gmtime_r d_gmtime_r
14415 eval $inlibc
14416 case "$d_gmtime_r" in
14417 "$define")
14418         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14419         case "$d_gmtime_r_proto:$usethreads" in
14420         ":define")      d_gmtime_r_proto=define
14421                 set d_gmtime_r_proto gmtime_r $hdrs
14422                 eval $hasproto ;;
14423         *)      ;;
14424         esac
14425         case "$d_gmtime_r_proto" in
14426         define)
14427         case "$gmtime_r_proto" in
14428         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14429         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14430         esac
14431         case "$gmtime_r_proto" in
14432         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14433         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14434         esac
14435         case "$gmtime_r_proto" in
14436         ''|0)   d_gmtime_r=undef
14437                 gmtime_r_proto=0
14438                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14439         * )     case "$gmtime_r_proto" in
14440                 REENTRANT_PROTO*) ;;
14441                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14442                 esac
14443                 echo "Prototype: $try" ;;
14444         esac
14445         ;;
14446         *)      case "$usethreads" in
14447                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14448                 esac
14449                 d_gmtime_r=undef
14450                 gmtime_r_proto=0
14451                 ;;
14452         esac
14453         ;;
14454 *)      gmtime_r_proto=0
14455         ;;
14456 esac
14457
14458 : see if hasmntopt exists
14459 set hasmntopt d_hasmntopt
14460 eval $inlibc
14461
14462 : see if this is a netinet/in.h or sys/in.h system
14463 set netinet/in.h i_niin sys/in.h i_sysin
14464 eval $inhdr
14465
14466 : see if arpa/inet.h has to be included
14467 set arpa/inet.h i_arpainet
14468 eval $inhdr
14469
14470 : see if htonl --and friends-- exists
14471 val=''
14472 set htonl val
14473 eval $inlibc
14474
14475 : Maybe they are macros.
14476 case "$val" in
14477 $undef)
14478         $cat >htonl.c <<EOM
14479 #include <stdio.h>
14480 #include <sys/types.h>
14481 #$i_niin I_NETINET_IN
14482 #$i_sysin I_SYS_IN
14483 #$i_arpainet I_ARPA_INET
14484 #ifdef I_NETINET_IN
14485 #include <netinet/in.h>
14486 #endif
14487 #ifdef I_SYS_IN
14488 #include <sys/in.h>
14489 #endif
14490 #ifdef I_ARPA_INET
14491 #include <arpa/inet.h>
14492 #endif
14493 #ifdef htonl
14494 printf("Defined as a macro.");
14495 #endif
14496 EOM
14497         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14498         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14499                 val="$define"
14500                 echo "But it seems to be defined as a macro." >&4
14501         fi
14502         $rm -f htonl.?
14503         ;;
14504 esac
14505 set d_htonl
14506 eval $setvar
14507
14508 : see if ilogbl exists
14509 set ilogbl d_ilogbl
14510 eval $inlibc
14511
14512 : index or strchr
14513 echo " "
14514 if set index val -f; eval $csym; $val; then
14515         if set strchr val -f d_strchr; eval $csym; $val; then
14516                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14517                         val="$define"
14518                         vali="$undef"
14519                         echo "strchr() found." >&4
14520                 else
14521                         val="$undef"
14522                         vali="$define"
14523                         echo "index() found." >&4
14524                 fi
14525         else
14526                 val="$undef"
14527                 vali="$define"
14528                 echo "index() found." >&4
14529         fi
14530 else
14531         if set strchr val -f d_strchr; eval $csym; $val; then
14532                 val="$define"
14533                 vali="$undef"
14534                 echo "strchr() found." >&4
14535         else
14536                 echo "No index() or strchr() found!" >&4
14537                 val="$undef"
14538                 vali="$undef"
14539         fi
14540 fi
14541 set d_strchr; eval $setvar
14542 val="$vali"
14543 set d_index; eval $setvar
14544
14545 : check whether inet_aton exists
14546 set inet_aton d_inetaton
14547 eval $inlibc
14548
14549 : Look for isascii
14550 echo " "
14551 $cat >isascii.c <<EOCP
14552 #include <stdio.h>
14553 #include <ctype.h>
14554 #$i_stdlib I_STDLIB
14555 #ifdef I_STDLIB
14556 #include <stdlib.h>
14557 #endif
14558 int main() {
14559         int c = 'A';
14560         if (isascii(c))
14561                 exit(0);
14562         else
14563                 exit(1);
14564 }
14565 EOCP
14566 set isascii
14567 if eval $compile; then
14568         echo "isascii() found." >&4
14569         val="$define"
14570 else
14571         echo "isascii() NOT found." >&4
14572         val="$undef"
14573 fi
14574 set d_isascii
14575 eval $setvar
14576 $rm -f isascii*
14577
14578 : see if isfinite exists
14579 set isfinite d_isfinite
14580 eval $inlibc
14581
14582 : see if isinf exists
14583 set isinf d_isinf
14584 eval $inlibc
14585
14586 : see if isnan exists
14587 set isnan d_isnan
14588 eval $inlibc
14589
14590 : see if isnanl exists
14591 set isnanl d_isnanl
14592 eval $inlibc
14593
14594 : see if killpg exists
14595 set killpg d_killpg
14596 eval $inlibc
14597
14598 : see if lchown exists
14599 echo " "
14600 $cat > try.c <<'EOCP'
14601 /* System header to define __stub macros and hopefully few prototypes,
14602     which can conflict with char lchown(); below.  */
14603 #include <assert.h>
14604 /* Override any gcc2 internal prototype to avoid an error.  */
14605 /* We use char because int might match the return type of a gcc2
14606    builtin and then its argument prototype would still apply.  */
14607 char lchown();
14608 int main() {
14609     /*  The GNU C library defines this for functions which it implements
14610         to always fail with ENOSYS.  Some functions are actually named
14611         something starting with __ and the normal name is an alias.  */
14612 #if defined (__stub_lchown) || defined (__stub___lchown)
14613 choke me
14614 #else
14615 lchown();
14616 #endif
14617 ; return 0; }
14618 EOCP
14619 set try
14620 if eval $compile; then
14621     $echo "lchown() found." >&4
14622     val="$define"
14623 else
14624     $echo "lchown() NOT found." >&4
14625     val="$undef"
14626 fi
14627 set d_lchown
14628 eval $setvar
14629
14630 : See if number of significant digits in a double precision number is known
14631 echo " "
14632 $cat >ldbl_dig.c <<EOM
14633 #$i_limits I_LIMITS
14634 #$i_float I_FLOAT
14635 #ifdef I_LIMITS
14636 #include <limits.h>
14637 #endif
14638 #ifdef I_FLOAT
14639 #include <float.h>
14640 #endif
14641 #ifdef LDBL_DIG
14642 printf("Contains LDBL_DIG");
14643 #endif
14644 EOM
14645 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14646 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14647         echo "LDBL_DIG found." >&4
14648         val="$define"
14649 else
14650         echo "LDBL_DIG NOT found." >&4
14651         val="$undef"
14652 fi
14653 $rm -f ldbl_dig.?
14654 set d_ldbl_dig
14655 eval $setvar
14656
14657 : see if this is a math.h system
14658 set math.h i_math
14659 eval $inhdr
14660
14661 d_libm_lib_version="$undef"
14662 case $i_math in
14663     $define)
14664         : check to see if math.h defines _LIB_VERSION
14665         echo " "
14666         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14667         $cat >try.c <<EOCP
14668 #include <unistd.h>
14669 #include <math.h>
14670 int main (int argc, char *argv[])
14671 {
14672     printf ("%d\n", _LIB_VERSION);
14673     return (0);
14674     } /* main */
14675 EOCP
14676         set try
14677         if eval $compile; then
14678             foo=`$run ./try`
14679             echo "Yes, it does ($foo)" >&4
14680             d_libm_lib_version="$define"
14681         else
14682             echo "No, it does not (probably harmless)" >&4
14683             fi
14684         $rm_try
14685         ;;
14686
14687     esac
14688
14689 : see if link exists
14690 set link d_link
14691 eval $inlibc
14692
14693 : see if localtime_r exists
14694 set localtime_r d_localtime_r
14695 eval $inlibc
14696 case "$d_localtime_r" in
14697 "$define")
14698         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14699         case "$d_localtime_r_proto:$usethreads" in
14700         ":define")      d_localtime_r_proto=define
14701                 set d_localtime_r_proto localtime_r $hdrs
14702                 eval $hasproto ;;
14703         *)      ;;
14704         esac
14705         case "$d_localtime_r_proto" in
14706         define)
14707         case "$localtime_r_proto" in
14708         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14709         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14710         esac
14711         case "$localtime_r_proto" in
14712         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14713         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14714         esac
14715         case "$localtime_r_proto" in
14716         ''|0)   d_localtime_r=undef
14717                 localtime_r_proto=0
14718                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14719         * )     case "$localtime_r_proto" in
14720                 REENTRANT_PROTO*) ;;
14721                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14722                 esac
14723                 echo "Prototype: $try" ;;
14724         esac
14725         ;;
14726         *)      case "$usethreads" in
14727                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14728                 esac
14729                 d_localtime_r=undef
14730                 localtime_r_proto=0
14731                 ;;
14732         esac
14733         ;;
14734 *)      localtime_r_proto=0
14735         ;;
14736 esac
14737
14738 : see if localtime_r calls tzset
14739 case "$localtime_r_proto" in
14740 REENTRANT_PROTO*)
14741         $cat >try.c <<EOCP
14742 /*  Does our libc's localtime_r call tzset ?
14743  *  return 0 if so, 1 otherwise.
14744  */
14745 #include <sys/types.h>
14746 #include <unistd.h>
14747 #include <time.h>
14748 #include <string.h>
14749 #include <malloc.h>
14750 int main()
14751 {
14752     time_t t = time(0L);
14753     char w_tz[]="TZ" "=GMT+5",
14754          e_tz[]="TZ" "=GMT-5",
14755         *tz_e = (char*)malloc(16),
14756         *tz_w = (char*)malloc(16);
14757     struct tm tm_e, tm_w;
14758     memset(&tm_e,'\0',sizeof(struct tm));
14759     memset(&tm_w,'\0',sizeof(struct tm));
14760     strcpy(tz_e,e_tz);
14761     strcpy(tz_w,w_tz);
14762
14763     putenv(tz_e);
14764     localtime_r(&t, &tm_e);
14765
14766     putenv(tz_w);
14767     localtime_r(&t, &tm_w);
14768
14769     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14770         return 1;
14771     return 0;
14772 }
14773 EOCP
14774         set try
14775         if eval $compile; then
14776             if $run ./try; then
14777                 d_localtime_r_needs_tzset=undef;
14778             else
14779                 d_localtime_r_needs_tzset=define;
14780             fi;
14781         else
14782             d_localtime_r_needs_tzset=undef;
14783         fi;
14784      ;;
14785   *)
14786      d_localtime_r_needs_tzset=undef;
14787      ;;
14788 esac
14789 $rm_try
14790
14791 : see if localeconv exists
14792 set localeconv d_locconv
14793 eval $inlibc
14794
14795 : see if lockf exists
14796 set lockf d_lockf
14797 eval $inlibc
14798
14799 : see if prototype for lseek is available
14800 echo " "
14801 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14802 eval $hasproto
14803
14804 : see if lstat exists
14805 set lstat d_lstat
14806 eval $inlibc
14807
14808 : see if madvise exists
14809 set madvise d_madvise
14810 eval $inlibc
14811
14812 : see if malloc_size exists
14813 set malloc_size d_malloc_size
14814 eval $inlibc
14815
14816 : see if malloc_size_good exists
14817 set malloc_good_size d_malloc_good_size
14818 eval $inlibc
14819
14820 : see if mblen exists
14821 set mblen d_mblen
14822 eval $inlibc
14823
14824 : see if mbstowcs exists
14825 set mbstowcs d_mbstowcs
14826 eval $inlibc
14827
14828 : see if mbtowc exists
14829 set mbtowc d_mbtowc
14830 eval $inlibc
14831
14832 : see if memchr exists
14833 set memchr d_memchr
14834 eval $inlibc
14835
14836 : see if memcmp exists
14837 set memcmp d_memcmp
14838 eval $inlibc
14839
14840 : see if memcpy exists
14841 set memcpy d_memcpy
14842 eval $inlibc
14843
14844 : see if memmove exists
14845 set memmove d_memmove
14846 eval $inlibc
14847
14848 : see if memset exists
14849 set memset d_memset
14850 eval $inlibc
14851
14852 : see if mkdir exists
14853 set mkdir d_mkdir
14854 eval $inlibc
14855
14856 : see if mkdtemp exists
14857 set mkdtemp d_mkdtemp
14858 eval $inlibc
14859
14860 : see if mkfifo exists
14861 set mkfifo d_mkfifo
14862 eval $inlibc
14863
14864 : see if mkstemp exists
14865 set mkstemp d_mkstemp
14866 eval $inlibc
14867
14868 : see if mkstemps exists
14869 set mkstemps d_mkstemps
14870 eval $inlibc
14871
14872 : see if mktime exists
14873 set mktime d_mktime
14874 eval $inlibc
14875
14876 : see if this is a sys/mman.h system
14877 set sys/mman.h i_sysmman
14878 eval $inhdr
14879
14880 : see if mmap exists
14881 set mmap d_mmap
14882 eval $inlibc
14883 : see what shmat returns
14884 : default to something harmless
14885 mmaptype='void *'
14886 case "$i_sysmman$d_mmap" in
14887 "$define$define")
14888         $cat >mmap.c <<'END'
14889 #include <sys/mman.h>
14890 void *mmap();
14891 END
14892         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14893                 mmaptype='void *'
14894         else
14895                 mmaptype='caddr_t'
14896         fi
14897         echo "and it returns ($mmaptype)." >&4
14898         ;;
14899 esac
14900
14901
14902
14903 : see if sqrtl exists
14904 set sqrtl d_sqrtl
14905 eval $inlibc
14906
14907 : see if scalbnl exists
14908 set scalbnl d_scalbnl
14909 eval $inlibc
14910
14911 : see if modfl exists
14912 set modfl d_modfl
14913 eval $inlibc
14914
14915 : see if prototype for modfl is available
14916 echo " "
14917 set d_modflproto modfl $i_math math.h
14918 eval $hasproto
14919
14920 d_modfl_pow32_bug="$undef"
14921
14922 case "$d_longdbl$d_modfl" in
14923 $define$define)
14924         $cat <<EOM
14925 Checking to see whether your modfl() is okay for large values...
14926 EOM
14927 $cat >try.c <<EOCP
14928 #include <math.h>
14929 #include <stdio.h>
14930 EOCP
14931 if $test "X$d_modflproto" != "X$define"; then
14932         $cat >>try.c <<EOCP
14933 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14934 long double modfl (long double, long double *);
14935 EOCP
14936 fi
14937 $cat >>try.c <<EOCP
14938 int main() {
14939     long double nv = 4294967303.15;
14940     long double v, w;
14941     v = modfl(nv, &w);
14942 #ifdef __GLIBC__
14943     printf("glibc");
14944 #endif
14945     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14946     return 0;
14947 }
14948 EOCP
14949         case "$osname:$gccversion" in
14950         aix:)   saveccflags="$ccflags"
14951                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14952         esac
14953         set try
14954         if eval $compile; then
14955                 foo=`$run ./try`
14956                 case "$foo" in
14957                 *" 4294967303.150000 1.150000 4294967302.000000")
14958                         echo >&4 "Your modfl() is broken for large values."
14959                         d_modfl_pow32_bug="$define"
14960                         case "$foo" in
14961                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14962                         ;;
14963                         esac
14964                         ;;
14965                 *" 4294967303.150000 0.150000 4294967303.000000")
14966                         echo >&4 "Your modfl() seems okay for large values."
14967                         ;;
14968                 *)      echo >&4 "I don't understand your modfl() at all."
14969                         d_modfl="$undef"
14970                         ;;
14971                 esac
14972                 $rm_try
14973         else
14974                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14975                 d_modfl="$undef"
14976         fi
14977         case "$osname:$gccversion" in
14978         aix:)   ccflags="$saveccflags" ;; # restore
14979         esac
14980         ;;
14981 esac
14982
14983 if $test "$uselongdouble" = "$define"; then
14984     message=""
14985     if $test "$d_sqrtl" != "$define"; then
14986         message="$message sqrtl"
14987     fi
14988     if $test "$d_modfl" != "$define"; then
14989         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14990             echo "You have both aintl and copysignl, so I can emulate modfl."
14991         else
14992             message="$message modfl"
14993         fi
14994     fi
14995     if $test "$d_frexpl" != "$define"; then
14996         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14997             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14998         else
14999             message="$message frexpl"
15000         fi
15001     fi
15002
15003     if $test "$message" != ""; then
15004         $cat <<EOM >&4
15005
15006 *** You requested the use of long doubles but you do not seem to have
15007 *** the following mathematical functions needed for long double support:
15008 ***    $message
15009 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
15010 *** Cannot continue, aborting.
15011
15012 EOM
15013
15014         exit 1
15015     fi
15016 fi
15017
15018 : see if mprotect exists
15019 set mprotect d_mprotect
15020 eval $inlibc
15021
15022 : see if msgctl exists
15023 set msgctl d_msgctl
15024 eval $inlibc
15025
15026 : see if msgget exists
15027 set msgget d_msgget
15028 eval $inlibc
15029
15030 : see if msgsnd exists
15031 set msgsnd d_msgsnd
15032 eval $inlibc
15033
15034 : see if msgrcv exists
15035 set msgrcv d_msgrcv
15036 eval $inlibc
15037
15038 : see how much of the 'msg*(2)' library is present.
15039 h_msg=true
15040 echo " "
15041 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15042 *"$undef"*) h_msg=false;;
15043 esac
15044 case "$osname" in
15045 freebsd)
15046     case "`ipcs 2>&1`" in
15047     "SVID messages"*"not configured"*)
15048         echo "Your $osname does not have the msg*(2) configured." >&4
15049         h_msg=false
15050         val="$undef"
15051         set msgctl d_msgctl
15052         eval $setvar
15053         set msgget d_msgget
15054         eval $setvar
15055         set msgsnd d_msgsnd
15056         eval $setvar
15057         set msgrcv d_msgrcv
15058         eval $setvar
15059         ;;
15060     esac
15061     ;;
15062 esac
15063 : we could also check for sys/ipc.h ...
15064 if $h_msg && $test `./findhdr sys/msg.h`; then
15065         echo "You have the full msg*(2) library." >&4
15066         val="$define"
15067 else
15068         echo "You don't have the full msg*(2) library." >&4
15069         val="$undef"
15070 fi
15071 set d_msg
15072 eval $setvar
15073
15074
15075 echo " "
15076 echo "Checking to see if your system supports struct msghdr..." >&4
15077 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15078 eval $hasstruct
15079 case "$d_msghdr_s" in
15080 "$define")      echo "Yes, it does."   ;;
15081 *)              echo "No, it doesn't." ;;
15082 esac
15083
15084
15085 : see if msync exists
15086 set msync d_msync
15087 eval $inlibc
15088
15089 : see if munmap exists
15090 set munmap d_munmap
15091 eval $inlibc
15092
15093 : see if nice exists
15094 set nice d_nice
15095 eval $inlibc
15096
15097 : see if this is a langinfo.h system
15098 set langinfo.h i_langinfo
15099 eval $inhdr
15100
15101 : see if nl_langinfo exists
15102 set nl_langinfo d_nl_langinfo
15103 eval $inlibc
15104
15105 : check for volatile keyword
15106 echo " "
15107 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15108 $cat >try.c <<'EOCP'
15109 int main()
15110 {
15111         typedef struct _goo_struct goo_struct;
15112         goo_struct * volatile goo = ((goo_struct *)0);
15113         struct _goo_struct {
15114                 long long_int;
15115                 int reg_int;
15116                 char char_var;
15117         };
15118         typedef unsigned short foo_t;
15119         char *volatile foo;
15120         volatile int bar;
15121         volatile foo_t blech;
15122         foo = foo;
15123 }
15124 EOCP
15125 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15126         val="$define"
15127         echo "Yup, it does."
15128 else
15129         val="$undef"
15130         echo "Nope, it doesn't."
15131 fi
15132 set d_volatile
15133 eval $setvar
15134 $rm_try
15135
15136
15137 echo " "
15138 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15139
15140 case "$use64bitint:$d_quad:$quadtype" in
15141 define:define:?*)
15142         ivtype="$quadtype"
15143         uvtype="$uquadtype"
15144         ivsize=8
15145         uvsize=8
15146         ;;
15147 *)      ivtype="long"
15148         uvtype="unsigned long"
15149         ivsize=$longsize
15150         uvsize=$longsize
15151         ;;
15152 esac
15153
15154 case "$uselongdouble:$d_longdbl" in
15155 define:define)
15156         nvtype="long double"
15157         nvsize=$longdblsize
15158         ;;
15159 *)      nvtype=double
15160         nvsize=$doublesize
15161         ;;
15162 esac
15163
15164 $echo "(IV will be "$ivtype", $ivsize bytes)"
15165 $echo "(UV will be "$uvtype", $uvsize bytes)"
15166 $echo "(NV will be "$nvtype", $nvsize bytes)"
15167
15168 $cat >try.c <<EOCP
15169 #$i_inttypes I_INTTYPES
15170 #ifdef I_INTTYPES
15171 #include <inttypes.h>
15172 #endif
15173 #include <stdio.h>
15174 int main() {
15175 #ifdef INT8
15176    int8_t i =  INT8_MAX;
15177   uint8_t u = UINT8_MAX;
15178   printf("int8_t\n");
15179 #endif
15180 #ifdef INT16
15181    int16_t i =  INT16_MAX;
15182   uint16_t i = UINT16_MAX;
15183   printf("int16_t\n");
15184 #endif
15185 #ifdef INT32
15186    int32_t i =  INT32_MAX;
15187   uint32_t u = UINT32_MAX;
15188   printf("int32_t\n");
15189 #endif
15190 }
15191 EOCP
15192
15193 i8type=char
15194 u8type="unsigned char"
15195 i8size=1
15196 u8size=1
15197
15198 case "$i16type" in
15199 '')     case "$shortsize" in
15200         2)      i16type=short
15201                 u16type="unsigned short"
15202                 i16size=$shortsize
15203                 u16size=$shortsize
15204                 ;;
15205         esac
15206         ;;
15207 esac
15208 case "$i16type" in
15209 '')     set try -DINT16
15210         if eval $compile; then
15211                 case "`$run ./try`" in
15212                 int16_t)
15213                         i16type=int16_t
15214                         u16type=uint16_t
15215                         i16size=2
15216                         u16size=2
15217                         ;;
15218                 esac
15219         fi
15220         ;;
15221 esac
15222 case "$i16type" in
15223 '')     if $test $shortsize -ge 2; then
15224                 i16type=short
15225                 u16type="unsigned short"
15226                 i16size=$shortsize
15227                 u16size=$shortsize
15228         fi
15229         ;;
15230 esac
15231
15232 case "$i32type" in
15233 '')     case "$longsize" in
15234         4)      i32type=long
15235                 u32type="unsigned long"
15236                 i32size=$longsize
15237                 u32size=$longsize
15238                 ;;
15239         *)      case "$intsize" in
15240                 4)      i32type=int
15241                         u32type="unsigned int"
15242                         i32size=$intsize
15243                         u32size=$intsize
15244                         ;;
15245                 esac
15246                 ;;
15247         esac
15248         ;;
15249 esac
15250 case "$i32type" in
15251 '')     set try -DINT32
15252         if eval $compile; then
15253                 case "`$run ./try`" in
15254                 int32_t)
15255                         i32type=int32_t
15256                         u32type=uint32_t
15257                         i32size=4
15258                         u32size=4
15259                         ;;
15260                 esac
15261         fi
15262         ;;
15263 esac
15264 case "$i32type" in
15265 '')     if $test $intsize -ge 4; then
15266                 i32type=int
15267                 u32type="unsigned int"
15268                 i32size=$intsize
15269                 u32size=$intsize
15270         fi
15271         ;;
15272 esac
15273
15274 case "$i64type" in
15275 '')     case "$d_quad:$quadtype" in
15276         define:?*)
15277                 i64type="$quadtype"
15278                 u64type="$uquadtype"
15279                 i64size=8
15280                 u64size=8
15281                 ;;
15282         esac
15283         ;;
15284 esac
15285
15286 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15287 : volatile so that the compiler has to store it out to memory.
15288 if test X"$d_volatile" = X"$define"; then
15289         volatile=volatile
15290 fi
15291 $cat <<EOP >try.c
15292 #include <stdio.h>
15293 #$i_stdlib I_STDLIB
15294 #ifdef I_STDLIB
15295 #include <stdlib.h>
15296 #endif
15297 #include <sys/types.h>
15298 #include <signal.h>
15299 #ifdef SIGFPE
15300 $volatile int bletched = 0;
15301 $signal_t blech(int s) { bletched = 1; }
15302 #endif
15303 int main() {
15304     $uvtype u = 0;
15305     $nvtype d;
15306     int     n = 8 * $uvsize;
15307     int     i;
15308 #ifdef SIGFPE
15309     signal(SIGFPE, blech);
15310 #endif
15311
15312     for (i = 0; i < n; i++) {
15313       u = u << 1 | ($uvtype)1;
15314       d = ($nvtype)u;
15315       if (($uvtype)d != u)
15316         break;
15317       if (d <= 0)
15318         break;
15319       d = ($nvtype)(u - 1);
15320       if (($uvtype)d != (u - 1))
15321         break;
15322 #ifdef SIGFPE
15323       if (bletched)
15324         break;
15325 #endif
15326     }
15327     printf("%d\n", ((i == n) ? -n : i));
15328     exit(0);
15329 }
15330 EOP
15331 set try
15332
15333 d_nv_preserves_uv="$undef"
15334 if eval $compile; then
15335         nv_preserves_uv_bits="`$run ./try`"
15336 fi
15337 case "$nv_preserves_uv_bits" in
15338 \-[1-9]*)
15339         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15340         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15341         d_nv_preserves_uv="$define"
15342         ;;
15343 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15344         d_nv_preserves_uv="$undef" ;;
15345 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15346         nv_preserves_uv_bits="0" ;;
15347 esac
15348 $rm_try
15349
15350 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15351 : volatile so that the compiler has to store it out to memory.
15352 if test X"$d_volatile" = X"$define"; then
15353         volatile=volatile
15354 fi
15355 $cat <<EOP >try.c
15356 #include <stdio.h>
15357 #$i_stdlib I_STDLIB
15358 #ifdef I_STDLIB
15359 #include <stdlib.h>
15360 #endif
15361 #$i_string I_STRING
15362 #ifdef I_STRING
15363 #  include <string.h>
15364 #else
15365 #  include <strings.h>
15366 #endif
15367 #include <sys/types.h>
15368 #include <signal.h>
15369 #ifdef SIGFPE
15370 $volatile int bletched = 0;
15371 $signal_t blech(int s) { bletched = 1; }
15372 #endif
15373
15374 int checkit($nvtype d, char *where) {
15375     unsigned char *p = (char *)&d;
15376     unsigned char *end = p + sizeof(d);
15377     int fail = 0;
15378
15379     while (p < end)
15380         fail += *p++;
15381
15382     if (!fail)
15383         return 0;
15384
15385     p = (char *)&d;
15386     printf("No - %s: 0x", where);
15387     while (p < end)
15388         printf ("%02X", *p++);
15389     printf("\n");
15390     return 1;
15391 }
15392
15393 int main(int argc, char **argv) {
15394     $nvtype d = 0.0;
15395     int fail = 0;
15396     fail += checkit(d, "0.0");
15397
15398     /* The compiler shouldn't be assuming that bletched is 0  */
15399     d = bletched;
15400
15401     fail += checkit(d, "bleched");
15402
15403 #ifdef SIGFPE
15404     signal(SIGFPE, blech);
15405 #endif
15406
15407     /* Paranoia - the compiler should have no way of knowing that ANSI says
15408        that argv[argc] will always be NULL.  Actually, if it did assume this it
15409        would be buggy, as this is C and main() can be called from elsewhere in
15410        the program.  */
15411     d = argv[argc] ? 1 : 0;
15412
15413     if (d) {
15414         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15415     }
15416
15417     fail += checkit(d, "ternary");
15418
15419     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15420
15421     if (d != 0.0) {
15422         printf("No - memset doesn't give 0.0\n");
15423         /* This might just blow up:  */
15424         printf("(gives %g)\n", d);
15425         return 1;
15426     }
15427
15428 #ifdef SIGFPE
15429     if (bletched) {
15430         printf("No - something bleched\n");
15431         return 1;
15432     }
15433 #endif
15434     if (fail) {
15435       printf("No - %d fail(s)\n", fail);
15436       return 1;
15437     }
15438     printf("Yes\n");
15439     return 0;
15440 }
15441 EOP
15442 set try
15443
15444 d_nv_zero_is_allbits_zero="$undef"
15445 if eval $compile; then
15446     xxx="`$run ./try`"
15447     case "$?" in
15448         0)
15449             case "$xxx" in
15450                 Yes)  cat >&4 <<EOM
15451 0.0 is represented as all bits zero in memory
15452 EOM
15453                     d_nv_zero_is_allbits_zero="$define"
15454                     ;;
15455                 *)  cat >&4 <<EOM
15456 0.0 is not represented as all bits zero in memory
15457 EOM
15458                     d_nv_zero_is_allbits_zero="$undef"
15459                     ;;
15460             esac
15461             ;;
15462         *)  cat >&4 <<EOM
15463 0.0 is not represented as all bits zero in memory
15464 EOM
15465             d_nv_zero_is_allbits_zero="$undef"
15466             ;;
15467     esac
15468 fi
15469 $rm_try
15470
15471 : check for off64_t
15472 echo " "
15473 echo "Checking to see if you have off64_t..." >&4
15474 $cat >try.c <<EOCP
15475 #include <sys/types.h>
15476 #include <unistd.h>
15477 int main() { off64_t x = 7; }
15478 EOCP
15479 set try
15480 if eval $compile; then
15481         val="$define"
15482         echo "You have off64_t."
15483 else
15484         val="$undef"
15485         echo "You do not have off64_t."
15486         case "$lseeksize" in
15487         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15488         esac
15489 fi
15490 $rm_try
15491 set d_off64_t
15492 eval $setvar
15493
15494 : how to create joinable pthreads
15495 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15496         echo " "
15497         echo "Checking what constant to use for creating joinable pthreads..." >&4
15498         $cat >try.c <<'EOCP'
15499 #include <pthread.h>
15500 int main() {
15501     int detachstate = JOINABLE;
15502 }
15503 EOCP
15504         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15505         if eval $compile; then
15506                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15507                 val="$undef" # Yes, undef.
15508                 set d_old_pthread_create_joinable
15509                 eval $setvar
15510                 val=""
15511                 set old_pthread_create_joinable
15512                 eval $setvar
15513         else
15514                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15515                 if eval $compile; then
15516                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15517                         val="$define"
15518                         set d_old_pthread_create_joinable
15519                         eval $setvar
15520                         val=PTHREAD_CREATE_UNDETACHED
15521                         set old_pthread_create_joinable
15522                         eval $setvar
15523                 else
15524                         set try -DJOINABLE=__UNDETACHED
15525                         if eval $compile; then
15526                                 echo "You seem to use __UNDETACHED." >&4
15527                                 val="$define"
15528                                 set d_old_pthread_create_joinable
15529                                 eval $setvar
15530                                 val=__UNDETACHED
15531                                 set old_pthread_create_joinable
15532                                 eval $setvar
15533                         else
15534                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15535                                 val="$define"
15536                                 set d_old_pthread_create_joinable
15537                                 eval $setvar
15538                                 val=0
15539                                 set old_pthread_create_joinable
15540                                 eval $setvar
15541                         fi
15542                 fi
15543         fi
15544         $rm_try
15545 else
15546     d_old_pthread_create_joinable="$undef"
15547     old_pthread_create_joinable=""
15548 fi
15549
15550 : see if pause exists
15551 set pause d_pause
15552 eval $inlibc
15553
15554 : see if poll exists
15555 set poll d_poll
15556 eval $inlibc
15557
15558 : see if readlink exists
15559 set readlink d_readlink
15560 eval $inlibc
15561
15562 echo " "
15563 procselfexe=''
15564 val="$undef"
15565 case "$d_readlink" in
15566 "$define")
15567         if $issymlink /proc/self/exe ; then
15568                 $ls -l /proc/self/exe > reflect
15569                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15570                         echo "You have Linux-like /proc/self/exe."
15571                         procselfexe='"/proc/self/exe"'
15572                         val="$define"
15573                 fi
15574         fi
15575         if $issymlink /proc/curproc/file ; then
15576                 $ls -l /proc/curproc/file > reflect
15577                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15578                         echo "You have BSD-like /proc/curproc/file."
15579                         procselfexe='"/proc/curproc/file"'
15580                         val="$define"
15581                 fi
15582         fi
15583         ;;
15584 esac
15585 $rm -f reflect
15586 set d_procselfexe
15587 eval $setvar
15588
15589 : backward compatibility for d_hvfork
15590 if test X$d_hvfork != X; then
15591         d_vfork="$d_hvfork"
15592         d_hvfork=''
15593 fi
15594 : see if there is a vfork
15595 val=''
15596 set vfork val
15597 eval $inlibc
15598
15599 d_pseudofork=$undef
15600
15601 : Ok, but do we want to use it. vfork is reportedly unreliable in
15602 : perl on Solaris 2.x, and probably elsewhere.
15603 case "$val" in
15604 $define)
15605         echo " "
15606         case "$usevfork" in
15607         false) dflt='n';;
15608         *) dflt='y';;
15609         esac
15610         cat <<'EOM'
15611
15612 Perl can only use a vfork() that doesn't suffer from strict
15613 restrictions on calling functions or modifying global data in
15614 the child.  For example, glibc-2.1 contains such a vfork()
15615 that is unsuitable.  If your system provides a proper fork()
15616 call, chances are that you do NOT want perl to use vfork().
15617
15618 EOM
15619         rp="Do you still want to use vfork()?"
15620         . ./myread
15621         case "$ans" in
15622         y|Y) ;;
15623         *)
15624                 echo "Ok, we won't use vfork()."
15625                 val="$undef"
15626                 ;;
15627         esac
15628         ;;
15629 esac
15630 set d_vfork
15631 eval $setvar
15632 case "$d_vfork" in
15633 $define) usevfork='true';;
15634 *) usevfork='false';;
15635 esac
15636
15637 : see whether the pthread_atfork exists
15638 $cat >try.c <<EOP
15639 #include <pthread.h>
15640 #include <stdio.h>
15641 int main() {
15642 #ifdef  PTHREAD_ATFORK
15643         pthread_atfork(NULL,NULL,NULL);
15644 #endif
15645 }
15646 EOP
15647
15648 : see if pthread_atfork exists
15649 set try -DPTHREAD_ATFORK
15650 if eval $compile; then
15651     val="$define"
15652 else
15653     val="$undef"
15654 fi
15655 case "$usethreads" in
15656 $define)
15657         case "$val" in
15658         $define) echo 'pthread_atfork found.' >&4        ;;
15659         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15660         esac
15661 esac
15662 set d_pthread_atfork
15663 eval $setvar
15664
15665 : see if pthread_attr_setscope exists
15666 set pthread_attr_setscope d_pthread_attr_setscope
15667 eval $inlibc
15668
15669
15670 : see whether the various POSIXish _yields exist
15671 $cat >try.c <<EOP
15672 #include <pthread.h>
15673 #include <stdio.h>
15674 int main() {
15675 #ifdef SCHED_YIELD
15676         sched_yield();
15677 #else
15678 #ifdef PTHREAD_YIELD
15679         pthread_yield();
15680 #else
15681 #ifdef PTHREAD_YIELD_NULL
15682         pthread_yield(NULL);
15683 #endif
15684 #endif
15685 #endif
15686 }
15687 EOP
15688 : see if sched_yield exists
15689 set try -DSCHED_YIELD
15690 if eval $compile; then
15691     val="$define"
15692     sched_yield='sched_yield()'
15693 else
15694     val="$undef"
15695 fi
15696 case "$usethreads" in
15697 $define)
15698         case "$val" in
15699         $define) echo 'sched_yield() found.' >&4        ;;
15700         *)       echo 'sched_yield() NOT found.' >&4    ;;
15701         esac
15702 esac
15703 set d_sched_yield
15704 eval $setvar
15705
15706 : see if pthread_yield exists
15707 set try -DPTHREAD_YIELD
15708 if eval $compile; then
15709     val="$define"
15710     case "$sched_yield" in
15711     '') sched_yield='pthread_yield()' ;;
15712     esac
15713 else
15714     set try -DPTHREAD_YIELD_NULL
15715     if eval $compile; then
15716         val="$define"
15717         case "$sched_yield" in
15718         '') sched_yield='pthread_yield(NULL)' ;;
15719         esac
15720     else
15721         val="$undef"
15722     fi
15723 fi
15724 case "$usethreads" in
15725 $define)
15726         case "$val" in
15727         $define) echo 'pthread_yield() found.' >&4      ;;
15728         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15729         esac
15730         ;;
15731 esac
15732 set d_pthread_yield
15733 eval $setvar
15734 case "$sched_yield" in
15735 '') sched_yield=undef ;;
15736 esac
15737 $rm_try
15738
15739 : see if random_r exists
15740 set random_r d_random_r
15741 eval $inlibc
15742 case "$d_random_r" in
15743 "$define")
15744         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15745         case "$d_random_r_proto:$usethreads" in
15746         ":define")      d_random_r_proto=define
15747                 set d_random_r_proto random_r $hdrs
15748                 eval $hasproto ;;
15749         *)      ;;
15750         esac
15751         case "$d_random_r_proto" in
15752         define)
15753         case "$random_r_proto" in
15754         ''|0) try='int random_r(int*, struct random_data*);'
15755         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15756         esac
15757         case "$random_r_proto" in
15758         ''|0) try='int random_r(long*, struct random_data*);'
15759         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15760         esac
15761         case "$random_r_proto" in
15762         ''|0) try='int random_r(struct random_data*, int32_t*);'
15763         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15764         esac
15765         case "$random_r_proto" in
15766         ''|0)   d_random_r=undef
15767                 random_r_proto=0
15768                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15769         * )     case "$random_r_proto" in
15770                 REENTRANT_PROTO*) ;;
15771                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15772                 esac
15773                 echo "Prototype: $try" ;;
15774         esac
15775         ;;
15776         *)      case "$usethreads" in
15777                 define) echo "random_r has no prototype, not using it." >&4 ;;
15778                 esac
15779                 d_random_r=undef
15780                 random_r_proto=0
15781                 ;;
15782         esac
15783         ;;
15784 *)      random_r_proto=0
15785         ;;
15786 esac
15787
15788 : see if readdir and friends exist
15789 set readdir d_readdir
15790 eval $inlibc
15791 set seekdir d_seekdir
15792 eval $inlibc
15793 set telldir d_telldir
15794 eval $inlibc
15795 set rewinddir d_rewinddir
15796 eval $inlibc
15797
15798 : see if readdir64_r exists
15799 set readdir64_r d_readdir64_r
15800 eval $inlibc
15801 case "$d_readdir64_r" in
15802 "$define")
15803         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15804         case "$d_readdir64_r_proto:$usethreads" in
15805         ":define")      d_readdir64_r_proto=define
15806                 set d_readdir64_r_proto readdir64_r $hdrs
15807                 eval $hasproto ;;
15808         *)      ;;
15809         esac
15810         case "$d_readdir64_r_proto" in
15811         define)
15812         case "$readdir64_r_proto" in
15813         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15814         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15815         esac
15816         case "$readdir64_r_proto" in
15817         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15818         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15819         esac
15820         case "$readdir64_r_proto" in
15821         ''|0)   d_readdir64_r=undef
15822                 readdir64_r_proto=0
15823                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15824         * )     case "$readdir64_r_proto" in
15825                 REENTRANT_PROTO*) ;;
15826                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15827                 esac
15828                 echo "Prototype: $try" ;;
15829         esac
15830         ;;
15831         *)      case "$usethreads" in
15832                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15833                 esac
15834                 d_readdir64_r=undef
15835                 readdir64_r_proto=0
15836                 ;;
15837         esac
15838         ;;
15839 *)      readdir64_r_proto=0
15840         ;;
15841 esac
15842
15843 : see if readdir_r exists
15844 set readdir_r d_readdir_r
15845 eval $inlibc
15846 case "$d_readdir_r" in
15847 "$define")
15848         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15849         case "$d_readdir_r_proto:$usethreads" in
15850         ":define")      d_readdir_r_proto=define
15851                 set d_readdir_r_proto readdir_r $hdrs
15852                 eval $hasproto ;;
15853         *)      ;;
15854         esac
15855         case "$d_readdir_r_proto" in
15856         define)
15857         case "$readdir_r_proto" in
15858         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15859         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15860         esac
15861         case "$readdir_r_proto" in
15862         ''|0) try='int readdir_r(DIR*, struct dirent*);'
15863         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15864         esac
15865         case "$readdir_r_proto" in
15866         ''|0)   d_readdir_r=undef
15867                 readdir_r_proto=0
15868                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15869         * )     case "$readdir_r_proto" in
15870                 REENTRANT_PROTO*) ;;
15871                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15872                 esac
15873                 echo "Prototype: $try" ;;
15874         esac
15875         ;;
15876         *)      case "$usethreads" in
15877                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15878                 esac
15879                 d_readdir_r=undef
15880                 readdir_r_proto=0
15881                 ;;
15882         esac
15883         ;;
15884 *)      readdir_r_proto=0
15885         ;;
15886 esac
15887
15888 : see if readv exists
15889 set readv d_readv
15890 eval $inlibc
15891
15892 : see if recvmsg exists
15893 set recvmsg d_recvmsg
15894 eval $inlibc
15895
15896 : see if rename exists
15897 set rename d_rename
15898 eval $inlibc
15899
15900 : see if rmdir exists
15901 set rmdir d_rmdir
15902 eval $inlibc
15903
15904 : see if memory.h is available.
15905 val=''
15906 set memory.h val
15907 eval $inhdr
15908
15909 : See if it conflicts with string.h
15910 case "$val" in
15911 $define)
15912         case "$strings" in
15913         '') ;;
15914         *)
15915                 $cppstdin $cppflags $cppminus < $strings > mem.h
15916                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15917                         echo " "
15918                         echo "We won't be including <memory.h>."
15919                         val="$undef"
15920                 fi
15921                 $rm -f mem.h
15922                 ;;
15923         esac
15924 esac
15925 set i_memory
15926 eval $setvar
15927
15928 : can bcopy handle overlapping blocks?
15929 echo " "
15930 val="$undef"
15931 case "$d_memmove" in
15932 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15933 *)      case "$d_bcopy" in
15934         "$define")
15935                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15936                 $cat >try.c <<EOCP
15937 #$i_memory I_MEMORY
15938 #$i_stdlib I_STDLIB
15939 #$i_string I_STRING
15940 #$i_unistd I_UNISTD
15941 EOCP
15942         $cat >>try.c <<'EOCP'
15943 #include <stdio.h>
15944 #ifdef I_MEMORY
15945 #  include <memory.h>
15946 #endif
15947 #ifdef I_STDLIB
15948 #  include <stdlib.h>
15949 #endif
15950 #ifdef I_STRING
15951 #  include <string.h>
15952 #else
15953 #  include <strings.h>
15954 #endif
15955 #ifdef I_UNISTD
15956 #  include <unistd.h>  /* Needed for NetBSD */
15957 #endif
15958 int main()
15959 {
15960 char buf[128], abc[128];
15961 char *b;
15962 int len;
15963 int off;
15964 int align;
15965
15966 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15967    try to store the string in read-only memory. */
15968 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15969
15970 for (align = 7; align >= 0; align--) {
15971         for (len = 36; len; len--) {
15972                 b = buf+align;
15973                 bcopy(abc, b, len);
15974                 for (off = 1; off <= len; off++) {
15975                         bcopy(b, b+off, len);
15976                         bcopy(b+off, b, len);
15977                         if (bcmp(b, abc, len))
15978                                 exit(1);
15979                 }
15980         }
15981 }
15982 exit(0);
15983 }
15984 EOCP
15985                 set try
15986                 if eval $compile_ok; then
15987                         if $run ./try 2>/dev/null; then
15988                                 echo "Yes, it can."
15989                                 val="$define"
15990                         else
15991                                 echo "It can't, sorry."
15992                         fi
15993                 else
15994                         echo "(I can't compile the test program, so we'll assume not...)"
15995                 fi
15996                 ;;
15997         esac
15998         $rm_try
15999         ;;
16000 esac
16001 set d_safebcpy
16002 eval $setvar
16003
16004 : can memcpy handle overlapping blocks?
16005 echo " "
16006 val="$undef"
16007 case "$d_memmove" in
16008 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16009 *)      case "$d_memcpy" in
16010         "$define")
16011                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16012                 $cat >try.c <<EOCP
16013 #$i_memory I_MEMORY
16014 #$i_stdlib I_STDLIB
16015 #$i_string I_STRING
16016 #$i_unistd I_UNISTD
16017 EOCP
16018         $cat >>try.c <<'EOCP'
16019 #include <stdio.h>
16020 #ifdef I_MEMORY
16021 #  include <memory.h>
16022 #endif
16023 #ifdef I_STDLIB
16024 #  include <stdlib.h>
16025 #endif
16026 #ifdef I_STRING
16027 #  include <string.h>
16028 #else
16029 #  include <strings.h>
16030 #endif
16031 #ifdef I_UNISTD
16032 #  include <unistd.h>  /* Needed for NetBSD */
16033 #endif
16034 int main()
16035 {
16036 char buf[128], abc[128];
16037 char *b;
16038 int len;
16039 int off;
16040 int align;
16041
16042 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16043    try to store the string in read-only memory. */
16044 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16045
16046 for (align = 7; align >= 0; align--) {
16047         for (len = 36; len; len--) {
16048                 b = buf+align;
16049                 memcpy(b, abc, len);
16050                 for (off = 1; off <= len; off++) {
16051                         memcpy(b+off, b, len);
16052                         memcpy(b, b+off, len);
16053                         if (memcmp(b, abc, len))
16054                                 exit(1);
16055                 }
16056         }
16057 }
16058 exit(0);
16059 }
16060 EOCP
16061                 set try
16062                 if eval $compile_ok; then
16063                         if $run ./try 2>/dev/null; then
16064                                 echo "Yes, it can."
16065                                 val="$define"
16066                         else
16067                                 echo "It can't, sorry."
16068                         fi
16069                 else
16070                         echo "(I can't compile the test program, so we'll assume not...)"
16071                 fi
16072                 ;;
16073         esac
16074         $rm_try
16075         ;;
16076 esac
16077 set d_safemcpy
16078 eval $setvar
16079
16080 : can memcmp be trusted to compare relative magnitude?
16081 val="$undef"
16082 case "$d_memcmp" in
16083 "$define")
16084         echo " "
16085         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16086         $cat >try.c <<EOCP
16087 #$i_memory I_MEMORY
16088 #$i_stdlib I_STDLIB
16089 #$i_string I_STRING
16090 #$i_unistd I_UNISTD
16091 EOCP
16092         $cat >>try.c <<'EOCP'
16093 #include <stdio.h>
16094 #ifdef I_MEMORY
16095 #  include <memory.h>
16096 #endif
16097 #ifdef I_STDLIB
16098 #  include <stdlib.h>
16099 #endif
16100 #ifdef I_STRING
16101 #  include <string.h>
16102 #else
16103 #  include <strings.h>
16104 #endif
16105 #ifdef I_UNISTD
16106 #  include <unistd.h>  /* Needed for NetBSD */
16107 #endif
16108 int main()
16109 {
16110 char a = -1;
16111 char b = 0;
16112 if ((a < b) && memcmp(&a, &b, 1) < 0)
16113         exit(1);
16114 exit(0);
16115 }
16116 EOCP
16117         set try
16118         if eval $compile_ok; then
16119                 if $run ./try 2>/dev/null; then
16120                         echo "Yes, it can."
16121                         val="$define"
16122                 else
16123                         echo "No, it can't (it uses signed chars)."
16124                 fi
16125         else
16126                 echo "(I can't compile the test program, so we'll assume not...)"
16127         fi
16128         ;;
16129 esac
16130 $rm_try
16131 set d_sanemcmp
16132 eval $setvar
16133
16134 : see if prototype for sbrk is available
16135 echo " "
16136 set d_sbrkproto sbrk $i_unistd unistd.h
16137 eval $hasproto
16138
16139 : see if select exists
16140 set select d_select
16141 eval $inlibc
16142
16143 : see if semctl exists
16144 set semctl d_semctl
16145 eval $inlibc
16146
16147 : see if semget exists
16148 set semget d_semget
16149 eval $inlibc
16150
16151 : see if semop exists
16152 set semop d_semop
16153 eval $inlibc
16154
16155 : see how much of the 'sem*(2)' library is present.
16156 h_sem=true
16157 echo " "
16158 case "$d_semctl$d_semget$d_semop" in
16159 *"$undef"*) h_sem=false;;
16160 esac
16161 case "$osname" in
16162 freebsd)
16163     case "`ipcs 2>&1`" in
16164     "SVID messages"*"not configured"*)
16165         echo "Your $osname does not have the sem*(2) configured." >&4
16166         h_sem=false
16167         val="$undef"
16168         set semctl d_semctl
16169         eval $setvar
16170         set semget d_semget
16171         eval $setvar
16172         set semop d_semop
16173         eval $setvar
16174         ;;
16175     esac
16176     ;;
16177 esac
16178 : we could also check for sys/ipc.h ...
16179 if $h_sem && $test `./findhdr sys/sem.h`; then
16180         echo "You have the full sem*(2) library." >&4
16181         val="$define"
16182 else
16183         echo "You don't have the full sem*(2) library." >&4
16184         val="$undef"
16185 fi
16186 set d_sem
16187 eval $setvar
16188
16189 : see whether sys/sem.h defines union semun
16190 echo " "
16191 $cat > try.c <<'END'
16192 #include <sys/types.h>
16193 #include <sys/ipc.h>
16194 #include <sys/sem.h>
16195 int main () { union semun semun; semun.buf = 0; }
16196 END
16197 set try
16198 if eval $compile; then
16199     echo "You have union semun in <sys/sem.h>." >&4
16200     val="$define"
16201 else
16202     echo "You do not have union semun in <sys/sem.h>." >&4
16203     val="$undef"
16204 fi
16205 $rm_try
16206 set d_union_semun
16207 eval $setvar
16208
16209 : see how to do semctl IPC_STAT
16210 case "$d_sem" in
16211 $define)
16212     echo " "
16213     $cat > tryh.h <<END
16214 #ifndef S_IRUSR
16215 #   ifdef S_IREAD
16216 #       define S_IRUSR S_IREAD
16217 #       define S_IWUSR S_IWRITE
16218 #       define S_IXUSR S_IEXEC
16219 #   else
16220 #       define S_IRUSR 0400
16221 #       define S_IWUSR 0200
16222 #       define S_IXUSR 0100
16223 #   endif
16224 #   define S_IRGRP (S_IRUSR>>3)
16225 #   define S_IWGRP (S_IWUSR>>3)
16226 #   define S_IXGRP (S_IXUSR>>3)
16227 #   define S_IROTH (S_IRUSR>>6)
16228 #   define S_IWOTH (S_IWUSR>>6)
16229 #   define S_IXOTH (S_IXUSR>>6)
16230 #endif
16231 #ifndef S_IRWXU
16232 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16233 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16234 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16235 #endif
16236 END
16237     : see whether semctl IPC_STAT can use union semun
16238     case "$d_semctl_semun" in
16239     '')
16240       val="$undef"
16241       $cat > try.c <<END
16242 #include <sys/types.h>
16243 #include <sys/ipc.h>
16244 #include <sys/sem.h>
16245 #include <sys/stat.h>
16246 #include <stdio.h>
16247 #include <errno.h>
16248 #include "tryh.h"
16249 #ifndef errno
16250 extern int errno;
16251 #endif
16252 #$d_union_semun HAS_UNION_SEMUN
16253 int main() {
16254     union semun
16255 #ifndef HAS_UNION_SEMUN
16256     {
16257         int val;
16258         struct semid_ds *buf;
16259         unsigned short *array;
16260     }
16261 #endif
16262     arg;
16263     int sem, st;
16264
16265 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16266     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16267     if (sem > -1) {
16268         struct semid_ds argbuf;
16269         arg.buf = &argbuf;
16270 #       ifdef IPC_STAT
16271         st = semctl(sem, 0, IPC_STAT, arg);
16272         if (st == 0)
16273             printf("semun\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   return 0;
16285 }
16286 END
16287       set try
16288       if eval $compile; then
16289           xxx=`$run ./try`
16290           case "$xxx" in
16291           semun) val="$define" ;;
16292           esac
16293       fi
16294       $rm_try
16295       set d_semctl_semun
16296       eval $setvar
16297       ;;
16298     esac
16299     case "$d_semctl_semun" in
16300     $define)
16301         echo "You can use union semun for semctl IPC_STAT." >&4
16302         also='also'
16303         ;;
16304     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16305         also=''
16306         ;;
16307     esac
16308
16309     : see whether semctl IPC_STAT can use struct semid_ds pointer
16310     case "$d_semctl_semid_ds" in
16311     '')
16312       val="$undef"
16313       $cat > try.c <<'END'
16314 #include <sys/types.h>
16315 #include <sys/ipc.h>
16316 #include <sys/sem.h>
16317 #include <sys/stat.h>
16318 #include "tryh.h"
16319 #include <stdio.h>
16320 #include <errno.h>
16321 #ifndef errno
16322 extern int errno;
16323 #endif
16324 int main() {
16325     struct semid_ds arg;
16326     int sem, st;
16327
16328 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16329     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16330     if (sem > -1) {
16331 #       ifdef IPC_STAT
16332         st = semctl(sem, 0, IPC_STAT, &arg);
16333         if (st == 0)
16334             printf("semid_ds\n");
16335         else
16336 #       endif /* IPC_STAT */
16337             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16338 #       ifdef IPC_RMID
16339         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16340 #       endif /* IPC_RMID */
16341             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16342     } else
16343 #endif /* IPC_PRIVATE && ... */
16344         printf("semget failed: errno = %d\n", errno);
16345
16346     return 0;
16347 }
16348 END
16349       set try
16350       if eval $compile; then
16351           xxx=`$run ./try`
16352           case "$xxx" in
16353           semid_ds) val="$define" ;;
16354           esac
16355       fi
16356       $rm_try
16357       set d_semctl_semid_ds
16358       eval $setvar
16359       ;;
16360     esac
16361     case "$d_semctl_semid_ds" in
16362     $define)
16363         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16364         ;;
16365     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16366         ;;
16367     esac
16368     ;;
16369 *)  val="$undef"
16370
16371     # We do not have the full sem*(2) library, so assume we can not
16372     # use either.
16373
16374     set d_semctl_semun
16375     eval $setvar
16376
16377     set d_semctl_semid_ds
16378     eval $setvar
16379     ;;
16380 esac
16381 $rm_try tryh.h
16382
16383 : see if sendmsg exists
16384 set sendmsg d_sendmsg
16385 eval $inlibc
16386
16387 : see if setegid exists
16388 set setegid d_setegid
16389 eval $inlibc
16390
16391 : see if seteuid exists
16392 set seteuid d_seteuid
16393 eval $inlibc
16394
16395 : see if setgrent exists
16396 set setgrent d_setgrent
16397 eval $inlibc
16398
16399 : see if setgrent_r exists
16400 set setgrent_r d_setgrent_r
16401 eval $inlibc
16402 case "$d_setgrent_r" in
16403 "$define")
16404         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16405         case "$d_setgrent_r_proto:$usethreads" in
16406         ":define")      d_setgrent_r_proto=define
16407                 set d_setgrent_r_proto setgrent_r $hdrs
16408                 eval $hasproto ;;
16409         *)      ;;
16410         esac
16411         case "$d_setgrent_r_proto" in
16412         define)
16413         case "$setgrent_r_proto" in
16414         ''|0) try='int setgrent_r(FILE**);'
16415         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16416         esac
16417         case "$setgrent_r_proto" in
16418         ''|0) try='void setgrent_r(FILE**);'
16419         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16420         esac
16421         case "$setgrent_r_proto" in
16422         ''|0)   d_setgrent_r=undef
16423                 setgrent_r_proto=0
16424                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16425         * )     case "$setgrent_r_proto" in
16426                 REENTRANT_PROTO*) ;;
16427                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16428                 esac
16429                 echo "Prototype: $try" ;;
16430         esac
16431         ;;
16432         *)      case "$usethreads" in
16433                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16434                 esac
16435                 d_setgrent_r=undef
16436                 setgrent_r_proto=0
16437                 ;;
16438         esac
16439         ;;
16440 *)      setgrent_r_proto=0
16441         ;;
16442 esac
16443
16444 : see if sethostent exists
16445 set sethostent d_sethent
16446 eval $inlibc
16447
16448 : see if sethostent_r exists
16449 set sethostent_r d_sethostent_r
16450 eval $inlibc
16451 case "$d_sethostent_r" in
16452 "$define")
16453         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16454         case "$d_sethostent_r_proto:$usethreads" in
16455         ":define")      d_sethostent_r_proto=define
16456                 set d_sethostent_r_proto sethostent_r $hdrs
16457                 eval $hasproto ;;
16458         *)      ;;
16459         esac
16460         case "$d_sethostent_r_proto" in
16461         define)
16462         case "$sethostent_r_proto" in
16463         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16464         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16465         esac
16466         case "$sethostent_r_proto" in
16467         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16468         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16469         esac
16470         case "$sethostent_r_proto" in
16471         ''|0)   d_sethostent_r=undef
16472                 sethostent_r_proto=0
16473                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16474         * )     case "$sethostent_r_proto" in
16475                 REENTRANT_PROTO*) ;;
16476                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16477                 esac
16478                 echo "Prototype: $try" ;;
16479         esac
16480         ;;
16481         *)      case "$usethreads" in
16482                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16483                 esac
16484                 d_sethostent_r=undef
16485                 sethostent_r_proto=0
16486                 ;;
16487         esac
16488         ;;
16489 *)      sethostent_r_proto=0
16490         ;;
16491 esac
16492
16493 : see if setitimer exists
16494 set setitimer d_setitimer
16495 eval $inlibc
16496
16497 : see if setlinebuf exists
16498 set setlinebuf d_setlinebuf
16499 eval $inlibc
16500
16501 : see if setlocale exists
16502 set setlocale d_setlocale
16503 eval $inlibc
16504
16505 : see if locale.h is available
16506 set locale.h i_locale
16507 eval $inhdr
16508
16509 : see if setlocale_r exists
16510 set setlocale_r d_setlocale_r
16511 eval $inlibc
16512 case "$d_setlocale_r" in
16513 "$define")
16514         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16515         case "$d_setlocale_r_proto:$usethreads" in
16516         ":define")      d_setlocale_r_proto=define
16517                 set d_setlocale_r_proto setlocale_r $hdrs
16518                 eval $hasproto ;;
16519         *)      ;;
16520         esac
16521         case "$d_setlocale_r_proto" in
16522         define)
16523         case "$setlocale_r_proto" in
16524         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16525         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16526         esac
16527         case "$setlocale_r_proto" in
16528         ''|0)   d_setlocale_r=undef
16529                 setlocale_r_proto=0
16530                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16531         * )     case "$setlocale_r_proto" in
16532                 REENTRANT_PROTO*) ;;
16533                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16534                 esac
16535                 echo "Prototype: $try" ;;
16536         esac
16537         ;;
16538         *)      case "$usethreads" in
16539                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16540                 esac
16541                 d_setlocale_r=undef
16542                 setlocale_r_proto=0
16543                 ;;
16544         esac
16545         ;;
16546 *)      setlocale_r_proto=0
16547         ;;
16548 esac
16549
16550 : see if setnetent exists
16551 set setnetent d_setnent
16552 eval $inlibc
16553
16554 : see if setnetent_r exists
16555 set setnetent_r d_setnetent_r
16556 eval $inlibc
16557 case "$d_setnetent_r" in
16558 "$define")
16559         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16560         case "$d_setnetent_r_proto:$usethreads" in
16561         ":define")      d_setnetent_r_proto=define
16562                 set d_setnetent_r_proto setnetent_r $hdrs
16563                 eval $hasproto ;;
16564         *)      ;;
16565         esac
16566         case "$d_setnetent_r_proto" in
16567         define)
16568         case "$setnetent_r_proto" in
16569         ''|0) try='int setnetent_r(int, struct netent_data*);'
16570         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16571         esac
16572         case "$setnetent_r_proto" in
16573         ''|0) try='void setnetent_r(int, struct netent_data*);'
16574         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16575         esac
16576         case "$setnetent_r_proto" in
16577         ''|0)   d_setnetent_r=undef
16578                 setnetent_r_proto=0
16579                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16580         * )     case "$setnetent_r_proto" in
16581                 REENTRANT_PROTO*) ;;
16582                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16583                 esac
16584                 echo "Prototype: $try" ;;
16585         esac
16586         ;;
16587         *)      case "$usethreads" in
16588                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16589                 esac
16590                 d_setnetent_r=undef
16591                 setnetent_r_proto=0
16592                 ;;
16593         esac
16594         ;;
16595 *)      setnetent_r_proto=0
16596         ;;
16597 esac
16598
16599 : see if setprotoent exists
16600 set setprotoent d_setpent
16601 eval $inlibc
16602
16603 : see if setpgid exists
16604 set setpgid d_setpgid
16605 eval $inlibc
16606
16607 : see if setpgrp2 exists
16608 set setpgrp2 d_setpgrp2
16609 eval $inlibc
16610
16611 : see if setpriority exists
16612 set setpriority d_setprior
16613 eval $inlibc
16614
16615 : see if setproctitle exists
16616 set setproctitle d_setproctitle
16617 eval $inlibc
16618
16619 : see if setprotoent_r exists
16620 set setprotoent_r d_setprotoent_r
16621 eval $inlibc
16622 case "$d_setprotoent_r" in
16623 "$define")
16624         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16625         case "$d_setprotoent_r_proto:$usethreads" in
16626         ":define")      d_setprotoent_r_proto=define
16627                 set d_setprotoent_r_proto setprotoent_r $hdrs
16628                 eval $hasproto ;;
16629         *)      ;;
16630         esac
16631         case "$d_setprotoent_r_proto" in
16632         define)
16633         case "$setprotoent_r_proto" in
16634         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16635         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16636         esac
16637         case "$setprotoent_r_proto" in
16638         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16639         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16640         esac
16641         case "$setprotoent_r_proto" in
16642         ''|0)   d_setprotoent_r=undef
16643                 setprotoent_r_proto=0
16644                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16645         * )     case "$setprotoent_r_proto" in
16646                 REENTRANT_PROTO*) ;;
16647                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16648                 esac
16649                 echo "Prototype: $try" ;;
16650         esac
16651         ;;
16652         *)      case "$usethreads" in
16653                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16654                 esac
16655                 d_setprotoent_r=undef
16656                 setprotoent_r_proto=0
16657                 ;;
16658         esac
16659         ;;
16660 *)      setprotoent_r_proto=0
16661         ;;
16662 esac
16663
16664 : see if setpwent exists
16665 set setpwent d_setpwent
16666 eval $inlibc
16667
16668 : see if setpwent_r exists
16669 set setpwent_r d_setpwent_r
16670 eval $inlibc
16671 case "$d_setpwent_r" in
16672 "$define")
16673         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16674         case "$d_setpwent_r_proto:$usethreads" in
16675         ":define")      d_setpwent_r_proto=define
16676                 set d_setpwent_r_proto setpwent_r $hdrs
16677                 eval $hasproto ;;
16678         *)      ;;
16679         esac
16680         case "$d_setpwent_r_proto" in
16681         define)
16682         case "$setpwent_r_proto" in
16683         ''|0) try='int setpwent_r(FILE**);'
16684         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16685         esac
16686         case "$setpwent_r_proto" in
16687         ''|0) try='void setpwent_r(FILE**);'
16688         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16689         esac
16690         case "$setpwent_r_proto" in
16691         ''|0)   d_setpwent_r=undef
16692                 setpwent_r_proto=0
16693                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16694         * )     case "$setpwent_r_proto" in
16695                 REENTRANT_PROTO*) ;;
16696                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16697                 esac
16698                 echo "Prototype: $try" ;;
16699         esac
16700         ;;
16701         *)      case "$usethreads" in
16702                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16703                 esac
16704                 d_setpwent_r=undef
16705                 setpwent_r_proto=0
16706                 ;;
16707         esac
16708         ;;
16709 *)      setpwent_r_proto=0
16710         ;;
16711 esac
16712
16713 : see if setregid exists
16714 set setregid d_setregid
16715 eval $inlibc
16716 set setresgid d_setresgid
16717 eval $inlibc
16718
16719 : see if setreuid exists
16720 set setreuid d_setreuid
16721 eval $inlibc
16722 set setresuid d_setresuid
16723 eval $inlibc
16724
16725 : see if setrgid exists
16726 set setrgid d_setrgid
16727 eval $inlibc
16728
16729 : see if setruid exists
16730 set setruid d_setruid
16731 eval $inlibc
16732
16733 : see if setservent exists
16734 set setservent d_setsent
16735 eval $inlibc
16736
16737 : see if setservent_r exists
16738 set setservent_r d_setservent_r
16739 eval $inlibc
16740 case "$d_setservent_r" in
16741 "$define")
16742         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16743         case "$d_setservent_r_proto:$usethreads" in
16744         ":define")      d_setservent_r_proto=define
16745                 set d_setservent_r_proto setservent_r $hdrs
16746                 eval $hasproto ;;
16747         *)      ;;
16748         esac
16749         case "$d_setservent_r_proto" in
16750         define)
16751         case "$setservent_r_proto" in
16752         ''|0) try='int setservent_r(int, struct servent_data*);'
16753         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16754         esac
16755         case "$setservent_r_proto" in
16756         ''|0) try='void setservent_r(int, struct servent_data*);'
16757         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16758         esac
16759         case "$setservent_r_proto" in
16760         ''|0)   d_setservent_r=undef
16761                 setservent_r_proto=0
16762                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16763         * )     case "$setservent_r_proto" in
16764                 REENTRANT_PROTO*) ;;
16765                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16766                 esac
16767                 echo "Prototype: $try" ;;
16768         esac
16769         ;;
16770         *)      case "$usethreads" in
16771                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16772                 esac
16773                 d_setservent_r=undef
16774                 setservent_r_proto=0
16775                 ;;
16776         esac
16777         ;;
16778 *)      setservent_r_proto=0
16779         ;;
16780 esac
16781
16782 : see if setsid exists
16783 set setsid d_setsid
16784 eval $inlibc
16785
16786 : see if setvbuf exists
16787 set setvbuf d_setvbuf
16788 eval $inlibc
16789
16790 : see if sfio.h is available
16791 set sfio.h i_sfio
16792 eval $inhdr
16793
16794
16795 : see if sfio library is available
16796 case "$i_sfio" in
16797 $define)
16798         val=''
16799         set sfreserve val
16800         eval $inlibc
16801         ;;
16802 *)
16803         val="$undef"
16804         ;;
16805 esac
16806 : Ok, but do we want to use it.
16807 case "$val" in
16808 $define)
16809         case "$usesfio" in
16810         true|$define|[yY]*) dflt='y';;
16811         *) dflt='n';;
16812         esac
16813         echo "$package can use the sfio library, but it is experimental."
16814         case "$useperlio" in
16815         "$undef")
16816             echo "For sfio also the PerlIO abstraction layer is needed."
16817             echo "Earlier you said you wouldn't want that."
16818             ;;
16819         esac
16820         rp="You seem to have sfio available, do you want to try using it?"
16821         . ./myread
16822         case "$ans" in
16823         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
16824                 useperlio="$define"
16825                 val="$define"
16826                 ;;
16827         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
16828                 val="$undef"
16829                 ;;
16830         esac
16831         ;;
16832 *)      case "$usesfio" in
16833         true|$define|[yY]*)
16834                 echo "Sorry, cannot find sfio on this machine." >&4
16835                 echo "Ignoring your setting of usesfio=$usesfio." >&4
16836                 val="$undef"
16837                 ;;
16838         esac
16839         ;;
16840 esac
16841 set d_sfio
16842 eval $setvar
16843 case "$d_sfio" in
16844 $define) usesfio='true';;
16845 *) usesfio='false';;
16846 esac
16847 case "$d_sfio" in
16848 $define) ;;
16849 *)      : Remove sfio from list of libraries to use
16850         case "$libs" in
16851         *-lsfio*)
16852                 echo "Removing unneeded -lsfio from library list" >&4
16853                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16854                 shift
16855                 libs="$*"
16856                 echo "libs = $libs" >&4
16857                 ;;
16858         esac
16859 ;;
16860 esac
16861
16862
16863 : see if shmctl exists
16864 set shmctl d_shmctl
16865 eval $inlibc
16866
16867 : see if shmget exists
16868 set shmget d_shmget
16869 eval $inlibc
16870
16871 : see if shmat exists
16872 set shmat d_shmat
16873 eval $inlibc
16874 : see what shmat returns
16875 case "$d_shmat" in
16876 "$define")
16877         $cat >shmat.c <<'END'
16878 #include <sys/shm.h>
16879 void *shmat();
16880 END
16881         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16882                 shmattype='void *'
16883         else
16884                 shmattype='char *'
16885         fi
16886         echo "and it returns ($shmattype)." >&4
16887         : see if a prototype for shmat is available
16888         xxx=`./findhdr sys/shm.h`
16889         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16890         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16891                 val="$define"
16892         else
16893                 val="$undef"
16894         fi
16895         $rm -f shmat.[co]
16896         ;;
16897 *)
16898         val="$undef"
16899         ;;
16900 esac
16901 set d_shmatprototype
16902 eval $setvar
16903
16904 : see if shmdt exists
16905 set shmdt d_shmdt
16906 eval $inlibc
16907
16908 : see how much of the 'shm*(2)' library is present.
16909 h_shm=true
16910 echo " "
16911 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16912 *"$undef"*) h_shm=false;;
16913 esac
16914 case "$osname" in
16915 freebsd)
16916     case "`ipcs 2>&1`" in
16917     "SVID shared memory"*"not configured"*)
16918         echo "Your $osname does not have the shm*(2) configured." >&4
16919         h_shm=false
16920         val="$undef"
16921         set shmctl d_shmctl
16922         evat $setvar
16923         set shmget d_shmget
16924         evat $setvar
16925         set shmat d_shmat
16926         evat $setvar
16927         set shmdt d_shmdt
16928         evat $setvar
16929         ;;
16930     esac
16931     ;;
16932 esac
16933 : we could also check for sys/ipc.h ...
16934 if $h_shm && $test `./findhdr sys/shm.h`; then
16935         echo "You have the full shm*(2) library." >&4
16936         val="$define"
16937 else
16938         echo "You don't have the full shm*(2) library." >&4
16939         val="$undef"
16940 fi
16941 set d_shm
16942 eval $setvar
16943
16944 echo " "
16945 : see if we have sigaction
16946 if set sigaction val -f d_sigaction; eval $csym; $val; then
16947         echo 'sigaction() found.' >&4
16948         $cat > try.c <<EOP
16949 #include <stdio.h>
16950 #include <sys/types.h>
16951 #include <signal.h>
16952 #$i_stdlib I_STDLIB
16953 #ifdef I_STDLIB
16954 #include <stdlib.h>
16955 #endif
16956 int main()
16957 {
16958     struct sigaction act, oact;
16959     act.sa_flags = 0;
16960     oact.sa_handler = 0;
16961     /* so that act and oact are used */
16962     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16963 }
16964 EOP
16965         set try
16966         if eval $compile_ok; then
16967                 val="$define"
16968         else
16969                 echo "But you don't seem to have a useable struct sigaction." >&4
16970                 val="$undef"
16971         fi
16972 else
16973         echo 'sigaction NOT found.' >&4
16974         val="$undef"
16975 fi
16976 set d_sigaction; eval $setvar
16977 $rm_try
16978
16979 : see if this is a sunmath.h system
16980 set sunmath.h i_sunmath
16981 eval $inhdr
16982
16983 : see if signbit exists
16984 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
16985 $cat >try.c <<EOCP
16986 #$i_math I_MATH
16987 #$i_sunmath I_SUNMATH
16988 #ifdef I_MATH
16989 #  include <math.h>
16990 #endif
16991 #ifdef I_SUNMATH  /* Solaris special math library */
16992 #  include <sunmath.h>
16993 #endif
16994 #define NV $nvtype
16995 int main(int argc, char **argv)
16996 {
16997     NV x = 0.0;
16998     NV y = -0.0;
16999     if ((signbit(x) == 0) && (signbit(y) != 0))
17000         return 0;
17001     else
17002         return 1;
17003 }
17004 EOCP
17005 val="$undef"
17006 set try
17007 if eval $compile; then
17008     if $run ./try; then
17009         $echo "Yes." >&4
17010         val="$define"
17011     else
17012         $echo "Signbit seems to be available, but doesn't work as I expected."
17013         $echo "I won't use it." >&4
17014         val="$undef"
17015     fi
17016 else
17017     $echo "Nope." >&4
17018     dflt="$undef"
17019 fi
17020 set d_signbit
17021 eval $setvar
17022 $rm_try
17023
17024 : see if sigprocmask exists
17025 set sigprocmask d_sigprocmask
17026 eval $inlibc
17027
17028 : see if sigsetjmp exists
17029 echo " "
17030 case "$d_sigsetjmp" in
17031 '')
17032         $cat >try.c <<EOP
17033 #include <setjmp.h>
17034 #$i_stdlib I_STDLIB
17035 #ifdef I_STDLIB
17036 #include <stdlib.h>
17037 #endif
17038 sigjmp_buf env;
17039 int set = 1;
17040 int main()
17041 {
17042         if (sigsetjmp(env,1))
17043                 exit(set);
17044         set = 0;
17045         siglongjmp(env, 1);
17046         exit(1);
17047 }
17048 EOP
17049         set try
17050         if eval $compile; then
17051                 if $run ./try >/dev/null 2>&1; then
17052                         echo "POSIX sigsetjmp found." >&4
17053                         val="$define"
17054                 else
17055                         $cat >&4 <<EOM
17056 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17057 I'll ignore them.
17058 EOM
17059                         val="$undef"
17060                 fi
17061         else
17062                 echo "sigsetjmp not found." >&4
17063                 val="$undef"
17064         fi
17065         ;;
17066 *) val="$d_sigsetjmp"
17067         case "$d_sigsetjmp" in
17068         $define) echo "POSIX sigsetjmp found." >&4;;
17069         $undef) echo "sigsetjmp not found." >&4;;
17070         esac
17071         ;;
17072 esac
17073 set d_sigsetjmp
17074 eval $setvar
17075 $rm_try
17076
17077 : see if snprintf exists
17078 set snprintf d_snprintf
17079 eval $inlibc
17080
17081 : see if vsnprintf exists
17082 set vsnprintf d_vsnprintf
17083 eval $inlibc
17084
17085 case "$d_snprintf-$d_vsnprintf" in
17086 "$define-$define")
17087     $cat <<EOM
17088 Checking whether your snprintf() and vsnprintf() work okay...
17089 EOM
17090     $cat >try.c <<'EOCP'
17091 /* v?snprintf testing logic courtesy of Russ Allbery.
17092  * According to C99:
17093  * - if the buffer is too short it still must be \0-terminated
17094  * - if the buffer is too short the potentially required length
17095  *   must be returned and not -1
17096  * - if the buffer is NULL the potentially required length
17097  *   must be returned and not -1 or core dump
17098  */
17099 #include <stdio.h>
17100 #include <stdarg.h>
17101
17102 char buf[2];
17103
17104 int test (char *format, ...)
17105 {
17106     va_list args;
17107     int count;
17108
17109     va_start (args, format);
17110     count = vsnprintf (buf, sizeof buf, format, args);
17111     va_end (args);
17112     return count;
17113 }
17114
17115 int main ()
17116 {
17117     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17118              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17119 }
17120 EOCP
17121     set try
17122     if eval $compile; then
17123         `$run ./try`
17124         case "$?" in
17125         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17126         *) cat <<EOM >&4
17127 Your snprintf() and snprintf() don't seem to be working okay.
17128 EOM
17129            d_snprintf="$undef"
17130            d_vsnprintf="$undef"
17131            ;;
17132         esac
17133     else
17134         echo "(I can't seem to compile the test program--assuming they don't)"
17135         d_snprintf="$undef"
17136         d_vsnprintf="$undef"
17137     fi
17138     $rm_try
17139     ;;
17140 esac
17141
17142 : see if sockatmark exists
17143 set sockatmark d_sockatmark
17144 eval $inlibc
17145
17146 : see if prototype for sockatmark is available
17147 echo " "
17148 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17149 eval $hasproto
17150
17151 : see if socks5_init exists
17152 set socks5_init d_socks5_init
17153 eval $inlibc
17154
17155 : see if sprintf returns the length of the string in the buffer as per ANSI
17156 $echo "Checking whether sprintf returns the length of the string..." >&4
17157 $cat <<EOP >try.c
17158 #include <stdio.h>
17159 #$i_stdlib I_STDLIB
17160 #ifdef I_STDLIB
17161 #include <stdlib.h>
17162 #endif
17163 #$i_string I_STRING
17164 #ifdef I_STRING
17165 #  include <string.h>
17166 #else
17167 #  include <strings.h>
17168 #endif
17169 #$i_math I_MATH
17170 #ifdef I_MATH
17171 #include <math.h>
17172 #endif
17173
17174 char buffer[256];
17175
17176 int check (size_t expect, int test) {
17177   size_t got = strlen(buffer);
17178   if (expect == got)
17179     return 0;
17180
17181   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17182        test, buffer);
17183   exit (test);
17184 }
17185
17186 int main(int argc, char **argv) {
17187   int test = 0;
17188
17189   check(sprintf(buffer, ""), ++test);
17190   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17191   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17192
17193   return 0;
17194 }
17195 EOP
17196 set try
17197
17198 d_sprintf_returns_strlen="$undef"
17199 if eval $compile; then
17200     xxx="`$run ./try`"
17201     case "$?" in
17202         0) cat >&4 <<EOM
17203 sprintf returns the length of the string (as ANSI says it should)
17204 EOM
17205         d_sprintf_returns_strlen="$define"
17206         ;;
17207         *) cat >&4 <<EOM
17208 sprintf does not return the length of the string (how old is this system?)
17209 EOM
17210         d_sprintf_returns_strlen="$undef"
17211         ;;
17212     esac
17213 fi
17214 $rm_try
17215
17216 : see if srand48_r exists
17217 set srand48_r d_srand48_r
17218 eval $inlibc
17219 case "$d_srand48_r" in
17220 "$define")
17221         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17222         case "$d_srand48_r_proto:$usethreads" in
17223         ":define")      d_srand48_r_proto=define
17224                 set d_srand48_r_proto srand48_r $hdrs
17225                 eval $hasproto ;;
17226         *)      ;;
17227         esac
17228         case "$d_srand48_r_proto" in
17229         define)
17230         case "$srand48_r_proto" in
17231         ''|0) try='int srand48_r(long, struct drand48_data*);'
17232         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17233         esac
17234         case "$srand48_r_proto" in
17235         ''|0)   d_srand48_r=undef
17236                 srand48_r_proto=0
17237                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17238         * )     case "$srand48_r_proto" in
17239                 REENTRANT_PROTO*) ;;
17240                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17241                 esac
17242                 echo "Prototype: $try" ;;
17243         esac
17244         ;;
17245         *)      case "$usethreads" in
17246                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17247                 esac
17248                 d_srand48_r=undef
17249                 srand48_r_proto=0
17250                 ;;
17251         esac
17252         ;;
17253 *)      srand48_r_proto=0
17254         ;;
17255 esac
17256
17257 : see if srandom_r exists
17258 set srandom_r d_srandom_r
17259 eval $inlibc
17260 case "$d_srandom_r" in
17261 "$define")
17262         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17263         case "$d_srandom_r_proto:$usethreads" in
17264         ":define")      d_srandom_r_proto=define
17265                 set d_srandom_r_proto srandom_r $hdrs
17266                 eval $hasproto ;;
17267         *)      ;;
17268         esac
17269         case "$d_srandom_r_proto" in
17270         define)
17271         case "$srandom_r_proto" in
17272         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17273         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17274         esac
17275         case "$srandom_r_proto" in
17276         ''|0)   d_srandom_r=undef
17277                 srandom_r_proto=0
17278                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17279         * )     case "$srandom_r_proto" in
17280                 REENTRANT_PROTO*) ;;
17281                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17282                 esac
17283                 echo "Prototype: $try" ;;
17284         esac
17285         ;;
17286         *)      case "$usethreads" in
17287                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17288                 esac
17289                 d_srandom_r=undef
17290                 srandom_r_proto=0
17291                 ;;
17292         esac
17293         ;;
17294 *)      srandom_r_proto=0
17295         ;;
17296 esac
17297
17298 : see if prototype for setresgid is available
17299 echo " "
17300 set d_sresgproto setresgid $i_unistd unistd.h
17301 eval $hasproto
17302
17303 : see if prototype for setresuid is available
17304 echo " "
17305 set d_sresuproto setresuid $i_unistd unistd.h
17306 eval $hasproto
17307
17308 : see if sys/stat.h is available
17309 set sys/stat.h i_sysstat
17310 eval $inhdr
17311
17312
17313 : see if stat knows about block sizes
17314 echo " "
17315 echo "Checking to see if your struct stat has st_blocks field..." >&4
17316 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17317 eval $hasfield
17318
17319
17320 : see if this is a sys/vfs.h system
17321 set sys/vfs.h i_sysvfs
17322 eval $inhdr
17323
17324
17325 : see if this is a sys/statfs.h system
17326 set sys/statfs.h i_sysstatfs
17327 eval $inhdr
17328
17329
17330 echo " "
17331 echo "Checking to see if your system supports struct statfs..." >&4
17332 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
17333 eval $hasstruct
17334 case "$d_statfs_s" in
17335 "$define")      echo "Yes, it does."   ;;
17336 *)              echo "No, it doesn't." ;;
17337 esac
17338
17339
17340
17341 : see if struct statfs knows about f_flags
17342 case "$d_statfs_s" in
17343 define) 
17344         echo " "
17345         echo "Checking to see if your struct statfs has f_flags field..." >&4
17346         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
17347         eval $hasfield
17348         ;;
17349 *)      val="$undef"
17350         set d_statfs_f_flags
17351         eval $setvar
17352         ;;
17353 esac
17354 case "$d_statfs_f_flags" in
17355 "$define")      echo "Yes, it does."   ;;
17356 *)              echo "No, it doesn't." ;;
17357 esac
17358
17359 $cat >&4 <<EOM
17360 Checking how to access stdio streams by file descriptor number...
17361 EOM
17362 case "$stdio_stream_array" in
17363 '')     $cat >try.c <<EOCP
17364 #include <stdio.h>
17365 int main() {
17366   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17367     printf("yes\n");
17368 }
17369 EOCP
17370         for s in _iob __iob __sF
17371         do
17372                 set try -DSTDIO_STREAM_ARRAY=$s
17373                 if eval $compile; then
17374                         case "`$run ./try`" in
17375                         yes)    stdio_stream_array=$s; break ;;
17376                         esac
17377                 fi
17378         done
17379         $rm_try
17380 esac
17381 case "$stdio_stream_array" in
17382 '')     $cat >&4 <<EOM
17383 I can't figure out how to access stdio streams by file descriptor number.
17384 EOM
17385         d_stdio_stream_array="$undef"
17386         ;;
17387 *)      $cat >&4 <<EOM
17388 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17389 EOM
17390         d_stdio_stream_array="$define"
17391         ;;
17392 esac
17393
17394 : see if strcoll exists
17395 set strcoll d_strcoll
17396 eval $inlibc
17397
17398 : check for structure copying
17399 echo " "
17400 echo "Checking to see if your C compiler can copy structs..." >&4
17401 $cat >try.c <<'EOCP'
17402 int main()
17403 {
17404         struct blurfl {
17405                 int dyick;
17406         } foo, bar;
17407
17408         foo = bar;
17409 }
17410 EOCP
17411 if $cc -c try.c >/dev/null 2>&1 ; then
17412         val="$define"
17413         echo "Yup, it can."
17414 else
17415         val="$undef"
17416         echo "Nope, it can't."
17417 fi
17418 set d_strctcpy
17419 eval $setvar
17420 $rm_try
17421
17422 : see if strerror and/or sys_errlist[] exist
17423 echo " "
17424 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17425     if set strerror val -f d_strerror; eval $csym; $val; then
17426                 echo 'strerror() found.' >&4
17427                 d_strerror="$define"
17428                 d_strerrm='strerror(e)'
17429                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17430                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17431                         d_syserrlst="$define"
17432                 else
17433                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17434                         d_syserrlst="$undef"
17435                 fi
17436     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17437                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17438                 echo 'strerror() found in string header.' >&4
17439                 d_strerror="$define"
17440                 d_strerrm='strerror(e)'
17441                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17442                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17443                                 d_syserrlst="$define"
17444                 else
17445                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17446                         d_syserrlst="$undef"
17447                 fi
17448     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17449                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17450                 d_strerror="$undef"
17451                 d_syserrlst="$define"
17452                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17453     else
17454                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17455                 d_strerror="$undef"
17456                 d_syserrlst="$undef"
17457                 d_strerrm='"unknown"'
17458     fi
17459 fi
17460
17461 : see if strerror_r exists
17462 set strerror_r d_strerror_r
17463 eval $inlibc
17464 case "$d_strerror_r" in
17465 "$define")
17466         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17467         case "$d_strerror_r_proto:$usethreads" in
17468         ":define")      d_strerror_r_proto=define
17469                 set d_strerror_r_proto strerror_r $hdrs
17470                 eval $hasproto ;;
17471         *)      ;;
17472         esac
17473         case "$d_strerror_r_proto" in
17474         define)
17475         case "$strerror_r_proto" in
17476         ''|0) try='int strerror_r(int, char*, size_t);'
17477         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17478         esac
17479         case "$strerror_r_proto" in
17480         ''|0) try='int strerror_r(int, char*, int);'
17481         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17482         esac
17483         case "$strerror_r_proto" in
17484         ''|0) try='char* strerror_r(int, char*, size_t);'
17485         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17486         esac
17487         case "$strerror_r_proto" in
17488         ''|0)   d_strerror_r=undef
17489                 strerror_r_proto=0
17490                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17491         * )     case "$strerror_r_proto" in
17492                 REENTRANT_PROTO*) ;;
17493                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17494                 esac
17495                 echo "Prototype: $try" ;;
17496         esac
17497         ;;
17498         *)      case "$usethreads" in
17499                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17500                 esac
17501                 d_strerror_r=undef
17502                 strerror_r_proto=0
17503                 ;;
17504         esac
17505         ;;
17506 *)      strerror_r_proto=0
17507         ;;
17508 esac
17509
17510 : see if strftime exists
17511 set strftime d_strftime
17512 eval $inlibc
17513
17514 : see if strlcat exists
17515 set strlcat d_strlcat
17516 eval $inlibc
17517
17518 : see if strlcpy exists
17519 set strlcpy d_strlcpy
17520 eval $inlibc
17521
17522 : see if strtod exists
17523 set strtod d_strtod
17524 eval $inlibc
17525
17526 : see if strtol exists
17527 set strtol d_strtol
17528 eval $inlibc
17529
17530 : see if strtold exists
17531 set strtold d_strtold
17532 eval $inlibc
17533
17534 : see if strtoll exists
17535 set strtoll d_strtoll
17536 eval $inlibc
17537
17538 case "$d_longlong-$d_strtoll" in
17539 "$define-$define")
17540         $cat <<EOM
17541 Checking whether your strtoll() works okay...
17542 EOM
17543         $cat >try.c <<'EOCP'
17544 #include <errno.h>
17545 #ifdef __hpux
17546 #define strtoll __strtoll
17547 #endif
17548 #ifdef __EMX__
17549 #define strtoll _strtoll
17550 #endif
17551 #include <stdio.h>
17552 extern long long int strtoll(char *s, char **, int); 
17553 static int bad = 0;
17554 int check(char *s, long long ell, int een) {
17555         long long gll;
17556         errno = 0;
17557         gll = strtoll(s, 0, 10);
17558         if (!((gll == ell) && (errno == een)))
17559                 bad++;
17560 }
17561 int main() {
17562         check(" 1",                                      1LL, 0);
17563         check(" 0",                                      0LL, 0);
17564         check("-1",                                     -1LL, 0);
17565         check("-9223372036854775808", -9223372036854775808LL, 0);
17566         check("-9223372036854775808", -9223372036854775808LL, 0);
17567         check(" 9223372036854775807",  9223372036854775807LL, 0);
17568         check("-9223372036854775808", -9223372036854775808LL, 0);
17569         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17570         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17571         if (!bad)
17572                 printf("ok\n");
17573 }
17574 EOCP
17575         set try
17576         if eval $compile; then
17577                 yyy=`$run ./try`
17578                 case "$yyy" in
17579                 ok) echo "Your strtoll() seems to be working okay." ;;
17580                 *) cat <<EOM >&4
17581 Your strtoll() doesn't seem to be working okay.
17582 EOM
17583                    d_strtoll="$undef"
17584                    ;;
17585                 esac
17586         else
17587                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17588                 d_strtoll="$undef"
17589         fi
17590         ;;
17591 esac
17592
17593 : see if strtoq exists
17594 set strtoq d_strtoq
17595 eval $inlibc
17596
17597 : see if strtoul exists
17598 set strtoul d_strtoul
17599 eval $inlibc
17600
17601 case "$d_strtoul" in
17602 "$define")
17603         $cat <<EOM
17604 Checking whether your strtoul() works okay...
17605 EOM
17606         $cat >try.c <<'EOCP'
17607 #include <errno.h>
17608 #include <stdio.h>
17609 extern unsigned long int strtoul(char *s, char **, int); 
17610 static int bad = 0;
17611 void check(char *s, unsigned long eul, int een) {
17612         unsigned long gul;
17613         errno = 0;
17614         gul = strtoul(s, 0, 10);
17615         if (!((gul == eul) && (errno == een)))
17616                 bad++;
17617 }
17618 int main() {
17619         check(" 1", 1L, 0);
17620         check(" 0", 0L, 0);
17621 EOCP
17622         case "$longsize" in
17623         8)
17624             $cat >>try.c <<'EOCP'
17625         check("18446744073709551615", 18446744073709551615UL, 0);
17626         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17627 #if 0 /* strtoul() for /^-/ strings is undefined. */
17628         check("-1", 18446744073709551615UL, 0);
17629         check("-18446744073709551614", 2, 0);
17630         check("-18446744073709551615", 1, 0);
17631         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17632         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17633 #endif
17634 EOCP
17635                 ;;
17636         4)
17637                     $cat >>try.c <<'EOCP'
17638         check("4294967295", 4294967295UL, 0);
17639         check("4294967296", 4294967295UL, ERANGE);
17640 #if 0 /* strtoul() for /^-/ strings is undefined. */
17641         check("-1", 4294967295UL, 0);
17642         check("-4294967294", 2, 0);
17643         check("-4294967295", 1, 0);
17644         check("-4294967296", 4294967295UL, ERANGE);
17645         check("-4294967297", 4294967295UL, ERANGE);
17646 #endif
17647 EOCP
17648                 ;;
17649         *)
17650 : Should we write these tests to be more portable by sprintf-ing
17651 : ~0 and then manipulating that char string as input for strtol?
17652                 ;;
17653         esac
17654         $cat >>try.c <<'EOCP'
17655         if (!bad)
17656                 printf("ok\n");
17657         return 0;
17658 }
17659 EOCP
17660         set try
17661         if eval $compile; then
17662                 case "`$run ./try`" in
17663                 ok) echo "Your strtoul() seems to be working okay." ;;
17664                 *) cat <<EOM >&4
17665 Your strtoul() doesn't seem to be working okay.
17666 EOM
17667                    d_strtoul="$undef"
17668                    ;;
17669                 esac
17670         else
17671                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17672                 d_strtoul="$undef"
17673         fi
17674         ;;
17675 esac
17676
17677 : see if strtoull exists
17678 set strtoull d_strtoull
17679 eval $inlibc
17680
17681 case "$d_longlong-$d_strtoull" in
17682 "$define-$define")
17683         $cat <<EOM
17684 Checking whether your strtoull() works okay...
17685 EOM
17686         $cat >try.c <<'EOCP'
17687 #include <errno.h>
17688 #ifdef __hpux
17689 #define strtoull __strtoull
17690 #endif
17691 #include <stdio.h>
17692 extern unsigned long long int strtoull(char *s, char **, int); 
17693 static int bad = 0;
17694 int check(char *s, long long eull, int een) {
17695         long long gull;
17696         errno = 0;
17697         gull = strtoull(s, 0, 10);
17698         if (!((gull == eull) && (errno == een)))
17699                 bad++;
17700 }
17701 int main() {
17702         check(" 1",                                        1LL, 0);
17703         check(" 0",                                        0LL, 0);
17704         check("18446744073709551615",  18446744073709551615ULL, 0);
17705         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17706 #if 0 /* strtoull() for /^-/ strings is undefined. */
17707         check("-1",                    18446744073709551615ULL, 0);
17708         check("-18446744073709551614",                     2LL, 0);
17709         check("-18446744073709551615",                     1LL, 0);
17710         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17711         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17712 #endif
17713         if (!bad)
17714                 printf("ok\n");
17715 }
17716 EOCP
17717         set try
17718         if eval $compile; then
17719                 case "`$run ./try`" in
17720                 ok) echo "Your strtoull() seems to be working okay." ;;
17721                 *) cat <<EOM >&4
17722 Your strtoull() doesn't seem to be working okay.
17723 EOM
17724                    d_strtoull="$undef"
17725                    ;;
17726                 esac
17727         else
17728                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17729                 d_strtoull="$undef"
17730         fi
17731         ;;
17732 esac
17733
17734 : see if strtouq exists
17735 set strtouq d_strtouq
17736 eval $inlibc
17737
17738 case "$d_strtouq" in
17739 "$define")
17740         $cat <<EOM
17741 Checking whether your strtouq() works okay...
17742 EOM
17743         $cat >try.c <<'EOCP'
17744 #include <errno.h>
17745 #include <stdio.h>
17746 extern unsigned long long int strtouq(char *s, char **, int); 
17747 static int bad = 0;
17748 void check(char *s, unsigned long long eull, int een) {
17749         unsigned long long gull;
17750         errno = 0;
17751         gull = strtouq(s, 0, 10);
17752         if (!((gull == eull) && (errno == een)))
17753                 bad++;
17754 }
17755 int main() {
17756         check(" 1",                                        1LL, 0);
17757         check(" 0",                                        0LL, 0);
17758         check("18446744073709551615",  18446744073709551615ULL, 0);
17759         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17760 #if 0 /* strtouq() for /^-/ strings is undefined. */
17761         check("-1",                    18446744073709551615ULL, 0);
17762         check("-18446744073709551614",                     2LL, 0);
17763         check("-18446744073709551615",                     1LL, 0);
17764         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17765         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17766 #endif
17767         if (!bad)
17768                 printf("ok\n");
17769         return 0;
17770 }
17771 EOCP
17772         set try
17773         if eval $compile; then
17774                 case "`$run ./try`" in
17775                 ok) echo "Your strtouq() seems to be working okay." ;;
17776                 *) cat <<EOM >&4
17777 Your strtouq() doesn't seem to be working okay.
17778 EOM
17779                    d_strtouq="$undef"
17780                    ;;
17781                 esac
17782         else
17783                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17784                 d_strtouq="$undef"
17785         fi
17786         ;;
17787 esac
17788
17789 : see if strxfrm exists
17790 set strxfrm d_strxfrm
17791 eval $inlibc
17792
17793 : see if symlink exists
17794 set symlink d_symlink
17795 eval $inlibc
17796
17797 : see if syscall exists
17798 set syscall d_syscall
17799 eval $inlibc
17800
17801 : see if prototype for syscall is available
17802 echo " "
17803 set d_syscallproto syscall $i_unistd unistd.h
17804 eval $hasproto
17805
17806 : see if sysconf exists
17807 set sysconf d_sysconf
17808 eval $inlibc
17809
17810 : see if system exists
17811 set system d_system
17812 eval $inlibc
17813
17814 : see if tcgetpgrp exists
17815 set tcgetpgrp d_tcgetpgrp
17816 eval $inlibc
17817
17818 : see if tcsetpgrp exists
17819 set tcsetpgrp d_tcsetpgrp
17820 eval $inlibc
17821
17822 : see if prototype for telldir is available
17823 echo " "
17824 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17825 eval $hasproto
17826
17827 : see if time exists
17828 echo " "
17829 if test "X$d_time" = X -o X"$timetype" = X; then
17830     if set time val -f d_time; eval $csym; $val; then
17831                 echo 'time() found.' >&4
17832                 val="$define"
17833                 rp="What is the type returned by time() on this system?"
17834                 set time_t timetype long stdio.h sys/types.h
17835                 eval $typedef_ask
17836     else
17837                 echo 'time() not found, hope that will do.' >&4
17838                 val="$undef"
17839                 timetype='int';
17840     fi
17841     set d_time
17842     eval $setvar
17843 fi
17844
17845 : see if this is a sys/times.h system
17846 set sys/times.h i_systimes
17847 eval $inhdr
17848
17849 : see if times exists
17850 echo " "
17851 if set times val -f d_times; eval $csym; $val; then
17852         echo 'times() found.' >&4
17853         d_times="$define"
17854         inc=''
17855         case "$i_systimes" in
17856         "$define") inc='sys/times.h';;
17857         esac
17858         rp="What is the type returned by times() on this system?"
17859         set clock_t clocktype long stdio.h sys/types.h $inc
17860         eval $typedef_ask
17861 else
17862         echo 'times() NOT found, hope that will do.' >&4
17863         d_times="$undef"
17864         clocktype='int'
17865 fi
17866
17867 : see if tmpnam_r exists
17868 set tmpnam_r d_tmpnam_r
17869 eval $inlibc
17870 case "$d_tmpnam_r" in
17871 "$define")
17872         hdrs="$i_systypes sys/types.h define stdio.h "
17873         case "$d_tmpnam_r_proto:$usethreads" in
17874         ":define")      d_tmpnam_r_proto=define
17875                 set d_tmpnam_r_proto tmpnam_r $hdrs
17876                 eval $hasproto ;;
17877         *)      ;;
17878         esac
17879         case "$d_tmpnam_r_proto" in
17880         define)
17881         case "$tmpnam_r_proto" in
17882         ''|0) try='char* tmpnam_r(char*);'
17883         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17884         esac
17885         case "$tmpnam_r_proto" in
17886         ''|0)   d_tmpnam_r=undef
17887                 tmpnam_r_proto=0
17888                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17889         * )     case "$tmpnam_r_proto" in
17890                 REENTRANT_PROTO*) ;;
17891                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17892                 esac
17893                 echo "Prototype: $try" ;;
17894         esac
17895         ;;
17896         *)      case "$usethreads" in
17897                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17898                 esac
17899                 d_tmpnam_r=undef
17900                 tmpnam_r_proto=0
17901                 ;;
17902         esac
17903         ;;
17904 *)      tmpnam_r_proto=0
17905         ;;
17906 esac
17907
17908 : see if truncate exists
17909 set truncate d_truncate
17910 eval $inlibc
17911
17912 : see if ttyname_r exists
17913 set ttyname_r d_ttyname_r
17914 eval $inlibc
17915 case "$d_ttyname_r" in
17916 "$define")
17917         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17918         case "$d_ttyname_r_proto:$usethreads" in
17919         ":define")      d_ttyname_r_proto=define
17920                 set d_ttyname_r_proto ttyname_r $hdrs
17921                 eval $hasproto ;;
17922         *)      ;;
17923         esac
17924         case "$d_ttyname_r_proto" in
17925         define)
17926         case "$ttyname_r_proto" in
17927         ''|0) try='int ttyname_r(int, char*, size_t);'
17928         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17929         esac
17930         case "$ttyname_r_proto" in
17931         ''|0) try='int ttyname_r(int, char*, int);'
17932         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17933         esac
17934         case "$ttyname_r_proto" in
17935         ''|0) try='char* ttyname_r(int, char*, int);'
17936         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17937         esac
17938         case "$ttyname_r_proto" in
17939         ''|0)   d_ttyname_r=undef
17940                 ttyname_r_proto=0
17941                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17942         * )     case "$ttyname_r_proto" in
17943                 REENTRANT_PROTO*) ;;
17944                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17945                 esac
17946                 echo "Prototype: $try" ;;
17947         esac
17948         ;;
17949         *)      case "$usethreads" in
17950                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17951                 esac
17952                 d_ttyname_r=undef
17953                 ttyname_r_proto=0
17954                 ;;
17955         esac
17956         ;;
17957 *)      ttyname_r_proto=0
17958         ;;
17959 esac
17960
17961 : see if tzname[] exists
17962 echo " "
17963 if set tzname val -a d_tzname; eval $csym; $val; then
17964         val="$define"
17965         echo 'tzname[] found.' >&4
17966 else
17967         val="$undef"
17968         echo 'tzname[] NOT found.' >&4
17969 fi
17970 set d_tzname
17971 eval $setvar
17972
17973 case "$osname" in
17974 next|rhapsody|darwin) multiarch="$define" ;;
17975 esac
17976 case "$multiarch" in
17977 ''|[nN]*) multiarch="$undef" ;;
17978 esac
17979
17980 : check for ordering of bytes in a UV
17981 echo " "
17982 case "$usecrosscompile$multiarch" in
17983 *$define*)
17984         $cat <<EOM
17985 You seem to be either cross-compiling or doing a multiarchitecture build,
17986 skipping the byteorder check.
17987
17988 EOM
17989         byteorder='ffff'
17990         ;;
17991 *)
17992         case "$byteorder" in
17993         '')
17994                 $cat <<'EOM'
17995 In the following, larger digits indicate more significance.  A big-endian
17996 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17997 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17998 machines may have weird orders like 3412.  A Cray will report 87654321,
17999 an Alpha will report 12345678. If the test program works the default is
18000 probably right.
18001 I'm now running the test program...
18002 EOM
18003                 $cat >try.c <<EOCP
18004 #include <stdio.h>
18005 #$i_stdlib I_STDLIB
18006 #ifdef I_STDLIB
18007 #include <stdlib.h>
18008 #endif
18009 #include <sys/types.h>
18010 typedef $uvtype UV;
18011 int main()
18012 {
18013         int i;
18014         union {
18015                 UV l;
18016                 char c[$uvsize];
18017         } u;
18018
18019         if ($uvsize > 4)
18020                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18021         else
18022                 u.l = (UV)0x04030201;
18023         for (i = 0; i < $uvsize; i++)
18024                 printf("%c", u.c[i]+'0');
18025         printf("\n");
18026         exit(0);
18027 }
18028 EOCP
18029                 xxx_prompt=y
18030                 set try
18031                 if eval $compile && $run ./try > /dev/null; then
18032                         dflt=`$run ./try`
18033                         case "$dflt" in
18034                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18035                                 echo "(The test program ran ok.)"
18036                                 echo "byteorder=$dflt"
18037                                 xxx_prompt=n
18038                         ;;
18039                         ????|????????) echo "(The test program ran ok.)" ;;
18040                         *) echo "(The test program didn't run right for some reason.)" ;;
18041                         esac
18042                 else
18043                         dflt='4321'
18044                         cat <<'EOM'
18045 (I can't seem to compile the test program.  Guessing big-endian...)
18046 EOM
18047                 fi
18048                 case "$xxx_prompt" in
18049                 y)
18050                         rp="What is the order of bytes in $uvtype?"
18051                         . ./myread
18052                         byteorder="$ans"
18053                         ;;
18054                 *)      byteorder=$dflt
18055                         ;;
18056                 esac
18057                 ;;
18058         esac
18059         $rm_try
18060         ;;
18061 esac
18062
18063 $cat <<EOM
18064
18065 Checking to see whether you can access character data unalignedly...
18066 EOM
18067 case "$d_u32align" in
18068 '')   $cat >try.c <<EOCP
18069 #include <stdio.h>
18070 #$i_stdlib I_STDLIB
18071 #ifdef I_STDLIB
18072 #include <stdlib.h>
18073 #endif
18074 #define U32 $u32type
18075 #define BYTEORDER 0x$byteorder
18076 #define U8 $u8type
18077 #include <signal.h>
18078 #ifdef SIGBUS
18079 $signal_t bletch(int s) { exit(4); }
18080 #endif
18081 int main() {
18082 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18083     U8 buf[8];
18084     U32 *up;
18085     int i;
18086
18087     if (sizeof(U32) != 4) {
18088         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18089         exit(1);
18090     }
18091
18092     fflush(stdout);
18093
18094 #ifdef SIGBUS
18095     signal(SIGBUS, bletch);
18096 #endif
18097
18098     buf[0] = 0;
18099     buf[1] = 0;
18100     buf[2] = 0;
18101     buf[3] = 1;
18102     buf[4] = 0;
18103     buf[5] = 0;
18104     buf[6] = 0;
18105     buf[7] = 1;
18106
18107     for (i = 0; i < 4; i++) {
18108         up = (U32*)(buf + i);
18109         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18110                (*up == 1 << (8*(3-i)))  /* little-endian */
18111               )
18112            )
18113         {
18114             printf("read failed (%x)\n", *up);
18115             exit(2);
18116         }
18117     }
18118
18119     /* write test */
18120     for (i = 0; i < 4; i++) {
18121         up = (U32*)(buf + i);
18122         *up = 0xBeef;
18123         if (*up != 0xBeef) {
18124             printf("write failed (%x)\n", *up);
18125             exit(3);
18126         }
18127     }
18128
18129     exit(0);
18130 #else
18131     printf("1\n");
18132     exit(1);
18133 #endif
18134     return 0;
18135 }
18136 EOCP
18137 set try
18138 if eval $compile_ok; then
18139         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18140         $run ./try 2>&1 >/dev/null
18141         case "$?" in
18142         0)      cat >&4 <<EOM
18143 You can access character data pretty unalignedly.
18144 EOM
18145                 d_u32align="$undef"
18146                 ;;
18147         *)      cat >&4 <<EOM
18148 It seems that you must access character data in an aligned manner.
18149 EOM
18150                 d_u32align="$define"
18151                 ;;
18152         esac
18153 else
18154         rp='Can you access character data at unaligned addresses?'
18155         dflt='n'
18156         . ./myread
18157         case "$ans" in
18158         [yY]*)  d_u32align="$undef"  ;;
18159         *)      d_u32align="$define" ;;
18160         esac
18161 fi
18162 $rm_try
18163 ;;
18164 esac
18165
18166 : see if ualarm exists
18167 set ualarm d_ualarm
18168 eval $inlibc
18169
18170 : see if umask exists
18171 set umask d_umask
18172 eval $inlibc
18173
18174 : see if unordered exists
18175 set unordered d_unordered
18176 eval $inlibc
18177
18178 : see if unsetenv exists
18179 set unsetenv d_unsetenv
18180 eval $inlibc
18181
18182 : see if usleep exists
18183 set usleep d_usleep
18184 eval $inlibc
18185
18186 : see if prototype for usleep is available
18187 echo " "
18188 set d_usleepproto usleep $i_unistd unistd.h
18189 eval $hasproto
18190
18191 : see if ustat exists
18192 set ustat d_ustat
18193 eval $inlibc
18194
18195 : see if closedir exists
18196 set closedir d_closedir
18197 eval $inlibc
18198
18199 case "$d_closedir" in
18200 "$define")
18201         echo " "
18202         echo "Checking whether closedir() returns a status..." >&4
18203         cat > try.c <<EOM
18204 #$i_dirent I_DIRENT             /**/
18205 #$i_sysdir I_SYS_DIR            /**/
18206 #$i_sysndir I_SYS_NDIR          /**/
18207 #$i_systypes I_SYS_TYPES        /**/
18208
18209 #if defined(I_SYS_TYPES)
18210 #include <sys/types.h>
18211 #endif
18212 #if defined(I_DIRENT)
18213 #include <dirent.h>
18214 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18215 #include <sys/dir.h>
18216 #endif
18217 #else
18218 #ifdef I_SYS_NDIR
18219 #include <sys/ndir.h>
18220 #else
18221 #ifdef I_SYS_DIR
18222 #ifdef hp9000s500
18223 #include <ndir.h>       /* may be wrong in the future */
18224 #else
18225 #include <sys/dir.h>
18226 #endif
18227 #endif
18228 #endif
18229 #endif
18230 int main() { return closedir(opendir(".")); }
18231 EOM
18232         set try
18233         if eval $compile_ok; then
18234                 if $run ./try > /dev/null 2>&1 ; then
18235                         echo "Yes, it does."
18236                         val="$undef"
18237                 else
18238                         echo "No, it doesn't."
18239                         val="$define"
18240                 fi
18241         else
18242                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18243                 val="$define"
18244         fi
18245         ;;
18246 *)
18247         val="$undef";
18248         ;;
18249 esac
18250 set d_void_closedir
18251 eval $setvar
18252 $rm_try
18253
18254 : see if there is a wait4
18255 set wait4 d_wait4
18256 eval $inlibc
18257
18258 : see if waitpid exists
18259 set waitpid d_waitpid
18260 eval $inlibc
18261
18262 : see if wcstombs exists
18263 set wcstombs d_wcstombs
18264 eval $inlibc
18265
18266 : see if wctomb exists
18267 set wctomb d_wctomb
18268 eval $inlibc
18269
18270 : see if writev exists
18271 set writev d_writev
18272 eval $inlibc
18273
18274 : preserve RCS keywords in files with variable substitution, grrr
18275 Date='$Date'
18276 Id='$Id'
18277 Log='$Log'
18278 RCSfile='$RCSfile'
18279 Revision='$Revision'
18280
18281 : check for alignment requirements
18282 echo " "
18283 case "$usecrosscompile$multiarch" in
18284 *$define*)
18285         $cat <<EOM
18286 You seem to be either cross-compiling or doing a multiarchitecture build,
18287 skipping the memory alignment check.
18288
18289 EOM
18290         case "$alignbytes" in
18291         '') alignbytes=8 ;;
18292         esac
18293         ;;
18294 *)
18295         case "$alignbytes" in
18296         '') echo "Checking alignment constraints..." >&4
18297                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18298                         $cat >try.c <<'EOCP'
18299 typedef long double NV;
18300 EOCP
18301                 else
18302                         $cat >try.c <<'EOCP'
18303 typedef double NV;
18304 EOCP
18305                 fi
18306                 $cat >>try.c <<'EOCP'
18307 #include <stdio.h>
18308 struct foobar {
18309         char foo;
18310         NV bar;
18311 } try_algn;
18312 int main()
18313 {
18314     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18315     return(0);
18316 }
18317 EOCP
18318                 set try
18319                 if eval $compile_ok; then
18320                         dflt=`$run ./try`
18321                 else
18322                         dflt='8'
18323                         echo "(I can't seem to compile the test program...)"
18324                 fi
18325                 ;;
18326         *) dflt="$alignbytes"
18327                 ;;
18328         esac
18329         rp="Doubles must be aligned on a how-many-byte boundary?"
18330         . ./myread
18331         alignbytes="$ans"
18332         $rm_try
18333         ;;
18334 esac
18335
18336
18337 : set the base revision
18338 baserev=5.0
18339
18340 : how do we concatenate cpp tokens here?
18341 echo " "
18342 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18343 $cat >cpp_stuff.c <<'EOCP'
18344 #define RCAT(a,b)a/**/b
18345 #define ACAT(a,b)a ## b
18346 RCAT(Rei,ser)
18347 ACAT(Cir,cus)
18348 EOCP
18349 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18350 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18351         echo "Oh!  Smells like ANSI's been here." >&4
18352         echo "We can catify or stringify, separately or together!"
18353         cpp_stuff=42
18354 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18355         echo "Ah, yes!  The good old days!" >&4
18356         echo "However, in the good old days we don't know how to stringify and"
18357         echo "catify at the same time."
18358         cpp_stuff=1
18359 else
18360         $cat >&4 <<EOM
18361 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18362 You're going to have to edit the values of CAT[2-5] in config.h...
18363 EOM
18364         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18365 fi
18366 $rm -f cpp_stuff.*
18367
18368 : see if this is a db.h system
18369 set db.h i_db
18370 eval $inhdr
18371
18372 case "$i_db" in
18373 $define)
18374         : Check db version.
18375         echo " "
18376         echo "Checking Berkeley DB version ..." >&4
18377         $cat >try.c <<EOCP
18378 #$d_const HASCONST
18379 #ifndef HASCONST
18380 #define const
18381 #endif
18382 #include <sys/types.h>
18383 #include <stdio.h>
18384 #$i_stdlib I_STDLIB
18385 #ifdef I_STDLIB
18386 #include <stdlib.h>
18387 #endif
18388 #include <db.h>
18389 int main(int argc, char *argv[])
18390 {
18391 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18392     int Major, Minor, Patch ;
18393     unsigned long Version ;
18394     (void)db_version(&Major, &Minor, &Patch) ;
18395     if (argc == 2) {
18396         printf("%d %d %d %d %d %d\n",
18397                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18398                Major, Minor, Patch);
18399         exit(0);
18400     }
18401     printf("You have Berkeley DB Version 2 or greater.\n");
18402
18403     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18404                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18405     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18406                 Major, Minor, Patch) ;
18407
18408     /* check that db.h & libdb are compatible */
18409     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18410         printf("db.h and libdb are incompatible.\n") ;
18411         exit(3);
18412     }
18413
18414     printf("db.h and libdb are compatible.\n") ;
18415
18416     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18417                 + DB_VERSION_PATCH ;
18418
18419     /* needs to be >= 2.3.4 */
18420     if (Version < 2003004) {
18421     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18422         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18423         exit(2);
18424     }
18425
18426     exit(0);
18427 #else
18428 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18429     if (argc == 2) {
18430         printf("1 0 0\n");
18431         exit(0);
18432     }
18433     printf("You have Berkeley DB Version 1.\n");
18434     exit(0);    /* DB version < 2: the coast is clear. */
18435 #else
18436     exit(1);    /* <db.h> not Berkeley DB? */
18437 #endif
18438 #endif
18439 }
18440 EOCP
18441         set try
18442         if eval $compile_ok && $run ./try; then
18443                 echo 'Looks OK.' >&4
18444                 set `$run ./try 1`
18445                 db_version_major=$1
18446                 db_version_minor=$2
18447                 db_version_patch=$3
18448         else
18449                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18450                 i_db=$undef
18451                 case " $libs " in
18452                 *"-ldb "*)
18453                         : Remove db from list of libraries to use
18454                         echo "Removing unusable -ldb from library list" >&4
18455                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18456                         shift
18457                         libs="$*"
18458                         echo "libs = $libs" >&4
18459                         ;;
18460                 esac
18461         fi
18462         $rm_try
18463         ;;
18464 esac
18465
18466 case "$i_db" in
18467 define)
18468         : Check the return type needed for hash
18469         echo " "
18470         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18471         $cat >try.c <<EOCP
18472 #$d_const HASCONST
18473 #ifndef HASCONST
18474 #define const
18475 #endif
18476 #include <sys/types.h>
18477 #include <db.h>
18478
18479 #ifndef DB_VERSION_MAJOR
18480 u_int32_t hash_cb (ptr, size)
18481 const void *ptr;
18482 size_t size;
18483 {
18484 }
18485 HASHINFO info;
18486 int main()
18487 {
18488         info.hash = hash_cb;
18489 }
18490 #endif
18491 EOCP
18492         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18493                 if $contains warning try.out >>/dev/null 2>&1 ; then
18494                         db_hashtype='int'
18495                 else
18496                         db_hashtype='u_int32_t'
18497                 fi
18498         else
18499                 : XXX Maybe we should just give up here.
18500                 db_hashtype=u_int32_t
18501                 $cat try.out >&4
18502                 echo "Help:  I can't seem to compile the db test program." >&4
18503                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18504         fi
18505         $rm_try
18506         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18507         ;;
18508 *)      db_hashtype=u_int32_t
18509         ;;
18510 esac
18511 case "$i_db" in
18512 define)
18513         : Check the return type needed for prefix
18514         echo " "
18515         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18516         cat >try.c <<EOCP
18517 #$d_const HASCONST
18518 #ifndef HASCONST
18519 #define const
18520 #endif
18521 #include <sys/types.h>
18522 #include <db.h>
18523
18524 #ifndef DB_VERSION_MAJOR
18525 size_t prefix_cb (key1, key2)
18526 const DBT *key1;
18527 const DBT *key2;
18528 {
18529 }
18530 BTREEINFO info;
18531 int main()
18532 {
18533         info.prefix = prefix_cb;
18534 }
18535 #endif
18536 EOCP
18537         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18538                 if $contains warning try.out >>/dev/null 2>&1 ; then
18539                         db_prefixtype='int'
18540                 else
18541                         db_prefixtype='size_t'
18542                 fi
18543         else
18544                 db_prefixtype='size_t'
18545                 : XXX Maybe we should just give up here.
18546                 $cat try.out >&4
18547                 echo "Help:  I can't seem to compile the db test program." >&4
18548                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18549         fi
18550         $rm_try
18551         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18552         ;;
18553 *)      db_prefixtype='size_t'
18554         ;;
18555 esac
18556
18557 : How can we generate normalized random numbers ?
18558 echo " "
18559 echo "Looking for a random number function..." >&4
18560 case "$randfunc" in
18561 '')
18562         if set drand48 val -f; eval $csym; $val; then
18563                 dflt="drand48"
18564                 echo "Good, found drand48()." >&4
18565         elif set random val -f; eval $csym; $val; then
18566                 dflt="random"
18567                 echo "OK, found random()." >&4
18568         else
18569                 dflt="rand"
18570                 echo "Yick, looks like I have to use rand()." >&4
18571         fi
18572         echo " "
18573         ;;
18574 *)
18575         dflt="$randfunc"
18576         ;;
18577 esac
18578 cont=true
18579
18580 case "$ccflags" in
18581 *-Dmy_rand=*|*-Dmy_srand=*)
18582         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18583         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18584         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18585         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18586         ;;
18587 esac
18588
18589 while $test "$cont"; do
18590         rp="Use which function to generate random numbers?"
18591         . ./myread
18592         if $test "$ans" = "$dflt"; then
18593                 : null
18594         else
18595                 randbits=''
18596         fi
18597         randfunc="$ans"
18598         if set $ans val -f; eval $csym; $val; then
18599                 cont=''
18600         else
18601                 dflt=y
18602                 rp="I cannot find function $ans. Use that name anyway?"
18603                 . ./myread
18604                 dflt=rand
18605                 case "$ans" in
18606                         [yY]*) cont='';;
18607                 esac
18608         fi
18609         case "$cont" in
18610         '')
18611                 case "$randfunc" in
18612                 drand48)
18613                         drand01="drand48()"
18614                         seedfunc="srand48"
18615                         randbits=48
18616                         randseedtype=long
18617                         ;;
18618                 rand|random)
18619                         case "$randbits" in
18620                         '')
18621 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18622                                 $cat >try.c <<EOCP
18623 #$i_unistd I_UNISTD
18624 #$i_stdlib I_STDLIB
18625 #include <stdio.h>
18626 #ifdef I_UNISTD
18627 #  include <unistd.h>
18628 #endif
18629 #ifdef I_STDLIB
18630 #  include <stdlib.h>
18631 #endif
18632 int main()
18633 {
18634         register int i;
18635         register unsigned long tmp;
18636         register unsigned long max = 0L;
18637
18638         for (i = 1000; i; i--) {
18639                 tmp = (unsigned long) $randfunc();
18640                 if (tmp > max) max = tmp;
18641         }
18642         for (i = 0; max; i++)
18643                 max /= 2;
18644         printf("%d\n",i);
18645 }
18646 EOCP
18647                                 set try
18648                                 if eval $compile_ok; then
18649                                         dflt=`try`
18650                                 else
18651                                         dflt='?'
18652                                         echo "(I can't seem to compile the test program...)"
18653                                 fi
18654                                 ;;
18655                         *)
18656                                 dflt="$randbits"
18657                                 ;;
18658                         esac
18659                         rp="How many bits does your $randfunc() function produce?"
18660                         . ./myread
18661                         randbits="$ans"
18662                         $rm_try
18663                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18664                         seedfunc="s$randfunc"
18665                         randseedtype=unsigned
18666                         ;;
18667                 *)
18668                         dflt="31"
18669                         rp="How many bits does your $randfunc() function produce?"
18670                         . ./myread
18671                         randbits="$ans"
18672                         seedfunc="s$randfunc"
18673                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18674                         if set $seedfunc val -f; eval $csym; $val; then
18675                                 echo "(Using $seedfunc() to seed random generator)"
18676                         else
18677                                 echo "(Warning: no $seedfunc() to seed random generator)"
18678                                 seedfunc=rand
18679                         fi
18680                         randseedtype=unsigned
18681                         ;;
18682                 esac
18683                 ;;
18684         esac
18685 done
18686
18687 echo " "
18688 echo "Determining whether or not we are on an EBCDIC system..." >&4
18689 $cat >try.c <<'EOM'
18690 int main()
18691 {
18692   if ('M'==0xd4) return 0;
18693   return 1;
18694 }
18695 EOM
18696
18697 val=$undef
18698 set try
18699 if eval $compile_ok; then
18700         if $run ./try; then
18701                 echo "You seem to speak EBCDIC." >&4
18702                 val="$define"
18703         else
18704                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18705         fi
18706 else
18707         echo "I'm unable to compile the test program." >&4
18708         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18709 fi
18710 $rm_try
18711 set ebcdic
18712 eval $setvar
18713
18714 echo " "
18715 $cat >&4 <<EOM
18716 Checking how to flush all pending stdio output...
18717 EOM
18718 # I only know how to find the first 32 possibly open files on SunOS.
18719 # See also hints/sunos_4_1.sh and util.c  --AD
18720 case "$osname" in
18721 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18722 esac
18723 $cat >>try.c <<EOCP
18724 #include <stdio.h>
18725 #$i_stdlib I_STDLIB
18726 #ifdef I_STDLIB
18727 #include <stdlib.h>
18728 #endif
18729 #$i_unistd I_UNISTD
18730 #ifdef I_UNISTD
18731 # include <unistd.h>
18732 #endif
18733 #$d_sysconf HAS_SYSCONF
18734 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18735 #ifdef HAS_STDIO_STREAM_ARRAY
18736 # define STDIO_STREAM_ARRAY $stdio_stream_array
18737 #endif
18738 int main() {
18739   FILE* p;
18740   unlink("try.out");
18741   p = fopen("try.out", "w");
18742 #ifdef TRY_FPUTC
18743   fputc('x', p);
18744 #else
18745 # ifdef TRY_FPRINTF
18746   fprintf(p, "x");
18747 # endif
18748 #endif
18749 #ifdef TRY_FFLUSH_NULL
18750   fflush(NULL);
18751 #endif
18752 #ifdef TRY_FFLUSH_ALL
18753   {
18754     long open_max = -1;
18755 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18756     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18757 # else
18758 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18759     open_max = sysconf(_SC_OPEN_MAX);
18760 #  else
18761 #   ifdef FOPEN_MAX
18762     open_max = FOPEN_MAX;
18763 #   else
18764 #    ifdef OPEN_MAX
18765     open_max = OPEN_MAX;
18766 #    else
18767 #     ifdef _NFILE
18768     open_max = _NFILE;
18769 #     endif
18770 #    endif
18771 #   endif
18772 #  endif
18773 # endif
18774 # ifdef HAS_STDIO_STREAM_ARRAY
18775     if (open_max > 0) {
18776       long i;
18777       for (i = 0; i < open_max; i++)
18778             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18779                 STDIO_STREAM_ARRAY[i]._file < open_max &&
18780                 STDIO_STREAM_ARRAY[i]._flag)
18781                 fflush(&STDIO_STREAM_ARRAY[i]);
18782     }
18783   }
18784 # endif
18785 #endif
18786   _exit(42);
18787 }
18788 EOCP
18789 : first we have to find out how _not_ to flush
18790 $to try.c
18791 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18792     output=''
18793     set try -DTRY_FPUTC
18794     if eval $compile; then
18795             $run ./try 2>/dev/null
18796             code="$?"
18797             $from try.out
18798             if $test ! -s try.out -a "X$code" = X42; then
18799                 output=-DTRY_FPUTC
18800             fi
18801     fi
18802     case "$output" in
18803     '')
18804             set try -DTRY_FPRINTF
18805             if eval $compile; then
18806                     $run ./try 2>/dev/null
18807                     code="$?"
18808                     $from try.out
18809                     if $test ! -s try.out -a "X$code" = X42; then
18810                         output=-DTRY_FPRINTF
18811                     fi
18812             fi
18813         ;;
18814     esac
18815 fi
18816 : check for fflush NULL behaviour
18817 case "$fflushNULL" in
18818 '')     set try -DTRY_FFLUSH_NULL $output
18819         if eval $compile; then
18820                 $run ./try 2>/dev/null
18821                 code="$?"
18822                 $from try.out
18823                 if $test -s try.out -a "X$code" = X42; then
18824                         fflushNULL="`$cat try.out`"
18825                 else
18826                         if $test "X$code" != X42; then
18827                                 $cat >&4 <<EOM
18828 (If this test failed, don't worry, we'll try another method shortly.)
18829 EOM
18830                         fi
18831                 fi
18832         fi
18833         $rm_try
18834         case "$fflushNULL" in
18835         x)      $cat >&4 <<EOM
18836 Your fflush(NULL) works okay for output streams.
18837 Let's see if it clobbers input pipes...
18838 EOM
18839 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18840 # bug that improperly flushes the input end of pipes.  So we avoid the
18841 # autoflush on fork/system/exec support for now. :-(
18842 $cat >tryp.c <<EOCP
18843 #include <stdio.h>
18844 int
18845 main(int argc, char **argv)
18846 {
18847     char buf[1024];
18848     int i;
18849     char *bp = buf;
18850     while (1) {
18851         while ((i = getc(stdin)) != -1
18852                && (*bp++ = i) != '\n'
18853                && bp < &buf[1024])
18854         /* DO NOTHING */ ;
18855         *bp = '\0';
18856         fprintf(stdout, "%s", buf);
18857         fflush(NULL);
18858         if (i == -1)
18859             return 0;
18860         bp = buf;
18861     }
18862 }
18863 EOCP
18864                 fflushNULL="$define"
18865                 set tryp
18866                 if eval $compile; then
18867                     $rm -f tryp.out
18868                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18869                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
18870                        $cat >&4 <<EOM
18871 fflush(NULL) seems to behave okay with input streams.
18872 EOM
18873                         fflushNULL="$define"
18874                     else
18875                         $cat >&4 <<EOM
18876 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
18877 EOM
18878                         fflushNULL="$undef"
18879                     fi
18880                 fi
18881                 $rm -f core tryp.c tryp.core core.tryp.*
18882                 ;;
18883         '')     $cat >&4 <<EOM
18884 Your fflush(NULL) isn't working (contrary to ANSI C).
18885 EOM
18886                 fflushNULL="$undef"
18887                 ;;
18888         *)      $cat >&4 <<EOM
18889 Cannot figure out whether your fflush(NULL) works or not.
18890 I'm assuming it doesn't (contrary to ANSI C).
18891 EOM
18892                 fflushNULL="$undef"
18893                 ;;
18894         esac
18895         ;;
18896 $define|true|[yY]*)
18897         fflushNULL="$define"
18898         ;;
18899 *)
18900         fflushNULL="$undef"
18901         ;;
18902 esac
18903 : check explicit looping only if NULL did not work, and if the pipe
18904 : bug does not show up on an explicit flush too
18905 case "$fflushNULL" in
18906 "$undef")
18907         $cat >tryp.c <<EOCP
18908 #include <stdio.h>
18909 int
18910 main(int argc, char **argv)
18911 {
18912     char buf[1024];
18913     int i;
18914     char *bp = buf;
18915     while (1) {
18916         while ((i = getc(stdin)) != -1
18917                && (*bp++ = i) != '\n'
18918                && bp < &buf[1024])
18919         /* DO NOTHING */ ;
18920         *bp = '\0';
18921         fprintf(stdout, "%s", buf);
18922         fflush(stdin);
18923         if (i == -1)
18924             return 0;
18925         bp = buf;
18926     }
18927 }
18928 EOCP
18929         set tryp
18930         if eval $compile; then
18931             $rm -f tryp.out
18932             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18933             if cmp tryp.c tryp.out >/dev/null 2>&1; then
18934                $cat >&4 <<EOM
18935 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18936 EOM
18937                 : now check for fflushall behaviour
18938                 case "$fflushall" in
18939                 '')     set try -DTRY_FFLUSH_ALL $output
18940                         if eval $compile; then
18941                                 $cat >&4 <<EOM
18942 (Now testing the other method--but note that this also may fail.)
18943 EOM
18944                                 $run ./try 2>/dev/null
18945                                 code=$?
18946                                 $from try.out
18947                                 if $test -s try.out -a "X$code" = X42; then
18948                                         fflushall="`$cat try.out`"
18949                                 fi
18950                         fi
18951                         $rm_try
18952                         case "$fflushall" in
18953                         x)      $cat >&4 <<EOM
18954 Whew. Flushing explicitly all the stdio streams works.
18955 EOM
18956                                 fflushall="$define"
18957                                 ;;
18958                         '')     $cat >&4 <<EOM
18959 Sigh. Flushing explicitly all the stdio streams doesn't work.
18960 EOM
18961                                 fflushall="$undef"
18962                                 ;;
18963                         *)      $cat >&4 <<EOM
18964 Cannot figure out whether flushing stdio streams explicitly works or not.
18965 I'm assuming it doesn't.
18966 EOM
18967                                 fflushall="$undef"
18968                                 ;;
18969                         esac
18970                         ;;
18971                 "$define"|true|[yY]*)
18972                         fflushall="$define"
18973                         ;;
18974                 *)
18975                         fflushall="$undef"
18976                         ;;
18977                 esac
18978             else
18979                 $cat >&4 <<EOM
18980 All is futile.  Even fflush(stdin) clobbers input pipes!
18981 EOM
18982                 fflushall="$undef"
18983             fi
18984         else
18985             fflushall="$undef"
18986         fi
18987         $rm -f core tryp.c tryp.core core.tryp.*
18988         ;;
18989 *)      fflushall="$undef"
18990         ;;
18991 esac
18992
18993 case "$fflushNULL$fflushall" in
18994 undefundef)
18995         $cat <<EOM
18996 OK, I give up.  I cannot figure out how to flush pending stdio output.
18997 We won't be flushing handles at all before fork/exec/popen.
18998 EOM
18999         ;;
19000 esac
19001 $rm_try
19002
19003 : Store the full pathname to the ar program for use in the C program
19004 : Respect a hint or command line value for full_ar.
19005 case "$full_ar" in
19006 '') full_ar=$ar ;;
19007 esac
19008
19009 : Store the full pathname to the sed program for use in the C program
19010 full_sed=$sed
19011
19012 : see what type gids are declared as in the kernel
19013 echo " "
19014 echo "Looking for the type for group ids returned by getgid()."
19015 set gid_t gidtype xxx stdio.h sys/types.h
19016 eval $typedef
19017 case "$gidtype" in
19018 xxx)
19019         xxx=`./findhdr sys/user.h`
19020         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19021         case $1 in
19022         unsigned) dflt="$1 $2" ;;
19023         *) dflt="$1" ;;
19024         esac
19025         ;;
19026 *) dflt="$gidtype";;
19027 esac
19028 case "$gidtype" in
19029 gid_t) echo "gid_t found." ;;
19030 *)      rp="What is the type for group ids returned by getgid()?"
19031         . ./myread
19032         gidtype="$ans"
19033         ;;
19034 esac
19035
19036 echo " "
19037 case "$gidtype" in
19038 *_t) zzz="$gidtype"     ;;
19039 *)   zzz="gid"          ;;
19040 esac
19041 echo "Checking the size of $zzz..." >&4 
19042 cat > try.c <<EOCP
19043 #include <sys/types.h>
19044 #include <stdio.h>
19045 #$i_stdlib I_STDLIB
19046 #ifdef I_STDLIB
19047 #include <stdlib.h>
19048 #endif
19049 int main() {
19050     printf("%d\n", (int)sizeof($gidtype));
19051     exit(0);
19052 }
19053 EOCP
19054 set try
19055 if eval $compile_ok; then
19056         yyy=`$run ./try`
19057         case "$yyy" in
19058         '')     gidsize=4
19059                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19060                 ;;
19061         *)      gidsize=$yyy
19062                 echo "Your $zzz is $gidsize bytes long."
19063                 ;;
19064         esac
19065 else
19066         gidsize=4
19067         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19068 fi
19069
19070
19071 echo " "
19072 case "$gidtype" in
19073 *_t) zzz="$gidtype"     ;;
19074 *)   zzz="gid"          ;;
19075 esac
19076 echo "Checking the sign of $zzz..." >&4 
19077 cat > try.c <<EOCP
19078 #include <sys/types.h>
19079 #include <stdio.h>
19080 int main() {
19081         $gidtype foo = -1;
19082         if (foo < 0)
19083                 printf("-1\n");
19084         else
19085                 printf("1\n");
19086 }
19087 EOCP
19088 set try
19089 if eval $compile; then
19090         yyy=`$run ./try`
19091         case "$yyy" in
19092         '')     gidsign=1
19093                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19094                 ;;
19095         *)      gidsign=$yyy
19096                 case "$gidsign" in
19097                  1) echo "Your $zzz is unsigned." ;;
19098                 -1) echo "Your $zzz is signed."   ;;
19099                 esac
19100                 ;;
19101         esac
19102 else
19103         gidsign=1
19104         echo "(I can't compile the test program--guessing unsigned.)" >&4
19105 fi
19106
19107
19108 echo " "
19109
19110 if $test X"$quadtype" != X; then
19111
19112 echo "Checking how to print 64-bit integers..." >&4
19113
19114 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19115         $cat >try.c <<'EOCP'
19116 #include <sys/types.h>
19117 #include <stdio.h>
19118 int main() {
19119   int 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='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19129                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19130                         echo "We will use %d."
19131                         ;;
19132                 esac
19133         fi
19134 fi
19135
19136 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19137         $cat >try.c <<'EOCP'
19138 #include <sys/types.h>
19139 #include <stdio.h>
19140 int main() {
19141   long q = 12345678901;
19142   printf("%ld\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='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19151                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19152                         echo "We will use %ld."
19153                         ;;
19154                 esac
19155         fi
19156 fi
19157
19158 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19159         $cat >try.c <<'EOCP'
19160 #include <sys/types.h>
19161 #include <inttypes.h>
19162 #include <stdio.h>
19163 int main() {
19164   int64_t q = 12345678901;
19165   printf("%" PRId64 "\n", q);
19166 }
19167 EOCP
19168         set try
19169         if eval $compile; then
19170                 yyy=`$run ./try`
19171                 case "$yyy" in
19172                 12345678901)
19173                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19174                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19175                         echo "We will use the C9X style."
19176                         ;;
19177                 esac
19178         fi
19179 fi
19180
19181 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19182         $cat >try.c <<EOCP
19183 #include <sys/types.h>
19184 #include <stdio.h>
19185 int main() {
19186   $quadtype q = 12345678901;
19187   printf("%Ld\n", q);
19188 }
19189 EOCP
19190         set try
19191         if eval $compile; then
19192                 yyy=`$run ./try`
19193                 case "$yyy" in
19194                 12345678901)
19195                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19196                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19197                         echo "We will use %Ld."
19198                         ;;
19199                 esac
19200         fi
19201 fi
19202
19203 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19204         $cat >try.c <<'EOCP'
19205 #include <sys/types.h>
19206 #include <stdio.h>
19207 int main() {
19208   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19209   printf("%lld\n", q);
19210 }
19211 EOCP
19212         set try
19213         if eval $compile; then
19214                 yyy=`$run ./try`
19215                 case "$yyy" in
19216                 12345678901)
19217                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19218                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19219                         echo "We will use the %lld style."
19220                         ;;
19221                 esac
19222         fi
19223 fi
19224
19225 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19226         $cat >try.c <<EOCP
19227 #include <sys/types.h>
19228 #include <stdio.h>
19229 int main() {
19230   $quadtype q = 12345678901;
19231   printf("%qd\n", q);
19232 }
19233 EOCP
19234         set try
19235         if eval $compile; then
19236                 yyy=`$run ./try`
19237                 case "$yyy" in
19238                 12345678901)
19239                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19240                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19241                         echo "We will use %qd."
19242                         ;;
19243                 esac
19244         fi
19245 fi
19246
19247 if $test X"$sPRId64" = X; then
19248         echo "Cannot figure out how to print 64-bit integers." >&4
19249 fi
19250 $rm_try
19251
19252 fi
19253
19254 case "$sPRId64" in
19255 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19256         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19257         ;;
19258 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19259         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19260         ;;
19261 esac
19262
19263
19264 echo " "
19265 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19266
19267 if $test X"$ivsize" = X8; then
19268         ivdformat="$sPRId64"
19269         uvuformat="$sPRIu64"
19270         uvoformat="$sPRIo64"
19271         uvxformat="$sPRIx64"
19272         uvXUformat="$sPRIXU64"
19273 else
19274         if $test X"$ivsize" = X"$longsize"; then
19275                 ivdformat='"ld"'
19276                 uvuformat='"lu"'
19277                 uvoformat='"lo"'
19278                 uvxformat='"lx"'
19279                 uvXUformat='"lX"'
19280         else
19281                 if $test X"$ivsize" = X"$intsize"; then
19282                         ivdformat='"d"'
19283                         uvuformat='"u"'
19284                         uvoformat='"o"'
19285                         uvxformat='"x"'
19286                         uvXUformat='"X"'
19287                 else
19288                         : far out
19289                         if $test X"$ivsize" = X"$shortsize"; then
19290                                 ivdformat='"hd"'
19291                                 uvuformat='"hu"'
19292                                 uvoformat='"ho"'
19293                                 uvxformat='"hx"'
19294                                 uvXUformat='"hX"'
19295                         fi
19296                 fi
19297         fi
19298 fi
19299
19300 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19301         nveformat="$sPRIeldbl"
19302         nvfformat="$sPRIfldbl"
19303         nvgformat="$sPRIgldbl"
19304         nvEUformat="$sPRIEUldbl"
19305         nvFUformat="$sPRIFUldbl"
19306         nvGUformat="$sPRIGUldbl"
19307 else
19308         nveformat='"e"'
19309         nvfformat='"f"'
19310         nvgformat='"g"'
19311         nvEUformat='"E"'
19312         nvFUformat='"F"'
19313         nvGUformat='"G"'
19314 fi
19315
19316 case "$ivdformat" in
19317 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19318     exit 1
19319     ;;
19320 esac
19321
19322
19323 echo " "
19324 $echo "Checking the format string to be used for gids..." >&4
19325
19326 case "$gidsign" in
19327 -1)     if $test X"$gidsize" = X"$ivsize"; then
19328                 gidformat="$ivdformat"
19329         else
19330                 if $test X"$gidsize" = X"$longsize"; then
19331                         gidformat='"ld"'
19332                 else
19333                         if $test X"$gidsize" = X"$intsize"; then
19334                                 gidformat='"d"'
19335                         else
19336                                 if $test X"$gidsize" = X"$shortsize"; then
19337                                         gidformat='"hd"'
19338                                 fi
19339                         fi
19340                 fi
19341         fi
19342         ;;
19343 *)      if $test X"$gidsize" = X"$uvsize"; then
19344                 gidformat="$uvuformat"
19345         else
19346                 if $test X"$gidsize" = X"$longsize"; then
19347                         gidformat='"lu"'
19348                 else
19349                         if $test X"$gidsize" = X"$intsize"; then
19350                                 gidformat='"u"'
19351                         else
19352                                 if $test X"$gidsize" = X"$shortsize"; then
19353                                         gidformat='"hu"'
19354                                 fi
19355                         fi
19356                 fi
19357         fi
19358         ;;
19359 esac
19360
19361 : see if getgroups exists
19362 set getgroups d_getgrps
19363 eval $inlibc
19364
19365 : see if setgroups exists
19366 set setgroups d_setgrps
19367 eval $inlibc
19368
19369
19370 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19371 echo " "
19372 case "$d_getgrps$d_setgrps" in
19373 *define*)
19374         case "$groupstype" in
19375         '') dflt="$gidtype" ;;
19376         *)  dflt="$groupstype" ;;
19377         esac
19378         $cat <<EOM
19379 What type of pointer is the second argument to getgroups() and setgroups()?
19380 Usually this is the same as group ids, $gidtype, but not always.
19381
19382 EOM
19383         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19384         . ./myread
19385         groupstype="$ans"
19386         ;;
19387 *)  groupstype="$gidtype";;
19388 esac
19389
19390
19391 if $test $patchlevel -lt 9; then
19392 : MAD is not available in 5.8.x or earlier.
19393     ans=n;
19394 else
19395     case "$mad" in
19396     $define|true|[yY]*) dflt='y' ;;
19397     *)                  dflt='n' ;;
19398     esac
19399     cat <<EOM
19400
19401 Would you like to build with Misc Attribute Decoration? This is development
19402 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19403 overhead on the interpreter.
19404
19405 If this doesn't make any sense to you, just accept the default '$dflt'.
19406 EOM
19407     rp='Build Perl with MAD?'
19408     . ./myread
19409 fi
19410 case "$ans" in
19411 y|Y)    val="$define"
19412         madlyh='madly.h madly.act madly.tab'
19413         madlysrc='madly.c'
19414         madlyobj="madly$_o" ;;
19415 *)      val="$undef"
19416         madlyh=''
19417         madlysrc=''
19418         madlyobj='' ;;
19419 esac
19420 set mad
19421 eval $setvar
19422
19423 echo " "
19424 echo "Checking if your $make program sets \$(MAKE)..." >&4
19425 case "$make_set_make" in
19426 '')
19427         $sed 's/^X //' > testmake.mak << 'EOF'
19428 Xall:
19429 X       @echo 'maketemp="$(MAKE)"'
19430 EOF
19431         case "`$make -f testmake.mak 2>/dev/null`" in
19432         *maketemp=*) make_set_make='#' ;;
19433         *)      make_set_make="MAKE=$make" ;;
19434         esac
19435         $rm -f testmake.mak
19436         ;;
19437 esac
19438 case "$make_set_make" in
19439 '#') echo "Yup, it does.";;
19440 *) echo "Nope, it doesn't.";;
19441 esac
19442
19443 : see what type is used for mode_t
19444 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19445 set mode_t modetype int stdio.h sys/types.h
19446 eval $typedef_ask
19447
19448 : see if we need va_copy
19449 echo " "
19450 case "$i_stdarg" in
19451 "$define")
19452         $cat >try.c <<EOCP
19453 #include <stdarg.h>
19454 #include <stdio.h>
19455 #$i_stdlib I_STDLIB
19456 #ifdef I_STDLIB
19457 #include <stdlib.h>
19458 #endif
19459 #include <signal.h>
19460
19461 int
19462 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19463 {
19464   return vfprintf(f, fmt, *valp);
19465 }
19466
19467 int
19468 myvfprintf(FILE *f, const  char *fmt, va_list val)
19469 {
19470   return ivfprintf(f, fmt, &val);
19471 }
19472
19473 int
19474 myprintf(char *fmt, ...)
19475 {
19476   va_list val;
19477   va_start(val, fmt);
19478   return myvfprintf(stdout, fmt, val);
19479 }
19480
19481 int
19482 main(int ac, char **av)
19483 {
19484   signal(SIGSEGV, exit);
19485
19486   myprintf("%s%cs all right, then\n", "that", '\'');
19487   exit(0);
19488 }
19489 EOCP
19490         set try
19491         if eval $compile && $run ./try 2>&1 >/dev/null; then
19492                 case "`$run ./try`" in
19493                 "that's all right, then")
19494                         okay=yes
19495                         ;;
19496                 esac
19497         fi
19498         case "$okay" in
19499         yes)    echo "It seems that you don't need va_copy()." >&4
19500                 need_va_copy="$undef"
19501                 ;;
19502         *)      echo "It seems that va_copy() or similar will be needed." >&4
19503                 need_va_copy="$define"
19504                 ;;
19505         esac
19506         $rm_try
19507         ;;
19508 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19509         ;;
19510 esac
19511
19512 : see what type is used for size_t
19513 rp="What is the type used for the length parameter for string functions?"
19514 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19515 eval $typedef_ask
19516
19517 : check for type of arguments to gethostbyaddr. 
19518 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19519         case "$d_gethbyaddr" in
19520         $define)
19521                 $cat <<EOM
19522
19523 Checking to see what type of arguments are accepted by gethostbyaddr().
19524 EOM
19525                 hdrs="$define sys/types.h
19526                         $d_socket sys/socket.h 
19527                         $i_niin netinet/in.h 
19528                         $i_netdb netdb.h
19529                         $i_unistd unistd.h"
19530                 : The first arg can 'char *' or 'void *'
19531                 : The second arg is some of integral type
19532                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19533                         for yyy in size_t long int; do
19534                                 case "$netdb_host_type" in
19535                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19536                                         if ./protochk "$try" $hdrs; then
19537                                                 echo "Your system accepts $xxx for the first arg."
19538                                                 echo "...and $yyy for the second arg."
19539                                                 netdb_host_type="$xxx"
19540                                                 netdb_hlen_type="$yyy"
19541                                         fi
19542                                         ;;
19543                                 esac
19544                         done
19545                 done
19546                 : In case none of those worked, prompt the user.
19547                 case "$netdb_host_type" in
19548                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19549                         dflt='char *'
19550                         . ./myread
19551                         netdb_host_type=$ans
19552                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19553                         dflt="$sizetype"
19554                         . ./myread
19555                         netdb_hlen_type=$ans
19556                         ;;
19557                 esac
19558                 ;;
19559         *)      : no gethostbyaddr, so pick harmless defaults
19560                 netdb_host_type='char *'
19561                 netdb_hlen_type="$sizetype"
19562                 ;;
19563         esac
19564         # Remove the "const" if needed. -- but then we'll have a 
19565         # prototype clash!
19566         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19567 fi
19568
19569 : check for type of argument to gethostbyname. 
19570 if test "X$netdb_name_type" = X ; then
19571         case "$d_gethbyname" in
19572         $define)
19573                 $cat <<EOM
19574
19575 Checking to see what type of argument is accepted by gethostbyname().
19576 EOM
19577                 hdrs="$define sys/types.h
19578                         $d_socket sys/socket.h 
19579                         $i_niin netinet/in.h 
19580                         $i_netdb netdb.h
19581                         $i_unistd unistd.h"
19582                 for xxx in "const char *" "char *"; do
19583                         case "$netdb_name_type" in
19584                         '')     try="extern struct hostent *gethostbyname($xxx);"
19585                                 if ./protochk "$try" $hdrs; then
19586                                         echo "Your system accepts $xxx."
19587                                         netdb_name_type="$xxx"
19588                                 fi
19589                                 ;;
19590                         esac
19591                 done
19592                 : In case none of those worked, prompt the user.
19593                 case "$netdb_name_type" in
19594                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19595                         dflt='char *'
19596                         . ./myread
19597                         netdb_name_type=$ans
19598                         ;;
19599                 esac
19600                 ;;
19601         *)      : no gethostbyname, so pick harmless default
19602                 netdb_name_type='char *'
19603                 ;;
19604         esac
19605 fi
19606
19607 : check for type of 1st argument to getnetbyaddr. 
19608 if test "X$netdb_net_type" = X ; then
19609         case "$d_getnbyaddr" in
19610         $define)
19611                 $cat <<EOM
19612
19613 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19614 EOM
19615                 hdrs="$define sys/types.h
19616                         $d_socket sys/socket.h 
19617                         $i_niin netinet/in.h 
19618                         $i_netdb netdb.h
19619                         $i_unistd unistd.h"
19620                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19621                         case "$netdb_net_type" in
19622                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19623                                 if ./protochk "$try" $hdrs; then
19624                                         echo "Your system accepts $xxx."
19625                                         netdb_net_type="$xxx"
19626                                 fi
19627                                 ;;
19628                         esac
19629                 done
19630                 : In case none of those worked, prompt the user.
19631                 case "$netdb_net_type" in
19632                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19633                         dflt='long'
19634                         . ./myread
19635                         netdb_net_type=$ans
19636                         ;;
19637                 esac
19638                 ;;
19639         *)      : no getnetbyaddr, so pick harmless default
19640                 netdb_net_type='long'
19641                 ;;
19642         esac
19643 fi
19644 : locate the preferred pager for this system
19645 fn=f/
19646 case "$pager" in
19647 '')
19648         dflt=''
19649         case "$pg" in
19650         /*) dflt=$pg;;
19651         [a-zA-Z]:/*) dflt=$pg;;
19652         esac
19653         case "$more" in
19654         /*) dflt=$more;;
19655         [a-zA-Z]:/*) dflt=$more;;
19656         esac
19657         case "$less" in
19658         /*) dflt=$less;;
19659         [a-zA-Z]:/*) dflt=$less;;
19660         esac
19661         case "$dflt" in
19662         '') dflt=/usr/ucb/more;;
19663         esac
19664         ;;
19665 *)      dflt="$pager"
19666         : Instruct ./getfile to trust the hinted or previous pager value,
19667         : even if it does not begin with a slash.  For example, on os2,
19668         : pager might be cmd /c more.  See comments in UU/getfile.
19669         fn="f/($pager)"
19670         ;;
19671 esac
19672 echo " "
19673 rp='What pager is used on your system?'
19674 . ./getfile
19675 pager="$ans"
19676
19677 : see what type pids are declared as in the kernel
19678 rp="What is the type of process ids on this system?"
19679 set pid_t pidtype int stdio.h sys/types.h
19680 eval $typedef_ask
19681
19682 : see if ar generates random libraries by itself
19683 echo " "
19684 echo "Checking how to generate random libraries on your machine..." >&4
19685 echo 'int bar1() { return bar2(); }' > bar1.c
19686 echo 'int bar2() { return 2; }' > bar2.c
19687 $cat > foo.c <<EOP
19688 #$i_stdlib I_STDLIB
19689 #ifdef I_STDLIB
19690 #include <stdlib.h>
19691 #endif
19692 int main() { printf("%d\n", bar1()); exit(0); }
19693 EOP
19694 $cc $ccflags -c bar1.c >/dev/null 2>&1
19695 $cc $ccflags -c bar2.c >/dev/null 2>&1
19696 $cc $ccflags -c foo.c >/dev/null 2>&1
19697 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19698 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19699         $run ./foobar >/dev/null 2>&1; then
19700         echo "$ar appears to generate random libraries itself."
19701         orderlib=false
19702         if [ "X$ranlib" = "X" ]; then
19703             ranlib=":"
19704         fi
19705 elif $ar s bar$_a >/dev/null 2>&1 &&
19706         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19707         $run ./foobar >/dev/null 2>&1; then
19708                 echo "a table of contents needs to be added with '$ar s'."
19709                 orderlib=false
19710                 ranlib="$ar s"
19711 elif $ar ts bar$_a >/dev/null 2>&1 &&
19712         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19713         $run ./foobar >/dev/null 2>&1; then
19714                 echo "a table of contents needs to be added with '$ar ts'."
19715                 orderlib=false
19716                 ranlib="$ar ts"
19717 else
19718         case "$ranlib" in
19719         :) ranlib='';;
19720         '')
19721                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19722                 $test -f $ranlib || ranlib=''
19723                 ;;
19724         esac
19725         if $test -n "$ranlib"; then
19726                 echo "your system has '$ranlib'; we'll use that."
19727                 orderlib=false
19728         else
19729                 echo "your system doesn't seem to support random libraries"
19730                 echo "so we'll use lorder and tsort to order the libraries."
19731                 orderlib=true
19732                 ranlib=":"
19733         fi
19734 fi
19735 $rm -f foo* bar*
19736
19737 : check for type of arguments to select. 
19738 case "$selecttype" in
19739 '') case "$d_select" in
19740         $define)
19741                 echo " "
19742                 $cat <<EOM
19743 Checking to see what type of arguments are accepted by select().
19744 EOM
19745                 hdrs="$define sys/types.h
19746                         $i_systime sys/time.h 
19747                         $i_sysselct sys/select.h
19748                         $d_socket sys/socket.h"
19749                 : The first arg can be int, unsigned, or size_t
19750                 : The last arg may or may not be 'const'
19751                 val=''
19752                 : void pointer has been seen but using that
19753                 : breaks the selectminbits test
19754                 for xxx in 'fd_set *' 'int *'; do
19755                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19756                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19757                                         case "$val" in
19758                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19759                                                 if ./protochk "$try" $hdrs; then
19760                                                         echo "Your system accepts $xxx."
19761                                                         val="$xxx"
19762                                                 fi
19763                                                 ;;
19764                                         esac
19765                                 done
19766                         done
19767                 done
19768                 case "$val" in
19769                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19770                         case "$d_fd_set" in
19771                                 $define) dflt="fd_set *" ;;
19772                                 *)              dflt="int *" ;;
19773                         esac
19774                         . ./myread
19775                         val=$ans
19776                         ;;
19777                 esac
19778                 selecttype="$val"
19779                 ;;
19780         *)      : no select, so pick a harmless default
19781                 selecttype='int *'
19782                 ;;
19783         esac
19784         ;;
19785 esac
19786
19787 : check for the select 'width'
19788 case "$selectminbits" in
19789 '') safebits=`expr $ptrsize \* 8`
19790     case "$d_select" in
19791         $define)
19792                 $cat <<EOM
19793
19794 Checking to see on how many bits at a time your select() operates...
19795 EOM
19796                 $cat >try.c <<EOCP
19797 #include <sys/types.h>
19798 #$i_time I_TIME
19799 #$i_systime I_SYS_TIME
19800 #$i_systimek I_SYS_TIME_KERNEL
19801 #ifdef I_TIME
19802 #   include <time.h>
19803 #endif
19804 #ifdef I_SYS_TIME
19805 #   ifdef I_SYS_TIME_KERNEL
19806 #       define KERNEL
19807 #   endif
19808 #   include <sys/time.h>
19809 #   ifdef I_SYS_TIME_KERNEL
19810 #       undef KERNEL
19811 #   endif
19812 #endif
19813 #$i_sysselct I_SYS_SELECT
19814 #ifdef I_SYS_SELECT
19815 #include <sys/select.h>
19816 #endif
19817 #$d_socket HAS_SOCKET
19818 #ifdef HAS_SOCKET
19819 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19820 #endif
19821 #include <stdio.h>
19822 #$i_stdlib I_STDLIB
19823 #ifdef I_STDLIB
19824 #include <stdlib.h>
19825 #endif
19826 $selecttype b;
19827 #define S sizeof(*(b))
19828 #define MINBITS 64
19829 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19830 #define NBITS  (NBYTES * 8)
19831 int main() {
19832     char *s = (char *)malloc(NBYTES);
19833     struct timeval t;
19834     int i;
19835     FILE* fp;
19836     int fd;
19837
19838     if (!s)
19839         exit(1);
19840     fclose(stdin);
19841     fp = fopen("try.c", "r");
19842     if (fp == 0)
19843       exit(2);
19844     fd = fileno(fp);
19845     if (fd < 0)
19846       exit(3);
19847     b = ($selecttype)s;
19848     for (i = 0; i < NBITS; i++)
19849         FD_SET(i, b);
19850     t.tv_sec  = 0;
19851     t.tv_usec = 0;
19852     select(fd + 1, b, 0, 0, &t);
19853     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19854     free(s);
19855     printf("%d\n", i + 1);
19856     return 0;
19857 }
19858 EOCP
19859                 set try
19860                 if eval $compile_ok; then
19861                         selectminbits=`$run ./try`
19862                         case "$selectminbits" in
19863                         '')     cat >&4 <<EOM
19864 Cannot figure out on how many bits at a time your select() operates.
19865 I'll play safe and guess it is $safebits bits.
19866 EOM
19867                                 selectminbits=$safebits
19868                                 bits="$safebits bits"
19869                                 ;;
19870                         1)      bits="1 bit" ;;
19871                         *)      bits="$selectminbits bits" ;;
19872                         esac
19873                         echo "Your select() operates on $bits at a time." >&4
19874                 else
19875                         rp='What is the minimum number of bits your select() operates on?'
19876                         case "$byteorder" in
19877                         12345678)       dflt=64 ;;
19878                         1234)           dflt=32 ;;
19879                         *)              dflt=1  ;;
19880                         esac
19881                         . ./myread
19882                         val=$ans
19883                         selectminbits="$val"
19884                 fi
19885                 $rm_try
19886                 ;;
19887         *)      : no select, so pick a harmless default
19888                 selectminbits=$safebits
19889                 ;;
19890         esac
19891         ;;
19892 esac
19893
19894 : Trace out the files included by signal.h, then look for SIGxxx names.
19895 : Remove SIGARRAYSIZE used by HPUX.
19896 : Remove SIGSTKSIZE used by Linux.
19897 : Remove SIGSTKSZ used by Posix.
19898 : Remove SIGTYP void lines used by OS2.
19899 : Some cpps, like os390, dont give the file name anywhere
19900 if [ "X$fieldn" = X ]; then
19901         : Just make some guesses.  We check them later.
19902         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19903 else
19904         xxx=`echo '#include <signal.h>' |
19905         $cppstdin $cppminus $cppflags 2>/dev/null |
19906         $grep '^[       ]*#.*include' | 
19907         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19908 fi
19909 : Check this list of files to be sure we have parsed the cpp output ok.
19910 : This will also avoid potentially non-existent files, such 
19911 : as ../foo/bar.h
19912 xxxfiles=''
19913 for xx in $xxx /dev/null ; do
19914         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19915 done
19916 : If we have found no files, at least try signal.h
19917 case "$xxxfiles" in
19918 '')     xxxfiles=`./findhdr signal.h` ;;
19919 esac
19920 xxx=`awk '
19921 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19922         print substr($2, 4, 20)
19923 }
19924 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19925         print substr($3, 4, 20)
19926 }' $xxxfiles`
19927 : Append some common names just in case the awk scan failed.
19928 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19929 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19930 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19931 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19932 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19933
19934 : generate a few handy files for later
19935 $cat > signal.c <<EOCP
19936 #include <sys/types.h>
19937 #include <signal.h>
19938 #$i_stdlib I_STDLIB
19939 #ifdef I_STDLIB
19940 #include <stdlib.h>
19941 #endif
19942 #include <stdio.h>
19943 int main() {
19944
19945 /* Strange style to avoid deeply-nested #if/#else/#endif */
19946 #ifndef NSIG
19947 #  ifdef _NSIG
19948 #    define NSIG (_NSIG)
19949 #  endif
19950 #endif
19951
19952 #ifndef NSIG
19953 #  ifdef SIGMAX
19954 #    define NSIG (SIGMAX+1)
19955 #  endif
19956 #endif
19957
19958 #ifndef NSIG
19959 #  ifdef SIG_MAX
19960 #    define NSIG (SIG_MAX+1)
19961 #  endif
19962 #endif
19963
19964 #ifndef NSIG
19965 #  ifdef _SIG_MAX
19966 #    define NSIG (_SIG_MAX+1)
19967 #  endif
19968 #endif
19969
19970 #ifndef NSIG
19971 #  ifdef MAXSIG
19972 #    define NSIG (MAXSIG+1)
19973 #  endif
19974 #endif
19975
19976 #ifndef NSIG
19977 #  ifdef MAX_SIG
19978 #    define NSIG (MAX_SIG+1)
19979 #  endif
19980 #endif
19981
19982 #ifndef NSIG
19983 #  ifdef SIGARRAYSIZE
19984 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19985 #  endif
19986 #endif
19987
19988 #ifndef NSIG
19989 #  ifdef _sys_nsig
19990 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
19991 #  endif
19992 #endif
19993
19994 /* Default to some arbitrary number that's big enough to get most
19995    of the common signals.
19996 */
19997 #ifndef NSIG
19998 #    define NSIG 50
19999 #endif
20000
20001 printf("NSIG %d\n", NSIG);
20002
20003 #ifndef JUST_NSIG
20004
20005 EOCP
20006
20007 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20008 {
20009         printf "#ifdef SIG"; printf $1; printf "\n"
20010         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20011         printf $1; printf ");\n"
20012         printf "#endif\n"
20013 }
20014 END {
20015         printf "#endif /* JUST_NSIG */\n";
20016         printf "exit(0);\n}\n";
20017 }
20018 ' >>signal.c
20019 $cat >signal.awk <<'EOP'
20020 BEGIN { ndups = 0 }
20021 $1 ~ /^NSIG$/ { nsig = $2 }
20022 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20023     if ($2 > maxsig) { maxsig = $2 }
20024     if (sig_name[$2]) {
20025         dup_name[ndups] = $1
20026         dup_num[ndups] = $2
20027         ndups++ 
20028     }
20029     else {
20030         sig_name[$2] = $1
20031         sig_num[$2] = $2
20032     }
20033 }
20034 END { 
20035     if (nsig == 0) {
20036         nsig = maxsig + 1
20037     }
20038     printf("NSIG %d\n", nsig);
20039     for (n = 1; n < nsig; n++) {
20040         if (sig_name[n]) {
20041             printf("%s %d\n", sig_name[n], sig_num[n])
20042         }
20043         else {
20044             printf("NUM%d %d\n", n, n) 
20045         }
20046     }
20047     for (n = 0; n < ndups; n++) {
20048         printf("%s %d\n", dup_name[n], dup_num[n])
20049     }
20050 }
20051 EOP
20052 $cat >signal_cmd <<EOS
20053 $startsh
20054 if $test -s signal.lst; then
20055     echo "Using your existing signal.lst file"
20056         exit 0
20057 fi
20058 xxx="$xxx"
20059 EOS
20060 $cat >>signal_cmd <<'EOS'
20061
20062 set signal
20063 if eval $compile_ok; then
20064         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
20065 else
20066         echo "(I can't seem be able to compile the whole test program)" >&4
20067         echo "(I'll try it in little pieces.)" >&4
20068         set signal -DJUST_NSIG
20069         if eval $compile_ok; then
20070                 $run ./signal$_exe > signal.nsg
20071                 $cat signal.nsg
20072         else
20073                 echo "I can't seem to figure out how many signals you have." >&4
20074                 echo "Guessing 50." >&4
20075                 echo 'NSIG 50' > signal.nsg
20076         fi
20077         : Now look at all the signal names, one at a time.
20078         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20079                 $cat > signal.c <<EOCP
20080 #include <sys/types.h>
20081 #include <signal.h>
20082 #include <stdio.h>
20083 int main() {
20084 printf("$xx %d\n", SIG${xx});
20085 return 0;
20086 }
20087 EOCP
20088                 set signal
20089                 if eval $compile; then
20090                         echo "SIG${xx} found."
20091                         $run ./signal$_exe  >> signal.ls1
20092                 else
20093                         echo "SIG${xx} NOT found."
20094                 fi
20095         done
20096         if $test -s signal.ls1; then
20097                 $cat signal.nsg signal.ls1 |
20098                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20099         fi
20100
20101 fi
20102 if $test -s signal.lst; then
20103         :
20104 else
20105         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20106         echo 'kill -l' >signal
20107         set X `csh -f <signal`
20108         $rm -f signal
20109         shift
20110         case $# in
20111         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20112         esac
20113         echo $@ | $tr ' ' $trnl | \
20114             $awk '{ printf "%s %d\n", $1, ++s; }
20115                   END { printf "NSIG %d\n", ++s }' >signal.lst
20116 fi
20117 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20118 EOS
20119 chmod a+x signal_cmd
20120 $eunicefix signal_cmd
20121
20122 : generate list of signal names
20123 echo " "
20124 case "$sig_name_init" in
20125 '') doinit=yes ;;
20126 *)  case "$sig_num_init" in
20127     ''|*,*) doinit=yes ;;
20128     esac ;;
20129 esac
20130 case "$doinit" in
20131 yes)
20132         echo "Generating a list of signal names and numbers..." >&4
20133         . ./signal_cmd
20134         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20135         sig_name=`$awk 'BEGIN { printf "ZERO " }
20136                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20137         sig_num=`$awk  'BEGIN { printf "0 " }
20138                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20139         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20140                              !/^NSIG/   { printf "\"%s\", ", $1 }
20141                              END        { printf "0\n" }' signal.lst`
20142         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20143                              !/^NSIG/   { printf "%d, ", $2}
20144                              END        { printf "0\n"}' signal.lst`
20145         ;;
20146 esac
20147 echo "The following $sig_count signals are available:"
20148 echo " "
20149 echo $sig_name | $awk \
20150 'BEGIN { linelen = 0 }
20151 {
20152         for (i = 1; i <= NF; i++) {
20153                 name = "SIG" $i " "
20154                 linelen = linelen + length(name)
20155                 if (linelen > 70) {
20156                         printf "\n"
20157                         linelen = length(name)
20158                 }
20159                 printf "%s", name
20160         }
20161         printf "\n"
20162 }'
20163 sig_size=`echo $sig_name | awk '{print NF}'`
20164 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
20165
20166 echo " "
20167 case "$sizetype" in
20168 *_t) zzz="$sizetype"    ;;
20169 *)   zzz="filesize"     ;;
20170 esac
20171 echo "Checking the size of $zzz..." >&4 
20172 cat > try.c <<EOCP
20173 #include <sys/types.h>
20174 #include <stdio.h>
20175 #$i_stdlib I_STDLIB
20176 #ifdef I_STDLIB
20177 #include <stdlib.h>
20178 #endif
20179 int main() {
20180     printf("%d\n", (int)sizeof($sizetype));
20181     exit(0);
20182 }
20183 EOCP
20184 set try
20185 if eval $compile_ok; then
20186         yyy=`$run ./try`
20187         case "$yyy" in
20188         '')     sizesize=4
20189                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20190                 ;;
20191         *)      sizesize=$yyy
20192                 echo "Your $zzz size is $sizesize bytes."
20193                 ;;
20194         esac
20195 else
20196         sizesize=4
20197         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20198 fi
20199
20200
20201 : check for socklen_t
20202 echo " "
20203 echo "Checking to see if you have socklen_t..." >&4
20204 $cat >try.c <<EOCP
20205 #include <sys/types.h>
20206 #$d_socket HAS_SOCKET
20207 #ifdef HAS_SOCKET
20208 #include <sys/socket.h>
20209 #endif
20210 int main() { socklen_t x = 16; }
20211 EOCP
20212 set try
20213 if eval $compile; then
20214         val="$define"
20215         echo "You have socklen_t."
20216 else
20217         val="$undef"
20218         echo "You do not have socklen_t."
20219         case "$sizetype" in
20220         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20221         esac
20222 fi
20223 $rm_try
20224 set d_socklen_t
20225 eval $setvar
20226
20227 : see if this is a socks.h system
20228 set socks.h i_socks
20229 eval $inhdr
20230
20231 : check for type of the size argument to socket calls
20232 case "$d_socket" in
20233 "$define")
20234         $cat <<EOM
20235
20236 Checking to see what type is the last argument of accept().
20237 EOM
20238         yyy=''
20239         case "$d_socklen_t" in
20240         "$define") yyy="$yyy socklen_t"
20241         esac
20242         yyy="$yyy $sizetype int long unsigned"
20243         for xxx in $yyy; do
20244                 case "$socksizetype" in
20245                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20246                         case "$usesocks" in
20247                         "$define")
20248                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20249                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20250                                         socksizetype="$xxx"
20251                                 fi
20252                                 ;;
20253                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20254                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20255                                         socksizetype="$xxx"
20256                                 fi
20257                                 ;;
20258                         esac
20259                         ;;
20260                 esac
20261         done
20262 : In case none of those worked, prompt the user.
20263         case "$socksizetype" in
20264         '')     rp='What is the type for socket address structure sizes?'
20265                 dflt='int'
20266                 . ./myread
20267                 socksizetype=$ans
20268                 ;;
20269         esac
20270         ;;
20271 *)      : no sockets, so pick relatively harmless default
20272         socksizetype='int'
20273         ;;
20274 esac
20275
20276 : see what type is used for signed size_t
20277 set ssize_t ssizetype int stdio.h sys/types.h
20278 eval $typedef
20279 dflt="$ssizetype"
20280 $cat > try.c <<EOM
20281 #include <stdio.h>
20282 #$i_stdlib I_STDLIB
20283 #ifdef I_STDLIB
20284 #include <stdlib.h>
20285 #endif
20286 #include <sys/types.h>
20287 #define Size_t $sizetype
20288 #define SSize_t $dflt
20289 int main()
20290 {
20291         if (sizeof(Size_t) == sizeof(SSize_t))
20292                 printf("$dflt\n");
20293         else if (sizeof(Size_t) == sizeof(int))
20294                 printf("int\n");
20295         else
20296                 printf("long\n");
20297         exit(0);
20298 }
20299 EOM
20300 echo " "
20301 set try
20302 if eval $compile_ok && $run ./try > /dev/null; then
20303         ssizetype=`$run ./try`
20304         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20305 else
20306         $cat >&4 <<EOM
20307 Help! I can't compile and run the ssize_t test program: please enlighten me!
20308 (This is probably a misconfiguration in your system or libraries, and
20309 you really ought to fix it.  Still, I'll try anyway.)
20310
20311 I need a type that is the same size as $sizetype, but is guaranteed to
20312 be signed.  Common values are ssize_t, int and long.
20313
20314 EOM
20315         rp="What signed type is the same size as $sizetype?"
20316         . ./myread
20317         ssizetype="$ans"
20318 fi
20319 $rm_try
20320
20321 : see what type of char stdio uses.
20322 echo " "
20323 echo '#include <stdio.h>' > stdio.c
20324 $cppstdin $cppminus < stdio.c > stdioh
20325 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20326         echo "Your stdio uses unsigned chars." >&4
20327         stdchar="unsigned char"
20328 else
20329         echo "Your stdio uses signed chars." >&4
20330         stdchar="char"
20331 fi
20332 $rm -f stdio.* stdioh
20333
20334 : see what type uids are declared as in the kernel
20335 echo " "
20336 echo "Looking for the type for user ids returned by getuid()."
20337 set uid_t uidtype xxx stdio.h sys/types.h
20338 eval $typedef
20339 case "$uidtype" in
20340 xxx)
20341         xxx=`./findhdr sys/user.h`
20342         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20343         case $1 in
20344         unsigned) dflt="$1 $2" ;;
20345         *) dflt="$1" ;;
20346         esac
20347         ;;
20348 *) dflt="$uidtype";;
20349 esac
20350 case "$uidtype" in
20351 uid_t)  echo "uid_t found." ;;
20352 *)      rp="What is the type for user ids returned by getuid()?"
20353         . ./myread
20354         uidtype="$ans"
20355         ;;
20356 esac
20357
20358 echo " "
20359 case "$uidtype" in
20360 *_t) zzz="$uidtype"     ;;
20361 *)   zzz="uid"          ;;
20362 esac
20363 echo "Checking the size of $zzz..." >&4 
20364 cat > try.c <<EOCP
20365 #include <sys/types.h>
20366 #include <stdio.h>
20367 #$i_stdlib I_STDLIB
20368 #ifdef I_STDLIB
20369 #include <stdlib.h>
20370 #endif
20371 int main() {
20372     printf("%d\n", (int)sizeof($uidtype));
20373     exit(0);
20374 }
20375 EOCP
20376 set try
20377 if eval $compile_ok; then
20378         yyy=`$run ./try`
20379         case "$yyy" in
20380         '')     uidsize=4
20381                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20382                 ;;
20383         *)      uidsize=$yyy
20384                 echo "Your $zzz is $uidsize bytes long."
20385                 ;;
20386         esac
20387 else
20388         uidsize=4
20389         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20390 fi
20391
20392 echo " "
20393 case "$uidtype" in
20394 *_t) zzz="$uidtype"     ;;
20395 *)   zzz="uid"          ;;
20396 esac
20397 echo "Checking the sign of $zzz..." >&4
20398 cat > try.c <<EOCP
20399 #include <sys/types.h>
20400 #include <stdio.h>
20401 int main() {
20402         $uidtype foo = -1;
20403         if (foo < 0)
20404                 printf("-1\n");
20405         else
20406                 printf("1\n");
20407 }
20408 EOCP
20409 set try
20410 if eval $compile; then
20411         yyy=`$run ./try`
20412         case "$yyy" in
20413         '')     uidsign=1
20414                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20415                 ;;
20416         *)      uidsign=$yyy
20417                 case "$uidsign" in
20418                  1) echo "Your $zzz is unsigned." ;;
20419                 -1) echo "Your $zzz is signed."   ;;
20420                 esac
20421                 ;;
20422         esac
20423 else
20424         uidsign=1
20425         echo "(I can't compile the test program--guessing unsigned.)" >&4
20426 fi
20427
20428
20429
20430 echo " "
20431 $echo "Checking the format string to be used for uids..." >&4
20432
20433 case "$uidsign" in
20434 -1)     if $test X"$uidsize" = X"$ivsize"; then
20435                 uidformat="$ivdformat"
20436         else
20437                 if $test X"$uidsize" = X"$longsize"; then
20438                         uidformat='"ld"'
20439                 else
20440                         if $test X"$uidsize" = X"$intsize"; then
20441                                 uidformat='"d"'
20442                         else
20443                                 if $test X"$uidsize" = X"$shortsize"; then
20444                                         uidformat='"hd"'
20445                                 fi
20446                         fi
20447                 fi
20448         fi
20449         ;;
20450 *)      if $test X"$uidsize" = X"$uvsize"; then
20451                 uidformat="$uvuformat"
20452         else
20453                 if $test X"$uidsize" = X"$longsize"; then
20454                         uidformat='"lu"'
20455                 else
20456                         if $test X"$uidsize" = X"$intsize"; then
20457                                 uidformat='"u"'
20458                         else
20459                                 if $test X"$uidsize" = X"$shortsize"; then
20460                                         uidformat='"hu"'
20461                                 fi
20462                         fi
20463                 fi
20464         fi
20465         ;;
20466 esac
20467
20468
20469 case "$usesitecustomize" in
20470     $define|true|[Yy]*)
20471         usesitecustomize="$define"
20472         ;;
20473     *)
20474         usesitecustomize="$undef"
20475         ;;
20476     esac
20477
20478 : determine compiler compiler
20479 case "$yacc" in
20480 '')
20481         dflt=yacc;;
20482 *)
20483         dflt="$yacc";;
20484 esac
20485 echo " "
20486 comp='yacc'
20487 if $test -f "$byacc$_exe"; then
20488         dflt="$byacc"
20489         comp="byacc or $comp"
20490 fi
20491 if $test -f "$bison$_exe"; then
20492         comp="$comp or bison -y"
20493 fi
20494 rp="Which compiler compiler ($comp) shall I use?"
20495 . ./myread
20496 yacc="$ans"
20497 case "$yacc" in
20498 *bis*)
20499         case "$yacc" in
20500         *-y*) ;;
20501         *)
20502                 yacc="$yacc -y"
20503                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20504                 ;;
20505         esac
20506         ;;
20507 esac
20508
20509 : see if this is a fp.h system
20510 set fp.h i_fp
20511 eval $inhdr
20512
20513 : see if this is a fp_class.h system
20514 set fp_class.h i_fp_class
20515 eval $inhdr
20516
20517 : see if gdbm.h is available
20518 set gdbm.h t_gdbm
20519 eval $inhdr
20520 case "$t_gdbm" in
20521 $define)
20522         : see if gdbm_open exists
20523         set gdbm_open d_gdbm_open
20524         eval $inlibc
20525         case "$d_gdbm_open" in
20526         $undef)
20527                 t_gdbm="$undef"
20528                 echo "We won't be including <gdbm.h>"
20529                 ;;
20530         esac
20531         ;;
20532 esac
20533 val="$t_gdbm"
20534 set i_gdbm
20535 eval $setvar
20536
20537 : see if this is a ieeefp.h system
20538 case "$i_ieeefp" in
20539 '' ) set ieeefp.h i_ieeefp
20540      eval $inhdr
20541      ;;
20542 esac
20543
20544 : see if this is a libutil.h system
20545 set libutil.h i_libutil
20546 eval $inhdr
20547
20548 : see if mach cthreads are available
20549 if test "X$usethreads" = "X$define"; then
20550         set mach/cthreads.h i_machcthr
20551         eval $inhdr
20552 else
20553         i_machcthr="$undef"
20554 fi
20555
20556
20557
20558 : see if this is a mntent.h system
20559 set mntent.h i_mntent
20560 eval $inhdr
20561
20562 : see if ndbm.h is available
20563 set ndbm.h t_ndbm
20564 eval $inhdr
20565
20566 case "$t_ndbm" in
20567 $undef)
20568     # Some Linux distributions such as RedHat 7.1 put the
20569     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20570     if $test -f /usr/include/gdbm/ndbm.h; then
20571         echo '<gdbm/ndbm.h> found.'
20572         ccflags="$ccflags -I/usr/include/gdbm"
20573         cppflags="$cppflags -I/usr/include/gdbm"
20574         t_ndbm=$define
20575     fi
20576     ;;
20577 esac
20578
20579 case "$t_ndbm" in
20580 $define)
20581         : see if dbm_open exists
20582         set dbm_open d_dbm_open
20583         eval $inlibc
20584         case "$d_dbm_open" in
20585         $undef)
20586                 t_ndbm="$undef"
20587                 echo "We won't be including <ndbm.h>"
20588                 ;;
20589         esac
20590         ;;
20591 esac
20592 val="$t_ndbm"
20593 set i_ndbm
20594 eval $setvar
20595
20596 : see if net/errno.h is available
20597 val=''
20598 set net/errno.h val
20599 eval $inhdr
20600
20601 : Unfortunately, it causes problems on some systems.  Arrgh.
20602 case "$val" in
20603 $define)
20604         cat > try.c <<'EOM'
20605 #include <stdio.h>
20606 #include <errno.h>
20607 #include <net/errno.h>
20608 int func()
20609 {
20610         return ENOTSOCK;
20611 }
20612 EOM
20613         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20614                 echo "We'll be including <net/errno.h>." >&4
20615         else
20616                 echo "We won't be including <net/errno.h>." >&4
20617                 val="$undef"
20618         fi
20619         $rm_try
20620         ;;
20621 esac
20622 set i_neterrno
20623 eval $setvar
20624
20625 : see if netinet/tcp.h is available
20626 set netinet/tcp.h i_netinettcp
20627 eval $inhdr
20628
20629 : see if this is a poll.h system
20630 set poll.h i_poll
20631 eval $inhdr
20632
20633 : see if this is a prot.h system
20634 set prot.h i_prot
20635 eval $inhdr
20636
20637 echo " "
20638 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20639 $cat <<'EOSH' > Cppsym.know
20640 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20641 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20642 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20643 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20644 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20645 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20646 bull c cadmus clipper CMU COFF COMPILER_VERSION
20647 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20648 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20649 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20650 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20651 GLIBC GLIBC_MINOR
20652 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20653 H3050R H3050RX hbullx20 hcx host_mips
20654 hp200 hp300 hp700 HP700 hp800 hp9000
20655 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20656 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20657 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20658 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20659 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20660 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20661 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20662 LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20663 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20664 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20665 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20666 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20667 MATH_HAS_NO_SIDE_EFFECTS
20668 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20669 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20670 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20671 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20672 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20673 NetBSD news1500 news1700 news1800 news1900 news3700
20674 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20675 ns32016 ns32332 ns32k nsc32000
20676 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20677 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20678 pc532 pdp11 PGC PIC plexus PORTAR posix
20679 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20680 POSIX_C_SOURCE POSIX_SOURCE POWER
20681 PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
20682 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20683 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20684 sony sony_news sonyrisc sparc sparclite spectrum
20685 stardent stdc STDC_EXT stratos sun sun3 sun386
20686 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20687 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20688 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20689 sysV68 sysV88 Tek4132 Tek4300 titan
20690 TM3200 TM5400 TM5600
20691 tower tower32 tower32_200 tower32_600 tower32_700
20692 tower32_800 tower32_850 tss
20693 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20694 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20695 unix UNIX95 UNIX99 unixpc unos
20696 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20697 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20698 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20699 USGr4 USGr4_2
20700 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20701 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20702 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20703 z8000
20704 EOSH
20705 # Maybe put other stuff here too.
20706 cat <<EOSH >>Cppsym.know
20707 $osname
20708 EOSH
20709 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20710 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20711 $cat Cppsym.know > Cppsym.c
20712 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20713 $rm -f Cppsym.a Cppsym.b Cppsym.c
20714 cat <<EOSH > Cppsym
20715 $startsh
20716 if $test \$# -gt 0; then
20717     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20718     if $test -s Cppsym.got; then
20719         $rm -f Cppsym.got
20720         exit 0
20721     fi
20722     $rm -f Cppsym.got
20723     exit 1
20724 else
20725     $tr " " "$trnl" | ./Cppsym.try
20726     exit 0
20727 fi
20728 EOSH
20729 chmod +x Cppsym
20730 $eunicefix Cppsym
20731 cat <<EOSH > Cppsym.try
20732 $startsh
20733 cat <<'EOCP' > try.c
20734 #include <stdio.h>
20735 #if cpp_stuff == 1
20736 #define STRINGIFY(a)    "a"
20737 #endif
20738 #if cpp_stuff == 42
20739 #define StGiFy(a)  #a
20740 #define STRINGIFY(a)    StGiFy(a)
20741 #endif
20742 #if $cpp_stuff != 1 && $cpp_stuff != 42
20743 #   include "Bletch: How does this C preprocessor stringify macros?"
20744 #endif
20745 int main() {
20746 EOCP
20747 $awk \\
20748 EOSH
20749 cat <<'EOSH' >> Cppsym.try
20750 'length($1) > 0 {
20751     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20752     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20753     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20754     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20755 }'       >> try.c
20756 echo 'return 0;}' >> try.c
20757 EOSH
20758 cat <<EOSH >> Cppsym.try
20759 ccflags="$ccflags"
20760 case "$osname-$gccversion" in
20761 irix-) ccflags="\$ccflags -woff 1178" ;;
20762 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20763 esac
20764 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20765 EOSH
20766 chmod +x Cppsym.try
20767 $eunicefix Cppsym.try
20768 ./Cppsym < Cppsym.know > Cppsym.true
20769 : Add in any linux cpp "predefined macros":
20770 case "$osname::$gccversion" in
20771   *linux*::*.*)
20772     tHdrH=_tmpHdr
20773     rm -f $tHdrH'.h' $tHdrH
20774     touch $tHdrH'.h'
20775     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20776        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20777        if [ -s $tHdrH'_cppsym.real' ]; then
20778           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20779        fi
20780     fi
20781     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20782   ;;
20783 esac
20784 : now check the C compiler for additional symbols
20785 postprocess_cc_v=''
20786 case "$osname" in
20787 aix) postprocess_cc_v="|$tr , ' '" ;;
20788 esac
20789 $cat >ccsym <<EOS
20790 $startsh
20791 $cat >tmp.c <<EOF
20792 extern int foo;
20793 EOF
20794 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20795 do
20796         case "\$i" in
20797         -D*) echo "\$i" | $sed 's/^-D//';;
20798         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20799         esac
20800 done
20801 $rm_try
20802 EOS
20803 postprocess_cc_v=''
20804 chmod +x ccsym
20805 $eunicefix ccsym
20806 ./ccsym > ccsym1.raw
20807 if $test -s ccsym1.raw; then
20808        $sort ccsym1.raw | $uniq >ccsym.raw
20809 else
20810        mv ccsym1.raw ccsym.raw
20811 fi
20812
20813 $awk '/\=/ { print $0; next }
20814         { print $0"=1" }' ccsym.raw >ccsym.list
20815 $comm -13 Cppsym.true ccsym.list >ccsym.own
20816 $comm -12 Cppsym.true ccsym.list >ccsym.com
20817 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20818 also=''
20819 if $test -z ccsym.raw; then
20820         echo "Your C compiler doesn't seem to define any symbols!" >&4
20821         echo " "
20822         echo "However, your C preprocessor defines the following symbols:"
20823         $cat Cppsym.true
20824         ccsymbols=''
20825         cppsymbols=`$cat Cppsym.true`
20826         cppsymbols=`echo $cppsymbols`
20827         cppccsymbols="$cppsymbols"
20828 else
20829         if $test -s ccsym.com; then
20830                 echo "Your C compiler and pre-processor define these symbols:"
20831                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20832                 also='also '
20833                 symbols='ones'
20834                 cppccsymbols=`$cat ccsym.com`
20835                 cppccsymbols=`echo $cppccsymbols`
20836                 $test "$silent" || sleep 1
20837         fi
20838         if $test -s ccsym.cpp; then
20839                 $test "$also" && echo " "
20840                 echo "Your C pre-processor ${also}defines the following symbols:"
20841                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20842                 also='further '
20843                 cppsymbols=`$cat ccsym.cpp`
20844                 cppsymbols=`echo $cppsymbols`
20845                 $test "$silent" || sleep 1
20846         fi
20847         if $test -s ccsym.own; then
20848                 $test "$also" && echo " "
20849                 echo "Your C compiler ${also}defines the following cpp symbols:"
20850                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20851                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20852                 ccsymbols=`$cat ccsym.own`
20853                 ccsymbols=`echo $ccsymbols`
20854                 $test "$silent" || sleep 1
20855         fi
20856 fi
20857
20858 : see if this is a termio system
20859 val="$undef"
20860 val2="$undef"
20861 val3="$undef"
20862 if $test `./findhdr termios.h`; then
20863         set tcsetattr i_termios
20864         eval $inlibc
20865         val3="$i_termios"
20866 fi
20867 echo " "
20868 case "$val3" in
20869 "$define") echo "You have POSIX termios.h... good!" >&4;;
20870 *) if ./Cppsym pyr; then
20871                 case "`/bin/universe`" in
20872                 ucb) if $test `./findhdr sgtty.h`; then
20873                                 val2="$define"
20874                                 echo "<sgtty.h> found." >&4
20875                         else
20876                                 echo "System is pyramid with BSD universe."
20877                                 echo "<sgtty.h> not found--you could have problems." >&4
20878                         fi;;
20879                 *) if $test `./findhdr termio.h`; then
20880                                 val="$define"
20881                                 echo "<termio.h> found." >&4
20882                         else
20883                                 echo "System is pyramid with USG universe."
20884                                 echo "<termio.h> not found--you could have problems." >&4
20885                         fi;;
20886                 esac
20887         elif ./usg; then
20888                 if $test `./findhdr termio.h`; then
20889                         echo "<termio.h> found." >&4
20890                         val="$define"
20891                 elif $test `./findhdr sgtty.h`; then
20892                         echo "<sgtty.h> found." >&4
20893                         val2="$define"
20894                 else
20895 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20896                 fi
20897         else
20898                 if $test `./findhdr sgtty.h`; then
20899                         echo "<sgtty.h> found." >&4
20900                         val2="$define"
20901                 elif $test `./findhdr termio.h`; then
20902                         echo "<termio.h> found." >&4
20903                         val="$define"
20904                 else
20905 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20906                 fi
20907         fi;;
20908 esac
20909 set i_termio; eval $setvar
20910 val=$val2; set i_sgtty; eval $setvar
20911 val=$val3; set i_termios; eval $setvar
20912
20913 : see if stddef is available
20914 set stddef.h i_stddef
20915 eval $inhdr
20916
20917 : see if sys/access.h is available
20918 set sys/access.h i_sysaccess
20919 eval $inhdr
20920
20921 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20922 set sys/filio.h i_sysfilio
20923 eval $inhdr
20924 echo " "
20925 if $test `./findhdr sys/ioctl.h`; then
20926         val="$define"
20927         echo '<sys/ioctl.h> found.' >&4
20928 else
20929         val="$undef"
20930         if $test $i_sysfilio = "$define"; then
20931             echo '<sys/ioctl.h> NOT found.' >&4
20932         else
20933                 $test $i_sgtty = "$define" && xxx="sgtty.h"
20934                 $test $i_termio = "$define" && xxx="termio.h"
20935                 $test $i_termios = "$define" && xxx="termios.h"
20936 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20937         fi
20938 fi
20939 set i_sysioctl
20940 eval $setvar
20941
20942 : see if socket ioctl defs are in sys/sockio.h
20943 echo " "
20944 xxx=`./findhdr sys/sockio.h`
20945 if $test "$xxx"; then
20946         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20947                 val="$define"
20948                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20949         else
20950                 val="$undef"
20951                 echo "No socket ioctls found in <sys/sockio.h>." >&4
20952         fi
20953 else
20954         val="$undef"
20955         $cat <<EOM
20956 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20957 EOM
20958 fi
20959 set i_syssockio
20960 eval $setvar
20961
20962
20963 : see if this is a syslog.h system
20964 set syslog.h i_syslog
20965 eval $inhdr
20966
20967
20968 : see if this is a sys/mode.h system
20969 set sys/mode.h i_sysmode
20970 eval $inhdr
20971
20972 : see if sys/resource.h has to be included
20973 set sys/resource.h i_sysresrc
20974 eval $inhdr
20975
20976 : see if sys/security.h is available
20977 set sys/security.h i_syssecrt
20978 eval $inhdr
20979
20980 : see if this is a sys/statvfs.h system
20981 set sys/statvfs.h i_sysstatvfs
20982 eval $inhdr
20983
20984 : see if this is a sys/un.h system
20985 set sys/un.h i_sysun
20986 eval $inhdr
20987
20988
20989 : see if this is a sys/utsname.h system
20990 set sys/utsname.h i_sysutsname
20991 eval $inhdr
20992
20993 : see if this is a syswait system
20994 set sys/wait.h i_syswait
20995 eval $inhdr
20996
20997 : see if this is a ustat.h system
20998 set ustat.h i_ustat
20999 eval $inhdr
21000
21001 : see if this is an utime system
21002 set utime.h i_utime
21003 eval $inhdr
21004
21005 : see if this is a values.h system
21006 set values.h i_values
21007 eval $inhdr
21008
21009 : see if this is a vfork system
21010 case "$d_vfork" in
21011 "$define")
21012         set vfork.h i_vfork
21013         eval $inhdr
21014         ;;
21015 *)
21016         i_vfork="$undef"
21017         ;;
21018 esac
21019
21020 echo " "
21021 echo "Looking for extensions..." >&4
21022 : If we are using the old config.sh, known_extensions may contain
21023 : old or inaccurate or duplicate values.
21024 known_extensions=''
21025 nonxs_extensions=''
21026 : We do not use find because it might not be available.
21027 : We do not just use MANIFEST because the user may have dropped
21028 : some additional extensions into the source tree and expect them
21029 : to be built.
21030
21031 : Function to recursively find available extensions, ignoring DynaLoader
21032 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21033 find_extensions='
21034     for xxx in *; do
21035         case "$xxx" in
21036             DynaLoader|dynaload) ;;
21037             *)
21038             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21039                 known_extensions="$known_extensions $1$xxx";
21040             elif $test -f $xxx/Makefile.PL; then
21041                 nonxs_extensions="$nonxs_extensions $1$xxx";
21042             else
21043                 if $test -d $xxx -a $# -lt 10; then
21044                     set $1$xxx/ $*;
21045                     cd "$xxx";
21046                     eval $find_extensions;
21047                     cd ..;
21048                     shift;
21049                 fi;
21050             fi
21051             ;;
21052         esac;
21053     done'
21054 tdir=`pwd`
21055 cd "$rsrc/ext"
21056 set X
21057 shift
21058 eval $find_extensions
21059 # Special case:  Add in modules that nest beyond the first level.
21060 # Currently threads/shared and Hash/Util/FieldHash, since they are
21061 # not picked up by the recursive find above (and adding in general
21062 # recursive finding breaks SDBM_File/sdbm).
21063 # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
21064 known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
21065 set X $known_extensions
21066 shift
21067 known_extensions="$*"
21068 set X $nonxs_extensions
21069 shift
21070 nonxs_extensions="$*"
21071 cd "$tdir"
21072
21073 : Now see which are supported on this system.
21074 avail_ext=''
21075 for xxx in $known_extensions ; do
21076         case "$xxx" in
21077         DB_File|db_file)
21078                 case "$i_db" in
21079                 $define) avail_ext="$avail_ext $xxx" ;;
21080                 esac
21081                 ;;
21082         GDBM_File|gdbm_fil)
21083                 case "$i_gdbm" in
21084                 $define) avail_ext="$avail_ext $xxx" ;;
21085                 esac
21086                 ;;
21087         I18N/Langinfo|i18n_lan)
21088                 case "$i_langinfo$d_nl_langinfo" in
21089                 $define$define) avail_ext="$avail_ext $xxx" ;;
21090                 esac
21091                 ;;
21092         IPC/SysV|ipc/sysv)
21093                 : XXX Do we need a useipcsysv variable here
21094                 case "${d_msg}${d_sem}${d_shm}" in
21095                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21096                 esac
21097                 ;;
21098         NDBM_File|ndbm_fil)
21099                 case "$i_ndbm" in
21100                 $define)
21101                     case "$osname-$use64bitint" in
21102                     hpux-define)
21103                         case "$libs" in
21104                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21105                         esac
21106                         ;;
21107                     *) avail_ext="$avail_ext $xxx" ;;
21108                     esac
21109                     ;;
21110                 esac
21111                 ;;
21112         ODBM_File|odbm_fil)
21113                 case "${i_dbm}${i_rpcsvcdbm}" in
21114                 *"${define}"*)
21115                     case "$d_cplusplus" in
21116                     define) ;; # delete as a function name will not work
21117                     *)  case "$osname-$use64bitint" in
21118                         hpux-define)
21119                             case "$libs" in
21120                             *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21121                             esac
21122                             ;;
21123                         *) avail_ext="$avail_ext $xxx" ;;
21124                         esac
21125                         ;;
21126                     esac
21127                     ;;
21128                 esac
21129                 ;;
21130         Opcode|opcode)
21131                 case "$useopcode" in
21132                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21133                 esac
21134                 ;;
21135         POSIX|posix)
21136                 case "$useposix" in
21137                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21138                 esac
21139                 ;;
21140         Socket|socket)
21141                 case "$d_socket" in
21142                 true|$define|y)
21143                     case "$osname" in
21144                     beos) ;; # not unless BONE
21145                     *) avail_ext="$avail_ext $xxx" ;;
21146                     esac
21147                     ;;
21148                 esac
21149                 ;;
21150         Sys/Syslog|sys/syslog)
21151                 : XXX syslog requires socket
21152                 case "$d_socket" in
21153                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21154                 esac
21155                 ;;
21156         Thread|thread)
21157                 case "$usethreads" in
21158                 true|$define|y)
21159                         case "$use5005threads" in
21160                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21161                         esac
21162                 esac
21163                 ;;
21164         threads|threads/shared)
21165                 # threads and threads::shared are special cases.
21166                 # To stop people from asking "Perl 5.8.0 was supposed
21167                 # to have this new fancy threads implementation but my
21168                 # perl doesn't have it" and from people trying to
21169                 # (re)install the threads module using CPAN.pm and
21170                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21171                 # the threads.pm and threads/shared.pm will always be
21172                 # there, croaking informatively ("you need to rebuild
21173                 # all of Perl with threads, sorry") when threads haven't
21174                 # been compiled in.
21175                 # --jhi
21176                 avail_ext="$avail_ext $xxx"
21177                 ;;
21178         Win32*)
21179                 case "$osname" in
21180                 cygwin) avail_ext="$avail_ext $xxx" ;;
21181                 esac
21182                 ;;
21183         XS/APItest|xs/apitest)
21184                 # This is just for testing.  Skip it unless we have dynamic loading.
21185
21186                 case "$usedl" in
21187                 $define) avail_ext="$avail_ext $xxx" ;;
21188                 esac
21189                 ;;
21190         XS/Typemap|xs/typemap)
21191                 # This is just for testing.  Skip it unless we have dynamic loading.
21192                 case "$usedl" in
21193                 $define) avail_ext="$avail_ext $xxx" ;;
21194                 esac
21195                 ;;
21196         *)      avail_ext="$avail_ext $xxx"
21197                 ;;
21198         esac
21199 done
21200
21201 set X $avail_ext
21202 shift
21203 avail_ext="$*"
21204
21205 case "$onlyextensions" in
21206 '') ;;
21207 *)  keepextensions=''
21208     echo "You have requested that only certains extensions be included..." >&4
21209     for i in $onlyextensions; do
21210         case " $avail_ext " in
21211         *" $i "*)
21212             echo "Keeping extension $i."
21213             keepextensions="$keepextensions $i"
21214             ;;
21215         *) echo "Ignoring extension $i." ;;
21216         esac
21217     done
21218     avail_ext="$keepextensions"
21219     ;;
21220 esac
21221
21222 case "$noextensions" in
21223 '') ;;
21224 *)  keepextensions=''
21225     echo "You have requested that certain extensions be ignored..." >&4
21226     for i in $avail_ext; do
21227         case " $noextensions " in
21228         *" $i "*) echo "Ignoring extension $i." ;;
21229         *) echo "Keeping extension $i.";
21230            keepextensions="$keepextensions $i"
21231            ;;
21232         esac
21233     done
21234     avail_ext="$keepextensions"
21235     ;;
21236 esac
21237
21238 : Now see which nonxs extensions are supported on this system.
21239 : For now assume all are.
21240 nonxs_ext=''
21241 for xxx in $nonxs_extensions ; do
21242         case "$xxx" in
21243         *)      nonxs_ext="$nonxs_ext $xxx"
21244                 ;;
21245         esac
21246 done
21247
21248 set X $nonxs_ext
21249 shift
21250 nonxs_ext="$*"
21251
21252 case $usedl in
21253 $define)
21254         $cat <<EOM
21255 A number of extensions are supplied with $package.  You may choose to
21256 compile these extensions for dynamic loading (the default), compile
21257 them into the $package executable (static loading), or not include
21258 them at all.  Answer "none" to include no extensions.
21259 Note that DynaLoader is always built and need not be mentioned here.
21260
21261 EOM
21262         case "$dynamic_ext" in
21263         '')
21264                 : Exclude those listed in static_ext
21265                 dflt=''
21266                 for xxx in $avail_ext; do
21267                         case " $static_ext " in
21268                         *" $xxx "*) ;;
21269                         *) dflt="$dflt $xxx" ;;
21270                         esac
21271                 done
21272                 set X $dflt
21273                 shift
21274                 dflt="$*"
21275                 ;;
21276         *)      dflt="$dynamic_ext"
21277                 # Perhaps we are reusing an old out-of-date config.sh.
21278                 case "$hint" in
21279                 previous)
21280                         if test X"$dynamic_ext" != X"$avail_ext"; then
21281                                 $cat <<EOM
21282 NOTICE:  Your previous config.sh list may be incorrect.
21283 The extensions now available to you are
21284         ${avail_ext}
21285 but the default list from your previous config.sh is
21286         ${dynamic_ext}
21287
21288 EOM
21289                         fi
21290                         ;;
21291                 esac
21292                 ;;
21293         esac
21294         case "$dflt" in
21295         '')     dflt=none;;
21296         esac
21297         rp="What extensions do you wish to load dynamically?"
21298         . ./myread
21299         case "$ans" in
21300         none) dynamic_ext=' ' ;;
21301         *) dynamic_ext="$ans" ;;
21302         esac
21303
21304         case "$static_ext" in
21305         '')
21306                 : Exclude those already listed in dynamic linking
21307                 dflt=''
21308                 for xxx in $avail_ext; do
21309                         case " $dynamic_ext " in
21310                         *" $xxx "*) ;;
21311                         *) dflt="$dflt $xxx" ;;
21312                         esac
21313                 done
21314                 set X $dflt
21315                 shift
21316                 dflt="$*"
21317                 ;;
21318         *)  dflt="$static_ext"
21319                 ;;
21320         esac
21321
21322         case "$dflt" in
21323         '')     dflt=none;;
21324         esac
21325         rp="What extensions do you wish to load statically?"
21326         . ./myread
21327         case "$ans" in
21328         none) static_ext=' ' ;;
21329         *) static_ext="$ans" ;;
21330         esac
21331         ;;
21332 *)
21333         $cat <<EOM
21334 A number of extensions are supplied with $package.  Answer "none"
21335 to include no extensions.
21336 Note that DynaLoader is always built and need not be mentioned here.
21337
21338 EOM
21339         case "$static_ext" in
21340         '') dflt="$avail_ext" ;;
21341         *)      dflt="$static_ext"
21342                 # Perhaps we are reusing an old out-of-date config.sh.
21343                 case "$hint" in
21344                 previous)
21345                         if test X"$static_ext" != X"$avail_ext"; then
21346                                 $cat <<EOM
21347 NOTICE:  Your previous config.sh list may be incorrect.
21348 The extensions now available to you are
21349         ${avail_ext}
21350 but the default list from your previous config.sh is
21351         ${static_ext}
21352
21353 EOM
21354                         fi
21355                         ;;
21356                 esac
21357                 ;;
21358         esac
21359         : Exclude those that are not xs extensions
21360         case "$dflt" in
21361         '')     dflt=none;;
21362         esac
21363         rp="What extensions do you wish to include?"
21364         . ./myread
21365         case "$ans" in
21366         none) static_ext=' ' ;;
21367         *) static_ext="$ans" ;;
21368         esac
21369         ;;
21370 esac
21371 #
21372 # Encode is a special case.  If we are building Encode as a static
21373 # extension, we need to explicitly list its subextensions as well.
21374 # For other nested extensions, this is handled automatically by
21375 # the appropriate Makefile.PL.
21376 case " $static_ext " in
21377         *" Encode "*) # Add the subextensions of Encode
21378         cd "$rsrc/ext"
21379         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21380                 static_ext="$static_ext Encode/$xxx"
21381         done
21382         cd "$tdir"
21383         ;;
21384 esac
21385
21386 set X $dynamic_ext $static_ext $nonxs_ext
21387 shift
21388 extensions="$*"
21389
21390 # Sanity check:  We require an extension suitable for use with
21391 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21392 # should show up as failures in the test suite, but it's helpful to
21393 # catch them now.) The 'extensions' list is normally sorted
21394 # alphabetically, so we need to accept either
21395 #    DB_File ... Fcntl ... IO  ....
21396 # or something like
21397 #    Fcntl ... NDBM_File ... IO  ....
21398 case " $extensions"  in
21399 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21400 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21401 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21402 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21403    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21404    ;;
21405 esac
21406
21407 : Remove libraries needed only for extensions
21408 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21409 : The exception is SunOS 4.x, which needs them.
21410 case "${osname}X${osvers}" in
21411 sunos*X4*)
21412     perllibs="$libs"
21413     ;;
21414 *) case "$usedl" in
21415     $define|true|[yY]*)
21416             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21417             shift
21418             perllibs="$*"
21419             ;;
21420     *)  perllibs="$libs"
21421             ;;
21422     esac
21423     ;;
21424 esac
21425
21426 : Remove build directory name from cppstdin so it can be used from
21427 : either the present location or the final installed location.
21428 echo " "
21429 : Get out of the UU directory to get correct path name.
21430 cd ..
21431 case "$cppstdin" in
21432 `pwd`/cppstdin)
21433         echo "Stripping down cppstdin path name"
21434         cppstdin=cppstdin
21435         ;;
21436 esac
21437 cd UU
21438
21439 : end of configuration questions
21440 echo " "
21441 echo "End of configuration questions."
21442 echo " "
21443
21444 : back to where it started
21445 if test -d ../UU; then
21446         cd ..
21447 fi
21448
21449 : configuration may be patched via a 'config.arch' file
21450 if $test -f config.arch; then
21451         echo "I see a config.arch file, loading it."
21452         . ./config.arch
21453 fi
21454
21455 : configuration may be patched via a 'config.over' file
21456 if $test -f config.over; then
21457         echo " "
21458         dflt=y
21459         rp='I see a config.over file.  Do you wish to load it?'
21460         . UU/myread
21461         case "$ans" in
21462         n*) echo "OK, I'll ignore it.";;
21463         *)      . ./config.over
21464                 echo "Configuration override changes have been loaded."
21465                 ;;
21466         esac
21467 fi
21468
21469 : in case they want portability, strip down executable paths
21470 case "$d_portable" in
21471 "$define")
21472         echo " "
21473         echo "Stripping down executable paths..." >&4
21474         for file in $loclist $trylist; do
21475                 eval temp=\$$file
21476                 eval $file=`basename $temp`
21477         done
21478         ;;
21479 esac
21480
21481 : create config.sh file
21482 echo " "
21483 echo "Creating config.sh..." >&4
21484 $spitshell <<EOT >config.sh
21485 $startsh
21486 #
21487 # This file was produced by running the Configure script. It holds all the
21488 # definitions figured out by Configure. Should you modify one of these values,
21489 # do not forget to propagate your changes by running "Configure -der". You may
21490 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21491 #
21492
21493 # Package name      : $package
21494 # Source directory  : $src
21495 # Configuration time: $cf_time
21496 # Configured by     : $cf_by
21497 # Target system     : $myuname
21498
21499 Author='$Author'
21500 Date='$Date'
21501 Header='$Header'
21502 Id='$Id'
21503 Locker='$Locker'
21504 Log='$Log'
21505 Mcc='$Mcc'
21506 RCSfile='$RCSfile'
21507 Revision='$Revision'
21508 Source='$Source'
21509 State='$State'
21510 _a='$_a'
21511 _exe='$_exe'
21512 _o='$_o'
21513 afs='$afs'
21514 afsroot='$afsroot'
21515 alignbytes='$alignbytes'
21516 ansi2knr='$ansi2knr'
21517 aphostname='$aphostname'
21518 api_revision='$api_revision'
21519 api_subversion='$api_subversion'
21520 api_version='$api_version'
21521 api_versionstring='$api_versionstring'
21522 ar='$ar'
21523 archlib='$archlib'
21524 archlibexp='$archlibexp'
21525 archname64='$archname64'
21526 archname='$archname'
21527 archobjs='$archobjs'
21528 asctime_r_proto='$asctime_r_proto'
21529 awk='$awk'
21530 baserev='$baserev'
21531 bash='$bash'
21532 bin='$bin'
21533 binexp='$binexp'
21534 bison='$bison'
21535 byacc='$byacc'
21536 byteorder='$byteorder'
21537 c='$c'
21538 castflags='$castflags'
21539 cat='$cat'
21540 cc='$cc'
21541 cccdlflags='$cccdlflags'
21542 ccdlflags='$ccdlflags'
21543 ccflags='$ccflags'
21544 ccflags_uselargefiles='$ccflags_uselargefiles'
21545 ccname='$ccname'
21546 ccsymbols='$ccsymbols'
21547 ccversion='$ccversion'
21548 cf_by='$cf_by'
21549 cf_email='$cf_email'
21550 cf_time='$cf_time'
21551 chgrp='$chgrp'
21552 chmod='$chmod'
21553 chown='$chown'
21554 clocktype='$clocktype'
21555 comm='$comm'
21556 compress='$compress'
21557 contains='$contains'
21558 cp='$cp'
21559 cpio='$cpio'
21560 cpp='$cpp'
21561 cpp_stuff='$cpp_stuff'
21562 cppccsymbols='$cppccsymbols'
21563 cppflags='$cppflags'
21564 cpplast='$cpplast'
21565 cppminus='$cppminus'
21566 cpprun='$cpprun'
21567 cppstdin='$cppstdin'
21568 cppsymbols='$cppsymbols'
21569 crypt_r_proto='$crypt_r_proto'
21570 cryptlib='$cryptlib'
21571 csh='$csh'
21572 ctermid_r_proto='$ctermid_r_proto'
21573 ctime_r_proto='$ctime_r_proto'
21574 d_Gconvert='$d_Gconvert'
21575 d_PRIEUldbl='$d_PRIEUldbl'
21576 d_PRIFUldbl='$d_PRIFUldbl'
21577 d_PRIGUldbl='$d_PRIGUldbl'
21578 d_PRIXU64='$d_PRIXU64'
21579 d_PRId64='$d_PRId64'
21580 d_PRIeldbl='$d_PRIeldbl'
21581 d_PRIfldbl='$d_PRIfldbl'
21582 d_PRIgldbl='$d_PRIgldbl'
21583 d_PRIi64='$d_PRIi64'
21584 d_PRIo64='$d_PRIo64'
21585 d_PRIu64='$d_PRIu64'
21586 d_PRIx64='$d_PRIx64'
21587 d_SCNfldbl='$d_SCNfldbl'
21588 d__fwalk='$d__fwalk'
21589 d_access='$d_access'
21590 d_accessx='$d_accessx'
21591 d_aintl='$d_aintl'
21592 d_alarm='$d_alarm'
21593 d_archlib='$d_archlib'
21594 d_asctime_r='$d_asctime_r'
21595 d_atolf='$d_atolf'
21596 d_atoll='$d_atoll'
21597 d_attribute_format='$d_attribute_format'
21598 d_attribute_malloc='$d_attribute_malloc'
21599 d_attribute_nonnull='$d_attribute_nonnull'
21600 d_attribute_noreturn='$d_attribute_noreturn'
21601 d_attribute_pure='$d_attribute_pure'
21602 d_attribute_unused='$d_attribute_unused'
21603 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21604 d_bcmp='$d_bcmp'
21605 d_bcopy='$d_bcopy'
21606 d_bsd='$d_bsd'
21607 d_bsdgetpgrp='$d_bsdgetpgrp'
21608 d_bsdsetpgrp='$d_bsdsetpgrp'
21609 d_builtin_choose_expr='$d_builtin_choose_expr'
21610 d_builtin_expect='$d_builtin_expect'
21611 d_bzero='$d_bzero'
21612 d_c99_variadic_macros='$d_c99_variadic_macros'
21613 d_casti32='$d_casti32'
21614 d_castneg='$d_castneg'
21615 d_charvspr='$d_charvspr'
21616 d_chown='$d_chown'
21617 d_chroot='$d_chroot'
21618 d_chsize='$d_chsize'
21619 d_class='$d_class'
21620 d_clearenv='$d_clearenv'
21621 d_closedir='$d_closedir'
21622 d_cmsghdr_s='$d_cmsghdr_s'
21623 d_const='$d_const'
21624 d_copysignl='$d_copysignl'
21625 d_cplusplus='$d_cplusplus'
21626 d_crypt='$d_crypt'
21627 d_crypt_r='$d_crypt_r'
21628 d_csh='$d_csh'
21629 d_ctermid='$d_ctermid'
21630 d_ctermid_r='$d_ctermid_r'
21631 d_ctime_r='$d_ctime_r'
21632 d_cuserid='$d_cuserid'
21633 d_dbl_dig='$d_dbl_dig'
21634 d_dbminitproto='$d_dbminitproto'
21635 d_difftime='$d_difftime'
21636 d_dir_dd_fd='$d_dir_dd_fd'
21637 d_dirfd='$d_dirfd'
21638 d_dirnamlen='$d_dirnamlen'
21639 d_dlerror='$d_dlerror'
21640 d_dlopen='$d_dlopen'
21641 d_dlsymun='$d_dlsymun'
21642 d_dosuid='$d_dosuid'
21643 d_drand48_r='$d_drand48_r'
21644 d_drand48proto='$d_drand48proto'
21645 d_dup2='$d_dup2'
21646 d_eaccess='$d_eaccess'
21647 d_endgrent='$d_endgrent'
21648 d_endgrent_r='$d_endgrent_r'
21649 d_endhent='$d_endhent'
21650 d_endhostent_r='$d_endhostent_r'
21651 d_endnent='$d_endnent'
21652 d_endnetent_r='$d_endnetent_r'
21653 d_endpent='$d_endpent'
21654 d_endprotoent_r='$d_endprotoent_r'
21655 d_endpwent='$d_endpwent'
21656 d_endpwent_r='$d_endpwent_r'
21657 d_endsent='$d_endsent'
21658 d_endservent_r='$d_endservent_r'
21659 d_eofnblk='$d_eofnblk'
21660 d_eunice='$d_eunice'
21661 d_faststdio='$d_faststdio'
21662 d_fchdir='$d_fchdir'
21663 d_fchmod='$d_fchmod'
21664 d_fchown='$d_fchown'
21665 d_fcntl='$d_fcntl'
21666 d_fcntl_can_lock='$d_fcntl_can_lock'
21667 d_fd_macros='$d_fd_macros'
21668 d_fd_set='$d_fd_set'
21669 d_fds_bits='$d_fds_bits'
21670 d_fgetpos='$d_fgetpos'
21671 d_finite='$d_finite'
21672 d_finitel='$d_finitel'
21673 d_flexfnam='$d_flexfnam'
21674 d_flock='$d_flock'
21675 d_flockproto='$d_flockproto'
21676 d_fork='$d_fork'
21677 d_fp_class='$d_fp_class'
21678 d_fpathconf='$d_fpathconf'
21679 d_fpclass='$d_fpclass'
21680 d_fpclassify='$d_fpclassify'
21681 d_fpclassl='$d_fpclassl'
21682 d_fpos64_t='$d_fpos64_t'
21683 d_frexpl='$d_frexpl'
21684 d_fs_data_s='$d_fs_data_s'
21685 d_fseeko='$d_fseeko'
21686 d_fsetpos='$d_fsetpos'
21687 d_fstatfs='$d_fstatfs'
21688 d_fstatvfs='$d_fstatvfs'
21689 d_fsync='$d_fsync'
21690 d_ftello='$d_ftello'
21691 d_ftime='$d_ftime'
21692 d_futimes='$d_futimes'
21693 d_getcwd='$d_getcwd'
21694 d_getespwnam='$d_getespwnam'
21695 d_getfsstat='$d_getfsstat'
21696 d_getgrent='$d_getgrent'
21697 d_getgrent_r='$d_getgrent_r'
21698 d_getgrgid_r='$d_getgrgid_r'
21699 d_getgrnam_r='$d_getgrnam_r'
21700 d_getgrps='$d_getgrps'
21701 d_gethbyaddr='$d_gethbyaddr'
21702 d_gethbyname='$d_gethbyname'
21703 d_gethent='$d_gethent'
21704 d_gethname='$d_gethname'
21705 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21706 d_gethostbyname_r='$d_gethostbyname_r'
21707 d_gethostent_r='$d_gethostent_r'
21708 d_gethostprotos='$d_gethostprotos'
21709 d_getitimer='$d_getitimer'
21710 d_getlogin='$d_getlogin'
21711 d_getlogin_r='$d_getlogin_r'
21712 d_getmnt='$d_getmnt'
21713 d_getmntent='$d_getmntent'
21714 d_getnbyaddr='$d_getnbyaddr'
21715 d_getnbyname='$d_getnbyname'
21716 d_getnent='$d_getnent'
21717 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21718 d_getnetbyname_r='$d_getnetbyname_r'
21719 d_getnetent_r='$d_getnetent_r'
21720 d_getnetprotos='$d_getnetprotos'
21721 d_getpagsz='$d_getpagsz'
21722 d_getpbyname='$d_getpbyname'
21723 d_getpbynumber='$d_getpbynumber'
21724 d_getpent='$d_getpent'
21725 d_getpgid='$d_getpgid'
21726 d_getpgrp2='$d_getpgrp2'
21727 d_getpgrp='$d_getpgrp'
21728 d_getppid='$d_getppid'
21729 d_getprior='$d_getprior'
21730 d_getprotobyname_r='$d_getprotobyname_r'
21731 d_getprotobynumber_r='$d_getprotobynumber_r'
21732 d_getprotoent_r='$d_getprotoent_r'
21733 d_getprotoprotos='$d_getprotoprotos'
21734 d_getprpwnam='$d_getprpwnam'
21735 d_getpwent='$d_getpwent'
21736 d_getpwent_r='$d_getpwent_r'
21737 d_getpwnam_r='$d_getpwnam_r'
21738 d_getpwuid_r='$d_getpwuid_r'
21739 d_getsbyname='$d_getsbyname'
21740 d_getsbyport='$d_getsbyport'
21741 d_getsent='$d_getsent'
21742 d_getservbyname_r='$d_getservbyname_r'
21743 d_getservbyport_r='$d_getservbyport_r'
21744 d_getservent_r='$d_getservent_r'
21745 d_getservprotos='$d_getservprotos'
21746 d_getspnam='$d_getspnam'
21747 d_getspnam_r='$d_getspnam_r'
21748 d_gettimeod='$d_gettimeod'
21749 d_gmtime_r='$d_gmtime_r'
21750 d_gnulibc='$d_gnulibc'
21751 d_grpasswd='$d_grpasswd'
21752 d_hasmntopt='$d_hasmntopt'
21753 d_htonl='$d_htonl'
21754 d_ilogbl='$d_ilogbl'
21755 d_inc_version_list='$d_inc_version_list'
21756 d_index='$d_index'
21757 d_inetaton='$d_inetaton'
21758 d_int64_t='$d_int64_t'
21759 d_isascii='$d_isascii'
21760 d_isfinite='$d_isfinite'
21761 d_isinf='$d_isinf'
21762 d_isnan='$d_isnan'
21763 d_isnanl='$d_isnanl'
21764 d_killpg='$d_killpg'
21765 d_lchown='$d_lchown'
21766 d_ldbl_dig='$d_ldbl_dig'
21767 d_libm_lib_version='$d_libm_lib_version'
21768 d_link='$d_link'
21769 d_localtime_r='$d_localtime_r'
21770 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21771 d_locconv='$d_locconv'
21772 d_lockf='$d_lockf'
21773 d_longdbl='$d_longdbl'
21774 d_longlong='$d_longlong'
21775 d_lseekproto='$d_lseekproto'
21776 d_lstat='$d_lstat'
21777 d_madvise='$d_madvise'
21778 d_malloc_good_size='$d_malloc_good_size'
21779 d_malloc_size='$d_malloc_size'
21780 d_mblen='$d_mblen'
21781 d_mbstowcs='$d_mbstowcs'
21782 d_mbtowc='$d_mbtowc'
21783 d_memchr='$d_memchr'
21784 d_memcmp='$d_memcmp'
21785 d_memcpy='$d_memcpy'
21786 d_memmove='$d_memmove'
21787 d_memset='$d_memset'
21788 d_mkdir='$d_mkdir'
21789 d_mkdtemp='$d_mkdtemp'
21790 d_mkfifo='$d_mkfifo'
21791 d_mkstemp='$d_mkstemp'
21792 d_mkstemps='$d_mkstemps'
21793 d_mktime='$d_mktime'
21794 d_mmap='$d_mmap'
21795 d_modfl='$d_modfl'
21796 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21797 d_modflproto='$d_modflproto'
21798 d_mprotect='$d_mprotect'
21799 d_msg='$d_msg'
21800 d_msg_ctrunc='$d_msg_ctrunc'
21801 d_msg_dontroute='$d_msg_dontroute'
21802 d_msg_oob='$d_msg_oob'
21803 d_msg_peek='$d_msg_peek'
21804 d_msg_proxy='$d_msg_proxy'
21805 d_msgctl='$d_msgctl'
21806 d_msgget='$d_msgget'
21807 d_msghdr_s='$d_msghdr_s'
21808 d_msgrcv='$d_msgrcv'
21809 d_msgsnd='$d_msgsnd'
21810 d_msync='$d_msync'
21811 d_munmap='$d_munmap'
21812 d_mymalloc='$d_mymalloc'
21813 d_nice='$d_nice'
21814 d_nl_langinfo='$d_nl_langinfo'
21815 d_nv_preserves_uv='$d_nv_preserves_uv'
21816 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21817 d_off64_t='$d_off64_t'
21818 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21819 d_oldpthreads='$d_oldpthreads'
21820 d_oldsock='$d_oldsock'
21821 d_open3='$d_open3'
21822 d_pathconf='$d_pathconf'
21823 d_pause='$d_pause'
21824 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21825 d_phostname='$d_phostname'
21826 d_pipe='$d_pipe'
21827 d_poll='$d_poll'
21828 d_portable='$d_portable'
21829 d_printf_format_null='$d_printf_format_null'
21830 d_procselfexe='$d_procselfexe'
21831 d_pseudofork='$d_pseudofork'
21832 d_pthread_atfork='$d_pthread_atfork'
21833 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21834 d_pthread_yield='$d_pthread_yield'
21835 d_pwage='$d_pwage'
21836 d_pwchange='$d_pwchange'
21837 d_pwclass='$d_pwclass'
21838 d_pwcomment='$d_pwcomment'
21839 d_pwexpire='$d_pwexpire'
21840 d_pwgecos='$d_pwgecos'
21841 d_pwpasswd='$d_pwpasswd'
21842 d_pwquota='$d_pwquota'
21843 d_qgcvt='$d_qgcvt'
21844 d_quad='$d_quad'
21845 d_random_r='$d_random_r'
21846 d_readdir64_r='$d_readdir64_r'
21847 d_readdir='$d_readdir'
21848 d_readdir_r='$d_readdir_r'
21849 d_readlink='$d_readlink'
21850 d_readv='$d_readv'
21851 d_recvmsg='$d_recvmsg'
21852 d_rename='$d_rename'
21853 d_rewinddir='$d_rewinddir'
21854 d_rmdir='$d_rmdir'
21855 d_safebcpy='$d_safebcpy'
21856 d_safemcpy='$d_safemcpy'
21857 d_sanemcmp='$d_sanemcmp'
21858 d_sbrkproto='$d_sbrkproto'
21859 d_scalbnl='$d_scalbnl'
21860 d_sched_yield='$d_sched_yield'
21861 d_scm_rights='$d_scm_rights'
21862 d_seekdir='$d_seekdir'
21863 d_select='$d_select'
21864 d_sem='$d_sem'
21865 d_semctl='$d_semctl'
21866 d_semctl_semid_ds='$d_semctl_semid_ds'
21867 d_semctl_semun='$d_semctl_semun'
21868 d_semget='$d_semget'
21869 d_semop='$d_semop'
21870 d_sendmsg='$d_sendmsg'
21871 d_setegid='$d_setegid'
21872 d_seteuid='$d_seteuid'
21873 d_setgrent='$d_setgrent'
21874 d_setgrent_r='$d_setgrent_r'
21875 d_setgrps='$d_setgrps'
21876 d_sethent='$d_sethent'
21877 d_sethostent_r='$d_sethostent_r'
21878 d_setitimer='$d_setitimer'
21879 d_setlinebuf='$d_setlinebuf'
21880 d_setlocale='$d_setlocale'
21881 d_setlocale_r='$d_setlocale_r'
21882 d_setnent='$d_setnent'
21883 d_setnetent_r='$d_setnetent_r'
21884 d_setpent='$d_setpent'
21885 d_setpgid='$d_setpgid'
21886 d_setpgrp2='$d_setpgrp2'
21887 d_setpgrp='$d_setpgrp'
21888 d_setprior='$d_setprior'
21889 d_setproctitle='$d_setproctitle'
21890 d_setprotoent_r='$d_setprotoent_r'
21891 d_setpwent='$d_setpwent'
21892 d_setpwent_r='$d_setpwent_r'
21893 d_setregid='$d_setregid'
21894 d_setresgid='$d_setresgid'
21895 d_setresuid='$d_setresuid'
21896 d_setreuid='$d_setreuid'
21897 d_setrgid='$d_setrgid'
21898 d_setruid='$d_setruid'
21899 d_setsent='$d_setsent'
21900 d_setservent_r='$d_setservent_r'
21901 d_setsid='$d_setsid'
21902 d_setvbuf='$d_setvbuf'
21903 d_sfio='$d_sfio'
21904 d_shm='$d_shm'
21905 d_shmat='$d_shmat'
21906 d_shmatprototype='$d_shmatprototype'
21907 d_shmctl='$d_shmctl'
21908 d_shmdt='$d_shmdt'
21909 d_shmget='$d_shmget'
21910 d_sigaction='$d_sigaction'
21911 d_signbit='$d_signbit'
21912 d_sigprocmask='$d_sigprocmask'
21913 d_sigsetjmp='$d_sigsetjmp'
21914 d_sitearch='$d_sitearch'
21915 d_snprintf='$d_snprintf'
21916 d_sockatmark='$d_sockatmark'
21917 d_sockatmarkproto='$d_sockatmarkproto'
21918 d_socket='$d_socket'
21919 d_socklen_t='$d_socklen_t'
21920 d_sockpair='$d_sockpair'
21921 d_socks5_init='$d_socks5_init'
21922 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21923 d_sqrtl='$d_sqrtl'
21924 d_srand48_r='$d_srand48_r'
21925 d_srandom_r='$d_srandom_r'
21926 d_sresgproto='$d_sresgproto'
21927 d_sresuproto='$d_sresuproto'
21928 d_statblks='$d_statblks'
21929 d_statfs_f_flags='$d_statfs_f_flags'
21930 d_statfs_s='$d_statfs_s'
21931 d_statvfs='$d_statvfs'
21932 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21933 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21934 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21935 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21936 d_stdio_stream_array='$d_stdio_stream_array'
21937 d_stdiobase='$d_stdiobase'
21938 d_stdstdio='$d_stdstdio'
21939 d_strchr='$d_strchr'
21940 d_strcoll='$d_strcoll'
21941 d_strctcpy='$d_strctcpy'
21942 d_strerrm='$d_strerrm'
21943 d_strerror='$d_strerror'
21944 d_strerror_r='$d_strerror_r'
21945 d_strftime='$d_strftime'
21946 d_strlcat='$d_strlcat'
21947 d_strlcpy='$d_strlcpy'
21948 d_strtod='$d_strtod'
21949 d_strtol='$d_strtol'
21950 d_strtold='$d_strtold'
21951 d_strtoll='$d_strtoll'
21952 d_strtoq='$d_strtoq'
21953 d_strtoul='$d_strtoul'
21954 d_strtoull='$d_strtoull'
21955 d_strtouq='$d_strtouq'
21956 d_strxfrm='$d_strxfrm'
21957 d_suidsafe='$d_suidsafe'
21958 d_symlink='$d_symlink'
21959 d_syscall='$d_syscall'
21960 d_syscallproto='$d_syscallproto'
21961 d_sysconf='$d_sysconf'
21962 d_sysernlst='$d_sysernlst'
21963 d_syserrlst='$d_syserrlst'
21964 d_system='$d_system'
21965 d_tcgetpgrp='$d_tcgetpgrp'
21966 d_tcsetpgrp='$d_tcsetpgrp'
21967 d_telldir='$d_telldir'
21968 d_telldirproto='$d_telldirproto'
21969 d_time='$d_time'
21970 d_times='$d_times'
21971 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21972 d_tm_tm_zone='$d_tm_tm_zone'
21973 d_tmpnam_r='$d_tmpnam_r'
21974 d_truncate='$d_truncate'
21975 d_ttyname_r='$d_ttyname_r'
21976 d_tzname='$d_tzname'
21977 d_u32align='$d_u32align'
21978 d_ualarm='$d_ualarm'
21979 d_umask='$d_umask'
21980 d_uname='$d_uname'
21981 d_union_semun='$d_union_semun'
21982 d_unordered='$d_unordered'
21983 d_unsetenv='$d_unsetenv'
21984 d_usleep='$d_usleep'
21985 d_usleepproto='$d_usleepproto'
21986 d_ustat='$d_ustat'
21987 d_vendorarch='$d_vendorarch'
21988 d_vendorbin='$d_vendorbin'
21989 d_vendorlib='$d_vendorlib'
21990 d_vendorscript='$d_vendorscript'
21991 d_vfork='$d_vfork'
21992 d_void_closedir='$d_void_closedir'
21993 d_voidsig='$d_voidsig'
21994 d_voidtty='$d_voidtty'
21995 d_volatile='$d_volatile'
21996 d_vprintf='$d_vprintf'
21997 d_vsnprintf='$d_vsnprintf'
21998 d_wait4='$d_wait4'
21999 d_waitpid='$d_waitpid'
22000 d_wcstombs='$d_wcstombs'
22001 d_wctomb='$d_wctomb'
22002 d_writev='$d_writev'
22003 d_xenix='$d_xenix'
22004 date='$date'
22005 db_hashtype='$db_hashtype'
22006 db_prefixtype='$db_prefixtype'
22007 db_version_major='$db_version_major'
22008 db_version_minor='$db_version_minor'
22009 db_version_patch='$db_version_patch'
22010 defvoidused='$defvoidused'
22011 direntrytype='$direntrytype'
22012 dlext='$dlext'
22013 dlsrc='$dlsrc'
22014 doublesize='$doublesize'
22015 drand01='$drand01'
22016 drand48_r_proto='$drand48_r_proto'
22017 dynamic_ext='$dynamic_ext'
22018 eagain='$eagain'
22019 ebcdic='$ebcdic'
22020 echo='$echo'
22021 egrep='$egrep'
22022 emacs='$emacs'
22023 endgrent_r_proto='$endgrent_r_proto'
22024 endhostent_r_proto='$endhostent_r_proto'
22025 endnetent_r_proto='$endnetent_r_proto'
22026 endprotoent_r_proto='$endprotoent_r_proto'
22027 endpwent_r_proto='$endpwent_r_proto'
22028 endservent_r_proto='$endservent_r_proto'
22029 eunicefix='$eunicefix'
22030 exe_ext='$exe_ext'
22031 expr='$expr'
22032 extensions='$extensions'
22033 extras='$extras'
22034 fflushNULL='$fflushNULL'
22035 fflushall='$fflushall'
22036 find='$find'
22037 firstmakefile='$firstmakefile'
22038 flex='$flex'
22039 fpossize='$fpossize'
22040 fpostype='$fpostype'
22041 freetype='$freetype'
22042 from='$from'
22043 full_ar='$full_ar'
22044 full_csh='$full_csh'
22045 full_sed='$full_sed'
22046 gccansipedantic='$gccansipedantic'
22047 gccosandvers='$gccosandvers'
22048 gccversion='$gccversion'
22049 getgrent_r_proto='$getgrent_r_proto'
22050 getgrgid_r_proto='$getgrgid_r_proto'
22051 getgrnam_r_proto='$getgrnam_r_proto'
22052 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22053 gethostbyname_r_proto='$gethostbyname_r_proto'
22054 gethostent_r_proto='$gethostent_r_proto'
22055 getlogin_r_proto='$getlogin_r_proto'
22056 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22057 getnetbyname_r_proto='$getnetbyname_r_proto'
22058 getnetent_r_proto='$getnetent_r_proto'
22059 getprotobyname_r_proto='$getprotobyname_r_proto'
22060 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22061 getprotoent_r_proto='$getprotoent_r_proto'
22062 getpwent_r_proto='$getpwent_r_proto'
22063 getpwnam_r_proto='$getpwnam_r_proto'
22064 getpwuid_r_proto='$getpwuid_r_proto'
22065 getservbyname_r_proto='$getservbyname_r_proto'
22066 getservbyport_r_proto='$getservbyport_r_proto'
22067 getservent_r_proto='$getservent_r_proto'
22068 getspnam_r_proto='$getspnam_r_proto'
22069 gidformat='$gidformat'
22070 gidsign='$gidsign'
22071 gidsize='$gidsize'
22072 gidtype='$gidtype'
22073 glibpth='$glibpth'
22074 gmake='$gmake'
22075 gmtime_r_proto='$gmtime_r_proto'
22076 gnulibc_version='$gnulibc_version'
22077 grep='$grep'
22078 groupcat='$groupcat'
22079 groupstype='$groupstype'
22080 gzip='$gzip'
22081 h_fcntl='$h_fcntl'
22082 h_sysfile='$h_sysfile'
22083 hint='$hint'
22084 hostcat='$hostcat'
22085 html1dir='$html1dir'
22086 html1direxp='$html1direxp'
22087 html3dir='$html3dir'
22088 html3direxp='$html3direxp'
22089 i16size='$i16size'
22090 i16type='$i16type'
22091 i32size='$i32size'
22092 i32type='$i32type'
22093 i64size='$i64size'
22094 i64type='$i64type'
22095 i8size='$i8size'
22096 i8type='$i8type'
22097 i_arpainet='$i_arpainet'
22098 i_bsdioctl='$i_bsdioctl'
22099 i_crypt='$i_crypt'
22100 i_db='$i_db'
22101 i_dbm='$i_dbm'
22102 i_dirent='$i_dirent'
22103 i_dld='$i_dld'
22104 i_dlfcn='$i_dlfcn'
22105 i_fcntl='$i_fcntl'
22106 i_float='$i_float'
22107 i_fp='$i_fp'
22108 i_fp_class='$i_fp_class'
22109 i_gdbm='$i_gdbm'
22110 i_grp='$i_grp'
22111 i_ieeefp='$i_ieeefp'
22112 i_inttypes='$i_inttypes'
22113 i_langinfo='$i_langinfo'
22114 i_libutil='$i_libutil'
22115 i_limits='$i_limits'
22116 i_locale='$i_locale'
22117 i_machcthr='$i_machcthr'
22118 i_malloc='$i_malloc'
22119 i_math='$i_math'
22120 i_memory='$i_memory'
22121 i_mntent='$i_mntent'
22122 i_ndbm='$i_ndbm'
22123 i_netdb='$i_netdb'
22124 i_neterrno='$i_neterrno'
22125 i_netinettcp='$i_netinettcp'
22126 i_niin='$i_niin'
22127 i_poll='$i_poll'
22128 i_prot='$i_prot'
22129 i_pthread='$i_pthread'
22130 i_pwd='$i_pwd'
22131 i_rpcsvcdbm='$i_rpcsvcdbm'
22132 i_sfio='$i_sfio'
22133 i_sgtty='$i_sgtty'
22134 i_shadow='$i_shadow'
22135 i_socks='$i_socks'
22136 i_stdarg='$i_stdarg'
22137 i_stddef='$i_stddef'
22138 i_stdlib='$i_stdlib'
22139 i_string='$i_string'
22140 i_sunmath='$i_sunmath'
22141 i_sysaccess='$i_sysaccess'
22142 i_sysdir='$i_sysdir'
22143 i_sysfile='$i_sysfile'
22144 i_sysfilio='$i_sysfilio'
22145 i_sysin='$i_sysin'
22146 i_sysioctl='$i_sysioctl'
22147 i_syslog='$i_syslog'
22148 i_sysmman='$i_sysmman'
22149 i_sysmode='$i_sysmode'
22150 i_sysmount='$i_sysmount'
22151 i_sysndir='$i_sysndir'
22152 i_sysparam='$i_sysparam'
22153 i_sysresrc='$i_sysresrc'
22154 i_syssecrt='$i_syssecrt'
22155 i_sysselct='$i_sysselct'
22156 i_syssockio='$i_syssockio'
22157 i_sysstat='$i_sysstat'
22158 i_sysstatfs='$i_sysstatfs'
22159 i_sysstatvfs='$i_sysstatvfs'
22160 i_systime='$i_systime'
22161 i_systimek='$i_systimek'
22162 i_systimes='$i_systimes'
22163 i_systypes='$i_systypes'
22164 i_sysuio='$i_sysuio'
22165 i_sysun='$i_sysun'
22166 i_sysutsname='$i_sysutsname'
22167 i_sysvfs='$i_sysvfs'
22168 i_syswait='$i_syswait'
22169 i_termio='$i_termio'
22170 i_termios='$i_termios'
22171 i_time='$i_time'
22172 i_unistd='$i_unistd'
22173 i_ustat='$i_ustat'
22174 i_utime='$i_utime'
22175 i_values='$i_values'
22176 i_varargs='$i_varargs'
22177 i_varhdr='$i_varhdr'
22178 i_vfork='$i_vfork'
22179 ignore_versioned_solibs='$ignore_versioned_solibs'
22180 inc_version_list='$inc_version_list'
22181 inc_version_list_init='$inc_version_list_init'
22182 incpath='$incpath'
22183 inews='$inews'
22184 initialinstalllocation='$initialinstalllocation'
22185 installarchlib='$installarchlib'
22186 installbin='$installbin'
22187 installhtml1dir='$installhtml1dir'
22188 installhtml3dir='$installhtml3dir'
22189 installman1dir='$installman1dir'
22190 installman3dir='$installman3dir'
22191 installprefix='$installprefix'
22192 installprefixexp='$installprefixexp'
22193 installprivlib='$installprivlib'
22194 installscript='$installscript'
22195 installsitearch='$installsitearch'
22196 installsitebin='$installsitebin'
22197 installsitehtml1dir='$installsitehtml1dir'
22198 installsitehtml3dir='$installsitehtml3dir'
22199 installsitelib='$installsitelib'
22200 installsiteman1dir='$installsiteman1dir'
22201 installsiteman3dir='$installsiteman3dir'
22202 installsitescript='$installsitescript'
22203 installstyle='$installstyle'
22204 installusrbinperl='$installusrbinperl'
22205 installvendorarch='$installvendorarch'
22206 installvendorbin='$installvendorbin'
22207 installvendorhtml1dir='$installvendorhtml1dir'
22208 installvendorhtml3dir='$installvendorhtml3dir'
22209 installvendorlib='$installvendorlib'
22210 installvendorman1dir='$installvendorman1dir'
22211 installvendorman3dir='$installvendorman3dir'
22212 installvendorscript='$installvendorscript'
22213 intsize='$intsize'
22214 issymlink='$issymlink'
22215 ivdformat='$ivdformat'
22216 ivsize='$ivsize'
22217 ivtype='$ivtype'
22218 known_extensions='$known_extensions'
22219 ksh='$ksh'
22220 ld='$ld'
22221 lddlflags='$lddlflags'
22222 ldflags='$ldflags'
22223 ldflags_uselargefiles='$ldflags_uselargefiles'
22224 ldlibpthname='$ldlibpthname'
22225 less='$less'
22226 lib_ext='$lib_ext'
22227 libc='$libc'
22228 libperl='$libperl'
22229 libpth='$libpth'
22230 libs='$libs'
22231 libsdirs='$libsdirs'
22232 libsfiles='$libsfiles'
22233 libsfound='$libsfound'
22234 libspath='$libspath'
22235 libswanted='$libswanted'
22236 libswanted_uselargefiles='$libswanted_uselargefiles'
22237 line='$line'
22238 lint='$lint'
22239 lkflags='$lkflags'
22240 ln='$ln'
22241 lns='$lns'
22242 localtime_r_proto='$localtime_r_proto'
22243 locincpth='$locincpth'
22244 loclibpth='$loclibpth'
22245 longdblsize='$longdblsize'
22246 longlongsize='$longlongsize'
22247 longsize='$longsize'
22248 lp='$lp'
22249 lpr='$lpr'
22250 ls='$ls'
22251 lseeksize='$lseeksize'
22252 lseektype='$lseektype'
22253 mad='$mad'
22254 madlyh='$madlyh'
22255 madlyobj='$madlyobj'
22256 madlysrc='$madlysrc'
22257 mail='$mail'
22258 mailx='$mailx'
22259 make='$make'
22260 make_set_make='$make_set_make'
22261 mallocobj='$mallocobj'
22262 mallocsrc='$mallocsrc'
22263 malloctype='$malloctype'
22264 man1dir='$man1dir'
22265 man1direxp='$man1direxp'
22266 man1ext='$man1ext'
22267 man3dir='$man3dir'
22268 man3direxp='$man3direxp'
22269 man3ext='$man3ext'
22270 mips_type='$mips_type'
22271 mistrustnm='$mistrustnm'
22272 mkdir='$mkdir'
22273 mmaptype='$mmaptype'
22274 modetype='$modetype'
22275 more='$more'
22276 multiarch='$multiarch'
22277 mv='$mv'
22278 myarchname='$myarchname'
22279 mydomain='$mydomain'
22280 myhostname='$myhostname'
22281 myuname='$myuname'
22282 n='$n'
22283 need_va_copy='$need_va_copy'
22284 netdb_hlen_type='$netdb_hlen_type'
22285 netdb_host_type='$netdb_host_type'
22286 netdb_name_type='$netdb_name_type'
22287 netdb_net_type='$netdb_net_type'
22288 nm='$nm'
22289 nm_opt='$nm_opt'
22290 nm_so_opt='$nm_so_opt'
22291 nonxs_ext='$nonxs_ext'
22292 nroff='$nroff'
22293 nvEUformat='$nvEUformat'
22294 nvFUformat='$nvFUformat'
22295 nvGUformat='$nvGUformat'
22296 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22297 nveformat='$nveformat'
22298 nvfformat='$nvfformat'
22299 nvgformat='$nvgformat'
22300 nvsize='$nvsize'
22301 nvtype='$nvtype'
22302 o_nonblock='$o_nonblock'
22303 obj_ext='$obj_ext'
22304 old_pthread_create_joinable='$old_pthread_create_joinable'
22305 optimize='$optimize'
22306 orderlib='$orderlib'
22307 osname='$osname'
22308 osvers='$osvers'
22309 otherlibdirs='$otherlibdirs'
22310 package='$package'
22311 pager='$pager'
22312 passcat='$passcat'
22313 patchlevel='$patchlevel'
22314 path_sep='$path_sep'
22315 perl5='$perl5'
22316 perl='$perl'
22317 perl_patchlevel='$perl_patchlevel'
22318 perladmin='$perladmin'
22319 perllibs='$perllibs'
22320 perlpath='$perlpath'
22321 pg='$pg'
22322 phostname='$phostname'
22323 pidtype='$pidtype'
22324 plibpth='$plibpth'
22325 pmake='$pmake'
22326 pr='$pr'
22327 prefix='$prefix'
22328 prefixexp='$prefixexp'
22329 privlib='$privlib'
22330 privlibexp='$privlibexp'
22331 procselfexe='$procselfexe'
22332 prototype='$prototype'
22333 ptrsize='$ptrsize'
22334 quadkind='$quadkind'
22335 quadtype='$quadtype'
22336 randbits='$randbits'
22337 randfunc='$randfunc'
22338 random_r_proto='$random_r_proto'
22339 randseedtype='$randseedtype'
22340 ranlib='$ranlib'
22341 rd_nodata='$rd_nodata'
22342 readdir64_r_proto='$readdir64_r_proto'
22343 readdir_r_proto='$readdir_r_proto'
22344 revision='$revision'
22345 rm='$rm'
22346 rm_try='$rm_try'
22347 rmail='$rmail'
22348 run='$run'
22349 runnm='$runnm'
22350 sPRIEUldbl='$sPRIEUldbl'
22351 sPRIFUldbl='$sPRIFUldbl'
22352 sPRIGUldbl='$sPRIGUldbl'
22353 sPRIXU64='$sPRIXU64'
22354 sPRId64='$sPRId64'
22355 sPRIeldbl='$sPRIeldbl'
22356 sPRIfldbl='$sPRIfldbl'
22357 sPRIgldbl='$sPRIgldbl'
22358 sPRIi64='$sPRIi64'
22359 sPRIo64='$sPRIo64'
22360 sPRIu64='$sPRIu64'
22361 sPRIx64='$sPRIx64'
22362 sSCNfldbl='$sSCNfldbl'
22363 sched_yield='$sched_yield'
22364 scriptdir='$scriptdir'
22365 scriptdirexp='$scriptdirexp'
22366 sed='$sed'
22367 seedfunc='$seedfunc'
22368 selectminbits='$selectminbits'
22369 selecttype='$selecttype'
22370 sendmail='$sendmail'
22371 setgrent_r_proto='$setgrent_r_proto'
22372 sethostent_r_proto='$sethostent_r_proto'
22373 setlocale_r_proto='$setlocale_r_proto'
22374 setnetent_r_proto='$setnetent_r_proto'
22375 setprotoent_r_proto='$setprotoent_r_proto'
22376 setpwent_r_proto='$setpwent_r_proto'
22377 setservent_r_proto='$setservent_r_proto'
22378 sh='$sh'
22379 shar='$shar'
22380 sharpbang='$sharpbang'
22381 shmattype='$shmattype'
22382 shortsize='$shortsize'
22383 shrpenv='$shrpenv'
22384 shsharp='$shsharp'
22385 sig_count='$sig_count'
22386 sig_name='$sig_name'
22387 sig_name_init='$sig_name_init'
22388 sig_num='$sig_num'
22389 sig_num_init='$sig_num_init'
22390 sig_size='$sig_size'
22391 signal_t='$signal_t'
22392 sitearch='$sitearch'
22393 sitearchexp='$sitearchexp'
22394 sitebin='$sitebin'
22395 sitebinexp='$sitebinexp'
22396 sitehtml1dir='$sitehtml1dir'
22397 sitehtml1direxp='$sitehtml1direxp'
22398 sitehtml3dir='$sitehtml3dir'
22399 sitehtml3direxp='$sitehtml3direxp'
22400 sitelib='$sitelib'
22401 sitelib_stem='$sitelib_stem'
22402 sitelibexp='$sitelibexp'
22403 siteman1dir='$siteman1dir'
22404 siteman1direxp='$siteman1direxp'
22405 siteman3dir='$siteman3dir'
22406 siteman3direxp='$siteman3direxp'
22407 siteprefix='$siteprefix'
22408 siteprefixexp='$siteprefixexp'
22409 sitescript='$sitescript'
22410 sitescriptexp='$sitescriptexp'
22411 sizesize='$sizesize'
22412 sizetype='$sizetype'
22413 sleep='$sleep'
22414 smail='$smail'
22415 so='$so'
22416 sockethdr='$sockethdr'
22417 socketlib='$socketlib'
22418 socksizetype='$socksizetype'
22419 sort='$sort'
22420 spackage='$spackage'
22421 spitshell='$spitshell'
22422 srand48_r_proto='$srand48_r_proto'
22423 srandom_r_proto='$srandom_r_proto'
22424 src='$src'
22425 ssizetype='$ssizetype'
22426 startperl='$startperl'
22427 startsh='$startsh'
22428 static_ext='$static_ext'
22429 stdchar='$stdchar'
22430 stdio_base='$stdio_base'
22431 stdio_bufsiz='$stdio_bufsiz'
22432 stdio_cnt='$stdio_cnt'
22433 stdio_filbuf='$stdio_filbuf'
22434 stdio_ptr='$stdio_ptr'
22435 stdio_stream_array='$stdio_stream_array'
22436 strerror_r_proto='$strerror_r_proto'
22437 strings='$strings'
22438 submit='$submit'
22439 subversion='$subversion'
22440 sysman='$sysman'
22441 tail='$tail'
22442 tar='$tar'
22443 targetarch='$targetarch'
22444 tbl='$tbl'
22445 tee='$tee'
22446 test='$test'
22447 timeincl='$timeincl'
22448 timetype='$timetype'
22449 tmpnam_r_proto='$tmpnam_r_proto'
22450 to='$to'
22451 touch='$touch'
22452 tr='$tr'
22453 trnl='$trnl'
22454 troff='$troff'
22455 ttyname_r_proto='$ttyname_r_proto'
22456 u16size='$u16size'
22457 u16type='$u16type'
22458 u32size='$u32size'
22459 u32type='$u32type'
22460 u64size='$u64size'
22461 u64type='$u64type'
22462 u8size='$u8size'
22463 u8type='$u8type'
22464 uidformat='$uidformat'
22465 uidsign='$uidsign'
22466 uidsize='$uidsize'
22467 uidtype='$uidtype'
22468 uname='$uname'
22469 uniq='$uniq'
22470 uquadtype='$uquadtype'
22471 use5005threads='$use5005threads'
22472 use64bitall='$use64bitall'
22473 use64bitint='$use64bitint'
22474 usecrosscompile='$usecrosscompile'
22475 usedl='$usedl'
22476 usefaststdio='$usefaststdio'
22477 useithreads='$useithreads'
22478 uselargefiles='$uselargefiles'
22479 uselongdouble='$uselongdouble'
22480 usemallocwrap='$usemallocwrap'
22481 usemorebits='$usemorebits'
22482 usemultiplicity='$usemultiplicity'
22483 usemymalloc='$usemymalloc'
22484 usenm='$usenm'
22485 useopcode='$useopcode'
22486 useperlio='$useperlio'
22487 useposix='$useposix'
22488 usereentrant='$usereentrant'
22489 userelocatableinc='$userelocatableinc'
22490 usesfio='$usesfio'
22491 useshrplib='$useshrplib'
22492 usesitecustomize='$usesitecustomize'
22493 usesocks='$usesocks'
22494 usethreads='$usethreads'
22495 usevendorprefix='$usevendorprefix'
22496 usevfork='$usevfork'
22497 usrinc='$usrinc'
22498 uuname='$uuname'
22499 uvXUformat='$uvXUformat'
22500 uvoformat='$uvoformat'
22501 uvsize='$uvsize'
22502 uvtype='$uvtype'
22503 uvuformat='$uvuformat'
22504 uvxformat='$uvxformat'
22505 vendorarch='$vendorarch'
22506 vendorarchexp='$vendorarchexp'
22507 vendorbin='$vendorbin'
22508 vendorbinexp='$vendorbinexp'
22509 vendorhtml1dir='$vendorhtml1dir'
22510 vendorhtml1direxp='$vendorhtml1direxp'
22511 vendorhtml3dir='$vendorhtml3dir'
22512 vendorhtml3direxp='$vendorhtml3direxp'
22513 vendorlib='$vendorlib'
22514 vendorlib_stem='$vendorlib_stem'
22515 vendorlibexp='$vendorlibexp'
22516 vendorman1dir='$vendorman1dir'
22517 vendorman1direxp='$vendorman1direxp'
22518 vendorman3dir='$vendorman3dir'
22519 vendorman3direxp='$vendorman3direxp'
22520 vendorprefix='$vendorprefix'
22521 vendorprefixexp='$vendorprefixexp'
22522 vendorscript='$vendorscript'
22523 vendorscriptexp='$vendorscriptexp'
22524 version='$version'
22525 version_patchlevel_string='$version_patchlevel_string'
22526 versiononly='$versiononly'
22527 vi='$vi'
22528 voidflags='$voidflags'
22529 xlibpth='$xlibpth'
22530 yacc='$yacc'
22531 yaccflags='$yaccflags'
22532 zcat='$zcat'
22533 zip='$zip'
22534 EOT
22535
22536 : Add in command line options if available
22537 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22538
22539 : add special variables
22540 $test -f $src/patchlevel.h && \
22541 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22542 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22543 echo "PERL_CONFIG_SH=true" >>config.sh
22544
22545 : propagate old symbols
22546 if $test -f UU/config.sh; then
22547         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22548         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22549         $sort | $uniq -u >UU/oldsyms
22550         set X `cat UU/oldsyms`
22551         shift
22552         case $# in
22553         0) ;;
22554         *)
22555                 cat <<EOM
22556 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22557 EOM
22558                 echo "# Variables propagated from previous config.sh file." >>config.sh
22559                 for sym in `cat UU/oldsyms`; do
22560                         echo "    Propagating $hint variable "'$'"$sym..."
22561                         eval 'tmp="$'"${sym}"'"'
22562                         echo "$tmp" | \
22563                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22564                 done
22565                 ;;
22566         esac
22567 fi
22568
22569 : Finish up by extracting the .SH files
22570 case "$alldone" in
22571 exit)
22572         $rm -rf UU
22573         echo "Extraction done."
22574         exit 0
22575         ;;
22576 cont)
22577         ;;
22578 '')
22579         dflt=''
22580         nostick=true
22581         $cat <<EOM
22582
22583 If you'd like to make any changes to the config.sh file before I begin
22584 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22585
22586 EOM
22587         rp="Press return or use a shell escape to edit config.sh:"
22588         . UU/myread
22589         nostick=''
22590         case "$ans" in
22591         '') ;;
22592         *) : in case they cannot read
22593                 sh 1>&4 -c "$ans";;
22594         esac
22595         ;;
22596 esac
22597
22598 : if this fails, just run all the .SH files by hand
22599 . ./config.sh
22600
22601 echo " "
22602 exec 1>&4
22603 pwd=`pwd`
22604 . ./UU/extract
22605 cd "$pwd"
22606
22607 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22608         dflt=y
22609         case "$silent" in
22610         true) ;;
22611         *)
22612                 $cat <<EOM
22613
22614 Now you need to generate make dependencies by running "$make depend".
22615 You might prefer to run it in background: "$make depend > makedepend.out &"
22616 It can take a while, so you might not want to run it right now.
22617
22618 EOM
22619                 ;;
22620         esac
22621         rp="Run $make depend now?"
22622         . UU/myread
22623         case "$ans" in
22624         y*)
22625                 $make depend && echo "Now you must run '$make'."
22626                 ;;
22627         *)
22628                 echo "You must run '$make depend' then '$make'."
22629                 ;;
22630         esac
22631 elif test -f [Mm]akefile; then
22632         echo " "
22633         echo "Now you must run a $make."
22634 else
22635         echo "Configure done."
22636 fi
22637
22638 if $test -f Policy.sh; then
22639     $cat <<EOM
22640
22641 If you compile $package on a different machine or from a different object
22642 directory, copy the Policy.sh file from this object directory to the
22643 new one before you run Configure -- this will help you with most of
22644 the policy defaults.
22645
22646 EOM
22647 fi
22648 if $test -f config.msg; then
22649     echo "Hmm.  I also noted the following information while running:"
22650     echo " "
22651     $cat config.msg >&4
22652     $rm -f config.msg
22653 fi
22654 $rm -f kit*isdone ark*isdone
22655 $rm -rf UU
22656
22657 : End of Configure
22658