This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
configure.com and vms.c fixes.
[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 package (which contains metaconfig) is available via SVN:
17 #     svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
18 #
19 #
20 # Though this script was generated by metaconfig, it is OK to send
21 # patches against it. It's up to the Configure pumpkin to backport
22 # the patch to the metaunits if it is accepted.
23 # See Porting/pumpkin.pod for more information on metaconfig.
24 #
25
26 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
27 #
28 # Generated on Fri Mar 21 11:25:23 CET 2008 [metaconfig 3.5 PL0]
29 # (with additional metaconfig patches by perlbug@perl.org)
30
31 cat >c1$$ <<EOF
32 ARGGGHHHH!!!!!
33
34 SCO csh still thinks true is false.  Write to SCO today and tell them that next
35 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
36
37 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
38 we'd have to do is go in and swap the && and || tokens, wherever they are.)
39
40 [End of diatribe. We now return you to your regularly scheduled programming...]
41 EOF
42 cat >c2$$ <<EOF
43
44 OOPS!  You naughty creature!  You didn't run Configure with sh!
45 I will attempt to remedy the situation by running sh for you...
46 EOF
47
48 true || cat c1$$ c2$$
49 true || exec sh $0 $argv:q
50
51 (exit $?0) || cat c2$$
52 (exit $?0) || exec sh $0 $argv:q
53 rm -f c1$$ c2$$
54
55 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
56         cat >&4 <<EOF
57 ***
58 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
59 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
60 *** Please read the README.plan9 for further instructions.
61 *** Cannot continue, aborting.
62 ***
63 EOF
64         exit 1
65 fi
66
67 if test ! -c /dev/null ; then
68         cat >&4 <<EOF
69 ***
70 *** I'm sorry, but /dev/null appears to be a file rather than a device.
71 *** Please consult your operating sytem's notes for making a device
72 *** in /dev.
73 *** Cannot continue, aborting.
74 ***
75 EOF
76         exit 1
77 fi
78
79 : compute my invocation name
80 me=$0
81 case "$0" in
82 */*)
83         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
84         test "$me" || me=$0
85         ;;
86 esac
87
88 : Proper separator for the PATH environment variable
89 p_=:
90 : On OS/2 this directory should exist if this is not floppy only system ":-]"
91 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
92         if test -n "$OS2_SHELL"; then
93                 p_=\;
94                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
95                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
96                 is_os2=yes
97         elif test -n "$DJGPP"; then
98                 case "X${MACHTYPE:-nonesuchmach}" in
99                 *cygwin) ;;
100                 *) p_=\; ;;
101                 esac
102         fi
103 fi
104
105 : Proper PATH setting
106 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
107 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
108 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
109 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
110 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
111 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
112 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
113 paths="$paths /sbin /usr/sbin /usr/libexec"
114 paths="$paths /system/gnu_library/bin"
115
116 for p in $paths
117 do
118         case "$p_$PATH$p_" in
119         *$p_$p$p_*) ;;
120         *) test -d $p && PATH=$PATH$p_$p ;;
121         esac
122 done
123
124 PATH=.$p_$PATH
125 export PATH
126
127 : shall we be using ksh?
128 inksh=''
129 needksh=''
130 avoidksh=''
131 newsh=/bin/ksh
132 changesh=''
133 if (PATH=.; alias -x) >/dev/null 2>&1; then
134                 inksh=true
135 fi
136 if test -f /hp-ux -a -f /bin/ksh; then
137         needksh='to avoid sh bug in "here document" expansion'
138 fi
139 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
140         if test X`/usr/bin/uname -v` = X4; then
141                 avoidksh="to avoid AIX 4's /bin/sh"
142                 newsh=/usr/bin/bsh
143         fi
144 fi
145 if test -f /osf_boot -a -f /usr/sbin/setld; then
146         if test X`/usr/bin/uname -s` = XOSF1; then
147                 avoidksh="to avoid Digital UNIX' ksh"
148                 newsh=/bin/sh
149                 unset BIN_SH
150         fi
151 fi
152 case "$inksh/$needksh" in
153 /[a-z]*)
154                 ENV=''
155                 changesh=true
156                 reason="$needksh"
157         ;;
158 esac
159 case "$inksh/$avoidksh" in
160 true/[a-z]*)
161         changesh=true
162         reason="$avoidksh"
163         ;;
164 esac
165 case "$inksh/$needksh-$avoidksh-" in
166 true/--)
167                 cat <<EOM
168 (I see you are using the Korn shell.  Some ksh's blow up on $me,
169 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
170 EOM
171         ;;
172 esac
173 case "$changesh" in
174 true)
175         export newsh
176         echo "(Feeding myself to $newsh $reason.)"
177         case "$0" in
178         Configure|*/Configure) exec $newsh $0 "$@";;
179         *) exec $newsh Configure "$@";;
180         esac
181         ;;
182 esac
183 test -x "${newsh}" || unset newsh
184
185 : if needed, set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
187 case "$CDPATH" in
188 '')     ;;
189 *)      case "$SHELL" in
190         *bash*) CDPATH='.' ;;
191         *) CDPATH='' ;;
192         esac
193         ;;
194 esac
195
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 ar=''
225 awk=''
226 bash=''
227 bison=''
228 byacc=''
229 cat=''
230 chgrp=''
231 chmod=''
232 chown=''
233 comm=''
234 compress=''
235 cp=''
236 cpio=''
237 cpp=''
238 csh=''
239 date=''
240 echo=''
241 egrep=''
242 emacs=''
243 expr=''
244 find=''
245 flex=''
246 gmake=''
247 grep=''
248 gzip=''
249 inews=''
250 ksh=''
251 less=''
252 line=''
253 lint=''
254 ln=''
255 lp=''
256 lpr=''
257 ls=''
258 mail=''
259 mailx=''
260 make=''
261 mkdir=''
262 more=''
263 mv=''
264 nm=''
265 nroff=''
266 perl=''
267 pg=''
268 pmake=''
269 pr=''
270 rm=''
271 rmail=''
272 sed=''
273 sendmail=''
274 shar=''
275 sleep=''
276 smail=''
277 sort=''
278 submit=''
279 tail=''
280 tar=''
281 tbl=''
282 tee=''
283 test=''
284 touch=''
285 tr=''
286 troff=''
287 uname=''
288 uniq=''
289 uuname=''
290 vi=''
291 zcat=''
292 zip=''
293 full_ar=''
294 full_sed=''
295 libswanted=''
296 hint=''
297 myuname=''
298 osname=''
299 osvers=''
300 Author=''
301 Date=''
302 Header=''
303 Id=''
304 Locker=''
305 Log=''
306 RCSfile=''
307 Revision=''
308 Source=''
309 State=''
310 _a=''
311 _exe=''
312 _o=''
313 archobjs=''
314 exe_ext=''
315 firstmakefile=''
316 lib_ext=''
317 obj_ext=''
318 path_sep=''
319 rm_try=''
320 afs=''
321 afsroot=''
322 alignbytes=''
323 ansi2knr=''
324 archlib=''
325 archlibexp=''
326 d_archlib=''
327 installarchlib=''
328 archname=''
329 myarchname=''
330 d_atolf=''
331 d_atoll=''
332 baserev=''
333 bin=''
334 binexp=''
335 initialinstalllocation=''
336 installbin=''
337 userelocatableinc=''
338 byteorder=''
339 cc=''
340 ccflags=''
341 cppflags=''
342 ldflags=''
343 lkflags=''
344 locincpth=''
345 optimize=''
346 cf_email=''
347 cf_by=''
348 cf_time=''
349 contains=''
350 cpp_stuff=''
351 cpplast=''
352 cppminus=''
353 cpprun=''
354 cppstdin=''
355 d__fwalk=''
356 d_access=''
357 d_accessx=''
358 d_aintl=''
359 d_alarm=''
360 asctime_r_proto=''
361 d_asctime_r=''
362 d_attribute_format=''
363 d_attribute_malloc=''
364 d_attribute_nonnull=''
365 d_attribute_noreturn=''
366 d_attribute_pure=''
367 d_attribute_unused=''
368 d_attribute_warn_unused_result=''
369 d_printf_format_null=''
370 d_bcmp=''
371 d_bcopy=''
372 d_builtin_choose_expr=''
373 d_builtin_expect=''
374 d_bzero=''
375 d_c99_variadic_macros=''
376 d_casti32=''
377 castflags=''
378 d_castneg=''
379 d_chown=''
380 d_chroot=''
381 d_chsize=''
382 d_class=''
383 d_clearenv=''
384 d_closedir=''
385 d_void_closedir=''
386 d_cmsghdr_s=''
387 d_const=''
388 d_copysignl=''
389 d_cplusplus=''
390 cryptlib=''
391 d_crypt=''
392 crypt_r_proto=''
393 d_crypt_r=''
394 d_csh=''
395 full_csh=''
396 d_ctermid=''
397 ctermid_r_proto=''
398 d_ctermid_r=''
399 ctime_r_proto=''
400 d_ctime_r=''
401 d_cuserid=''
402 d_dbl_dig=''
403 d_dbminitproto=''
404 d_difftime=''
405 d_dir_dd_fd=''
406 d_dirfd=''
407 d_dlerror=''
408 d_dlopen=''
409 d_dlsymun=''
410 d_dosuid=''
411 d_suidsafe=''
412 d_drand48_r=''
413 drand48_r_proto=''
414 d_drand48proto=''
415 d_dup2=''
416 d_eaccess=''
417 d_endgrent=''
418 d_endgrent_r=''
419 endgrent_r_proto=''
420 d_endhent=''
421 d_endhostent_r=''
422 endhostent_r_proto=''
423 d_endnent=''
424 d_endnetent_r=''
425 endnetent_r_proto=''
426 d_endpent=''
427 d_endprotoent_r=''
428 endprotoent_r_proto=''
429 d_endpwent=''
430 d_endpwent_r=''
431 endpwent_r_proto=''
432 d_endsent=''
433 d_endservent_r=''
434 endservent_r_proto=''
435 d_faststdio=''
436 d_fchdir=''
437 d_fchmod=''
438 d_fchown=''
439 d_fcntl=''
440 d_fcntl_can_lock=''
441 d_fd_macros=''
442 d_fd_set=''
443 d_fds_bits=''
444 d_fgetpos=''
445 d_finite=''
446 d_finitel=''
447 d_flexfnam=''
448 d_flock=''
449 d_flockproto=''
450 d_fork=''
451 d_fp_class=''
452 d_fpclass=''
453 d_fpclassify=''
454 d_fpclassl=''
455 d_fpos64_t=''
456 d_frexpl=''
457 d_fs_data_s=''
458 d_fseeko=''
459 d_fsetpos=''
460 d_fstatfs=''
461 d_fsync=''
462 d_ftello=''
463 d_ftime=''
464 d_gettimeod=''
465 d_futimes=''
466 d_Gconvert=''
467 d_getcwd=''
468 d_getespwnam=''
469 d_getfsstat=''
470 d_getgrent=''
471 d_getgrent_r=''
472 getgrent_r_proto=''
473 d_getgrgid_r=''
474 getgrgid_r_proto=''
475 d_getgrnam_r=''
476 getgrnam_r_proto=''
477 d_getgrps=''
478 d_gethbyaddr=''
479 d_gethbyname=''
480 d_gethent=''
481 aphostname=''
482 d_gethname=''
483 d_phostname=''
484 d_uname=''
485 d_gethostbyaddr_r=''
486 gethostbyaddr_r_proto=''
487 d_gethostbyname_r=''
488 gethostbyname_r_proto=''
489 d_gethostent_r=''
490 gethostent_r_proto=''
491 d_gethostprotos=''
492 d_getitimer=''
493 d_getlogin=''
494 d_getlogin_r=''
495 getlogin_r_proto=''
496 d_getmnt=''
497 d_getmntent=''
498 d_getnbyaddr=''
499 d_getnbyname=''
500 d_getnent=''
501 d_getnetbyaddr_r=''
502 getnetbyaddr_r_proto=''
503 d_getnetbyname_r=''
504 getnetbyname_r_proto=''
505 d_getnetent_r=''
506 getnetent_r_proto=''
507 d_getnetprotos=''
508 d_getpagsz=''
509 d_getpent=''
510 d_getpgid=''
511 d_getpgrp2=''
512 d_bsdgetpgrp=''
513 d_getpgrp=''
514 d_getppid=''
515 d_getprior=''
516 d_getpbyname=''
517 d_getpbynumber=''
518 d_getprotobyname_r=''
519 getprotobyname_r_proto=''
520 d_getprotobynumber_r=''
521 getprotobynumber_r_proto=''
522 d_getprotoent_r=''
523 getprotoent_r_proto=''
524 d_getprotoprotos=''
525 d_getprpwnam=''
526 d_getpwent=''
527 d_getpwent_r=''
528 getpwent_r_proto=''
529 d_getpwnam_r=''
530 getpwnam_r_proto=''
531 d_getpwuid_r=''
532 getpwuid_r_proto=''
533 d_getsent=''
534 d_getservbyname_r=''
535 getservbyname_r_proto=''
536 d_getservbyport_r=''
537 getservbyport_r_proto=''
538 d_getservent_r=''
539 getservent_r_proto=''
540 d_getservprotos=''
541 d_getspnam=''
542 d_getspnam_r=''
543 getspnam_r_proto=''
544 d_getsbyname=''
545 d_getsbyport=''
546 d_gmtime_r=''
547 gmtime_r_proto=''
548 d_gnulibc=''
549 gnulibc_version=''
550 d_hasmntopt=''
551 d_htonl=''
552 d_ilogbl=''
553 d_inetaton=''
554 d_int64_t=''
555 d_isascii=''
556 d_isfinite=''
557 d_isinf=''
558 d_isnan=''
559 d_isnanl=''
560 d_killpg=''
561 d_lchown=''
562 d_ldbl_dig=''
563 d_libm_lib_version=''
564 d_link=''
565 d_localtime_r=''
566 d_localtime_r_needs_tzset=''
567 localtime_r_proto=''
568 d_locconv=''
569 d_lockf=''
570 d_longdbl=''
571 longdblsize=''
572 d_longlong=''
573 longlongsize=''
574 d_lseekproto=''
575 d_lstat=''
576 d_madvise=''
577 d_malloc_good_size=''
578 d_malloc_size=''
579 d_mblen=''
580 d_mbstowcs=''
581 d_mbtowc=''
582 d_memchr=''
583 d_memcmp=''
584 d_memcpy=''
585 d_memmove=''
586 d_memset=''
587 d_mkdir=''
588 d_mkdtemp=''
589 d_mkfifo=''
590 d_mkstemp=''
591 d_mkstemps=''
592 d_mktime=''
593 d_mmap=''
594 mmaptype=''
595 d_modfl=''
596 d_modfl_pow32_bug=''
597 d_modflproto=''
598 d_mprotect=''
599 d_msg=''
600 d_msgctl=''
601 d_msgget=''
602 d_msghdr_s=''
603 d_msgrcv=''
604 d_msgsnd=''
605 d_msync=''
606 d_munmap=''
607 d_nice=''
608 d_nl_langinfo=''
609 d_off64_t=''
610 d_open3=''
611 d_fpathconf=''
612 d_pathconf=''
613 d_pause=''
614 d_pipe=''
615 d_poll=''
616 d_portable=''
617 d_procselfexe=''
618 procselfexe=''
619 d_old_pthread_create_joinable=''
620 old_pthread_create_joinable=''
621 d_pthread_atfork=''
622 d_pthread_attr_setscope=''
623 d_pthread_yield=''
624 d_sched_yield=''
625 sched_yield=''
626 d_qgcvt=''
627 d_random_r=''
628 random_r_proto=''
629 d_readdir64_r=''
630 readdir64_r_proto=''
631 d_readdir=''
632 d_rewinddir=''
633 d_seekdir=''
634 d_telldir=''
635 d_readdir_r=''
636 readdir_r_proto=''
637 d_readlink=''
638 d_readv=''
639 d_recvmsg=''
640 d_rename=''
641 d_rmdir=''
642 d_safebcpy=''
643 d_safemcpy=''
644 d_sanemcmp=''
645 d_sbrkproto=''
646 d_scalbnl=''
647 d_select=''
648 d_sem=''
649 d_semctl=''
650 d_semget=''
651 d_semop=''
652 d_sendmsg=''
653 d_setegid=''
654 d_seteuid=''
655 d_setgrent=''
656 d_setgrent_r=''
657 setgrent_r_proto=''
658 d_setgrps=''
659 d_sethent=''
660 d_sethostent_r=''
661 sethostent_r_proto=''
662 d_setitimer=''
663 d_setlinebuf=''
664 d_setlocale=''
665 d_setlocale_r=''
666 setlocale_r_proto=''
667 d_setnent=''
668 d_setnetent_r=''
669 setnetent_r_proto=''
670 d_setpent=''
671 d_setpgid=''
672 d_setpgrp2=''
673 d_bsdsetpgrp=''
674 d_setpgrp=''
675 d_setprior=''
676 d_setproctitle=''
677 d_setprotoent_r=''
678 setprotoent_r_proto=''
679 d_setpwent=''
680 d_setpwent_r=''
681 setpwent_r_proto=''
682 d_setregid=''
683 d_setresgid=''
684 d_setresuid=''
685 d_setreuid=''
686 d_setrgid=''
687 d_setruid=''
688 d_setsent=''
689 d_setservent_r=''
690 setservent_r_proto=''
691 d_setsid=''
692 d_setvbuf=''
693 d_sfio=''
694 usesfio=''
695 d_shm=''
696 d_shmat=''
697 d_shmatprototype=''
698 shmattype=''
699 d_shmctl=''
700 d_shmdt=''
701 d_shmget=''
702 d_sigaction=''
703 d_signbit=''
704 d_sigprocmask=''
705 d_sigsetjmp=''
706 usesitecustomize=''
707 d_snprintf=''
708 d_vsnprintf=''
709 d_sockatmark=''
710 d_sockatmarkproto=''
711 d_msg_ctrunc=''
712 d_msg_dontroute=''
713 d_msg_oob=''
714 d_msg_peek=''
715 d_msg_proxy=''
716 d_oldsock=''
717 d_scm_rights=''
718 d_socket=''
719 d_sockpair=''
720 sockethdr=''
721 socketlib=''
722 d_socklen_t=''
723 d_socks5_init=''
724 d_sprintf_returns_strlen=''
725 d_sqrtl=''
726 d_srand48_r=''
727 srand48_r_proto=''
728 d_srandom_r=''
729 srandom_r_proto=''
730 d_sresgproto=''
731 d_sresuproto=''
732 d_statblks=''
733 d_statfs_f_flags=''
734 d_statfs_s=''
735 d_fstatvfs=''
736 d_statvfs=''
737 d_stdio_cnt_lval=''
738 d_stdio_ptr_lval=''
739 d_stdio_ptr_lval_nochange_cnt=''
740 d_stdio_ptr_lval_sets_cnt=''
741 d_stdiobase=''
742 d_stdstdio=''
743 stdio_base=''
744 stdio_bufsiz=''
745 stdio_cnt=''
746 stdio_filbuf=''
747 stdio_ptr=''
748 d_index=''
749 d_strchr=''
750 d_strcoll=''
751 d_strctcpy=''
752 d_strerrm=''
753 d_strerror=''
754 d_sysernlst=''
755 d_syserrlst=''
756 d_strerror_r=''
757 strerror_r_proto=''
758 d_strftime=''
759 d_strlcat=''
760 d_strlcpy=''
761 d_strtod=''
762 d_strtol=''
763 d_strtold=''
764 d_strtoll=''
765 d_strtoq=''
766 d_strtoul=''
767 d_strtoull=''
768 d_strtouq=''
769 d_strxfrm=''
770 d_symlink=''
771 d_syscall=''
772 d_syscallproto=''
773 d_sysconf=''
774 d_system=''
775 d_tcgetpgrp=''
776 d_tcsetpgrp=''
777 d_telldirproto=''
778 d_time=''
779 timetype=''
780 clocktype=''
781 d_times=''
782 d_tmpnam_r=''
783 tmpnam_r_proto=''
784 d_truncate=''
785 d_ttyname_r=''
786 ttyname_r_proto=''
787 d_tzname=''
788 d_u32align=''
789 d_ualarm=''
790 d_umask=''
791 d_semctl_semid_ds=''
792 d_semctl_semun=''
793 d_union_semun=''
794 d_unordered=''
795 d_unsetenv=''
796 d_usleep=''
797 d_usleepproto=''
798 d_ustat=''
799 d_pseudofork=''
800 d_vfork=''
801 usevfork=''
802 d_voidsig=''
803 signal_t=''
804 d_volatile=''
805 d_charvspr=''
806 d_vprintf=''
807 d_wait4=''
808 d_waitpid=''
809 d_wcstombs=''
810 d_wctomb=''
811 d_writev=''
812 dlext=''
813 cccdlflags=''
814 ccdlflags=''
815 dlsrc=''
816 ld=''
817 lddlflags=''
818 usedl=''
819 doublesize=''
820 ebcdic=''
821 fflushNULL=''
822 fflushall=''
823 fpossize=''
824 fpostype=''
825 gccansipedantic=''
826 gccosandvers=''
827 gccversion=''
828 gidformat=''
829 gidsign=''
830 gidsize=''
831 gidtype=''
832 groupstype=''
833 h_fcntl=''
834 h_sysfile=''
835 html1dir=''
836 html1direxp=''
837 installhtml1dir=''
838 html3dir=''
839 html3direxp=''
840 installhtml3dir=''
841 i_arpainet=''
842 i_assert=''
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_syspoll=''
916 i_sysresrc=''
917 i_syssecrt=''
918 i_sysselct=''
919 i_sysstat=''
920 i_sysstatfs=''
921 i_sysstatvfs=''
922 i_systimes=''
923 i_systypes=''
924 i_sysuio=''
925 i_sysun=''
926 i_sysutsname=''
927 i_sysvfs=''
928 i_syswait=''
929 i_sgtty=''
930 i_termio=''
931 i_termios=''
932 d_tm_tm_gmtoff=''
933 d_tm_tm_zone=''
934 i_systime=''
935 i_systimek=''
936 i_time=''
937 timeincl=''
938 i_unistd=''
939 i_ustat=''
940 i_utime=''
941 i_values=''
942 i_stdarg=''
943 i_varargs=''
944 i_varhdr=''
945 i_vfork=''
946 d_inc_version_list=''
947 inc_version_list=''
948 inc_version_list_init=''
949 installprefix=''
950 installprefixexp=''
951 installstyle=''
952 installusrbinperl=''
953 intsize=''
954 longsize=''
955 shortsize=''
956 issymlink=''
957 libc=''
958 ldlibpthname=''
959 libperl=''
960 shrpenv=''
961 useshrplib=''
962 glibpth=''
963 libpth=''
964 loclibpth=''
965 plibpth=''
966 xlibpth=''
967 ignore_versioned_solibs=''
968 libs=''
969 libsdirs=''
970 libsfiles=''
971 libsfound=''
972 libspath=''
973 lns=''
974 d_PRIEUldbl=''
975 d_PRIFUldbl=''
976 d_PRIGUldbl=''
977 d_PRIeldbl=''
978 d_PRIfldbl=''
979 d_PRIgldbl=''
980 d_SCNfldbl=''
981 sPRIEUldbl=''
982 sPRIFUldbl=''
983 sPRIGUldbl=''
984 sPRIeldbl=''
985 sPRIfldbl=''
986 sPRIgldbl=''
987 sSCNfldbl=''
988 lseeksize=''
989 lseektype=''
990 mad=''
991 madlyh=''
992 madlyobj=''
993 madlysrc=''
994 make_set_make=''
995 d_mymalloc=''
996 freetype=''
997 mallocobj=''
998 mallocsrc=''
999 malloctype=''
1000 usemallocwrap=''
1001 usemymalloc=''
1002 installman1dir=''
1003 man1dir=''
1004 man1direxp=''
1005 man1ext=''
1006 installman3dir=''
1007 man3dir=''
1008 man3direxp=''
1009 man3ext=''
1010 modetype=''
1011 multiarch=''
1012 mydomain=''
1013 myhostname=''
1014 phostname=''
1015 c=''
1016 n=''
1017 d_eofnblk=''
1018 eagain=''
1019 o_nonblock=''
1020 rd_nodata=''
1021 need_va_copy=''
1022 netdb_hlen_type=''
1023 netdb_host_type=''
1024 netdb_name_type=''
1025 netdb_net_type=''
1026 groupcat=''
1027 hostcat=''
1028 passcat=''
1029 orderlib=''
1030 ranlib=''
1031 d_perl_otherlibdirs=''
1032 otherlibdirs=''
1033 package=''
1034 spackage=''
1035 pager=''
1036 api_revision=''
1037 api_subversion=''
1038 api_version=''
1039 api_versionstring=''
1040 patchlevel=''
1041 perl_patchlevel=''
1042 revision=''
1043 subversion=''
1044 version=''
1045 version_patchlevel_string=''
1046 perl5=''
1047 perladmin=''
1048 perlpath=''
1049 d_nv_preserves_uv=''
1050 d_nv_zero_is_allbits_zero=''
1051 i16size=''
1052 i16type=''
1053 i32size=''
1054 i32type=''
1055 i64size=''
1056 i64type=''
1057 i8size=''
1058 i8type=''
1059 ivsize=''
1060 ivtype=''
1061 nv_overflows_integers_at=''
1062 nv_preserves_uv_bits=''
1063 nvsize=''
1064 nvtype=''
1065 u16size=''
1066 u16type=''
1067 u32size=''
1068 u32type=''
1069 u64size=''
1070 u64type=''
1071 u8size=''
1072 u8type=''
1073 uvsize=''
1074 uvtype=''
1075 ivdformat=''
1076 nvEUformat=''
1077 nvFUformat=''
1078 nvGUformat=''
1079 nveformat=''
1080 nvfformat=''
1081 nvgformat=''
1082 uvXUformat=''
1083 uvoformat=''
1084 uvuformat=''
1085 uvxformat=''
1086 pidtype=''
1087 prefix=''
1088 prefixexp=''
1089 installprivlib=''
1090 privlib=''
1091 privlibexp=''
1092 prototype=''
1093 ptrsize=''
1094 d_PRIXU64=''
1095 d_PRId64=''
1096 d_PRIi64=''
1097 d_PRIo64=''
1098 d_PRIu64=''
1099 d_PRIx64=''
1100 sPRIXU64=''
1101 sPRId64=''
1102 sPRIi64=''
1103 sPRIo64=''
1104 sPRIu64=''
1105 sPRIx64=''
1106 d_quad=''
1107 quadkind=''
1108 quadtype=''
1109 uquadtype=''
1110 drand01=''
1111 randbits=''
1112 randfunc=''
1113 randseedtype=''
1114 seedfunc=''
1115 installscript=''
1116 scriptdir=''
1117 scriptdirexp=''
1118 selectminbits=''
1119 selecttype=''
1120 sh=''
1121 sig_count=''
1122 sig_name=''
1123 sig_name_init=''
1124 sig_num=''
1125 sig_num_init=''
1126 sig_size=''
1127 d_sitearch=''
1128 installsitearch=''
1129 sitearch=''
1130 sitearchexp=''
1131 installsitebin=''
1132 sitebin=''
1133 sitebinexp=''
1134 installsitehtml1dir=''
1135 sitehtml1dir=''
1136 sitehtml1direxp=''
1137 installsitehtml3dir=''
1138 sitehtml3dir=''
1139 sitehtml3direxp=''
1140 installsitelib=''
1141 sitelib=''
1142 sitelib_stem=''
1143 sitelibexp=''
1144 installsiteman1dir=''
1145 siteman1dir=''
1146 siteman1direxp=''
1147 installsiteman3dir=''
1148 siteman3dir=''
1149 siteman3direxp=''
1150 siteprefix=''
1151 siteprefixexp=''
1152 installsitescript=''
1153 sitescript=''
1154 sitescriptexp=''
1155 sizesize=''
1156 sizetype=''
1157 so=''
1158 socksizetype=''
1159 sharpbang=''
1160 shsharp=''
1161 spitshell=''
1162 src=''
1163 ssizetype=''
1164 startperl=''
1165 startsh=''
1166 stdchar=''
1167 d_stdio_stream_array=''
1168 stdio_stream_array=''
1169 sysman=''
1170 trnl=''
1171 uidformat=''
1172 uidsign=''
1173 uidsize=''
1174 uidtype=''
1175 archname64=''
1176 use64bitall=''
1177 use64bitint=''
1178 dtrace=''
1179 usedtrace=''
1180 usefaststdio=''
1181 ccflags_uselargefiles=''
1182 ldflags_uselargefiles=''
1183 libswanted_uselargefiles=''
1184 uselargefiles=''
1185 uselongdouble=''
1186 usemorebits=''
1187 usemultiplicity=''
1188 nm_opt=''
1189 nm_so_opt=''
1190 runnm=''
1191 usenm=''
1192 useperlio=''
1193 usesocks=''
1194 d_oldpthreads=''
1195 use5005threads=''
1196 useithreads=''
1197 usereentrant=''
1198 usethreads=''
1199 incpath=''
1200 mips_type=''
1201 usrinc=''
1202 d_vendorarch=''
1203 installvendorarch=''
1204 vendorarch=''
1205 vendorarchexp=''
1206 d_vendorbin=''
1207 installvendorbin=''
1208 vendorbin=''
1209 vendorbinexp=''
1210 installvendorhtml1dir=''
1211 vendorhtml1dir=''
1212 vendorhtml1direxp=''
1213 installvendorhtml3dir=''
1214 vendorhtml3dir=''
1215 vendorhtml3direxp=''
1216 d_vendorlib=''
1217 installvendorlib=''
1218 vendorlib=''
1219 vendorlib_stem=''
1220 vendorlibexp=''
1221 installvendorman1dir=''
1222 vendorman1dir=''
1223 vendorman1direxp=''
1224 installvendorman3dir=''
1225 vendorman3dir=''
1226 vendorman3direxp=''
1227 usevendorprefix=''
1228 vendorprefix=''
1229 vendorprefixexp=''
1230 d_vendorscript=''
1231 installvendorscript=''
1232 vendorscript=''
1233 vendorscriptexp=''
1234 versiononly=''
1235 defvoidused=''
1236 voidflags=''
1237 yacc=''
1238 yaccflags=''
1239 CONFIG=''
1240
1241 : Detect odd OSs
1242 define='define'
1243 undef='undef'
1244 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1245 rmlist=''
1246
1247 : We must find out about Eunice early
1248 eunicefix=':'
1249 if test -f /etc/unixtovms; then
1250         eunicefix=/etc/unixtovms
1251 fi
1252 if test -f /etc/unixtovms.exe; then
1253         eunicefix=/etc/unixtovms.exe
1254 fi
1255
1256 : Set executable suffix now -- needed before hints available
1257 if test -f "/libs/version.library"; then
1258 : Amiga OS
1259     _exe=""
1260 elif test -f "/system/gnu_library/bin/ar.pm"; then
1261 : Stratus VOS
1262     _exe=".pm"
1263 elif test -n "$DJGPP"; then
1264 : DOS DJGPP
1265     _exe=".exe"
1266 elif test -d c:/. -o -n "$is_os2" ; then
1267 : OS/2 or cygwin
1268     _exe=".exe"
1269 fi
1270
1271 i_whoami=''
1272 : Trailing extension.  Override this in a hint file, if needed.
1273 : Extra object files, if any, needed on this platform.
1274 archobjs=''
1275 archname=''
1276 groupstype=''
1277 libnames=''
1278 : change the next line if compiling for Xenix/286 on Xenix/386
1279 xlibpth='/usr/lib/386 /lib/386'
1280 : Possible local library directories to search.
1281 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1282 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1283
1284 : general looking path for locating libraries
1285 glibpth="/lib /usr/lib $xlibpth"
1286 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1287 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1288 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1289 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1290
1291 : Private path used by Configure to find libraries.  Its value
1292 : is prepended to libpth. This variable takes care of special
1293 : machines, like the mips.  Usually, it should be empty.
1294 plibpth=''
1295
1296 : default library list
1297 libswanted=''
1298 : some systems want to use only the non-versioned libso:s
1299 ignore_versioned_solibs=''
1300 : set usethreads on the Configure command line to enable threads.
1301 usereentrant='undef'
1302 : full support for void wanted by default
1303 defvoidused=15
1304
1305 : Possible local include directories to search.
1306 : Set locincpth to "" in a hint file to defeat local include searches.
1307 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1308 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1309 :
1310 : no include file wanted by default
1311 inclwanted=''
1312
1313 : Enable -DEBUGGING and -DDEBUGGING from the command line
1314 EBUGGING=''
1315 DEBUGGING=old
1316
1317 ccname=''
1318 ccversion=''
1319 perllibs=''
1320 : set useposix=false in your hint file to disable the POSIX extension.
1321 useposix=true
1322 : set useopcode=false in your hint file to disable the Opcode extension.
1323 useopcode=true
1324 archname64=''
1325 ccflags_uselargefiles=''
1326 ldflags_uselargefiles=''
1327 libswanted_uselargefiles=''
1328 : set usemultiplicity on the Configure command line to enable multiplicity.
1329 : set usesocks on the Configure command line to enable socks.
1330 : List of libraries we want.
1331 : If anyone needs extra -lxxx, put those in a hint file.
1332 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1333 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1334 : We probably want to search /usr/shlib before most other libraries.
1335 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1336 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1337 glibpth="/usr/shlib $glibpth"
1338 : Do not use vfork unless overridden by a hint file.
1339 usevfork=false
1340
1341 : Find the basic shell for Bourne shell scripts
1342 case "$sh" in
1343 '')
1344         case "$SYSTYPE" in
1345         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1346         *) xxx='/bin/sh';;
1347         esac
1348         if test -f "$xxx"; then
1349                 sh="$xxx"
1350         else
1351                 : Build up a list and do a single loop so we can 'break' out.
1352                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1353                 for xxx in sh bash ksh pdksh ash; do
1354                         for p in $pth; do
1355                                 try="$try ${p}/${xxx}"
1356                         done
1357                 done
1358                 for xxx in $try; do
1359                         if test -f "$xxx"; then
1360                                 sh="$xxx";
1361                                 break
1362                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1363                                 sh="$xxx";
1364                                 break
1365                         elif test -f "$xxx.exe"; then
1366                                 sh="$xxx";
1367                                 break
1368                         fi
1369                 done
1370         fi
1371         ;;
1372 esac
1373
1374 case "$sh" in
1375 '')     cat >&2 <<EOM
1376 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1377
1378 Usually it's in /bin/sh.  How did you even get this far?
1379 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1380 we'll try to straighten this all out.
1381 EOM
1382         exit 1
1383         ;;
1384 esac
1385
1386 : see if sh knows # comments
1387 if `$sh -c '#' >/dev/null 2>&1`; then
1388         shsharp=true
1389         spitshell=cat
1390         xcat=/bin/cat
1391         test -f $xcat$_exe || xcat=/usr/bin/cat
1392         if test ! -f $xcat$_exe; then
1393                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1394                         if test -f $p/cat$_exe; then
1395                                 xcat=$p/cat
1396                                 break
1397                         fi
1398                 done
1399                 if test ! -f $xcat$_exe; then
1400                         echo "Can't find cat anywhere!"
1401                         exit 1
1402                 fi
1403         fi
1404         echo "#!$xcat" >sharp
1405         $eunicefix sharp
1406         chmod +x sharp
1407         ./sharp > today
1408         if test -s today; then
1409                 sharpbang='#!'
1410         else
1411                 echo "#! $xcat" > sharp
1412                 $eunicefix sharp
1413                 chmod +x sharp
1414                 ./sharp > today
1415                 if test -s today; then
1416                         sharpbang='#! '
1417                 else
1418                         sharpbang=': use '
1419                 fi
1420         fi
1421 else
1422         echo " "
1423         echo "Your $sh doesn't grok # comments--I will strip them later on."
1424         shsharp=false
1425         cd ..
1426         echo "exec grep -v '^[  ]*#'" >spitshell
1427         chmod +x spitshell
1428         $eunicefix spitshell
1429         spitshell=`pwd`/spitshell
1430         cd UU
1431         echo "I presume that if # doesn't work, #! won't work either!"
1432         sharpbang=': use '
1433 fi
1434 rm -f sharp today
1435
1436 : figure out how to guarantee sh startup
1437 case "$startsh" in
1438 '') startsh=${sharpbang}${sh} ;;
1439 *)
1440 esac
1441 cat >sharp <<EOSS
1442 $startsh
1443 set abc
1444 test "$?abc" != 1
1445 EOSS
1446
1447 chmod +x sharp
1448 $eunicefix sharp
1449 if ./sharp; then
1450         : echo "Yup, it does."
1451 else
1452         echo "Hmm... '$startsh' does not guarantee sh startup..."
1453         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1454 fi
1455 rm -f sharp
1456
1457 : Save command line options in file UU/cmdline.opt for later use in
1458 : generating config.sh.
1459 cat > cmdline.opt <<EOSH
1460 : Configure command line arguments.
1461 config_arg0='$0'
1462 config_args='$*'
1463 config_argc=$#
1464 EOSH
1465 argn=1
1466 args_exp=''
1467 args_sep=''
1468 for arg in "$@"; do
1469         cat >>cmdline.opt <<EOSH
1470 config_arg$argn='$arg'
1471 EOSH
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 rm -f cmdl.opt
1481
1482 : produce awk script to parse command line options
1483 cat >options.awk <<'EOF'
1484 BEGIN {
1485         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1486
1487         len = length(optstr);
1488         for (i = 1; i <= len; i++) {
1489                 c = substr(optstr, i, 1);
1490                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1491                 if (a == ":") {
1492                         arg[c] = 1;
1493                         i++;
1494                 }
1495                 opt[c] = 1;
1496         }
1497 }
1498 {
1499         expect = 0;
1500         str = $0;
1501         if (substr(str, 1, 1) != "-") {
1502                 printf("'%s'\n", str);
1503                 next;
1504         }
1505         len = length($0);
1506         for (i = 2; i <= len; i++) {
1507                 c = substr(str, i, 1);
1508                 if (!opt[c]) {
1509                         printf("-%s\n", substr(str, i));
1510                         next;
1511                 }
1512                 printf("-%s\n", c);
1513                 if (arg[c]) {
1514                         if (i < len)
1515                                 printf("'%s'\n", substr(str, i + 1));
1516                         else
1517                                 expect = 1;
1518                         next;
1519                 }
1520         }
1521 }
1522 END {
1523         if (expect)
1524                 print "?";
1525 }
1526 EOF
1527
1528 : process the command line options
1529 set X `for arg in "$@"; do echo "X$arg"; done |
1530         sed -e s/X// | awk -f options.awk`
1531 eval "set $*"
1532 shift
1533 rm -f options.awk
1534
1535 : set up default values
1536 fastread=''
1537 reuseval=false
1538 config_sh=''
1539 alldone=''
1540 error=''
1541 silent=''
1542 extractsh=''
1543 override=''
1544 knowitall=''
1545 rm -f optdef.sh posthint.sh
1546 cat >optdef.sh <<EOS
1547 $startsh
1548 EOS
1549
1550
1551 : option parsing
1552 while test $# -gt 0; do
1553         case "$1" in
1554         -d) shift; fastread=yes;;
1555         -e) shift; alldone=cont;;
1556         -f)
1557                 shift
1558                 cd ..
1559                 if test -r "$1"; then
1560                         config_sh="$1"
1561                 else
1562                         echo "$me: cannot read config file $1." >&2
1563                         error=true
1564                 fi
1565                 cd UU
1566                 shift;;
1567         --help|\
1568         -h) shift; error=true;;
1569         -r) shift; reuseval=true;;
1570         -s) shift; silent=true; realsilent=true;;
1571         -E) shift; alldone=exit;;
1572         -K) shift; knowitall=true;;
1573         -O) shift; override=true;;
1574         -S) shift; silent=true; extractsh=true;;
1575         -D)
1576                 shift
1577                 case "$1" in
1578                 *=)
1579                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1580                         echo "$me: ignoring -D $1" >&2
1581                         ;;
1582                 *=*) echo "$1" | \
1583                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1584                 *) echo "$1='define'" >> optdef.sh;;
1585                 esac
1586                 shift
1587                 ;;
1588         -U)
1589                 shift
1590                 case "$1" in
1591                 *=) echo "$1" >> optdef.sh;;
1592                 *=*)
1593                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1594                         echo "$me: ignoring -U $1" >&2
1595                         ;;
1596                 *) echo "$1='undef'" >> optdef.sh;;
1597                 esac
1598                 shift
1599                 ;;
1600         -A)
1601             shift
1602             xxx=''
1603             yyy="$1"
1604             zzz=''
1605             uuu=undef
1606             case "$yyy" in
1607             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1608                  case "$zzz" in
1609                  *:*) zzz='' ;;
1610                  *)   xxx=append
1611                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1612                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1613                  esac
1614                  ;;
1615             esac
1616             case "$xxx" in
1617             '')  case "$yyy" in
1618                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1619                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1620                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1621                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1622                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1623                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1624                  esac
1625                  ;;
1626             esac
1627             case "$xxx" in
1628             append)
1629                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1630             clear)
1631                 echo "$yyy=''"                  >> posthint.sh ;;
1632             define)
1633                 case "$zzz" in
1634                 '') zzz=define ;;
1635                 esac
1636                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1637             eval)
1638                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1639             prepend)
1640                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1641             undef)
1642                 case "$zzz" in
1643                 '') zzz="$uuu" ;;
1644                 esac
1645                 echo "$yyy=$zzz"                >> posthint.sh ;;
1646             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1647             esac
1648             shift
1649             ;;
1650         -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1651             exit 0;;
1652         --) break;;
1653         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1654         *) break;;
1655         esac
1656 done
1657
1658 case "$error" in
1659 true)
1660         cat >&2 <<EOM
1661 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1662                  [-U symbol] [-U symbol=] [-A command:symbol...]
1663   -d : use defaults for all answers.
1664   -e : go on without questioning past the production of config.sh.
1665   -f : specify an alternate default configuration file.
1666   -h : print this help message and exit (with an error status).
1667   -r : reuse C symbols value if possible (skips costly nm extraction).
1668   -s : silent mode, only echoes questions and essential information.
1669   -D : define symbol to have some value:
1670          -D symbol         symbol gets the value 'define'
1671          -D symbol=value   symbol gets the value 'value'
1672        common used examples (see INSTALL for more info):
1673          -Duse64bitint            use 64bit integers
1674          -Duse64bitall            use 64bit integers and pointers
1675          -Dusethreads             use thread support
1676          -Dinc_version_list=none  do not include older perl trees in @INC
1677          -DEBUGGING=none          DEBUGGING options
1678          -Dcc=gcc                 choose your compiler
1679          -Dprefix=/opt/perl5      choose your destination
1680   -E : stop at the end of questions, after having produced config.sh.
1681   -K : do not use unless you know what you are doing.
1682   -O : let -D and -U override definitions from loaded configuration file.
1683   -S : perform variable substitutions on all .SH files (can mix with -f)
1684   -U : undefine symbol:
1685          -U symbol    symbol gets the value 'undef'
1686          -U symbol=   symbol gets completely empty
1687        e.g.:  -Uversiononly
1688   -A : manipulate symbol after the platform specific hints have been applied:
1689          -A append:symbol=value   append value to symbol
1690          -A symbol=value          like append:, but with a separating space
1691          -A define:symbol=value   define symbol to have value
1692          -A clear:symbol          define symbol to be ''
1693          -A define:symbol         define symbol to be 'define'
1694          -A eval:symbol=value     define symbol to be eval of value
1695          -A prepend:symbol=value  prepend value to symbol
1696          -A undef:symbol          define symbol to be 'undef'
1697          -A undef:symbol=         define symbol to be ''
1698        e.g.:  -A prepend:libswanted='cl pthread '
1699               -A ccflags=-DSOME_MACRO
1700   -V : print version number and exit (with a zero status).
1701 EOM
1702         exit 1
1703         ;;
1704 esac
1705
1706 : Sanity checks
1707 case "$fastread$alldone" in
1708 yescont|yesexit) ;;
1709 *)
1710         case "$extractsh" in
1711         true) ;;
1712         *)
1713                 if test ! -t 0; then
1714                         echo "Say 'sh Configure', not 'sh <Configure'"
1715                         exit 1
1716                 fi
1717                 ;;
1718         esac
1719         ;;
1720 esac
1721
1722 exec 4>&1
1723 case "$silent" in
1724 true) exec 1>/dev/null;;
1725 esac
1726
1727 : run the defines and the undefines, if any, but leave the file out there...
1728 touch optdef.sh
1729 . ./optdef.sh
1730 : create the posthint manipulation script and leave the file out there...
1731 touch posthint.sh
1732
1733 : set package name
1734 package='perl5'
1735 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1736 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1737 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1738 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1739 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1740 esac
1741
1742 : Some greps do not return status, grrr.
1743 echo "grimblepritz" >grimble
1744 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1745         contains=contains
1746 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1747         contains=grep
1748 else
1749         contains=contains
1750 fi
1751 rm -f grimble
1752 : the following should work in any shell
1753 case "$contains" in
1754 contains*)
1755         echo " "
1756         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1757         cat >contains <<'EOSS'
1758 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1759 EOSS
1760 chmod +x contains
1761 esac
1762
1763 : Find the path to the source tree
1764 case "$src" in
1765 '') case "$0" in
1766     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1767          case "$src" in
1768          /*)    ;;
1769          .)     ;;
1770          *)     src=`cd ../$src && pwd` ;;
1771          esac
1772          ;;
1773     *)   src='.';;
1774     esac;;
1775 esac
1776 case "$src" in
1777 '')     src=/
1778         rsrc=/
1779         ;;
1780 /*)     rsrc="$src";;
1781 *)      rsrc="../$src";;
1782 esac
1783 if test -f $rsrc/Configure && \
1784         $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1785 then
1786    : found it, so we are ok.
1787 else
1788         rsrc=''
1789         for src in . .. ../.. ../../.. ../../../..; do
1790                 if test -f ../$src/Configure && \
1791                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1792                 then
1793                         rsrc=../$src
1794                         break
1795                 fi
1796         done
1797 fi
1798 case "$rsrc" in
1799 '')
1800         cat <<EOM >&4
1801
1802 Sorry, I can't seem to locate the source dir for $package.  Please start
1803 Configure with an explicit path -- i.e. /some/path/Configure.
1804
1805 EOM
1806         exit 1
1807         ;;
1808 ../.)   rsrc='..';;
1809 *)
1810         echo " "
1811         echo "Sources for $package found in \"$src\"." >&4
1812         ;;
1813 esac
1814
1815 : script used to extract .SH files with variable substitutions
1816 cat >extract <<'EOS'
1817 PERL_CONFIG_SH=true
1818 echo "Doing variable substitutions on .SH files..."
1819 if test -f MANIFEST; then
1820         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1821 else
1822         echo "(Looking for .SH files under the source directory.)"
1823         set x `(cd "$src"; find . -name "*.SH" -print)`
1824 fi
1825 shift
1826 case $# in
1827 0) set x `(cd "$src"; echo *.SH)`; shift;;
1828 esac
1829 if test ! -f "$src/$1"; then
1830         shift
1831 fi
1832 mkdir_p='
1833 name=$1;
1834 create="";
1835 while test $name; do
1836         if test ! -d "$name"; then
1837                 create="$name $create";
1838                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1839                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1840         else
1841                 name="";
1842         fi;
1843 done;
1844 for file in $create; do
1845         mkdir $file;
1846 done
1847 '
1848 for file in $*; do
1849         case "$src" in
1850         ".")
1851                 case "$file" in
1852                 */*)
1853                         dir=`expr X$file : 'X\(.*\)/'`
1854                         file=`expr X$file : 'X.*/\(.*\)'`
1855                         (cd "$dir" && . ./$file)
1856                         ;;
1857                 *)
1858                         . ./$file
1859                         ;;
1860                 esac
1861                 ;;
1862         *)
1863                 case "$file" in
1864                 */*)
1865                         dir=`expr X$file : 'X\(.*\)/'`
1866                         file=`expr X$file : 'X.*/\(.*\)'`
1867                         (set x $dir; shift; eval $mkdir_p)
1868                         sh <"$src/$dir/$file"
1869                         ;;
1870                 *)
1871                         sh <"$src/$file"
1872                         ;;
1873                 esac
1874                 ;;
1875         esac
1876 done
1877 if test -f "$src/config_h.SH"; then
1878         if test ! -f config.h; then
1879         : oops, they left it out of MANIFEST, probably, so do it anyway.
1880         . "$src/config_h.SH"
1881         fi
1882 fi
1883 EOS
1884
1885 : extract files and exit if asked to do so
1886 case "$extractsh" in
1887 true)
1888         case "$realsilent" in
1889         true) ;;
1890         *) exec 1>&4;;
1891         esac
1892         case "$config_sh" in
1893         '') config_sh='config.sh';;
1894         esac
1895         echo " "
1896         echo "Fetching answers from $config_sh..."
1897         cd ..
1898         . $config_sh
1899         test "$override" && . ./optdef.sh
1900         echo " "
1901         . UU/extract
1902         rm -rf UU
1903         echo "Extraction done."
1904         exit 0
1905         ;;
1906 esac
1907
1908 : Eunice requires " " instead of "", can you believe it
1909 echo " "
1910 : Here we go...
1911 echo "Beginning of configuration questions for $package."
1912
1913 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1914
1915 : first determine how to suppress newline on echo command
1916 echo " "
1917 echo "Checking echo to see how to suppress newlines..."
1918 (echo "hi there\c" ; echo " ") >.echotmp
1919 if $contains c .echotmp >/dev/null 2>&1 ; then
1920         echo "...using -n."
1921         n='-n'
1922         c=''
1923 else
1924         cat <<'EOM'
1925 ...using \c
1926 EOM
1927         n=''
1928         c='\c'
1929 fi
1930 echo $n "The star should be here-->$c"
1931 echo '*'
1932 rm -f .echotmp
1933
1934 : Now test for existence of everything in MANIFEST
1935 echo " "
1936 if test -f "$rsrc/MANIFEST"; then
1937         echo "First let's make sure your kit is complete.  Checking..." >&4
1938         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" |\
1939                 (split -l 50 2>/dev/null || split -50)
1940         rm -f missing
1941         tmppwd=`pwd`
1942         for filelist in x??; do
1943                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
1944                         >/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 : Find the appropriate value for a newline for tr
1979 echo " "
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 : See if we are using a devel version and want that
2124 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2125 case "$usedevel" in
2126 $define|true|[yY]*) ;;
2127 *) case "$xversion" in
2128    *[13579])
2129         cat >&4 <<EOH
2130 *** WHOA THERE!!! ***
2131
2132     This is an UNSTABLE DEVELOPMENT release.
2133     The version of this $package distribution is $xversion, that is, odd,
2134     (as opposed to even) and that signifies a development release.
2135     If you want a maintenance release, you want an even-numbered version.
2136
2137     Do ***NOT*** install this into production use.
2138     Data corruption and crashes are possible.
2139
2140     It is most seriously suggested that you do not continue any further
2141     unless you want to help in developing and debugging Perl.
2142
2143     If you *still* want to build perl, you can answer 'y' now,
2144     or pass -Dusedevel to Configure.
2145
2146 EOH
2147         rp='Do you really want to continue?'
2148         dflt='n'
2149         . ./myread
2150         case "$ans" in
2151         [yY]) echo >&4 "Okay, continuing."
2152               usedevel="$define" ;;
2153         *) echo >&4 "Okay, bye."
2154            exit 1
2155            ;;
2156         esac
2157         ;;
2158     esac
2159     ;;
2160 esac
2161 case "$usedevel" in
2162 $define|true|[yY]*)
2163         case "$versiononly" in
2164         '') versiononly="$define" ;;
2165         esac
2166         case "$installusrbinperl" in
2167         '') installusrbinperl="$undef" ;;
2168         esac
2169         ;;
2170 esac
2171
2172 : general instructions
2173 needman=true
2174 firsttime=true
2175 user=`(logname) 2>/dev/null`
2176 case "$user" in
2177 '') user=`whoami 2>&1`;;
2178 esac
2179 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2180         firsttime=false
2181         echo " "
2182         rp='Would you like to see the instructions?'
2183         dflt=n
2184         . ./myread
2185         case "$ans" in
2186         [yY]*) ;;
2187         *) needman=false;;
2188         esac
2189 fi
2190 if $needman; then
2191         cat <<EOH
2192
2193 This installation shell script will examine your system and ask you questions
2194 to determine how the perl5 package should be installed. If you get
2195 stuck on a question, you may use a ! shell escape to start a subshell or
2196 execute a command.  Many of the questions will have default answers in square
2197 brackets; typing carriage return will give you the default.
2198
2199 On some of the questions which ask for file or directory names you are allowed
2200 to use the ~name construct to specify the login directory belonging to "name",
2201 even if you don't have a shell which knows about that.  Questions where this is
2202 allowed will be marked "(~name ok)".
2203
2204 EOH
2205         rp=''
2206         dflt='Type carriage return to continue'
2207         . ./myread
2208         cat <<'EOH'
2209
2210 The prompter used in this script allows you to use shell variables and
2211 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2212 in the default answer, as if the default line was a set of arguments given to a
2213 script shell.  This means you may also use $* to repeat the whole default line,
2214 so you do not have to re-type everything to add something to the default.
2215
2216 Everytime there is a substitution, you will have to confirm.  If there is an
2217 error (e.g. an unmatched backtick), the default answer will remain unchanged
2218 and you will be prompted again.
2219
2220 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2221 the questions and use the computed defaults (or the previous answers if there
2222 was already a config.sh file). Type 'Configure -h' for a list of options.
2223 You may also start interactively and then answer '& -d' at any prompt to turn
2224 on the non-interactive behaviour for the remainder of the execution.
2225
2226 EOH
2227         . ./myread
2228         cat <<EOH
2229
2230 Much effort has been expended to ensure that this shell script will run on any
2231 Unix system.  If despite that it blows up on yours, your best bet is to edit
2232 Configure and run it again.  If you can't run Configure for some reason,
2233 you'll have to generate a config.sh file by hand.  Whatever problems you
2234 have, let me (perlbug@perl.org) know how I blew it.
2235
2236 This installation script affects things in two ways:
2237
2238 1) it may do direct variable substitutions on some of the files included
2239    in this kit.
2240 2) it builds a config.h file for inclusion in C programs.  You may edit
2241    any of these files as the need arises after running this script.
2242
2243 If you make a mistake on a question, there is no easy way to back up to it
2244 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2245 files.  Configure will offer to let you do this before it runs the SH files.
2246
2247 EOH
2248         dflt='Type carriage return to continue'
2249         . ./myread
2250         case "$firsttime" in
2251         true) echo $user >>../.config/instruct;;
2252         esac
2253 fi
2254
2255 : find out where common programs are
2256 echo " "
2257 echo "Locating common programs..." >&4
2258 cat <<EOSC >loc
2259 $startsh
2260 case \$# in
2261 0) exit 1;;
2262 esac
2263 thing=\$1
2264 shift
2265 dflt=\$1
2266 shift
2267 for dir in \$*; do
2268         case "\$thing" in
2269         .)
2270         if test -d \$dir/\$thing; then
2271                 echo \$dir
2272                 exit 0
2273         fi
2274         ;;
2275         *)
2276         for thisthing in \$dir/\$thing; do
2277                 : just loop through to pick last item
2278         done
2279         if test -f \$thisthing; then
2280                 echo \$thisthing
2281                 exit 0
2282         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2283                 echo \$thisthing
2284                 exit 0
2285         elif test -f \$dir/\$thing.exe; then
2286                 if test -n "$DJGPP"; then
2287                         echo \$dir/\$thing.exe
2288                 elif test "$eunicefix" != ":"; then
2289                         : on Eunice apparently
2290                         echo \$dir/\$thing
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 ar
2322 bison
2323 byacc
2324 cpp
2325 csh
2326 date
2327 egrep
2328 gmake
2329 gzip
2330 less
2331 ln
2332 make
2333 more
2334 nm
2335 nroff
2336 pg
2337 test
2338 uname
2339 zip
2340 "
2341 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2342 pth="$pth /lib /usr/lib"
2343 for file in $loclist; do
2344         eval xxx=\$$file
2345         case "$xxx" in
2346         /*|?:[\\/]*)
2347                 if test -f "$xxx"; then
2348                         : ok
2349                 else
2350                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2351                         xxx=`./loc $file $file $pth`
2352                 fi
2353                 ;;
2354         '') xxx=`./loc $file $file $pth`;;
2355         *) xxx=`./loc $xxx $xxx $pth`;;
2356         esac
2357         eval $file=$xxx$_exe
2358         eval _$file=$xxx
2359         case "$xxx" in
2360         /*)
2361                 echo $file is in $xxx.
2362                 ;;
2363         ?:[\\/]*)
2364                 echo $file is in $xxx.
2365                 ;;
2366         *)
2367                 echo "I don't know where '$file' is, and my life depends on it." >&4
2368                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2369                 exit 1
2370                 ;;
2371         esac
2372 done
2373 echo " "
2374 echo "Don't worry if any of the following aren't found..."
2375 say=offhand
2376 for file in $trylist; do
2377         eval xxx=\$$file
2378         case "$xxx" in
2379         /*|?:[\\/]*)
2380                 if test -f "$xxx"; then
2381                         : ok
2382                 else
2383                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2384                         xxx=`./loc $file $file $pth`
2385                 fi
2386                 ;;
2387         '') xxx=`./loc $file $file $pth`;;
2388         *) xxx=`./loc $xxx $xxx $pth`;;
2389         esac
2390         eval $file=$xxx$_exe
2391         eval _$file=$xxx
2392         case "$xxx" in
2393         /*)
2394                 echo $file is in $xxx.
2395                 ;;
2396         ?:[\\/]*)
2397                 echo $file is in $xxx.
2398                 ;;
2399         *)
2400                 echo "I don't see $file out there, $say."
2401                 say=either
2402                 ;;
2403         esac
2404 done
2405 case "$egrep" in
2406 egrep)
2407         echo "Substituting grep for egrep."
2408         egrep=$grep
2409         _egrep=$grep
2410         ;;
2411 esac
2412 case "$ln" in
2413 ln)
2414         echo "Substituting cp for ln."
2415         ln=$cp
2416         _ln=$cp
2417         ;;
2418 esac
2419 case "$make" in
2420 make)
2421         case "$gmake" in
2422         gmake)
2423         echo "I can't find make or gmake, and my life depends on it." >&4
2424         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2425         exit 1
2426         ;;
2427         esac
2428         ;;
2429 esac
2430 case "$gmake" in
2431 gmake)  ;;
2432 *)      # We can't have osname yet.
2433         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2434                 # Assume that gmake, if found, is definitely GNU make
2435                 # and prefer it over the system make.
2436                 echo "Substituting gmake for make."
2437                 make=$gmake
2438                 _make=$gmake
2439         fi
2440         ;;
2441 esac
2442 case "$test" in
2443 test)
2444         echo "Hopefully test is built into your sh."
2445         ;;
2446 *)
2447         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2448                 echo "Using the test built into your sh."
2449                 test=test
2450                 _test=test
2451         fi
2452         ;;
2453 esac
2454 case "$echo" in
2455 echo)
2456         echo "Hopefully echo is built into your sh."
2457         ;;
2458 '') ;;
2459 *)
2460         echo " "
2461 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2462         $echo $n "hi there$c" >foo1
2463         echo $n "hi there$c" >foo2
2464         if cmp foo1 foo2 >/dev/null 2>&1; then
2465                 echo "They are compatible.  In fact, they may be identical."
2466         else
2467                 case "$n" in
2468                 '-n') n='' c='\c';;
2469                 *) n='-n' c='';;
2470                 esac
2471                 cat <<FOO
2472 They are not compatible!  You are probably running ksh on a non-USG system.
2473 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2474 have echo built in and we may have to run some Bourne shell scripts.  That
2475 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2476
2477 FOO
2478                 $echo $n "The star should be here-->$c"
2479                 $echo "*"
2480         fi
2481         $rm -f foo1 foo2
2482         ;;
2483 esac
2484
2485 # This question was auctioned at YAPC::Europe-2007 in Vienna
2486 # I never promised you could answer it. I only auctioned the question.
2487 cat <<FOO
2488 The following message is sponsored by
2489
2490   Dresden.pm<--The stars should be here.
2491
2492 Dear Perl user, system administrator or package
2493 maintainer, the Perl community sends greetings to
2494 you. Do you (emblematical) greet back [Y/n]? n
2495
2496 FOO
2497
2498 : Check what type of C compiler we use
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 : Make symlinks util
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 : Check for Cross-Compilation
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 : allow them to override the AFS root
3904 case "$afsroot" in
3905 '')     afsroot=/afs ;;
3906 *)      afsroot=$afsroot ;;
3907 esac
3908
3909 : is AFS running?
3910 echo " "
3911 case "$afs" in
3912 $define|true)   afs=true ;;
3913 $undef|false)   afs=false ;;
3914 *)      if $test -d $afsroot; then
3915                 afs=true
3916         else
3917                 afs=false
3918         fi
3919         ;;
3920 esac
3921 if $afs; then
3922         echo "AFS may be running... I'll be extra cautious then..." >&4
3923 else
3924         echo "AFS does not seem to be running..." >&4
3925 fi
3926
3927 : determine installation prefix for where package is to be installed.
3928 if $afs; then 
3929 $cat <<EOM
3930
3931 Since you are running AFS, I need to distinguish the directory in which
3932 files will reside from the directory in which they are installed (and from
3933 which they are presumably copied to the former directory by occult means).
3934
3935 EOM
3936         case "$installprefix" in
3937         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3938         *) dflt="$installprefix";;
3939         esac
3940 else
3941 $cat <<EOM
3942
3943 In some special cases, particularly when building $package for distribution,
3944 it is convenient to distinguish the directory in which files should be
3945 installed from the directory ($prefix) in which they will
3946 eventually reside.  For most users, these two directories are the same.
3947
3948 EOM
3949         case "$installprefix" in
3950         '') dflt=$prefix ;;
3951         *) dflt=$installprefix;;
3952         esac
3953 fi
3954 fn=d~
3955 rp='What installation prefix should I use for installing files?'
3956 . ./getfile
3957 installprefix="$ans"
3958 installprefixexp="$ansexp"
3959
3960 : Perform the prefixexp/installprefixexp correction if necessary
3961 cat <<EOS >installprefix
3962 $startsh
3963 EOS
3964 cat <<'EOSC' >>installprefix
3965 : Change installation prefix, if necessary.
3966 if $test X"$prefix" != X"$installprefix"; then
3967     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3968 else
3969     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3970 fi
3971 EOSC
3972 chmod +x installprefix
3973 $eunicefix installprefix
3974
3975 : Set variables such as privlib and privlibexp from the output of ./getfile
3976 : performing the prefixexp/installprefixexp correction if necessary.
3977 cat <<EOS >setprefixvar
3978 $startsh
3979 EOS
3980 cat <<'EOSC' >>setprefixvar
3981 eval "${prefixvar}=\"\$ans\""
3982 eval "${prefixvar}exp=\"\$ansexp\""
3983 . ./installprefix
3984 EOSC
3985 chmod +x setprefixvar
3986 $eunicefix setprefixvar
3987
3988 : set up the script used to warn in case of inconsistency
3989 cat <<EOS >whoa
3990 $startsh
3991 EOS
3992 cat <<'EOSC' >>whoa
3993 dflt=y
3994 case "$hint" in
3995     recommended)
3996         case "$hintfile" in
3997         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3998                 ;;
3999         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4000                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4001                 ;;
4002         esac
4003         ;;
4004     *)  echo " "
4005         echo "*** WHOA THERE!!! ***" >&4
4006         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4007         ;;
4008 esac
4009 rp="    Keep the $hint value?"
4010 . ./myread
4011 case "$ans" in
4012 y) td=$was; tu=$was;;
4013 esac
4014 EOSC
4015
4016 : function used to set '$1' to '$val'
4017 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4018 case "$val$was" in
4019 $define$undef) . ./whoa; eval "$var=\$td";;
4020 $undef$define) . ./whoa; eval "$var=\$tu";;
4021 *) eval "$var=$val";;
4022 esac'
4023
4024 : Check is we will use socks
4025 case "$usesocks" in
4026 $define|true|[yY]*)     dflt='y';;
4027 *) dflt='n';;
4028 esac
4029 cat <<EOM
4030
4031 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4032 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4033 to use the PerlIO abstraction layer, this will be implicitly selected.
4034
4035 If this doesn't make any sense to you, just accept the default '$dflt'.
4036 EOM
4037 rp='Build Perl for SOCKS?'
4038 . ./myread
4039 case "$ans" in
4040 y|Y)    val="$define" ;;
4041 *)      val="$undef" ;;
4042 esac
4043 set usesocks
4044 eval $setvar
4045
4046 case "$usesocks" in
4047 $define|true|[yY]*) useperlio="$define";;
4048 esac
4049
4050 : Check if we want perlio
4051 case "$useperlio" in
4052 $define|true|[yY]*|'')  dflt='y';;
4053 *) dflt='n';;
4054 esac
4055 cat <<EOM
4056
4057 Previous version of $package used the standard IO mechanisms as
4058 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4059 alternate IO mechanisms via the PerlIO abstraction layer, but the
4060 stdio mechanism is still available if needed.  The abstraction layer
4061 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4062 Using PerlIO with sfio may cause problems with some extension modules.
4063
4064 If this doesn't make any sense to you, just accept the default '$dflt'.
4065 EOM
4066 rp='Use the PerlIO abstraction layer?'
4067 . ./myread
4068 case "$ans" in
4069 y|Y)
4070         val="$define"
4071         ;;
4072 *)
4073         echo "Ok, doing things the stdio way."
4074         val="$undef"
4075         ;;
4076 esac
4077 set useperlio
4078 eval $setvar
4079
4080 case "$usesocks" in
4081 $define|true|[yY]*)
4082         case "$useperlio" in
4083         $define|true|[yY]*) ;;
4084         *)      cat >&4 <<EOM
4085
4086 You are using the SOCKS proxy protocol library which means that you
4087 should also use the PerlIO layer.  You may be headed for trouble.
4088
4089 EOM
4090                 ;;
4091         esac
4092         ;;
4093 esac
4094
4095 : get the patchlevel
4096 echo " "
4097 echo "Getting the current patchlevel..." >&4
4098 if $test -r $rsrc/patchlevel.h;then
4099         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4100         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4101         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4102         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4103         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4104         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4105         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4106 else
4107         revision=0
4108         patchlevel=0
4109         subversion=0
4110         api_revision=0
4111         api_version=0
4112         api_subversion=0
4113         perl_patchlevel=0
4114         $echo "(You do not have patchlevel.h.  Eek.)"
4115 fi
4116 if $test -r $rsrc/.patch ; then
4117         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4118                 perl_patchlevel=`cat $rsrc/.patch`
4119         fi
4120 fi
4121 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4122 version_patchlevel_string="version $patchlevel subversion $subversion"
4123 case "$perl_patchlevel" in
4124 0|'') ;;
4125 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4126 esac
4127
4128 $echo "(You have $package $version_patchlevel_string.)"
4129
4130 case "$osname" in
4131 dos|vms)
4132         : XXX Should be a Configure test for double-dots in filenames.
4133         version=`echo $revision $patchlevel $subversion | \
4134                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4135         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4136                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4137         ;;
4138 *)
4139         version=`echo $revision $patchlevel $subversion | \
4140                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4141         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4142                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4143         ;;
4144 esac
4145 : Special case the 5.005_xx maintenance series, which used 5.005
4146 : without any subversion label as a subdirectory in $sitelib
4147 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4148         api_versionstring='5.005'
4149 fi
4150
4151 : Do we want threads support and if so, what type
4152 case "$usethreads" in
4153 $define|true|[yY]*)     dflt='y';;
4154 *)     # Catch case where user specified ithreads or 5005threads but
4155        # forgot -Dusethreads (A.D. 4/2002)
4156        case "$useithreads$use5005threads" in
4157        *$define*)
4158                 case "$useperlio" in
4159                 "$define")      dflt='y' ;;
4160                 *)              dflt='n' ;;
4161                 esac
4162                 ;;
4163        *)       dflt='n';;
4164        esac
4165        ;;
4166 esac
4167 cat <<EOM
4168
4169 Perl can be built to take advantage of threads on some systems.
4170 To do so, Configure can be run with -Dusethreads.
4171
4172 Note that Perl built with threading support runs slightly slower
4173 and uses more memory than plain Perl. The current implementation
4174 is believed to be stable, but it is fairly new, and so should be
4175 treated with caution.
4176
4177 If this doesn't make any sense to you, just accept the default '$dflt'.
4178 EOM
4179 rp='Build a threading Perl?'
4180 . ./myread
4181 case "$ans" in
4182 y|Y)    val="$define" ;;
4183 *)      val="$undef" ;;
4184 esac
4185 set usethreads
4186 eval $setvar
4187
4188 if $test $patchlevel -lt 9; then
4189     case "$usethreads" in
4190     $define)
4191         $cat <<EOM
4192
4193 Since release 5.6, Perl has had two different threading implementations,
4194 the newer interpreter-based version (ithreads) with one interpreter per
4195 thread, and the older 5.005 version (5005threads).
4196 The 5005threads version is effectively unmaintained and will probably be
4197 removed in Perl 5.10, so there should be no need to build a Perl using it
4198 unless needed for backwards compatibility with some existing 5.005threads
4199 code.
4200
4201 EOM
4202         : Default to ithreads unless overridden on command line or with
4203         : old config.sh
4204         dflt='y'
4205         case "$use5005threads" in
4206                 $define|true|[yY]*) dflt='n';;
4207         esac
4208         case "$useithreads" in
4209                 $undef|false|[nN]*) dflt='n';;
4210         esac
4211         rp='Use the newer interpreter-based ithreads?'
4212         . ./myread
4213         case "$ans" in
4214         y|Y)    val="$define" ;;
4215         *)      val="$undef" ;;
4216         esac
4217         set useithreads
4218         eval $setvar
4219         : Now set use5005threads to the opposite value.
4220         case "$useithreads" in
4221         $define) val="$undef" ;;
4222         *) val="$define" ;;
4223         esac
4224         set use5005threads
4225         eval $setvar
4226         ;;
4227     *)
4228         useithreads="$undef"
4229         use5005threads="$undef"
4230         ;;
4231     esac
4232
4233     case "$useithreads$use5005threads" in
4234     "$define$define")
4235         $cat >&4 <<EOM
4236
4237 You cannot have both the ithreads and the 5.005 threads enabled
4238 at the same time.  Disabling the 5.005 threads since they are
4239 much less stable than the ithreads.
4240
4241 EOM
4242         use5005threads="$undef"
4243         ;;
4244     esac
4245
4246 else
4247 : perl-5.9.x and later
4248
4249     if test X"$usethreads" = "X$define"; then
4250         case "$use5005threads" in
4251             $define|true|[yY]*)
4252                 $cat >&4 <<EOM
4253
4254 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4255
4256 EOM
4257             ;;
4258         esac
4259     fi
4260
4261     use5005threads="$undef"
4262     useithreads="$usethreads"
4263 fi
4264
4265 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4266         cat >&4 <<EOF
4267 ***
4268 *** To build with ithreads you must also use the PerlIO layer.
4269 *** Cannot continue, aborting.
4270 ***
4271 EOF
4272         exit 1
4273 fi
4274
4275 case "$d_oldpthreads" in
4276 '')     : Configure tests would be welcome here.  For now, assume undef.
4277         val="$undef" ;;
4278 *)      val="$d_oldpthreads" ;;
4279 esac
4280 set d_oldpthreads
4281 eval $setvar
4282
4283
4284 : Look for a hint-file generated 'call-back-unit'.  If the
4285 : user has specified that a threading perl is to be built,
4286 : we may need to set or change some other defaults.
4287 if $test -f usethreads.cbu; then
4288     echo "Your platform has some specific hints regarding threaded builds, using them..."
4289     . ./usethreads.cbu
4290 else
4291     case "$usethreads" in
4292         "$define"|true|[yY]*)
4293                 $cat <<EOM
4294 (Your platform does not have any specific hints for threaded builds.
4295  Assuming POSIX threads, then.)
4296 EOM
4297         ;;
4298     esac
4299 fi
4300
4301 : Check if multiplicity is required
4302 cat <<EOM
4303
4304 Perl can be built so that multiple Perl interpreters can coexist
4305 within the same Perl executable.
4306 EOM
4307
4308 case "$useithreads" in
4309 $define)
4310         cat <<EOM
4311 This multiple interpreter support is required for interpreter-based threads.
4312 EOM
4313         val="$define"
4314         ;;
4315 *)      case "$usemultiplicity" in
4316         $define|true|[yY]*)     dflt='y';;
4317         *) dflt='n';;
4318         esac
4319         echo " "
4320         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4321         rp='Build Perl for multiplicity?'
4322         . ./myread
4323         case "$ans" in
4324         y|Y)    val="$define" ;;
4325         *)      val="$undef" ;;
4326         esac
4327         ;;
4328 esac
4329 set usemultiplicity
4330 eval $setvar
4331
4332 : Check if morebits is requested
4333 case "$usemorebits" in
4334 "$define"|true|[yY]*)
4335         use64bitint="$define"
4336         uselongdouble="$define"
4337         usemorebits="$define"
4338         ;;
4339 *)      usemorebits="$undef"
4340         ;;
4341 esac
4342
4343 : Determine the C compiler to be used
4344 echo " "
4345 case "$cc" in
4346 '') dflt=cc;;
4347 *) dflt="$cc";;
4348 esac
4349 rp="Use which C compiler?"
4350 . ./myread
4351 cc="$ans"
4352
4353 : See whether they have no cc but they do have gcc
4354 . ./trygcc
4355 if $test -f cc.cbu; then
4356     . ./cc.cbu
4357 fi
4358 . ./checkcc
4359
4360 : make some quick guesses about what we are up against
4361 echo " "
4362 $echo $n "Hmm...  $c"
4363 echo exit 1 >bsd
4364 echo exit 1 >usg
4365 echo exit 1 >v7
4366 echo exit 1 >osf1
4367 echo exit 1 >eunice
4368 echo exit 1 >xenix
4369 echo exit 1 >venix
4370 echo exit 1 >os2
4371 d_bsd="$undef"
4372 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4373 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4374 then
4375         echo "Looks kind of like an OSF/1 system, but we'll see..."
4376         echo exit 0 >osf1
4377 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4378         xxx=`./loc addbib blurfl $pth`
4379         if $test -f $xxx; then
4380         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4381                 echo exit 0 >bsd
4382                 echo exit 0 >usg
4383         else
4384                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4385                         echo "Looks kind of like an extended USG system, but we'll see..."
4386                 else
4387                         echo "Looks kind of like a USG system, but we'll see..."
4388                 fi
4389                 echo exit 0 >usg
4390         fi
4391 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4392         echo "Looks kind of like a BSD system, but we'll see..."
4393         d_bsd="$define"
4394         echo exit 0 >bsd
4395 else
4396         echo "Looks kind of like a Version 7 system, but we'll see..."
4397         echo exit 0 >v7
4398 fi
4399 case "$eunicefix" in
4400 *unixtovms*)
4401         $cat <<'EOI'
4402 There is, however, a strange, musty smell in the air that reminds me of
4403 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4404 EOI
4405         echo exit 0 >eunice
4406         d_eunice="$define"
4407 : it so happens the Eunice I know will not run shell scripts in Unix format
4408         ;;
4409 *)
4410         echo " "
4411         echo "Congratulations.  You aren't running Eunice."
4412         d_eunice="$undef"
4413         ;;
4414 esac
4415 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4416 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4417 : semicolon as a patch separator
4418 case "$p_" in
4419 :) ;;
4420 *)
4421         $cat <<'EOI'
4422 I have the feeling something is not exactly right, however...don't tell me...
4423 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4424 (Or you may be running DOS with DJGPP.)
4425 EOI
4426         echo exit 0 >os2
4427         ;;
4428 esac
4429 if test -f /xenix; then
4430         echo "Actually, this looks more like a XENIX system..."
4431         echo exit 0 >xenix
4432         d_xenix="$define"
4433 else
4434         echo " "
4435         echo "It's not Xenix..."
4436         d_xenix="$undef"
4437 fi
4438 chmod +x xenix
4439 $eunicefix xenix
4440 if test -f /venix; then
4441         echo "Actually, this looks more like a VENIX system..."
4442         echo exit 0 >venix
4443 else
4444         echo " "
4445         if ./xenix; then
4446                 : null
4447         else
4448                 echo "Nor is it Venix..."
4449         fi
4450 fi
4451 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4452 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4453 $rm -f foo
4454
4455 : Check if we are using GNU gcc and what its version is
4456 echo " "
4457 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4458 $cat >try.c <<EOM
4459 #include <stdio.h>
4460 int main() {
4461 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4462 #ifdef __VERSION__
4463         printf("%s\n", __VERSION__);
4464 #else
4465         printf("%s\n", "1");
4466 #endif
4467 #endif
4468         return(0);
4469 }
4470 EOM
4471 if $cc -o try $ccflags $ldflags try.c; then
4472         gccversion=`$run ./try`
4473         case "$gccversion" in
4474         '') echo "You are not using GNU cc." ;;
4475         *)  echo "You are using GNU cc $gccversion."
4476             ccname=gcc
4477             ;;
4478         esac
4479 else
4480         echo " "
4481         echo "*** WHOA THERE!!! ***" >&4
4482         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4483         case "$knowitall" in
4484         '')
4485         echo "    You'd better start hunting for one and let me know about it." >&4
4486                 exit 1
4487                 ;;
4488         esac
4489 fi
4490 $rm -f try try.*
4491 case "$gccversion" in
4492 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4493 esac
4494 case "$gccversion" in
4495 '') gccosandvers='' ;;
4496 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4497    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4498    gccshortvers=''
4499    case "$gccosandvers" in
4500    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4501    $osname$osvers) ;; # looking good
4502    $osname*) cat <<EOM >&4
4503
4504 *** WHOA THERE!!! ***
4505
4506     Your gcc has not been compiled for the exact release of
4507     your operating system ($gccosandvers versus $osname$osvers).
4508
4509     In general it is a good idea to keep gcc synchronized with
4510     the operating system because otherwise serious problems
4511     may ensue when trying to compile software, like Perl.
4512
4513     I'm trying to be optimistic here, though, and will continue.
4514     If later during the configuration and build icky compilation
4515     problems appear (headerfile conflicts being the most common
4516     manifestation), I suggest reinstalling the gcc to match
4517     your operating system release.
4518
4519 EOM
4520       ;;
4521    *) gccosandvers='' ;; # failed to parse, better be silent
4522    esac
4523    ;;
4524 esac
4525 case "$ccname" in
4526 '') ccname="$cc" ;;
4527 esac
4528
4529 # gcc 3.* complain about adding -Idirectories that they already know about,
4530 # so we will take those off from locincpth.
4531 case "$gccversion" in
4532 3*)
4533     echo "main(){}">try.c
4534     for incdir in $locincpth; do
4535        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4536              grep '^c[cp]p*[01]: warning: changing search order '`
4537        if test "X$warn" != X; then
4538            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4539        fi
4540     done
4541     $rm -f try try.*
4542 esac
4543
4544 : What should the include directory be ?
4545 echo " "
4546 $echo $n "Hmm...  $c"
4547 dflt='/usr/include'
4548 incpath=''
4549 mips_type=''
4550 if $test -f /bin/mips && /bin/mips; then
4551         echo "Looks like a MIPS system..."
4552         $cat >usr.c <<'EOCP'
4553 #ifdef SYSTYPE_BSD43
4554 /bsd43
4555 #endif
4556 EOCP
4557         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4558                 dflt='/bsd43/usr/include'
4559                 incpath='/bsd43'
4560                 mips_type='BSD 4.3'
4561         else
4562                 mips_type='System V'
4563         fi
4564         $rm -f usr.c usr.out
4565         echo "and you're compiling with the $mips_type compiler and libraries."
4566         xxx_prompt=y
4567         echo "exit 0" >mips
4568 else
4569         echo "Doesn't look like a MIPS system."
4570         xxx_prompt=n
4571         echo "exit 1" >mips
4572 fi
4573 chmod +x mips
4574 $eunicefix mips
4575 case "$usrinc" in
4576 '') ;;
4577 *) dflt="$usrinc";;
4578 esac
4579 case "$xxx_prompt" in
4580 y)      fn=d/
4581         echo " "
4582         rp='Where are the include files you want to use?'
4583         . ./getfile
4584         usrinc="$ans"
4585         ;;
4586 *)      usrinc="$dflt"
4587         ;;
4588 esac
4589
4590 : see how we invoke the C preprocessor
4591 echo " "
4592 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4593 cat <<'EOT' >testcpp.c
4594 #define ABC abc
4595 #define XYZ xyz
4596 ABC.XYZ
4597 EOT
4598 cd ..
4599 if test ! -f cppstdin; then
4600         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4601                 # AIX cc -E doesn't show the absolute headerfile
4602                 # locations but we'll cheat by using the -M flag.
4603                 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
4604         else
4605                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4606         fi
4607 else
4608         echo "Keeping your $hint cppstdin wrapper."
4609 fi
4610 chmod 755 cppstdin
4611 wrapper=`pwd`/cppstdin
4612 ok='false'
4613 cd UU
4614
4615 if $test "X$cppstdin" != "X" && \
4616         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4617         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4618 then
4619         echo "You used to use $cppstdin $cppminus so we'll use that again."
4620         case "$cpprun" in
4621         '') echo "But let's see if we can live without a wrapper..." ;;
4622         *)
4623                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4624                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4625                 then
4626                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4627                         ok='true'
4628                 else
4629                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4630                 fi
4631                 ;;
4632         esac
4633 else
4634         case "$cppstdin" in
4635         '') ;;
4636         *)
4637                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4638                 ;;
4639         esac
4640 fi
4641
4642 if $ok; then
4643         : nothing
4644 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4645         $cc -E <testcpp.c >testcpp.out 2>&1; \
4646         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4647         echo "Yup, it does."
4648         x_cpp="$cc -E"
4649         x_minus='';
4650 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4651         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4652         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4653         echo "Yup, it does."
4654         x_cpp="$cc -E"
4655         x_minus='-';
4656 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4657         $cc -P <testcpp.c >testcpp.out 2>&1; \
4658         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4659         echo "Yipee, that works!"
4660         x_cpp="$cc -P"
4661         x_minus='';
4662 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4663         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4664         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4665         echo "At long last!"
4666         x_cpp="$cc -P"
4667         x_minus='-';
4668 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4669         $cpp <testcpp.c >testcpp.out 2>&1; \
4670         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4671         echo "It works!"
4672         x_cpp="$cpp"
4673         x_minus='';
4674 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4675         $cpp - <testcpp.c >testcpp.out 2>&1; \
4676         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4677         echo "Hooray, it works!  I was beginning to wonder."
4678         x_cpp="$cpp"
4679         x_minus='-';
4680 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4681         $wrapper <testcpp.c >testcpp.out 2>&1; \
4682         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4683         x_cpp="$wrapper"
4684         x_minus=''
4685         echo "Eureka!"
4686 else
4687         dflt=''
4688         rp="No dice.  I can't find a C preprocessor.  Name one:"
4689         . ./myread
4690         x_cpp="$ans"
4691         x_minus=''
4692         $x_cpp <testcpp.c >testcpp.out 2>&1
4693         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4694                 echo "OK, that will do." >&4
4695         else
4696 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4697                 exit 1
4698         fi
4699 fi
4700
4701 case "$ok" in
4702 false)
4703         cppstdin="$x_cpp"
4704         cppminus="$x_minus"
4705         cpprun="$x_cpp"
4706         cpplast="$x_minus"
4707         set X $x_cpp
4708         shift
4709         case "$1" in
4710         "$cpp")
4711                 echo "Perhaps can we force $cc -E using a wrapper..."
4712                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4713                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4714                 then
4715                         echo "Yup, we can."
4716                         cppstdin="$wrapper"
4717                         cppminus='';
4718                 else
4719                         echo "Nope, we'll have to live without it..."
4720                 fi
4721                 ;;
4722         esac
4723         case "$cpprun" in
4724         "$wrapper")
4725                 cpprun=''
4726                 cpplast=''
4727                 ;;
4728         esac
4729         ;;
4730 esac
4731
4732 case "$cppstdin" in
4733 "$wrapper"|'cppstdin') ;;
4734 *) $rm -f $wrapper;;
4735 esac
4736 $rm -f testcpp.c testcpp.out
4737
4738 : Set private lib path
4739 case "$plibpth" in
4740 '') if ./mips; then
4741                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4742         fi;;
4743 esac
4744 case "$libpth" in
4745 ' ') dlist='';;
4746 '') dlist="$loclibpth $plibpth $glibpth";;
4747 *) dlist="$libpth";;
4748 esac
4749
4750 : Now check and see which directories actually exist, avoiding duplicates
4751 libpth=''
4752 for xxx in $dlist
4753 do
4754     if $test -d $xxx; then
4755                 case " $libpth " in
4756                 *" $xxx "*) ;;
4757                 *) libpth="$libpth $xxx";;
4758                 esac
4759     fi
4760 done
4761 $cat <<'EOM'
4762
4763 Some systems have incompatible or broken versions of libraries.  Among
4764 the directories listed in the question below, please remove any you
4765 know not to be holding relevant libraries, and add any that are needed.
4766 Say "none" for none.
4767
4768 EOM
4769 case "$libpth" in
4770 '') dflt='none';;
4771 *)
4772         set X $libpth
4773         shift
4774         dflt=${1+"$@"}
4775         ;;
4776 esac
4777 rp="Directories to use for library searches?"
4778 . ./myread
4779 case "$ans" in
4780 none) libpth=' ';;
4781 *) libpth="$ans";;
4782 esac
4783
4784 : compute shared library extension
4785 case "$so" in
4786 '')
4787         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4788                 dflt='sl'
4789         else
4790                 dflt='so'
4791         fi
4792         ;;
4793 *) dflt="$so";;
4794 esac
4795 $cat <<EOM
4796
4797 On some systems, shared libraries may be available.  Answer 'none' if
4798 you want to suppress searching of shared libraries for the remainder
4799 of this configuration.
4800
4801 EOM
4802 rp='What is the file extension used for shared libraries?'
4803 . ./myread
4804 so="$ans"
4805
4806 : Define several unixisms.
4807 : Hints files or command line option can be used to override them.
4808 : The convoluted testing is in case hints files set either the old
4809 : or the new name.
4810 case "$_exe" in
4811 '')     case "$exe_ext" in
4812         '')     ;;
4813         *)      _exe="$exe_ext" ;;
4814         esac
4815         ;;
4816 esac
4817 case "$_a" in
4818 '')     case "$lib_ext" in
4819     '') _a='.a';;
4820         *)      _a="$lib_ext" ;;
4821         esac
4822         ;;
4823 esac
4824 case "$_o" in
4825 '') case "$obj_ext" in
4826         '')     _o='.o';;
4827         *)      _o="$obj_ext";;
4828         esac
4829         ;;
4830 esac
4831 case "$p_" in
4832 '') case "$path_sep" in
4833         '')     p_=':';;
4834         *)      p_="$path_sep";;
4835         esac
4836         ;;
4837 esac
4838 exe_ext=$_exe
4839 lib_ext=$_a
4840 obj_ext=$_o
4841 path_sep=$p_
4842
4843 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4844
4845 : Which makefile gets called first.  This is used by make depend.
4846 case "$firstmakefile" in
4847 '') firstmakefile='makefile';;
4848 esac
4849
4850 : Check for uselongdouble support
4851 case "$ccflags" in
4852 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4853 esac
4854
4855 case "$uselongdouble" in
4856 $define|true|[yY]*)     dflt='y';;
4857 *) dflt='n';;
4858 esac
4859 cat <<EOM
4860
4861 Perl can be built to take advantage of long doubles which
4862 (if available) may give more accuracy and range for floating point numbers.
4863
4864 If this doesn't make any sense to you, just accept the default '$dflt'.
4865 EOM
4866 rp='Try to use long doubles if available?'
4867 . ./myread
4868 case "$ans" in
4869 y|Y)    val="$define"   ;;
4870 *)      val="$undef"    ;;
4871 esac
4872 set uselongdouble
4873 eval $setvar
4874
4875 case "$uselongdouble" in
4876 true|[yY]*) uselongdouble="$define" ;;
4877 esac
4878
4879 : Look for a hint-file generated 'call-back-unit'.  If the
4880 : user has specified that long doubles should be used,
4881 : we may need to set or change some other defaults.
4882 if $test -f uselongdouble.cbu; then
4883     echo "Your platform has some specific hints regarding long doubles, using them..."
4884     . ./uselongdouble.cbu
4885 else
4886     case "$uselongdouble" in
4887         $define)
4888                 $cat <<EOM
4889 (Your platform does not have any specific hints for long doubles.)
4890 EOM
4891         ;;
4892     esac
4893 fi
4894
4895 : Looking for optional libraries
4896 echo " "
4897 echo "Checking for optional libraries..." >&4
4898 case "$libs" in
4899 ' '|'') dflt='';;
4900 *) dflt="$libs";;
4901 esac
4902 case "$libswanted" in
4903 '') libswanted='c_s';;
4904 esac
4905 case "$usesocks" in
4906 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4907 esac
4908 libsfound=''
4909 libsfiles=''
4910 libsdirs=''
4911 libspath=''
4912 for thisdir in $libpth $xlibpth; do
4913   test -d $thisdir && libspath="$libspath $thisdir"
4914 done
4915 for thislib in $libswanted; do
4916         for thisdir in $libspath; do
4917             xxx=''
4918             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4919                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
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.$so
4925                 $test -f "$xxx" && eval $libscheck
4926                 $test -f "$xxx" && libstyle=shared
4927             fi
4928             if test ! -f "$xxx"; then
4929                 xxx=$thisdir/lib$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/$thislib$_a
4935                 $test -f "$xxx" && eval $libscheck
4936                 $test -f "$xxx" && libstyle=static
4937             fi
4938             if test ! -f "$xxx"; then
4939                 xxx=$thisdir/lib${thislib}_s$_a
4940                 $test -f "$xxx" && eval $libscheck
4941                 $test -f "$xxx" && libstyle=static
4942                 $test -f "$xxx" && thislib=${thislib}_s
4943             fi
4944             if test ! -f "$xxx"; then
4945                 xxx=$thisdir/Slib$thislib$_a
4946                 $test -f "$xxx" && eval $libscheck
4947                 $test -f "$xxx" && libstyle=static
4948             fi
4949             if $test -f "$xxx"; then
4950                 case "$libstyle" in
4951                 shared) echo "Found -l$thislib (shared)." ;;
4952                 static) echo "Found -l$thislib." ;;
4953                 *)      echo "Found -l$thislib ($libstyle)." ;;
4954                 esac
4955                 case " $dflt " in
4956                 *"-l$thislib "*);;
4957                 *) dflt="$dflt -l$thislib"
4958                    libsfound="$libsfound $xxx"
4959                    yyy=`basename $xxx`
4960                    libsfiles="$libsfiles $yyy"
4961                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4962                    case " $libsdirs " in
4963                    *" $yyy "*) ;;
4964                    *) libsdirs="$libsdirs $yyy" ;;
4965                    esac
4966                    ;;
4967                 esac
4968                 break
4969             fi
4970         done
4971         if $test ! -f "$xxx"; then
4972             echo "No -l$thislib."
4973         fi
4974 done
4975 set X $dflt
4976 shift
4977 dflt="$*"
4978 case "$libs" in
4979 '') dflt="$dflt";;
4980 *) dflt="$libs";;
4981 esac
4982 case "$dflt" in
4983 ' '|'') dflt='none';;
4984 esac
4985
4986 $cat <<EOM
4987
4988 In order to compile $package on your machine, a number of libraries
4989 are usually needed.  Include any other special libraries here as well.
4990 Say "none" for none.  The default list is almost always right.
4991 EOM
4992
4993 echo " "
4994 rp="What libraries to use?"
4995 . ./myread
4996 case "$ans" in
4997 none) libs=' ';;
4998 *) libs="$ans";;
4999 esac
5000
5001 : determine optimization, if desired, or use for debug flag also
5002 case "$optimize" in
5003 ' '|$undef) dflt='none';;
5004 '') dflt='-O';;
5005 *) dflt="$optimize";;
5006 esac
5007 $cat <<EOH
5008
5009 By default, $package compiles with the -O flag to use the optimizer.
5010 Alternately, you might want to use the symbolic debugger, which uses
5011 the -g flag (on traditional Unix systems).  Either flag can be
5012 specified here.  To use neither flag, specify the word "none".
5013
5014 EOH
5015 rp="What optimizer/debugger flag should be used?"
5016 . ./myread
5017 optimize="$ans"
5018 case "$optimize" in
5019 'none') optimize=" ";;
5020 esac
5021
5022 : Check what DEBUGGING is required from the command line
5023 : -DEBUGGING      or -DDEBUGGING or
5024 : -DEBUGGING=both                       = -g + -DDEBUGGING
5025 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5026 : -DEBUGGING=none or -UDEBUGGING        =
5027 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5028 case "$EBUGGING" in
5029 '')     ;;
5030 *)      DEBUGGING=$EBUGGING ;;
5031 esac
5032
5033 case "$DEBUGGING" in
5034 -g|both|$define)
5035     case "$optimize" in
5036         *-g*) ;;
5037         *)    optimize="$optimize -g" ;;
5038     esac ;;
5039 none|$undef)
5040     case "$optimize" in
5041         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5042                 shift
5043                 optimize="$*"
5044                 ;;
5045     esac ;;
5046 esac
5047
5048 dflt=''
5049 case "$DEBUGGING" in
5050 both|$define) dflt='-DDEBUGGING'
5051 esac
5052
5053 : argument order is deliberate, as the flag will start with - which set could
5054 : think is an option
5055 checkccflag='check=$1; flag=$2; callback=$3;
5056 echo " ";
5057 echo "Checking if your compiler accepts $flag" 2>&1;
5058 echo "int main(void) { return 0; }" > gcctest.c;
5059 if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
5060     echo "Yes, it does." 2>&1;
5061     if $test -s gcctest.out ; then
5062         echo "But your platform does not like it:";
5063         cat gcctest.out;
5064     else
5065         case "$ccflags" in
5066         *$check*)
5067             echo "Leaving current flags $ccflags alone." 2>&1
5068             ;;
5069         *) dflt="$dflt $flag";
5070             eval $callback
5071             ;;
5072         esac
5073     fi
5074 else
5075     echo "Nope, it does not, but that is ok." 2>&1;
5076 fi
5077 '
5078
5079 : We will not override a previous value, but we might want to
5080 : augment a hint file
5081 case "$hint" in
5082 default|recommended)
5083         case "$gccversion" in
5084         1*) dflt="$dflt -fpcc-struct-return" ;;
5085         esac
5086         case "$optimize:$DEBUGGING" in
5087         *-g*:old) dflt="$dflt -DDEBUGGING";;
5088         esac
5089         case "$gccversion" in
5090         2*) if $test -d /etc/conf/kconfig.d &&
5091                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5092                 then
5093                         # Interactive Systems (ISC) POSIX mode.
5094                         dflt="$dflt -posix"
5095                 fi
5096                 ;;
5097         esac
5098         case "$gccversion" in
5099         1*) ;;
5100         2.[0-8]*) ;;
5101         ?*)     set strict-aliasing -fno-strict-aliasing
5102                 eval $checkccflag
5103                 ;;
5104         esac
5105         # For gcc, adding -pipe speeds up compilations for some, but apparently
5106         # some assemblers can't read from stdin.  (It also slows down compilations
5107         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5108         case "$gccversion" in
5109         ?*)     set pipe -pipe
5110                 eval $checkccflag
5111                 ;;
5112         esac
5113
5114         # on x86_64 (at least) we require an extra library (libssp) in the
5115         # link command line. This library is not named, so I infer that it is
5116         # an implementation detail that may change. Hence the safest approach
5117         # is to add the flag to the flags passed to the compiler at link time,
5118         # as that way the compiler can do the right implementation dependant
5119         # thing. (NWC)
5120         case "$gccversion" in
5121         ?*)     set stack-protector -fstack-protector 'ldflags="$ldflags -fstack-protector"'
5122                 eval $checkccflag
5123                 ;;
5124         esac
5125         ;;
5126 esac
5127
5128 case "$mips_type" in
5129 *BSD*|'') inclwanted="$locincpth $usrinc";;
5130 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5131 esac
5132 for thisincl in $inclwanted; do
5133         if $test -d $thisincl; then
5134                 if $test x$thisincl != x$usrinc; then
5135                         case "$dflt" in
5136                         *" -I$thisincl "*);;
5137                         *) dflt="$dflt -I$thisincl ";;
5138                         esac
5139                 fi
5140         fi
5141 done
5142
5143 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5144         xxx=true;
5145 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5146         xxx=true;
5147 else
5148         xxx=false;
5149 fi;
5150 if $xxx; then
5151         case "$dflt" in
5152         *$2*);;
5153         *) dflt="$dflt -D$2";;
5154         esac;
5155 fi'
5156
5157 set signal.h LANGUAGE_C; eval $inctest
5158
5159 case "$usesocks" in
5160 $define)
5161         ccflags="$ccflags -DSOCKS"
5162         ;;
5163 esac
5164
5165 case "$hint" in
5166 default|recommended) dflt="$ccflags $dflt" ;;
5167 *) dflt="$ccflags";;
5168 esac
5169
5170 case "$dflt" in
5171 ''|' ') dflt=none;;
5172 esac
5173
5174 $cat <<EOH
5175
5176 Your C compiler may want other flags.  For this question you should include
5177 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5178 but you should NOT include libraries or ld flags like -lwhatever.  If you
5179 want $package to honor its debug switch, you should include -DDEBUGGING here.
5180 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5181
5182 To use no flags, specify the word "none".
5183
5184 EOH
5185 set X $dflt
5186 shift
5187 dflt=${1+"$@"}
5188 rp="Any additional cc flags?"
5189 . ./myread
5190 case "$ans" in
5191 none) ccflags='';;
5192 *) ccflags="$ans";;
5193 esac
5194
5195 : the following weeds options from ccflags that are of no interest to cpp
5196 case "$cppflags" in
5197 '') cppflags="$ccflags" ;;
5198 *)  cppflags="$cppflags $ccflags" ;;
5199 esac
5200 case "$gccversion" in
5201 1*) cppflags="$cppflags -D__GNUC__"
5202 esac
5203 case "$mips_type" in
5204 '');;
5205 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5206 esac
5207 case "$cppflags" in
5208 '');;
5209 *)
5210         echo " "
5211         echo "Let me guess what the preprocessor flags are..." >&4
5212         set X $cppflags
5213         shift
5214         cppflags=''
5215         $cat >cpp.c <<'EOM'
5216 #define BLURFL foo
5217
5218 BLURFL xx LFRULB
5219 EOM
5220         previous=''
5221         for flag in $*
5222         do
5223                 case "$flag" in
5224                 -*) ftry="$flag";;
5225                 *) ftry="$previous $flag";;
5226                 esac
5227                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5228                         >cpp1.out 2>/dev/null && \
5229                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5230                         >cpp2.out 2>/dev/null && \
5231                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5232                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5233                 then
5234                         cppflags="$cppflags $ftry"
5235                         previous=''
5236                 else
5237                         previous="$flag"
5238                 fi
5239         done
5240         set X $cppflags
5241         shift
5242         cppflags=${1+"$@"}
5243         case "$cppflags" in
5244         *-*)  echo "They appear to be: $cppflags";;
5245         esac
5246         $rm -f cpp.c cpp?.out
5247         ;;
5248 esac
5249
5250 : flags used in final linking phase
5251 case "$ldflags" in
5252 '') if ./venix; then
5253                 dflt='-i -z'
5254         else
5255                 dflt=''
5256         fi
5257         case "$ccflags" in
5258         *-posix*) dflt="$dflt -posix" ;;
5259         esac
5260         ;;
5261 *) dflt="$ldflags";;
5262 esac
5263
5264 : Try to guess additional flags to pick up local libraries.
5265 for thislibdir in $libpth; do
5266         case " $loclibpth " in
5267         *" $thislibdir "*)
5268                 case "$dflt " in
5269                 *"-L$thislibdir "*) ;;
5270                 *)  dflt="$dflt -L$thislibdir" ;;
5271                 esac
5272                 ;;
5273         esac
5274 done
5275
5276 case "$dflt" in
5277 '') dflt='none' ;;
5278 esac
5279
5280 $cat <<EOH
5281
5282 Your C linker may need flags.  For this question you should
5283 include -L/whatever and any other flags used by the C linker, but you
5284 should NOT include libraries like -lwhatever.
5285
5286 Make sure you include the appropriate -L/path flags if your C linker
5287 does not normally search all of the directories you specified above,
5288 namely
5289         $libpth
5290 To use no flags, specify the word "none".
5291
5292 EOH
5293
5294 rp="Any additional ld flags (NOT including libraries)?"
5295 . ./myread
5296 case "$ans" in
5297 none) ldflags='';;
5298 *) ldflags="$ans";;
5299 esac
5300 rmlist="$rmlist pdp11"
5301
5302 : coherency check
5303 echo " "
5304 echo "Checking your choice of C compiler and flags for coherency..." >&4
5305 $cat > try.c <<'EOF'
5306 #include <stdio.h>
5307 int main() { printf("Ok\n"); return(0); }
5308 EOF
5309 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5310 shift
5311 $cat >try.msg <<'EOM'
5312 I've tried to compile and run the following simple program:
5313
5314 EOM
5315 $cat try.c >> try.msg
5316
5317 $cat >> try.msg <<EOM
5318
5319 I used the command:
5320
5321         $*
5322         $run ./try
5323
5324 and I got the following output:
5325
5326 EOM
5327 dflt=y
5328 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5329         if $sh -c "$run ./try " >>try.msg 2>&1; then
5330                 xxx=`$run ./try`
5331                 case "$xxx" in
5332                 "Ok") dflt=n ;;
5333                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5334                         case " $libs " in
5335                         *" -lsfio "*)
5336                                 cat >> try.msg <<'EOQS'
5337 If $libs contains -lsfio, and sfio is mis-configured, then it
5338 sometimes (apparently) runs and exits with a 0 status, but with no
5339 output!  It may have to do with sfio's use of _exit vs. exit.
5340
5341 EOQS
5342                                 rp="You have a big problem.  Shall I abort Configure"
5343                                 dflt=y
5344                                 ;;
5345                         esac
5346                         ;;
5347                 esac
5348         else
5349                 echo "The program compiled OK, but exited with status $?." >>try.msg
5350                 rp="You have a problem.  Shall I abort Configure"
5351                 dflt=y
5352         fi
5353 else
5354         echo "I can't compile the test program." >>try.msg
5355         rp="You have a BIG problem.  Shall I abort Configure"
5356         dflt=y
5357 fi
5358 case "$dflt" in
5359 y)
5360         $cat try.msg >&4
5361         case "$knowitall" in
5362         '')
5363                 echo "(The supplied flags or libraries might be incorrect.)"
5364                 ;;
5365         *) dflt=n;;
5366         esac
5367         echo " "
5368         . ./myread
5369         case "$ans" in
5370         n*|N*) ;;
5371         *)      echo "Ok.  Stopping Configure." >&4
5372                 exit 1
5373                 ;;
5374         esac
5375         ;;
5376 n) echo "OK, that should do.";;
5377 esac
5378 $rm_try gcctest gcctest.out
5379
5380 : define a shorthand compile call
5381 compile='
5382 mc_file=$1;
5383 shift;
5384 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5385 : define a shorthand compile call for compilations that should be ok.
5386 compile_ok='
5387 mc_file=$1;
5388 shift;
5389 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5390
5391 : determine filename position in cpp output
5392 echo " "
5393 echo "Computing filename position in cpp output for #include directives..." >&4
5394 case "$osname" in
5395 vos) testaccess=-e ;;
5396 *)   testaccess=-r ;;
5397 esac
5398 echo '#include <stdio.h>' > foo.c
5399 $cat >fieldn <<EOF
5400 $startsh
5401 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5402 $grep '^[       ]*#.*stdio\.h' | \
5403 while read cline; do
5404         pos=1
5405         set \$cline
5406         while $test \$# -gt 0; do
5407                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5408                         echo "\$pos"
5409                         exit 0
5410                 fi
5411                 shift
5412                 pos=\`expr \$pos + 1\`
5413         done
5414 done
5415 EOF
5416 chmod +x fieldn
5417 fieldn=`./fieldn`
5418 $rm -f foo.c fieldn
5419 case $fieldn in
5420 '') pos='???';;
5421 1) pos=first;;
5422 2) pos=second;;
5423 3) pos=third;;
5424 *) pos="${fieldn}th";;
5425 esac
5426 echo "Your cpp writes the filename in the $pos field of the line."
5427
5428 case "$osname" in
5429 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5430 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5431 *)   cppfilter='' ;;
5432 esac
5433 : locate header file
5434 $cat >findhdr <<EOF
5435 $startsh
5436 wanted=\$1
5437 name=''
5438 for usrincdir in $usrinc
5439 do
5440         if test -f \$usrincdir/\$wanted; then
5441                 echo "\$usrincdir/\$wanted"
5442                 exit 0
5443         fi
5444 done
5445 awkprg='{ print \$$fieldn }'
5446 echo "#include <\$wanted>" > foo\$\$.c
5447 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5448 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5449 while read cline; do
5450         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5451         case "\$name" in
5452         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5453         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5454         *) exit 2;;
5455         esac;
5456 done;
5457 #
5458 # status = 0: grep returned 0 lines, case statement not executed
5459 # status = 1: headerfile found
5460 # status = 2: while loop executed, no headerfile found
5461 #
5462 status=\$?
5463 $rm -f foo\$\$.c;
5464 if test \$status -eq 1; then
5465         exit 0;
5466 fi
5467 exit 1
5468 EOF
5469 chmod +x findhdr
5470
5471 : define an alternate in-header-list? function
5472 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5473 cont=true; xxf="echo \"<\$1> found.\" >&4";
5474 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5475 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5476 esac;
5477 case $# in 4) instead=instead;; *) instead="at last";; esac;
5478 while $test "$cont"; do
5479         xxx=`./findhdr $1`
5480         var=$2; eval "was=\$$2";
5481         if $test "$xxx" && $test -r "$xxx";
5482         then eval $xxf;
5483         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5484                 cont="";
5485         else eval $xxnf;
5486         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5487         set $yyy; shift; shift; yyy=$@;
5488         case $# in 0) cont="";;
5489         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5490                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5491         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5492                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5493         esac;
5494 done;
5495 while $test "$yyy";
5496 do set $yyy; var=$2; eval "was=\$$2";
5497         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5498         set $yyy; shift; shift; yyy=$@;
5499 done'
5500
5501 : see if stdlib is available
5502 set stdlib.h i_stdlib
5503 eval $inhdr
5504
5505 : check for lengths of integral types
5506 echo " "
5507 case "$intsize" in
5508 '')
5509         echo "Checking to see how big your integers are..." >&4
5510         $cat >try.c <<EOCP
5511 #include <stdio.h>
5512 #$i_stdlib I_STDLIB
5513 #ifdef I_STDLIB
5514 #include <stdlib.h>
5515 #endif
5516 int main()
5517 {
5518         printf("intsize=%d;\n", (int)sizeof(int));
5519         printf("longsize=%d;\n", (int)sizeof(long));
5520         printf("shortsize=%d;\n", (int)sizeof(short));
5521         exit(0);
5522 }
5523 EOCP
5524         set try
5525         if eval $compile_ok && $run ./try > /dev/null; then
5526                 eval `$run ./try`
5527                 echo "Your integers are $intsize bytes long."
5528                 echo "Your long integers are $longsize bytes long."
5529                 echo "Your short integers are $shortsize bytes long."
5530         else
5531                 $cat >&4 <<EOM
5532 !
5533 Help! I can't compile and run the intsize test program: please enlighten me!
5534 (This is probably a misconfiguration in your system or libraries, and
5535 you really ought to fix it.  Still, I'll try anyway.)
5536 !
5537 EOM
5538                 dflt=4
5539                 rp="What is the size of an integer (in bytes)?"
5540                 . ./myread
5541                 intsize="$ans"
5542                 dflt=$intsize
5543                 rp="What is the size of a long integer (in bytes)?"
5544                 . ./myread
5545                 longsize="$ans"
5546                 dflt=2
5547                 rp="What is the size of a short integer (in bytes)?"
5548                 . ./myread
5549                 shortsize="$ans"
5550         fi
5551         ;;
5552 esac
5553 $rm_try
5554
5555 : check for long long
5556 echo " "
5557 echo "Checking to see if you have long long..." >&4
5558 echo 'int main() { long long x = 7; return 0; }' > try.c
5559 set try
5560 if eval $compile; then
5561         val="$define"
5562         echo "You have long long."
5563 else
5564         val="$undef"
5565         echo "You do not have long long."
5566 fi
5567 $rm_try
5568 set d_longlong
5569 eval $setvar
5570
5571 : check for length of long long
5572 case "${d_longlong}${longlongsize}" in
5573 $define)
5574         echo " "
5575         echo "Checking to see how big your long longs are..." >&4
5576         $cat >try.c <<'EOCP'
5577 #include <stdio.h>
5578 int main()
5579 {
5580     printf("%d\n", (int)sizeof(long long));
5581     return(0);
5582 }
5583 EOCP
5584         set try
5585         if eval $compile_ok; then
5586                 longlongsize=`$run ./try`
5587                 echo "Your long longs are $longlongsize bytes long."
5588         else
5589                 dflt='8'
5590                 echo " "
5591                 echo "(I can't seem to compile the test program.  Guessing...)"
5592                 rp="What is the size of a long long (in bytes)?"
5593                 . ./myread
5594                 longlongsize="$ans"
5595         fi
5596         if $test "X$longsize" = "X$longlongsize"; then
5597                 echo "(That isn't any different from an ordinary long.)"
5598         fi
5599         ;;
5600 esac
5601 $rm_try
5602
5603 : see if inttypes.h is available
5604 : we want a real compile instead of Inhdr because some systems
5605 : have an inttypes.h which includes non-existent headers
5606 echo " "
5607 $cat >try.c <<EOCP
5608 #include <inttypes.h>
5609 int main() {
5610         static int32_t foo32 = 0x12345678;
5611 }
5612 EOCP
5613 set try
5614 if eval $compile; then
5615         echo "<inttypes.h> found." >&4
5616         val="$define"
5617 else
5618         echo "<inttypes.h> NOT found." >&4
5619         val="$undef"
5620 fi
5621 $rm_try
5622 set i_inttypes
5623 eval $setvar
5624
5625 : check for int64_t
5626 echo " "
5627 echo "Checking to see if you have int64_t..." >&4
5628 $cat >try.c <<EOCP
5629 #include <sys/types.h>
5630 #$i_inttypes I_INTTYPES
5631 #ifdef I_INTTYPES
5632 #include <inttypes.h>
5633 #endif
5634 int main() { int64_t x = 7; }
5635 EOCP
5636 set try
5637 if eval $compile; then
5638         val="$define"
5639         echo "You have int64_t."
5640 else
5641         val="$undef"
5642         echo "You do not have int64_t."
5643 fi
5644 $rm_try
5645 set d_int64_t
5646 eval $setvar
5647
5648 : Check if 64bit ints have a quad type
5649 echo " "
5650 echo "Checking which 64-bit integer type we could use..." >&4
5651
5652 case "$intsize" in
5653 8) val=int
5654    set quadtype
5655    eval $setvar
5656    val='"unsigned int"'
5657    set uquadtype
5658    eval $setvar
5659    quadkind=1
5660    ;;
5661 *) case "$longsize" in
5662    8) val=long
5663       set quadtype
5664       eval $setvar
5665       val='"unsigned long"'
5666       set uquadtype
5667       eval $setvar
5668       quadkind=2
5669       ;;
5670    *) case "$d_longlong:$longlongsize" in
5671       define:8)
5672         val='"long long"'
5673         set quadtype
5674         eval $setvar
5675         val='"unsigned long long"'
5676         set uquadtype
5677         eval $setvar
5678         quadkind=3
5679         ;;
5680       *) case "$d_int64_t" in
5681          define)
5682            val=int64_t
5683            set quadtype
5684            eval $setvar
5685            val=uint64_t
5686            set uquadtype
5687            eval $setvar
5688            quadkind=4
5689            ;;
5690          esac
5691          ;;
5692       esac
5693       ;;
5694    esac
5695    ;;
5696 esac
5697
5698 case "$quadtype" in
5699 '')     echo "Alas, no 64-bit integer types in sight." >&4
5700         d_quad="$undef"
5701         ;;
5702 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5703         d_quad="$define"
5704         ;;
5705 esac
5706
5707 : Do we want 64bit support
5708 case "$uselonglong" in
5709 "$define"|true|[yY]*)
5710         cat <<EOM >&4
5711
5712 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5713 EOM
5714         use64bitint="$define"
5715         ;;
5716 esac
5717 case "$use64bits" in
5718 "$define"|true|[yY]*)
5719         cat <<EOM >&4
5720
5721 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5722 EOM
5723         use64bitint="$define"
5724         ;;
5725 esac
5726 case "$use64bitints" in
5727 "$define"|true|[yY]*)
5728         cat <<EOM >&4
5729
5730 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5731 EOM
5732         use64bitint="$define"
5733         ;;
5734 esac
5735 case "$use64bitsint" in
5736 "$define"|true|[yY]*)
5737         cat <<EOM >&4
5738
5739 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5740 EOM
5741         use64bitint="$define"
5742         ;;
5743 esac
5744 case "$uselonglongs" in
5745 "$define"|true|[yY]*)
5746         cat <<EOM >&4
5747
5748 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5749 EOM
5750         use64bitint="$define"
5751         ;;
5752 esac
5753 case "$use64bitsall" in
5754 "$define"|true|[yY]*)
5755         cat <<EOM >&4
5756
5757 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5758 EOM
5759         use64bitall="$define"
5760         ;;
5761 esac
5762
5763 case "$ccflags" in
5764 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5765 esac
5766 case "$use64bitall" in
5767 "$define"|true|[yY]*) use64bitint="$define" ;;
5768 esac
5769
5770 case "$longsize" in
5771 8) cat <<EOM
5772
5773 You have natively 64-bit long integers.
5774 EOM
5775    val="$define"
5776    ;;
5777 *) case "$use64bitint" in
5778    "$define"|true|[yY]*) dflt='y';;
5779    *) dflt='n';;
5780    esac
5781    case "$d_quad" in
5782    "$define") ;;
5783    *) dflt='n' ;;
5784    esac
5785    cat <<EOM
5786
5787 Perl can be built to take advantage of 64-bit integer types
5788 on some systems.  To do so, Configure can be run with -Duse64bitint.
5789 Choosing this option will most probably introduce binary incompatibilities.
5790
5791 If this doesn't make any sense to you, just accept the default '$dflt'.
5792 (The default has been chosen based on your configuration.)
5793 EOM
5794    rp='Try to use 64-bit integers, if available?'
5795    . ./myread
5796    case "$ans" in
5797    [yY]*) val="$define" ;;
5798    *)     val="$undef"  ;;
5799    esac
5800    ;;
5801 esac
5802 set use64bitint
5803 eval $setvar
5804
5805 case "$use64bitall" in
5806 "$define"|true|[yY]*) dflt='y' ;;
5807 *) case "$longsize" in
5808    8) dflt='y' ;;
5809    *) dflt='n' ;;
5810    esac
5811    ;;
5812 esac
5813 cat <<EOM
5814
5815 You may also choose to try maximal 64-bitness.  It means using as much
5816 64-bitness as possible on the platform.  This in turn means even more
5817 binary incompatibilities.  On the other hand, your platform may not
5818 have any more 64-bitness available than what you already have chosen.
5819
5820 If this doesn't make any sense to you, just accept the default '$dflt'.
5821 (The default has been chosen based on your configuration.)
5822 EOM
5823 rp='Try to use maximal 64-bit support, if available?'
5824 . ./myread
5825 case "$ans" in
5826 [yY]*) val="$define" ;;
5827 *)     val="$undef"  ;;
5828 esac
5829 set use64bitall
5830 eval $setvar
5831 case "$use64bitall" in
5832 "$define")
5833         case "$use64bitint" in
5834         "$undef")
5835                 cat <<EOM
5836
5837 Since you have chosen a maximally 64-bit build, I'm also turning on
5838 the use of 64-bit integers.
5839 EOM
5840                 use64bitint="$define" ;;
5841         esac
5842         ;;
5843 esac
5844
5845 : Look for a hint-file generated 'call-back-unit'.  If the
5846 : user has specified that a 64-bit perl is to be built,
5847 : we may need to set or change some other defaults.
5848 if $test -f use64bitint.cbu; then
5849         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5850         . ./use64bitint.cbu
5851 fi
5852 case "$use64bitint" in
5853 "$define"|true|[yY]*)
5854         case "$longsize" in
5855         4) case "$archname64" in
5856            '') archname64=64int ;;
5857            esac
5858            ;;
5859         esac
5860         ;;
5861 esac
5862
5863 : Look for a hint-file generated 'call-back-unit'.  If the
5864 : user has specified that a maximally 64-bit perl is to be built,
5865 : we may need to set or change some other defaults.
5866 if $test -f use64bitall.cbu; then
5867         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5868         . ./use64bitall.cbu
5869 fi
5870 case "$use64bitall" in
5871 "$define"|true|[yY]*)
5872         case "$longsize" in
5873         4) case "$archname64" in
5874            ''|64int) archname64=64all ;;
5875            esac
5876            ;;
5877         esac
5878         ;;
5879 esac
5880
5881 case "$d_quad:$use64bitint" in
5882 $undef:$define)
5883         cat >&4 <<EOF
5884
5885 *** You have chosen to use 64-bit integers,
5886 *** but none can be found.
5887 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5888 *** Cannot continue, aborting.
5889
5890 EOF
5891         exit 1
5892         ;;
5893 esac
5894
5895 : check for length of double
5896 echo " "
5897 case "$doublesize" in
5898 '')
5899         echo "Checking to see how big your double precision numbers are..." >&4
5900         $cat >try.c <<EOCP
5901 #include <stdio.h>
5902 #$i_stdlib I_STDLIB
5903 #ifdef I_STDLIB
5904 #include <stdlib.h>
5905 #endif
5906 int main()
5907 {
5908     printf("%d\n", (int)sizeof(double));
5909     exit(0);
5910 }
5911 EOCP
5912         set try
5913         if eval $compile_ok; then
5914                 doublesize=`$run ./try`
5915                 echo "Your double is $doublesize bytes long."
5916         else
5917                 dflt='8'
5918                 echo "(I can't seem to compile the test program.  Guessing...)"
5919                 rp="What is the size of a double precision number (in bytes)?"
5920                 . ./myread
5921                 doublesize="$ans"
5922         fi
5923         ;;
5924 esac
5925 $rm_try
5926
5927 : check for long doubles
5928 echo " "
5929 echo "Checking to see if you have long double..." >&4
5930 echo 'int main() { long double x = 7.0; }' > try.c
5931 set try
5932 if eval $compile; then
5933         val="$define"
5934         echo "You have long double."
5935 else
5936         val="$undef"
5937         echo "You do not have long double."
5938 fi
5939 $rm_try
5940 set d_longdbl
5941 eval $setvar
5942
5943 : check for length of long double
5944 case "${d_longdbl}${longdblsize}" in
5945 $define)
5946         echo " "
5947         echo "Checking to see how big your long doubles are..." >&4
5948         $cat >try.c <<'EOCP'
5949 #include <stdio.h>
5950 int main()
5951 {
5952         printf("%d\n", sizeof(long double));
5953 }
5954 EOCP
5955         set try
5956         set try
5957         if eval $compile; then
5958                 longdblsize=`$run ./try`
5959                 echo "Your long doubles are $longdblsize bytes long."
5960         else
5961                 dflt='8'
5962                 echo " "
5963                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5964                 rp="What is the size of a long double (in bytes)?"
5965                 . ./myread
5966                 longdblsize="$ans"
5967         fi
5968         if $test "X$doublesize" = "X$longdblsize"; then
5969                 echo "That isn't any different from an ordinary double."
5970                 echo "I'll keep your setting anyway, but you may see some"
5971                 echo "harmless compilation warnings."
5972         fi
5973         ;;
5974 esac
5975 $rm_try
5976
5977 : determine the architecture name
5978 echo " "
5979 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5980         tarch=`arch`"-$osname"
5981 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5982         if uname -m > tmparch 2>&1 ; then
5983                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5984                         -e 's/$/'"-$osname/" tmparch`
5985         else
5986                 tarch="$osname"
5987         fi
5988         $rm -f tmparch
5989 else
5990         tarch="$osname"
5991 fi
5992 case "$myarchname" in
5993 ''|"$tarch") ;;
5994 *)
5995         echo "(Your architecture name used to be $myarchname.)"
5996         archname=''
5997         ;;
5998 esac
5999 case "$targetarch" in
6000 '') ;;
6001 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6002 esac
6003 myarchname="$tarch"
6004 case "$archname" in
6005 '') dflt="$tarch";;
6006 *) dflt="$archname";;
6007 esac
6008 rp='What is your architecture name'
6009 . ./myread
6010 archname="$ans"
6011 case "$usethreads" in
6012 $define)
6013         echo "Threads selected." >&4
6014         case "$archname" in
6015         *-thread*) echo "...and architecture name already has -thread." >&4
6016                 ;;
6017         *)      archname="$archname-thread"
6018                 echo "...setting architecture name to $archname." >&4
6019                 ;;
6020         esac
6021         ;;
6022 esac
6023 case "$usemultiplicity" in
6024 $define)
6025         echo "Multiplicity selected." >&4
6026         case "$archname" in
6027         *-multi*) echo "...and architecture name already has -multi." >&4
6028                 ;;
6029         *)      archname="$archname-multi"
6030                 echo "...setting architecture name to $archname." >&4
6031                 ;;
6032         esac
6033         ;;
6034 esac
6035 case "$use64bitint$use64bitall" in
6036 *"$define"*)
6037         case "$archname64" in
6038         '')
6039                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6040                 ;;
6041         *)
6042                 case "$use64bitint" in
6043                 "$define") echo "64 bit integers selected." >&4 ;;
6044                 esac
6045                 case "$use64bitall" in
6046                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6047                 esac
6048                 case "$archname" in
6049                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6050                         ;;
6051                 *)      archname="$archname-$archname64"
6052                         echo "...setting architecture name to $archname." >&4
6053                         ;;
6054                 esac
6055                 ;;
6056         esac
6057 esac
6058 case "$uselongdouble" in
6059 $define)
6060         echo "Long doubles selected." >&4
6061         case "$longdblsize" in
6062         $doublesize)
6063                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6064                 ;;
6065         *)
6066                 case "$archname" in
6067                 *-ld*) echo "...and architecture name already has -ld." >&4
6068                         ;;
6069                 *)      archname="$archname-ld"
6070                         echo "...setting architecture name to $archname." >&4
6071                         ;;
6072                 esac
6073                 ;;
6074         esac
6075         ;;
6076 esac
6077 case "$useperlio" in
6078 $define)
6079         echo "Perlio selected." >&4
6080         ;;
6081 *)
6082         echo "Perlio not selected, using stdio." >&4
6083         case "$archname" in
6084         *-stdio*) echo "...and architecture name already has -stdio." >&4
6085                 ;;
6086         *)      archname="$archname-stdio"
6087                 echo "...setting architecture name to $archname." >&4
6088                 ;;
6089         esac
6090         ;;
6091 esac
6092 if $test -f archname.cbu; then
6093         echo "Your platform has some specific hints for architecture name, using them..."
6094         . ./archname.cbu
6095 fi
6096
6097 : set the prefixit variable, to compute a suitable default value
6098 prefixit='case "$3" in
6099 ""|none)
6100         case "$oldprefix" in
6101         "") eval "$1=\"\$$2\"";;
6102         *)
6103                 case "$3" in
6104                 "") eval "$1=";;
6105                 none)
6106                         eval "tp=\"\$$2\"";
6107                         case "$tp" in
6108                         ""|" ") eval "$1=\"\$$2\"";;
6109                         *) eval "$1=";;
6110                         esac;;
6111                 esac;;
6112         esac;;
6113 *)
6114         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6115         case "$tp" in
6116         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6117         /*-$oldprefix/*|\~*-$oldprefix/*)
6118                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6119         *) eval "$1=\"\$$2\"";;
6120         esac;;
6121 esac'
6122
6123 : determine installation style
6124 : For now, try to deduce it from prefix unless it is already set.
6125 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6126 case "$installstyle" in
6127 '')     case "$prefix" in
6128                 *perl*) dflt='lib';;
6129                 *) dflt='lib/perl5' ;;
6130         esac
6131         ;;
6132 *)      dflt="$installstyle" ;;
6133 esac
6134 : Probably not worth prompting for this since we prompt for all
6135 : the directories individually, and the prompt would be too long and
6136 : confusing anyway.
6137 installstyle=$dflt
6138
6139 : determine where public executables go
6140 echo " "
6141 set dflt bin bin
6142 eval $prefixit
6143 fn=d~
6144 rp='Pathname where the public executables will reside?'
6145 . ./getfile
6146 if $test "X$ansexp" != "X$binexp"; then
6147         installbin=''
6148 fi
6149 prefixvar=bin
6150 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6151 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6152 :     this via initialinstalllocation
6153 . ./setprefixvar
6154
6155 case "$userelocatableinc" in
6156 $define|true|[yY]*)     dflt='y' ;;
6157 *)                      dflt='n' ;;
6158 esac
6159 cat <<EOM
6160
6161 Would you like to build Perl so that the installation is relocatable, so that
6162 library paths in @INC are determined relative to the path of the perl binary?
6163 This is not advised for system Perl installs, or if you need to run setid
6164 scripts or scripts under taint mode.
6165
6166 If this doesn't make any sense to you, just accept the default '$dflt'.
6167 EOM
6168 rp='Use relocatable @INC?'
6169 . ./myread
6170 case "$ans" in
6171 y|Y)    val="$define" ;;
6172 *)      val="$undef"  ;;
6173 esac
6174 set userelocatableinc
6175 eval $setvar
6176
6177 initialinstalllocation="$binexp"
6178 : Default prefix is now "up one level from where the binaries are"
6179 case "$userelocatableinc" in
6180 $define|true|[yY]*)
6181     bin=".../"
6182     binexp=".../"
6183     prefix=".../.."
6184     prefixexp=".../.."
6185     installprefixexp=".../.."
6186     ;;
6187 esac
6188
6189 : determine where private library files go
6190 : Usual default is /usr/local/lib/perl5/$version.
6191 : Also allow things like /opt/perl/lib/$version, since
6192 : /opt/perl/lib/perl5... would be redundant.
6193 : The default "style" setting is made in installstyle.U
6194 case "$installstyle" in
6195 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6196 *)       set dflt privlib lib/$version ;;
6197 esac
6198 eval $prefixit
6199 $cat <<EOM
6200
6201 There are some auxiliary files for $package that need to be put into a
6202 private library directory that is accessible by everyone.
6203
6204 EOM
6205 fn=$binexp
6206 fn=d~+
6207 rp='Pathname where the private library files will reside?'
6208 . ./getfile
6209 prefixvar=privlib
6210 . ./setprefixvar
6211
6212 : set the prefixup variable, to restore leading tilda escape
6213 prefixup='case "$prefixexp" in
6214 "$prefix") ;;
6215 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6216 esac'
6217
6218 : determine where public architecture dependent libraries go
6219 set archlib archlib
6220 eval $prefixit
6221 : privlib default is /usr/local/lib/$package/$version
6222 : archlib default is /usr/local/lib/$package/$version/$archname
6223 : privlib may have an optional trailing /share.
6224 tdflt=`echo $privlib | $sed 's,/share$,,'`
6225 tdflt=$tdflt/$archname
6226 case "$archlib" in
6227 '')     dflt=$tdflt
6228         ;;
6229 *)      dflt="$archlib"
6230     ;;
6231 esac
6232 $cat <<EOM
6233
6234 $spackage contains architecture-dependent library files.  If you are
6235 sharing libraries in a heterogeneous environment, you might store
6236 these files in a separate location.  Otherwise, you can just include
6237 them with the rest of the public library files.
6238
6239 EOM
6240 fn=$binexp
6241 fn=d+~
6242 rp='Where do you want to put the public architecture-dependent libraries?'
6243 . ./getfile
6244 prefixvar=archlib
6245 . ./setprefixvar
6246 if $test X"$archlib" = X"$privlib"; then
6247         d_archlib="$undef"
6248 else
6249         d_archlib="$define"
6250 fi
6251
6252 : see if setuid scripts can be secure
6253 $cat <<EOM
6254
6255 Some kernels have a bug that prevents setuid #! scripts from being
6256 secure.  Some sites have disabled setuid #! scripts because of this.
6257
6258 First let's decide if your kernel supports secure setuid #! scripts.
6259 (If setuid #! scripts would be secure but have been disabled anyway,
6260 don't say that they are secure if asked.)
6261
6262 EOM
6263
6264 val="$undef"
6265 if $test -d /dev/fd; then
6266         echo "#!$ls" >reflect
6267         chmod +x,u+s reflect
6268         ./reflect >flect 2>&1
6269         if $contains "/dev/fd" flect >/dev/null; then
6270                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6271                 val="$define"
6272         else
6273                 $cat <<EOM
6274 If you are not sure if they are secure, I can check but I'll need a
6275 username and password different from the one you are using right now.
6276 If you don't have such a username or don't want me to test, simply
6277 enter 'none'.
6278
6279 EOM
6280                 rp='Other username to test security of setuid scripts with?'
6281                 dflt='none'
6282                 . ./myread
6283                 case "$ans" in
6284                 n|none)
6285                         case "$d_suidsafe" in
6286                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6287                                 dflt=n;;
6288                         "$undef")
6289                                 echo "Well, the $hint value is *not* secure." >&4
6290                                 dflt=n;;
6291                         *)      echo "Well, the $hint value *is* secure." >&4
6292                                 dflt=y;;
6293                         esac
6294                         ;;
6295                 *)
6296                         $rm -f reflect flect
6297                         echo "#!$ls" >reflect
6298                         chmod +x,u+s reflect
6299                         echo >flect
6300                         chmod a+w flect
6301                         echo '"su" will (probably) prompt you for '"$ans's password."
6302                         su $ans -c './reflect >flect'
6303                         if $contains "/dev/fd" flect >/dev/null; then
6304                                 echo "Okay, it looks like setuid scripts are secure." >&4
6305                                 dflt=y
6306                         else
6307                                 echo "I don't think setuid scripts are secure." >&4
6308                                 dflt=n
6309                         fi
6310                         ;;
6311                 esac
6312                 rp='Does your kernel have *secure* setuid scripts?'
6313                 . ./myread
6314                 case "$ans" in
6315                 [yY]*)  val="$define";;
6316                 *)      val="$undef";;
6317                 esac
6318         fi
6319 else
6320         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6321         echo "(That's for file descriptors, not floppy disks.)"
6322         val="$undef"
6323 fi
6324 set d_suidsafe
6325 eval $setvar
6326
6327 $rm -f reflect flect
6328
6329 : now see if they want to do setuid emulation
6330 echo " "
6331 val="$undef"
6332 case "$d_suidsafe" in
6333 "$define")
6334         val="$undef"
6335         echo "No need to emulate SUID scripts since they are secure here." >&4
6336         ;;
6337 *)
6338         $cat <<EOM
6339 Some systems have disabled setuid scripts, especially systems where
6340 setuid scripts cannot be secure.  On systems where setuid scripts have
6341 been disabled, the setuid/setgid bits on scripts are currently
6342 useless.  It is possible for $package to detect those bits and emulate
6343 setuid/setgid in a secure fashion.  This emulation will only work if
6344 setuid scripts have been disabled in your kernel.
6345
6346 EOM
6347         case "$d_dosuid" in
6348         "$define") dflt=y ;;
6349         *) dflt=n ;;
6350         esac
6351         rp="Do you want to do setuid/setgid emulation?"
6352         . ./myread
6353         case "$ans" in
6354         [yY]*)  val="$define";;
6355         *)      val="$undef";;
6356         esac
6357         ;;
6358 esac
6359 set d_dosuid
6360 eval $setvar
6361
6362 : Find perl5.005 or later.
6363 echo "Looking for a previously installed perl5.005 or later... "
6364 case "$perl5" in
6365 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6366                 : Check if this perl is recent and can load a simple module
6367                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6368                         perl5=$tdir/perl
6369                         break;
6370                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6371                         perl5=$tdir/perl5
6372                         break;
6373                 fi
6374         done
6375         ;;
6376 *)      perl5="$perl5"
6377         ;;
6378 esac
6379 case "$perl5" in
6380 '')     echo "None found.  That's ok.";;
6381 *)      echo "Using $perl5." ;;
6382 esac
6383
6384 : Set the siteprefix variables
6385 $cat <<EOM
6386
6387 After $package is installed, you may wish to install various
6388 add-on modules and utilities.  Typically, these add-ons will
6389 be installed under $prefix with the rest
6390 of this package.  However, you may wish to install such add-ons
6391 elsewhere under a different prefix.
6392
6393 If you do not wish to put everything under a single prefix, that's
6394 ok.  You will be prompted for the individual locations; this siteprefix
6395 is only used to suggest the defaults.
6396
6397 The default should be fine for most people.
6398
6399 EOM
6400 fn=d~+
6401 rp='Installation prefix to use for add-on modules and utilities?'
6402 : XXX Here might be another good place for an installstyle setting.
6403 case "$siteprefix" in
6404 '') dflt=$prefix ;;
6405 *)  dflt=$siteprefix ;;
6406 esac
6407 . ./getfile
6408 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6409 oldsiteprefix=''
6410 case "$siteprefix" in
6411 '') ;;
6412 *)      case "$ans" in
6413         "$prefix") ;;
6414         *) oldsiteprefix="$prefix";;
6415         esac
6416         ;;
6417 esac
6418 siteprefix="$ans"
6419 siteprefixexp="$ansexp"
6420
6421 : determine where site specific libraries go.
6422 : Usual default is /usr/local/lib/perl5/site_perl/$version
6423 : The default "style" setting is made in installstyle.U
6424 : XXX No longer works with Prefixit stuff.
6425 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6426 case "$sitelib" in
6427 '') case "$installstyle" in
6428         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6429         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6430         esac
6431         ;;
6432 *)      dflt="$sitelib"
6433         ;;
6434 esac
6435 $cat <<EOM
6436
6437 The installation process will create a directory for
6438 site-specific extensions and modules.  Most users find it convenient
6439 to place all site-specific files in this directory rather than in the
6440 main distribution directory.
6441
6442 EOM
6443 fn=d~+
6444 rp='Pathname for the site-specific library files?'
6445 . ./getfile
6446 prefixvar=sitelib
6447 . ./setprefixvar
6448 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6449
6450 : Determine list of previous versions to include in @INC
6451 $cat > getverlist <<EOPL
6452 #!$perl5 -w
6453 use File::Basename;
6454 \$api_versionstring = "$api_versionstring";
6455 \$version = "$version";
6456 \$stem = "$sitelib_stem";
6457 \$archname = "$archname";
6458 EOPL
6459         $cat >> getverlist <<'EOPL'
6460 # The list found is store twice for each entry: the original name, and
6461 # the binary broken down version as pack "sss", so sorting is easy and
6462 # unambiguous. This will work for all versions that have a maximum of
6463 # three digit groups, separate by '.'s or '_'s. Names are extended with
6464 # ".0.0" to ensure at least three elements for the pack.
6465 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6466
6467 # Can't have leading @ because metaconfig interprets it as a command!
6468 ;@inc_version_list=();
6469 # XXX Redo to do opendir/readdir?
6470 if (-d $stem) {
6471     chdir($stem);
6472     ;@candidates = map {
6473         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6474 }
6475 else {
6476     ;@candidates = ();
6477 }
6478
6479 ($pversion, $aversion, $vsn5005) = map {
6480     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6481 foreach $d (@candidates) {
6482     if ($d->[1] lt $pversion) {
6483         if ($d->[1] ge $aversion) {
6484             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6485         }
6486         elsif ($d->[1] ge $vsn5005) {
6487             unshift(@inc_version_list, grep { -d } $d->[0]);
6488         }
6489     }
6490     else {
6491         # Skip newer version.  I.e. don't look in
6492         # 5.7.0 if we're installing 5.6.1.
6493     }
6494 }
6495
6496 if (@inc_version_list) {
6497     print join(' ', @inc_version_list);
6498 }
6499 else {
6500     # Blank space to preserve value for next Configure run.
6501     print " ";
6502 }
6503 EOPL
6504 chmod +x getverlist
6505 case "$inc_version_list" in
6506 '')     if test -x "$perl5$exe_ext"; then
6507                 dflt=`$perl5 getverlist`
6508         else
6509                 dflt='none'
6510         fi
6511         ;;
6512 $undef) dflt='none' ;;
6513 *)  eval dflt=\"$inc_version_list\" ;;
6514 esac
6515 case "$dflt" in
6516 ''|' ') dflt=none ;;
6517 esac
6518 case "$dflt" in
6519 5.005) dflt=none ;;
6520 esac
6521 $cat <<EOM
6522
6523 In order to ease the process of upgrading, this version of perl
6524 can be configured to use modules built and installed with earlier
6525 versions of perl that were installed under $prefix.  Specify here
6526 the list of earlier versions that this version of perl should check.
6527 If Configure detected no earlier versions of perl installed under
6528 $prefix, then the list will be empty.  Answer 'none' to tell perl
6529 to not search earlier versions.
6530
6531 The default should almost always be sensible, so if you're not sure,
6532 just accept the default.
6533 EOM
6534
6535 rp='List of earlier versions to include in @INC?'
6536 . ./myread
6537 case "$ans" in
6538 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6539 *) inc_version_list="$ans" ;;
6540 esac
6541 case "$inc_version_list" in
6542 ''|' ')
6543         inc_version_list_init='0'
6544         d_inc_version_list="$undef"
6545         ;;
6546 *)      inc_version_list_init=`echo $inc_version_list |
6547                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6548         d_inc_version_list="$define"
6549         ;;
6550 esac
6551 $rm -f getverlist
6552
6553 : see if this is a malloc.h system
6554 : we want a real compile instead of Inhdr because some systems have a
6555 : malloc.h that just gives a compile error saying to use stdlib.h instead
6556 echo " "
6557 $cat >try.c <<EOCP
6558 #include <stdlib.h>
6559 #include <malloc.h>
6560 int main () { return 0; }
6561 EOCP
6562 set try
6563 if eval $compile; then
6564     echo "<malloc.h> found." >&4
6565     val="$define"
6566 else
6567     echo "<malloc.h> NOT found." >&4
6568     val="$undef"
6569 fi
6570 $rm_try
6571 set i_malloc
6572 eval $setvar
6573
6574 : check for void type
6575 echo " "
6576 echo "Checking to see how well your C compiler groks the void type..." >&4
6577 case "$voidflags" in
6578 '')
6579         $cat >try.c <<EOCP
6580 #$i_stdlib I_STDLIB
6581 #ifdef I_STDLIB
6582 #include <stdlib.h>
6583 #endif
6584 #if TRY & 1
6585 void sub() {
6586 #else
6587 sub() {
6588 #endif
6589         extern void moo();      /* function returning void */
6590         void (*goo)();          /* ptr to func returning void */
6591 #if TRY & 8
6592         void *hue;              /* generic ptr */
6593 #endif
6594 #if TRY & 2
6595         void (*foo[10])();
6596 #endif
6597
6598 #if TRY & 4
6599         if(goo == moo) {
6600                 exit(0);
6601         }
6602 #endif
6603         exit(0);
6604 }
6605 int main() { sub(); }
6606 EOCP
6607         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6608                 voidflags=$defvoidused
6609         echo "Good.  It appears to support void to the level $package wants.">&4
6610                 if $contains warning .out >/dev/null 2>&1; then
6611                         echo "However, you might get some warnings that look like this:"
6612                         $cat .out
6613                 fi
6614         else
6615 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6616                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6617                         echo "It supports 1..."
6618                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6619                                 echo "It also supports 2..."
6620                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6621                                         voidflags=7
6622                                         echo "And it supports 4 but not 8 definitely."
6623                                 else
6624                                         echo "It doesn't support 4..."
6625                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6626                                                 voidflags=11
6627                                                 echo "But it supports 8."
6628                                         else
6629                                                 voidflags=3
6630                                                 echo "Neither does it support 8."
6631                                         fi
6632                                 fi
6633                         else
6634                                 echo "It does not support 2..."
6635                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6636                                         voidflags=13
6637                                         echo "But it supports 4 and 8."
6638                                 else
6639                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6640                                                 voidflags=5
6641                                                 echo "And it supports 4 but has not heard about 8."
6642                                         else
6643                                                 echo "However it supports 8 but not 4."
6644                                         fi
6645                                 fi
6646                         fi
6647                 else
6648                         echo "There is no support at all for void."
6649                         voidflags=0
6650                 fi
6651         fi
6652 esac
6653 case "$voidflags" in
6654 "$defvoidused") ;;
6655 *)      $cat >&4 <<'EOM'
6656   Support flag bits are:
6657     1: basic void declarations.
6658     2: arrays of pointers to functions returning void.
6659     4: operations between pointers to and addresses of void functions.
6660     8: generic void pointers.
6661 EOM
6662         dflt="$voidflags";
6663         rp="Your void support flags add up to what?"
6664         . ./myread
6665         voidflags="$ans"
6666         ;;
6667 esac
6668 $rm_try
6669
6670 : check for length of pointer
6671 echo " "
6672 case "$ptrsize" in
6673 '')
6674         echo "Checking to see how big your pointers are..." >&4
6675         if test "$voidflags" -gt 7; then
6676                 echo '#define VOID_PTR char *' > try.c
6677         else
6678                 echo '#define VOID_PTR void *' > try.c
6679         fi
6680         $cat >>try.c <<EOCP
6681 #include <stdio.h>
6682 #$i_stdlib I_STDLIB
6683 #ifdef I_STDLIB
6684 #include <stdlib.h>
6685 #endif
6686 int main()
6687 {
6688     printf("%d\n", (int)sizeof(VOID_PTR));
6689     exit(0);
6690 }
6691 EOCP
6692         set try
6693         if eval $compile_ok; then
6694                 ptrsize=`$run ./try`
6695                 echo "Your pointers are $ptrsize bytes long."
6696         else
6697                 dflt='4'
6698                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6699                 rp="What is the size of a pointer (in bytes)?"
6700                 . ./myread
6701                 ptrsize="$ans"
6702         fi
6703         ;;
6704 esac
6705 $rm_try
6706 case "$use64bitall" in
6707 "$define"|true|[yY]*)
6708         case "$ptrsize" in
6709         4)      cat <<EOM >&4
6710
6711 *** You have chosen a maximally 64-bit build,
6712 *** but your pointers are only 4 bytes wide.
6713 *** Please rerun Configure without -Duse64bitall.
6714 EOM
6715                 case "$d_quad" in
6716                 define)
6717                         cat <<EOM >&4
6718 *** Since you have quads, you could possibly try with -Duse64bitint.
6719 EOM
6720                         ;;
6721                 esac
6722                 cat <<EOM >&4
6723 *** Cannot continue, aborting.
6724
6725 EOM
6726
6727                 exit 1
6728                 ;;
6729         esac
6730         ;;
6731 esac
6732
6733
6734 : determine whether to use malloc wrapping
6735 echo " "
6736 case "$usemallocwrap" in
6737 [yY]*|true|$define)     dflt='y' ;;
6738 [nN]*|false|$undef)     dflt='n' ;;
6739 *)      case "$usedevel" in
6740         [yY]*|true|$define)     dflt='y' ;;
6741         *) dflt='n' ;;
6742         esac
6743         ;;
6744 esac
6745 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6746 . ./myread
6747 usemallocwrap="$ans"
6748 case "$ans" in
6749 y*|true)
6750         usemallocwrap="$define" ;;
6751 *)
6752         usemallocwrap="$undef" ;;
6753 esac
6754
6755 : determine which malloc to compile in
6756 echo " "
6757 case "$usemymalloc" in
6758 [yY]*|true|$define)     dflt='y' ;;
6759 [nN]*|false|$undef)     dflt='n' ;;
6760 *)      case "$ptrsize" in
6761         4) dflt='y' ;;
6762         *) dflt='n' ;;
6763         esac
6764         ;;
6765 esac
6766 rp="Do you wish to attempt to use the malloc that comes with $package?"
6767 . ./myread
6768 usemymalloc="$ans"
6769 case "$ans" in
6770 y*|true)
6771         usemymalloc='y'
6772         mallocsrc='malloc.c'
6773         mallocobj="malloc$_o"
6774         d_mymalloc="$define"
6775         case "$libs" in
6776         *-lmalloc*)
6777                 : Remove malloc from list of libraries to use
6778                 echo "Removing unneeded -lmalloc from library list" >&4
6779                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6780                 shift
6781                 libs="$*"
6782                 echo "libs = $libs" >&4
6783                 ;;
6784         esac
6785         ;;
6786 *)
6787         usemymalloc='n'
6788         mallocsrc=''
6789         mallocobj=''
6790         d_mymalloc="$undef"
6791         ;;
6792 esac
6793
6794 : compute the return types of malloc and free
6795 echo " "
6796 $cat >malloc.c <<END
6797 #$i_malloc I_MALLOC
6798 #$i_stdlib I_STDLIB
6799 #include <stdio.h>
6800 #include <sys/types.h>
6801 #ifdef I_MALLOC
6802 #include <malloc.h>
6803 #endif
6804 #ifdef I_STDLIB
6805 #include <stdlib.h>
6806 #endif
6807 #ifdef TRY_MALLOC
6808 void *malloc();
6809 #endif
6810 #ifdef TRY_FREE
6811 void free();
6812 #endif
6813 END
6814 case "$malloctype" in
6815 '')
6816         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6817                 malloctype='void *'
6818         else
6819                 malloctype='char *'
6820         fi
6821         ;;
6822 esac
6823 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6824
6825 case "$freetype" in
6826 '')
6827         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6828                 freetype='void'
6829         else
6830                 freetype='int'
6831         fi
6832         ;;
6833 esac
6834 echo "Your system uses $freetype free(), it would seem." >&4
6835 $rm -f malloc.[co]
6836 : determine where site specific architecture-dependent libraries go.
6837 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6838 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6839 : sitelib may have an optional trailing /share.
6840 case "$sitearch" in
6841 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6842         dflt="$dflt/$archname"
6843         ;;
6844 *)      dflt="$sitearch"
6845         ;;
6846 esac
6847 set sitearch sitearch none
6848 eval $prefixit
6849 $cat <<EOM
6850
6851 The installation process will also create a directory for
6852 architecture-dependent site-specific extensions and modules.
6853
6854 EOM
6855 fn=d~+
6856 rp='Pathname for the site-specific architecture-dependent library files?'
6857 . ./getfile
6858 prefixvar=sitearch
6859 . ./setprefixvar
6860 if $test X"$sitearch" = X"$sitelib"; then
6861         d_sitearch="$undef"
6862 else
6863         d_sitearch="$define"
6864 fi
6865
6866 : Set the vendorprefix variables
6867 $cat <<EOM
6868
6869 The installation process will also create a directory for
6870 vendor-supplied add-ons.  Vendors who supply perl with their system
6871 may find it convenient to place all vendor-supplied files in this
6872 directory rather than in the main distribution directory.  This will
6873 ease upgrades between binary-compatible maintenance versions of perl.
6874
6875 Of course you may also use these directories in whatever way you see
6876 fit.  For example, you might use them to access modules shared over a
6877 company-wide network.
6878
6879 The default answer should be fine for most people.
6880 This causes further questions about vendor add-ons to be skipped
6881 and no vendor-specific directories will be configured for perl.
6882
6883 EOM
6884 rp='Do you want to configure vendor-specific add-on directories?'
6885 case "$usevendorprefix" in
6886 define|true|[yY]*) dflt=y ;;
6887 *)      : User may have set vendorprefix directly on Configure command line.
6888         case "$vendorprefix" in
6889         ''|' ') dflt=n ;;
6890         *)      dflt=y ;;
6891         esac
6892         ;;
6893 esac
6894 . ./myread
6895 case "$ans" in
6896 [yY]*)  fn=d~+
6897         rp='Installation prefix to use for vendor-supplied add-ons?'
6898         case "$vendorprefix" in
6899         '') dflt='' ;;
6900         *)  dflt=$vendorprefix ;;
6901         esac
6902         . ./getfile
6903         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6904         oldvendorprefix=''
6905         case "$vendorprefix" in
6906         '') ;;
6907         *)      case "$ans" in
6908                 "$prefix") ;;
6909                 *) oldvendorprefix="$prefix";;
6910                 esac
6911                 ;;
6912         esac
6913         usevendorprefix="$define"
6914         vendorprefix="$ans"
6915         vendorprefixexp="$ansexp"
6916         ;;
6917 *)      usevendorprefix="$undef"
6918         vendorprefix=''
6919         vendorprefixexp=''
6920         ;;
6921 esac
6922
6923 : Set the vendorlib variables
6924 case "$vendorprefix" in
6925 '')     d_vendorlib="$undef"
6926         vendorlib=''
6927         vendorlibexp=''
6928         ;;
6929 *)      d_vendorlib="$define"
6930         : determine where vendor-supplied modules go.
6931         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6932         case "$vendorlib" in
6933         '')
6934                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6935                 case "$installstyle" in
6936                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6937                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6938                 esac
6939                 ;;
6940         *)      dflt="$vendorlib"
6941                 ;;
6942         esac
6943         fn=d~+
6944         rp='Pathname for the vendor-supplied library files?'
6945         . ./getfile
6946         vendorlib="$ans"
6947         vendorlibexp="$ansexp"
6948         ;;
6949 esac
6950 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6951 prefixvar=vendorlib
6952 . ./installprefix
6953
6954 : Set the vendorarch variables
6955 case "$vendorprefix" in
6956 '')     d_vendorarch="$undef"
6957         vendorarch=''
6958         vendorarchexp=''
6959         ;;
6960 *)      d_vendorarch="$define"
6961         : determine where vendor-supplied architecture-dependent libraries go.
6962         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6963         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6964         : vendorlib may have an optional trailing /share.
6965         case "$vendorarch" in
6966         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6967                 dflt="$dflt/$archname"
6968                 ;;
6969         *)      dflt="$vendorarch" ;;
6970         esac
6971         fn=d~+
6972         rp='Pathname for vendor-supplied architecture-dependent files?'
6973         . ./getfile
6974         vendorarch="$ans"
6975         vendorarchexp="$ansexp"
6976         ;;
6977 esac
6978 prefixvar=vendorarch
6979 . ./installprefix
6980
6981 : Final catch-all directories to search
6982 $cat <<EOM
6983
6984 Lastly, you can have perl look in other directories for extensions and
6985 modules in addition to those already specified.
6986 These directories will be searched after 
6987         $sitearch 
6988         $sitelib 
6989 EOM
6990 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6991 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6992 echo ' '
6993 case "$otherlibdirs" in
6994 ''|' ') dflt='none' ;;
6995 *)      dflt="$otherlibdirs" ;;
6996 esac
6997 $cat <<EOM
6998 Enter a colon-separated set of extra paths to include in perl's @INC
6999 search path, or enter 'none' for no extra paths.
7000
7001 EOM
7002
7003 rp='Colon-separated list of additional directories for perl to search?'
7004 . ./myread
7005 case "$ans" in
7006 ' '|''|none)    otherlibdirs=' ' ;;     
7007 *)      otherlibdirs="$ans" ;;
7008 esac
7009 case "$otherlibdirs" in
7010 ' ') val=$undef ;;
7011 *)      val=$define ;;
7012 esac
7013 set d_perl_otherlibdirs
7014 eval $setvar
7015
7016 : Cruising for prototypes
7017 echo " "
7018 echo "Checking out function prototypes..." >&4
7019 $cat >prototype.c <<EOCP
7020 #$i_stdlib I_STDLIB
7021 #ifdef I_STDLIB
7022 #include <stdlib.h>
7023 #endif
7024 int main(int argc, char *argv[]) {
7025         exit(0);}
7026 EOCP
7027 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7028         echo "Your C compiler appears to support function prototypes."
7029         val="$define"
7030 else
7031         echo "Your C compiler doesn't seem to understand function prototypes."
7032         val="$undef"
7033 fi
7034 set prototype
7035 eval $setvar
7036 $rm -f prototype*
7037
7038 : Check if ansi2knr is required
7039 case "$prototype" in
7040 "$define") ;;
7041 *)      ansi2knr='ansi2knr'
7042         echo " "
7043         cat <<EOM >&4
7044
7045 $me:  FATAL ERROR:
7046 This version of $package can only be compiled by a compiler that 
7047 understands function prototypes.  Unfortunately, your C compiler 
7048         $cc $ccflags
7049 doesn't seem to understand them.  Sorry about that.
7050
7051 If GNU cc is available for your system, perhaps you could try that instead.  
7052
7053 Eventually, we hope to support building Perl with pre-ANSI compilers.
7054 If you would like to help in that effort, please contact <perlbug@perl.org>.
7055
7056 Aborting Configure now.
7057 EOM
7058         exit 2
7059         ;;
7060 esac
7061
7062 : DTrace support
7063 dflt_dtrace='/usr/sbin/dtrace'
7064 cat <<EOM
7065
7066 Perl can be built to support DTrace on platforms that support it.
7067 DTrace is a diagnosis and performance analysis tool from Sun.
7068
7069 If this doesn't make any sense to you, just accept the default '$dflt'.
7070 EOM
7071
7072 while $test 1 ; do
7073         case "$usedtrace" in
7074         $define|true|[yY]*)
7075                 dflt='y'
7076                 ;;
7077         ?*)
7078                 dflt='y'
7079                 dflt_dtrace=$usedtrace
7080                 ;;
7081         *)
7082                 dflt='n'
7083                 ;;
7084         esac
7085
7086         rp='Support DTrace if available?'
7087         . ./myread
7088         case "$ans" in
7089         y|Y)    val="$define" ;;
7090         *)      val="$undef" ;;
7091         esac
7092         set usedtrace
7093         eval $setvar
7094
7095         test "X$usedtrace" != "X$define" && break
7096
7097         echo " "
7098         rp='Where is the dtrace executable?'
7099         dflt=$dflt_dtrace
7100         . ./getfile
7101         val="$ans"
7102         set dtrace
7103         eval $setvar
7104
7105         if $test -f $dtrace
7106         then
7107                 if $dtrace -h -s ../perldtrace.d \
7108                         -o perldtrace.tmp >/dev/null 2>&1 \
7109                         && rm -f perldtrace.tmp
7110                 then
7111                         echo " "
7112                         echo "Good: your $dtrace knows about the -h flag."
7113                 else
7114                         cat >&2 <<EOM
7115
7116 *** $me:  Fatal Error:  $dtrace doesn't support -h flag
7117 ***
7118 *** Your installed dtrace doesn't support the -h switch to compile a D
7119 *** program into a C header. Can't continue.
7120
7121 EOM
7122                         exit 1
7123                 fi
7124                 break;
7125         fi
7126
7127         case "$fastread" in
7128         yes)
7129                 cat >&2 <<EOM
7130
7131 *** $me:  Fatal Error:  $dtrace not found.
7132 *** Can't continue.
7133
7134 EOM
7135                 exit 1
7136                 ;;
7137         *)
7138                 echo "*** $dtrace was not found."
7139                 echo " "
7140                 ;;
7141         esac
7142 done
7143
7144 : See if we want extra modules installed
7145 echo " "
7146 case "$extras" in
7147 '') dflt='n';;
7148 *) dflt='y';;
7149 esac
7150 cat <<EOM
7151 Perl can be built with extra modules or bundles of modules which
7152 will be fetched from the CPAN and installed alongside Perl.
7153
7154 Notice that you will need access to the CPAN; either via the Internet,
7155 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7156 be asked later to configure the CPAN.pm module which will in turn do
7157 the installation of the rest of the extra modules or bundles.)
7158
7159 Notice also that if the modules require any external software such as
7160 libraries and headers (the libz library and the zlib.h header for the
7161 Compress::Zlib module, for example) you MUST have any such software
7162 already installed, this configuration process will NOT install such
7163 things for you.
7164
7165 If this doesn't make any sense to you, just accept the default '$dflt'.
7166 EOM
7167 rp='Install any extra modules (y or n)?'
7168 . ./myread
7169 case "$ans" in
7170 y|Y)
7171         cat <<EOM
7172
7173 Please list any extra modules or bundles to be installed from CPAN,
7174 with spaces between the names.  The names can be in any format the
7175 'install' command of CPAN.pm will understand.  (Answer 'none',
7176 without the quotes, to install no extra modules or bundles.)
7177 EOM
7178         rp='Extras?'
7179         dflt="$extras"
7180         . ./myread
7181         extras="$ans"
7182 esac
7183 case "$extras" in
7184 ''|'none')
7185         val=''
7186         $rm -f ../extras.lst
7187         ;;
7188 *)      echo "(Saving the list of extras for later...)"
7189         echo "$extras" > ../extras.lst
7190         val="'$extras'"
7191         ;;
7192 esac
7193 set extras
7194 eval $setvar
7195 echo " "
7196
7197 : determine where html pages for programs go
7198 set html1dir html1dir none
7199 eval $prefixit
7200 $cat <<EOM
7201
7202 If you wish to install html files for programs in $spackage, indicate
7203 the appropriate directory here.  To skip installing html files,
7204 answer "none".
7205 EOM
7206 case "$html1dir" in
7207 ''|none|$undef|' ') dflt=none ;;
7208 *) dflt=$html1dir ;;
7209 esac
7210 fn=dn+~
7211 rp="Directory for the main $spackage html pages?"
7212 . ./getfile
7213 prefixvar=html1dir
7214 . ./setprefixvar
7215 : Use ' ' for none so value is preserved next time through Configure
7216 $test X"$html1dir" = "X" && html1dir=' '
7217
7218 : determine where html pages for libraries and modules go
7219 set html3dir html3dir none
7220 eval $prefixit
7221 $cat <<EOM
7222
7223 If you wish to install html files for modules associated with $spackage,
7224 indicate the appropriate directory here.  To skip installing html files,
7225 answer "none".
7226 EOM
7227 : There is no obvious default.  If they have specified html1dir, then
7228 : try to key off that, possibly changing .../html1 into .../html3.
7229 case "$html3dir" in
7230 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7231 *) dflt=$html3dir ;;
7232 esac
7233 fn=dn+~
7234 rp="Directory for the $spackage module html pages?"
7235 . ./getfile
7236 prefixvar=html3dir
7237 . ./setprefixvar
7238 : Use ' ' for none so value is preserved next time through Configure
7239 $test X"$html3dir" = "X" && html3dir=' '
7240
7241 : determine whether to install perl also as /usr/bin/perl
7242
7243 echo " "
7244 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7245         $cat <<EOM
7246 Many scripts expect perl to be installed as /usr/bin/perl.
7247
7248 If you want to, I can install the perl you are about to compile
7249 as /usr/bin/perl (in addition to $bin/perl).
7250 EOM
7251         if test -f /usr/bin/perl; then
7252             $cat <<EOM
7253
7254 However, please note that because you already have a /usr/bin/perl,
7255 overwriting that with a new Perl would very probably cause problems.
7256 Therefore I'm assuming you don't want to do that (unless you insist).
7257
7258 EOM
7259             case "$installusrbinperl" in
7260             "$define"|[yY]*)    dflt='y';;
7261             *)                  dflt='n';;
7262             esac
7263         else
7264             $cat <<EOM
7265
7266 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7267
7268 EOM
7269             case "$installusrbinperl" in
7270             "$undef"|[nN]*)     dflt='n';;
7271             *)                  dflt='y';;
7272             esac
7273         fi
7274         rp="Do you want to install perl as /usr/bin/perl?"
7275         . ./myread
7276         case "$ans" in
7277         [yY]*)  val="$define";;
7278         *)      val="$undef" ;;
7279         esac
7280 else
7281         val="$undef"
7282 fi
7283 set installusrbinperl
7284 eval $setvar
7285
7286 : Check if we are using the GNU C library
7287 echo " "
7288 echo "Checking for GNU C Library..." >&4
7289 cat >try.c <<'EOCP'
7290 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7291    alone are insufficient to distinguish different versions, such as
7292    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7293    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7294 */
7295 #include <stdio.h>
7296 int main(void)
7297 {
7298 #ifdef __GLIBC__
7299 #   ifdef __GLIBC_MINOR__
7300 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7301 #           include <gnu/libc-version.h>
7302             printf("%s\n",  gnu_get_libc_version());
7303 #       else
7304             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7305 #       endif
7306 #   else
7307         printf("%d\n",  __GLIBC__);
7308 #   endif
7309     return 0;
7310 #else
7311     return 1;
7312 #endif
7313 }
7314 EOCP
7315 set try
7316 if eval $compile_ok && $run ./try > glibc.ver; then
7317         val="$define"
7318         gnulibc_version=`$cat glibc.ver`
7319         echo "You are using the GNU C Library version $gnulibc_version"
7320 else
7321         val="$undef"
7322         gnulibc_version=''
7323         echo "You are not using the GNU C Library"
7324 fi
7325 $rm_try glibc.ver
7326 set d_gnulibc
7327 eval $setvar
7328
7329 : see if nm is to be used to determine whether a symbol is defined or not
7330 case "$usenm" in
7331 '')
7332         dflt=''
7333         case "$d_gnulibc" in
7334         "$define")
7335                 echo " "
7336                 echo "nm probably won't work on the GNU C Library." >&4
7337                 dflt=n
7338                 ;;
7339         esac
7340         case "$dflt" in
7341         '') 
7342                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7343                         echo " "
7344                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7345                         echo "'nm' won't be sufficient on this sytem." >&4
7346                         dflt=n
7347                 fi
7348                 ;;
7349         esac
7350         case "$dflt" in
7351         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7352                 if $test $dflt -gt 20; then
7353                         dflt=y
7354                 else
7355                         dflt=n
7356                 fi
7357                 ;;
7358         esac
7359         ;;
7360 *)
7361         case "$usenm" in
7362         true|$define) dflt=y;;
7363         *) dflt=n;;
7364         esac
7365         ;;
7366 esac
7367 $cat <<EOM
7368
7369 I can use $nm to extract the symbols from your C libraries. This
7370 is a time consuming task which may generate huge output on the disk (up
7371 to 3 megabytes) but that should make the symbols extraction faster. The
7372 alternative is to skip the 'nm' extraction part and to compile a small
7373 test program instead to determine whether each symbol is present. If
7374 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7375 this may be the best solution.
7376
7377 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7378
7379 EOM
7380 rp="Shall I use $nm to extract C symbols from the libraries?"
7381 . ./myread
7382 case "$ans" in
7383 [Nn]*) usenm=false;;
7384 *) usenm=true;;
7385 esac
7386
7387 runnm=$usenm
7388 case "$reuseval" in
7389 true) runnm=false;;
7390 esac
7391
7392 : nm options which may be necessary
7393 case "$nm_opt" in
7394 '') if $test -f /mach_boot; then
7395                 nm_opt=''       # Mach
7396         elif $test -d /usr/ccs/lib; then
7397                 nm_opt='-p'     # Solaris (and SunOS?)
7398         elif $test -f /dgux; then
7399                 nm_opt='-p'     # DG-UX
7400         elif $test -f /lib64/rld; then
7401                 nm_opt='-p'     # 64-bit Irix
7402         else
7403                 nm_opt=''
7404         fi;;
7405 esac
7406
7407 : nm options which may be necessary for shared libraries but illegal
7408 : for archive libraries.  Thank you, Linux.
7409 case "$nm_so_opt" in
7410 '')     case "$myuname" in
7411         *linux*|gnu*)
7412                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7413                         nm_so_opt='--dynamic'
7414                 fi
7415                 ;;
7416         esac
7417         ;;
7418 esac
7419
7420 : get list of predefined functions in a handy place
7421 case "$runnm" in
7422 true)
7423 echo " "
7424 case "$libc" in
7425 '') libc=unknown
7426         case "$libs" in
7427         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7428         esac
7429         ;;
7430 esac
7431 case "$libs" in
7432 '') ;;
7433 *)  for thislib in $libs; do
7434         case "$thislib" in
7435         -lc|-lc_s)
7436                 : Handle C library specially below.
7437                 ;;
7438         -l*)
7439                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7440                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7441                         :
7442                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7443                         :
7444                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7445                         :
7446                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7447                         :
7448                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7449                         :
7450                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7451                         :
7452                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7453                         :
7454                 else
7455                         try=''
7456                 fi
7457                 libnames="$libnames $try"
7458                 ;;
7459         *) libnames="$libnames $thislib" ;;
7460         esac
7461         done
7462         ;;
7463 esac
7464 xxx=normal
7465 case "$libc" in
7466 unknown)
7467         set /lib/libc.$so
7468         for xxx in $libpth; do
7469                 $test -r $1 || set $xxx/libc.$so
7470                 : The messy sed command sorts on library version numbers.
7471                 $test -r $1 || \
7472                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7473                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7474                                 h
7475                                 s/[0-9][0-9]*/0000&/g
7476                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7477                                 G
7478                                 s/\n/ /' | \
7479                          $sort | $sed -e 's/^.* //'`
7480                 eval set \$$#
7481         done
7482         $test -r $1 || set /usr/ccs/lib/libc.$so
7483         $test -r $1 || set /lib/libsys_s$_a
7484         ;;
7485 *)
7486         set blurfl
7487         ;;
7488 esac
7489 if $test -r "$1"; then
7490         echo "Your (shared) C library seems to be in $1."
7491         libc="$1"
7492 elif $test -r /lib/libc && $test -r /lib/clib; then
7493         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7494         xxx=apollo
7495         libc='/lib/clib /lib/libc'
7496         if $test -r /lib/syslib; then
7497                 echo "(Your math library is in /lib/syslib.)"
7498                 libc="$libc /lib/syslib"
7499         fi
7500 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7501         echo "Your C library seems to be in $libc, as you said before."
7502 elif $test -r $incpath/usr/lib/libc$_a; then
7503         libc=$incpath/usr/lib/libc$_a;
7504         echo "Your C library seems to be in $libc.  That's fine."
7505 elif $test -r /lib/libc$_a; then
7506         libc=/lib/libc$_a;
7507         echo "Your C library seems to be in $libc.  You're normal."
7508 else
7509         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7510                 :
7511         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7512                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7513         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7514                 :
7515         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7516                 :
7517         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7518                 :
7519         else
7520                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7521         fi
7522         if $test -r "$tans"; then
7523                 echo "Your C library seems to be in $tans, of all places."
7524                 libc=$tans
7525         else
7526                 libc='blurfl'
7527         fi
7528 fi
7529 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7530         dflt="$libc"
7531         cat <<EOM
7532
7533 If the guess above is wrong (which it might be if you're using a strange
7534 compiler, or your machine supports multiple models), you can override it here.
7535
7536 EOM
7537 else
7538         dflt=''
7539         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7540         cat >&4 <<EOM
7541 I can't seem to find your C library.  I've looked in the following places:
7542
7543 EOM
7544         $sed 's/^/      /' libpath
7545         cat <<EOM
7546
7547 None of these seems to contain your C library. I need to get its name...
7548
7549 EOM
7550 fi
7551 fn=f
7552 rp='Where is your C library?'
7553 . ./getfile
7554 libc="$ans"
7555
7556 echo " "
7557 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7558 set X `cat libnames`
7559 shift
7560 xxx=files
7561 case $# in 1) xxx=file; esac
7562 echo "Extracting names from the following $xxx for later perusal:" >&4
7563 echo " "
7564 $sed 's/^/      /' libnames >&4
7565 echo " "
7566 $echo $n "This may take a while...$c" >&4
7567
7568 for file in $*; do
7569         case $file in
7570         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7571         *) $nm $nm_opt $file 2>/dev/null;;
7572         esac
7573 done >libc.tmp
7574
7575 $echo $n ".$c"
7576 $grep fprintf libc.tmp > libc.ptf
7577 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7578 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7579 xxx='[ADTSIW]'
7580 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7581         eval $xscan;\
7582         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7583                 eval $xrun
7584 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7585         eval $xscan;\
7586         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7587                 eval $xrun
7588 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7589         eval $xscan;\
7590         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7591                 eval $xrun
7592 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7593         eval $xscan;\
7594         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7595                 eval $xrun
7596 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7597         eval $xscan;\
7598         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7599                 eval $xrun
7600 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7601         eval $xscan;\
7602         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7603                 eval $xrun
7604 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7605                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7606         eval $xscan;\
7607         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7608                 eval $xrun
7609 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7610         eval $xscan;\
7611         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7612                 eval $xrun
7613 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7614         eval $xscan;\
7615         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7616                 eval $xrun
7617 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7618         eval $xscan;\
7619         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7620                 eval $xrun
7621 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7622         eval $xscan;\
7623         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7624                 eval $xrun
7625 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7626         eval $xscan;\
7627         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7628                 eval $xrun
7629 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7630         eval $xscan;\
7631         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7632                 eval $xrun
7633 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7634         eval $xscan;\
7635         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7636                 eval $xrun
7637 else
7638         $nm -p $* 2>/dev/null >libc.tmp
7639         $grep fprintf libc.tmp > libc.ptf
7640         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7641                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7642         then
7643                 nm_opt='-p'
7644                 eval $xrun
7645         else
7646                 echo " "
7647                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7648                 com=''
7649                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7650                         for thisname in $libnames $libc; do
7651                                 $ar t $thisname >>libc.tmp
7652                         done
7653                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7654                         echo "Ok." >&4
7655                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7656                         # Repeat libc to extract forwarders to DLL entries too
7657                         for thisname in $libnames $libc; do
7658                                 $ar tv $thisname >>libc.tmp
7659                                 # Revision 50 of EMX has bug in $ar.
7660                                 # it will not extract forwarders to DLL entries
7661                                 # Use emximp which will extract exactly them.
7662                                 emximp -o tmp.imp $thisname \
7663                                     2>/dev/null && \
7664                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7665                                     < tmp.imp >>libc.tmp
7666                                 $rm tmp.imp
7667                         done
7668                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7669                         echo "Ok." >&4
7670                 else
7671                         echo "$ar didn't seem to work right." >&4
7672                         echo "Maybe this is a Cray...trying bld instead..." >&4
7673                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7674                         then
7675                                 for thisname in $libnames; do
7676                                         bld t $libnames | \
7677                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7678                                         $ar t $thisname >>libc.tmp
7679                                 done
7680                                 echo "Ok." >&4
7681                         else
7682                                 echo "That didn't work either.  Giving up." >&4
7683                                 exit 1
7684                         fi
7685                 fi
7686         fi
7687 fi
7688 nm_extract="$com"
7689 case "$PASE" in
7690 define)
7691     echo " "
7692     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7693     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7694     ;;
7695 *)  if $test -f /lib/syscalls.exp; then
7696         echo " "
7697         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7698         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7699     fi
7700     ;;
7701 esac
7702 ;;
7703 esac
7704 $rm -f libnames libpath
7705
7706 : see if dld is available
7707 set dld.h i_dld
7708 eval $inhdr
7709
7710 : Check if we are using C++
7711 echo " "
7712 echo "Checking for C++..." >&4
7713 $cat >try.c <<'EOCP'
7714 #include <stdio.h>
7715 int main(void)
7716 {
7717 #ifdef __cplusplus
7718     return 0;
7719 #else
7720     return 1;
7721 #endif
7722 }
7723 EOCP
7724 set try
7725 if eval $compile_ok && $run ./try; then
7726         val="$define"
7727         echo "You are using a C++ compiler."
7728 else
7729         val="$undef"
7730         echo "You are not using a C++ compiler."
7731 fi
7732 $rm_try cplusplus$$
7733 set d_cplusplus
7734 eval $setvar
7735
7736 : is a C symbol defined?
7737 csym='tlook=$1;
7738 case "$3" in
7739 -v) tf=libc.tmp; tdc="";;
7740 -a) tf=libc.tmp; tdc="[]";;
7741 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7742 esac;
7743 tx=yes;
7744 case "$reuseval-$4" in
7745 true-) ;;
7746 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7747 esac;
7748 case "$tx" in
7749 yes)
7750         tval=false;
7751         case "$d_cplusplus" in
7752                 $define) extern_C=\"C\";;
7753         esac;
7754         if $test "$runnm" = true; then
7755                 if $contains $tlook $tf >/dev/null 2>&1; then
7756                         tval=true;
7757                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7758                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7759                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7760                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7761                         $rm_try;
7762                 fi;
7763         else
7764                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7765                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7766                 $rm_try;
7767         fi;
7768         ;;
7769 *)
7770         case "$tval" in
7771         $define) tval=true;;
7772         *) tval=false;;
7773         esac;
7774         ;;
7775 esac;
7776 eval "$2=$tval"'
7777
7778 : define an is-in-libc? function
7779 inlibc='echo " "; td=$define; tu=$undef;
7780 sym=$1; var=$2; eval "was=\$$2";
7781 tx=yes;
7782 case "$reuseval$was" in
7783 true) ;;
7784 true*) tx=no;;
7785 esac;
7786 case "$tx" in
7787 yes)
7788         set $sym tres -f;
7789         eval $csym;
7790         case "$tres" in
7791         true)
7792                 echo "$sym() found." >&4;
7793                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7794         *)
7795                 echo "$sym() NOT found." >&4;
7796                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7797         esac;;
7798 *)
7799         case "$was" in
7800         $define) echo "$sym() found." >&4;;
7801         *) echo "$sym() NOT found." >&4;;
7802         esac;;
7803 esac'
7804
7805 : see if dlopen exists
7806 xxx_runnm="$runnm"
7807 xxx_ccflags="$ccflags"
7808 runnm=false
7809 : with g++ one needs -shared to get is-in-libc to work for dlopen
7810 case "$gccversion" in
7811 '')     ;;
7812 *)      case "$d_cplusplus" in
7813         "$define") ccflags="$ccflags -shared" ;;
7814         esac
7815         ;;
7816 esac
7817 set dlopen d_dlopen
7818 eval $inlibc
7819 runnm="$xxx_runnm"
7820 ccflags="$xxx_ccflags"
7821
7822 : see if this is a unistd.h system
7823 set unistd.h i_unistd
7824 eval $inhdr
7825
7826 : determine which dynamic loading, if any, to compile in
7827 echo " "
7828 dldir="ext/DynaLoader"
7829 case "$usedl" in
7830 $define|y|true)
7831         dflt='y'
7832         usedl="$define"
7833         ;;
7834 $undef|n|false)
7835         dflt='n'
7836         usedl="$undef"
7837         ;;
7838 *)
7839         dflt='n'
7840         case "$d_dlopen" in
7841             $define) dflt='y' ;;
7842         esac
7843         case "$i_dld" in
7844             $define) dflt='y' ;;
7845         esac
7846         : Does a dl_xxx.xs file exist for this operating system
7847         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7848         ;;
7849 esac
7850 rp="Do you wish to use dynamic loading?"
7851 . ./myread
7852 usedl="$ans"
7853 case "$ans" in
7854 y*) usedl="$define"
7855         case "$dlsrc" in
7856         '')
7857                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7858                         dflt="$dldir/dl_${osname}.xs"
7859                 elif $test "$d_dlopen" = "$define" ; then
7860                         dflt="$dldir/dl_dlopen.xs"
7861                 elif $test "$i_dld" = "$define" ; then
7862                         dflt="$dldir/dl_dld.xs"
7863                 else
7864                         dflt=''
7865                 fi
7866                 ;;
7867         *)      dflt="$dldir/$dlsrc"
7868                 ;;
7869         esac
7870     echo "The following dynamic loading files are available:"
7871         : Can not go over to $dldir because getfile has path hard-coded in.
7872         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7873         rp="Source file to use for dynamic loading"
7874         fn="fne"
7875         gfpth="$src"
7876         . ./getfile
7877         usedl="$define"
7878         : emulate basename
7879         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7880
7881         $cat << EOM
7882
7883 Some systems may require passing special flags to $cc -c to
7884 compile modules that will be used to create a shared library.
7885 To use no flags, say "none".
7886
7887 EOM
7888     case "$cccdlflags" in
7889     '') case "$gccversion" in
7890                 '') case "$osname" in
7891                         hpux)   dflt='+z' ;;
7892                         next)   dflt='none' ;;
7893                         irix*)  dflt='-KPIC' ;;
7894                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7895                         sunos)  dflt='-pic' ;;
7896                         *)      dflt='none' ;;
7897                     esac
7898                         ;;
7899                 *)  case "$osname" in
7900                         darwin) dflt='none' ;;
7901                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7902                         *)      dflt='-fpic' ;;
7903                     esac ;;
7904             esac ;;
7905         ' ') dflt='none' ;;
7906     *)  dflt="$cccdlflags" ;;
7907     esac
7908     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7909     . ./myread
7910     case "$ans" in
7911     none) cccdlflags=' ' ;;
7912     *) cccdlflags="$ans" ;;
7913     esac
7914
7915     cat << EOM
7916
7917 Some systems use ld to create libraries that can be dynamically loaded,
7918 while other systems (such as those using ELF) use $cc.
7919
7920 EOM
7921         case "$ld" in
7922         '')     $cat >try.c <<EOM
7923 /* Test for whether ELF binaries are produced */
7924 #include <fcntl.h>
7925 #$i_stdlib I_STDLIB
7926 #ifdef I_STDLIB
7927 #include <stdlib.h>
7928 #endif
7929 #$i_unistd I_UNISTD
7930 #ifdef I_UNISTD
7931 #include <unistd.h>
7932 #endif
7933 int main() {
7934         char b[4];
7935         int i = open("a.out",O_RDONLY);
7936         if(i == -1)
7937                 exit(1); /* fail */
7938         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7939                 exit(0); /* succeed (yes, it's ELF) */
7940         else
7941                 exit(1); /* fail */
7942 }
7943 EOM
7944                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7945                         cat <<EOM
7946 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7947 EOM
7948                         dflt="$cc"
7949                 else
7950                         echo "I'll use ld to build dynamic libraries."
7951                         dflt='ld'
7952                 fi
7953                 $rm_try
7954                 ;;
7955         *)      dflt="$ld"
7956                 ;;
7957         esac
7958
7959     rp="What command should be used to create dynamic libraries?"
7960     . ./myread
7961         ld="$ans"
7962
7963     cat << EOM
7964
7965 Some systems may require passing special flags to $ld to create a
7966 library that can be dynamically loaded.  If your ld flags include
7967 -L/other/path options to locate libraries outside your loader's normal
7968 search path, you may need to specify those -L options here as well.  To
7969 use no flags, say "none".
7970
7971 EOM
7972     case "$lddlflags" in
7973     '') case "$osname" in
7974                         beos) dflt='-nostart' ;;
7975                         hpux) dflt='-b';
7976                               case "$gccversion" in
7977                               '') dflt="$dflt +vnocompatwarnings" ;;
7978                               esac
7979                               ;;
7980                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
7981                         next)  dflt='none' ;;
7982                         solaris) dflt='-G' ;;
7983                         sunos) dflt='-assert nodefinitions' ;;
7984                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7985                 *)     dflt='none' ;;
7986                         esac
7987                         ;;
7988     *) dflt="$lddlflags" ;;
7989     esac
7990
7991         : Try to guess additional flags to pick up local libraries.
7992         : Be careful not to append to a plain 'none'
7993         case "$dflt" in
7994         none) dflt='' ;;
7995         esac
7996         for thisflag in $ldflags; do
7997                 case "$thisflag" in
7998                 -L*|-R*|-Wl,-R*)
7999                         case " $dflt " in
8000                         *" $thisflag "*) ;;
8001                         *) dflt="$dflt $thisflag" ;;
8002                         esac
8003                         ;;
8004                 esac
8005         done
8006
8007         case "$dflt" in
8008         ''|' ') dflt='none' ;;
8009         esac
8010
8011     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
8012     . ./myread
8013     case "$ans" in
8014     none) lddlflags=' ' ;;
8015     *) lddlflags="$ans" ;;
8016     esac
8017
8018         cat <<EOM
8019
8020 Some systems may require passing special flags to $cc to indicate that
8021 the resulting executable will use dynamic linking.  To use no flags,
8022 say "none".
8023
8024 EOM
8025     case "$ccdlflags" in
8026     '') case "$osname" in
8027             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
8028             next|sunos) dflt='none' ;;
8029             *)          dflt='none' ;;
8030             esac ;;
8031     ' ')  dflt='none' ;;
8032     *)  dflt="$ccdlflags" ;;
8033     esac
8034     rp="Any special flags to pass to $cc to use dynamic linking?"
8035     . ./myread
8036     case "$ans" in
8037     none) ccdlflags=' ' ;;
8038     *) ccdlflags="$ans" ;;
8039     esac
8040     ;;
8041 *)  usedl="$undef"
8042         ld='ld'
8043     dlsrc='dl_none.xs'
8044     lddlflags=''
8045     ccdlflags=''
8046     ;;
8047 esac
8048
8049 : Do we want a shared libperl?
8050 also=''
8051 case "$usedl" in
8052 $undef)
8053         # No dynamic loading being used, so don't bother even to prompt.
8054         useshrplib='false'
8055         ;;
8056 *)      case "$useshrplib" in
8057         '')     case "$osname" in
8058                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
8059                         dflt=y
8060                         also='Building a shared libperl is required for dynamic loading to work on your system.'
8061                         ;;
8062                 next*)
8063                         case "$osvers" in
8064                         4*)     dflt=y
8065                                 also='Building a shared libperl is needed for MAB support.'
8066                                 ;;
8067                         *)      dflt=n
8068                                 ;;
8069                         esac
8070                         ;;
8071                 *)      dflt=n
8072                         ;;
8073                 esac
8074                 ;;
8075         $define|true|[Yy]*)
8076                 dflt=y
8077                 ;;
8078         *)      dflt=n
8079                 ;;
8080         esac
8081         $cat << EOM
8082
8083 The perl executable is normally obtained by linking perlmain.c with
8084 libperl${_a}, any static extensions (usually just DynaLoader), and
8085 any other libraries needed on this system (such as -lm, etc.).  Since
8086 your system supports dynamic loading, it is probably possible to build
8087 a shared libperl.$so.  If you will have more than one executable linked
8088 to libperl.$so, this will significantly reduce the size of each
8089 executable, but it may have a noticeable effect on performance.  The
8090 default is probably sensible for your system.
8091 $also
8092
8093 EOM
8094         rp="Build a shared libperl.$so (y/n)"
8095         . ./myread
8096         case "$ans" in
8097         true|$define|[Yy]*)
8098                 useshrplib='true'  ;;
8099         *)      useshrplib='false' ;;
8100         esac
8101         ;;
8102 esac
8103
8104 case "$useshrplib" in
8105 true)
8106         case "$libperl" in
8107         '')
8108                 # Figure out a good name for libperl.so.  Since it gets stored in
8109                 # a version-specific architecture-dependent library, the version
8110                 # number isn't really that important, except for making cc/ld happy.
8111                 #
8112                 # A name such as libperl.so.3.1
8113                 majmin="libperl.$so.$patchlevel.$subversion"
8114                 # A name such as libperl.so.301
8115                 majonly=`echo $patchlevel $subversion |
8116                         $awk '{printf "%d%02d", $1, $2}'`
8117                 majonly=libperl.$so.$majonly
8118                 # I'd prefer to keep the os-specific stuff here to a minimum, and
8119                 # rely on figuring it out from the naming of libc.
8120                 case "${osname}${osvers}" in
8121                 next4*)
8122                         dflt=libperl.5.$so
8123                         # XXX How handle the --version stuff for MAB?
8124                         ;;
8125                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
8126                         dflt=libperl.$so
8127                         ;;
8128                 cygwin*) # ld links against an importlib
8129                         dflt=libperl$lib_ext
8130                         ;;
8131                 *)      # Try to guess based on whether libc has major.minor.
8132                         case "$libc" in
8133                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8134                         *libc.$so.[0-9]*) dflt=$majonly ;;
8135                         *)      dflt=libperl.$so ;;
8136                         esac
8137                         ;;
8138                 esac
8139                 ;;
8140         *)      dflt=$libperl
8141                 ;;
8142         esac
8143         cat << EOM
8144
8145 I need to select a good name for the shared libperl.  If your system uses
8146 library names with major and minor numbers, then you might want something
8147 like $majmin.  Alternatively, if your system uses a single version
8148 number for shared libraries, then you might want to use $majonly.
8149 Or, your system might be quite happy with a simple libperl.$so.
8150
8151 Since the shared libperl will get installed into a version-specific
8152 architecture-dependent directory, the version number of the shared perl
8153 library probably isn't important, so the default should be o.k.
8154
8155 EOM
8156         rp='What name do you want to give to the shared libperl?'
8157         . ./myread
8158         libperl=$ans
8159         echo "Ok, I'll use $libperl"
8160         ;;
8161 *)
8162         libperl="libperl${_a}"
8163         ;;
8164 esac
8165
8166 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8167 case "$shrpdir" in
8168 '') ;;
8169 *)      $cat >&4 <<EOM
8170 WARNING:  Use of the shrpdir variable for the installation location of
8171 the shared $libperl is not supported.  It was never documented and
8172 will not work in this version.  Let me (perlbug@perl.org)
8173 know of any problems this may cause.
8174
8175 EOM
8176         case "$shrpdir" in
8177         "$archlibexp/CORE")
8178                 $cat >&4 <<EOM
8179 But your current setting of $shrpdir is
8180 the default anyway, so it's harmless.
8181 EOM
8182                 ;;
8183         *)
8184                 $cat >&4 <<EOM
8185 Further, your current attempted setting of $shrpdir
8186 conflicts with the value of $archlibexp/CORE
8187 that installperl will use.
8188 EOM
8189                 ;;
8190         esac
8191         ;;
8192 esac
8193
8194 # How will the perl executable find the installed shared $libperl?
8195 # Add $xxx to ccdlflags.
8196 # If we can't figure out a command-line option, use $shrpenv to
8197 # set env LD_RUN_PATH.  The main perl makefile uses this.
8198 shrpdir=$archlibexp/CORE
8199 xxx=''
8200 tmp_shrpenv=''
8201 if "$useshrplib"; then
8202     case "$osname" in
8203         aix)
8204                 # We'll set it in Makefile.SH...
8205                 ;;
8206         solaris)
8207                 xxx="-R $shrpdir"
8208                 ;;
8209         freebsd|netbsd|openbsd|interix|dragonfly)
8210                 xxx="-Wl,-R$shrpdir"
8211                 ;;
8212         bsdos|linux|irix*|dec_osf|gnu*)
8213                 xxx="-Wl,-rpath,$shrpdir"
8214                 ;;
8215         next)
8216                 # next doesn't like the default...
8217                 ;;
8218         beos)
8219                 # beos doesn't like the default, either.
8220                 ;;
8221         hpux*)
8222                 # hpux doesn't like the default, either.
8223                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8224                 ;;
8225         *)
8226                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8227                 ;;
8228         esac
8229         case "$xxx" in
8230         '') ;;
8231         *)
8232                 # Only add $xxx if it isn't already in ccdlflags.
8233                 case " $ccdlflags " in
8234                 *" $xxx "*)     ;;
8235                 *)      ccdlflags="$ccdlflags $xxx"
8236                         cat <<EOM >&4
8237
8238 Adding $xxx to the flags
8239 passed to $ld so that the perl executable will find the
8240 installed shared $libperl.
8241
8242 EOM
8243                         ;;
8244                 esac
8245                 ;;
8246         esac
8247 fi
8248 # Fix ccdlflags in AIX for building external extensions.
8249 # (For building Perl itself bare -bE:perl.exp is needed,
8250 #  Makefile.SH takes care of this.)
8251 case "$osname" in
8252 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8253 esac
8254 # Respect a hint or command-line value.
8255 case "$shrpenv" in
8256 '') shrpenv="$tmp_shrpenv" ;;
8257 esac
8258 case "$ldlibpthname" in
8259 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8260 none)   ldlibpthname='' ;;
8261 esac
8262
8263 : determine where manual pages are on this system
8264 echo " "
8265 case "$sysman" in
8266 '') 
8267         syspath='/usr/share/man/man1 /usr/man/man1'
8268         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8269         syspath="$syspath /usr/man/u_man/man1"
8270         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8271         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8272         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8273         sysman=`./loc . /usr/man/man1 $syspath`
8274         ;;
8275 esac
8276 if $test -d "$sysman"; then
8277         echo "System manual is in $sysman." >&4
8278 else
8279         echo "Could not find manual pages in source form." >&4
8280 fi
8281
8282 : determine where manual pages go
8283 set man1dir man1dir none
8284 eval $prefixit
8285 $cat <<EOM
8286
8287 $spackage has manual pages available in source form.
8288 EOM
8289 case "$nroff" in
8290 nroff)
8291         echo "However, you don't have nroff, so they're probably useless to you."
8292         case "$man1dir" in
8293         '') man1dir="none";;
8294         esac;;
8295 esac
8296 echo "If you don't want the manual sources installed, answer 'none'."
8297 case "$man1dir" in
8298 ' ') dflt=none
8299         ;;
8300 '')
8301         lookpath="$prefixexp/share/man/man1"
8302         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8303         lookpath="$lookpath $prefixexp/man/p_man/man1"
8304         lookpath="$lookpath $prefixexp/man/u_man/man1"
8305         lookpath="$lookpath $prefixexp/man/man.1"
8306         case "$sysman" in
8307         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8308         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8309         esac
8310         set dflt
8311         eval $prefixup
8312         ;;
8313 *)  dflt="$man1dir"
8314         ;;
8315 esac
8316 echo " "
8317 fn=dn+~
8318 rp="Where do the main $spackage manual pages (source) go?"
8319 . ./getfile
8320 if $test "X$man1direxp" != "X$ansexp"; then
8321         installman1dir=''
8322 fi
8323 prefixvar=man1dir
8324 . ./setprefixvar
8325
8326 case "$man1dir" in
8327 '')     man1dir=' '
8328         installman1dir='';;
8329 esac
8330
8331 : What suffix to use on installed man pages
8332
8333 case "$man1dir" in
8334 ' ')
8335         man1ext='0'
8336         ;;
8337 *)
8338         rp="What suffix should be used for the main $spackage man pages?"
8339         case "$man1ext" in
8340         '')     case "$man1dir" in
8341                 *1)  dflt=1 ;;
8342                 *1p) dflt=1p ;;
8343                 *1pm) dflt=1pm ;;
8344                 *l) dflt=l;;
8345                 *n) dflt=n;;
8346                 *o) dflt=o;;
8347                 *p) dflt=p;;
8348                 *C) dflt=C;;
8349                 *L) dflt=L;;
8350                 *L1) dflt=L1;;
8351                 *) dflt=1;;
8352                 esac
8353                 ;;
8354         *)      dflt="$man1ext";;
8355         esac
8356         . ./myread
8357         man1ext="$ans"
8358         ;;
8359 esac
8360
8361 : see if we can have long filenames
8362 echo " "
8363 first=123456789abcdef
8364 $rm -f $first
8365 if (echo hi >$first) 2>/dev/null; then
8366         if $test -f 123456789abcde; then
8367                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8368                 val="$undef"
8369         else
8370                 echo 'You can have filenames longer than 14 characters.'>&4
8371                 val="$define"
8372         fi
8373 else
8374         $cat <<'EOM'
8375 You can't have filenames longer than 14 chars.
8376 You can't even think about them!
8377 EOM
8378         val="$undef"
8379 fi
8380 set d_flexfnam
8381 eval $setvar
8382 $rm -rf 123456789abcde*
8383
8384 : determine where library module manual pages go
8385 set man3dir man3dir none
8386 eval $prefixit
8387 $cat <<EOM
8388
8389 $spackage has manual pages for many of the library modules.
8390 EOM
8391
8392 case "$nroff" in
8393 nroff)
8394         $cat <<'EOM'
8395 However, you don't have nroff, so they're probably useless to you.
8396 EOM
8397         case "$man3dir" in
8398         '') man3dir="none";;
8399         esac;;
8400 esac
8401
8402 case "$d_flexfnam" in
8403 undef)
8404         $cat <<'EOM'
8405 However, your system can't handle the long file names like File::Basename.3.
8406 EOM
8407         case "$man3dir" in
8408         '') man3dir="none";;
8409         esac;;
8410 esac
8411
8412 echo "If you don't want the manual sources installed, answer 'none'."
8413 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8414 case "$man3dir" in
8415 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8416         if $test -d "$privlib/man/man3"; then
8417                 cat <<EOM >&4
8418
8419 WARNING:  Previous versions of perl installed man3 pages into
8420 $privlib/man/man3.  This version will suggest a
8421 new default of $dflt.
8422 EOM
8423                 tdflt=$dflt
8424                 dflt='n'
8425                 rp='Do you wish to preserve the old behavior?(y/n)'
8426                 . ./myread
8427                 case "$ans" in
8428                 y*) dflt="$privlib/man/man3" ;;
8429                 *)  dflt=$tdflt ;;
8430                 esac
8431     fi
8432         ;;
8433 *)      dflt="$man3dir" ;;
8434 esac
8435 case "$dflt" in
8436 ' ') dflt=none ;;
8437 esac
8438 echo " "
8439 fn=dn+~
8440 rp="Where do the $package library man pages (source) go?"
8441 . ./getfile
8442 prefixvar=man3dir
8443 . ./setprefixvar
8444
8445 case "$man3dir" in
8446 '')     man3dir=' '
8447         installman3dir='';;
8448 esac
8449
8450 : What suffix to use on installed man pages
8451 case "$man3dir" in
8452 ' ')
8453         man3ext='0'
8454         ;;
8455 *)
8456         rp="What suffix should be used for the $package library man pages?"
8457         case "$man3ext" in
8458         '')     case "$man3dir" in
8459                 *3)  dflt=3 ;;
8460                 *3p) dflt=3p ;;
8461                 *3pm) dflt=3pm ;;
8462                 *l) dflt=l;;
8463                 *n) dflt=n;;
8464                 *o) dflt=o;;
8465                 *p) dflt=p;;
8466                 *C) dflt=C;;
8467                 *L) dflt=L;;
8468                 *L3) dflt=L3;;
8469                 *) dflt=3;;
8470                 esac
8471                 ;;
8472         *)      dflt="$man3ext";;
8473         esac
8474         . ./myread
8475         man3ext="$ans"
8476         ;;
8477 esac
8478
8479 : see if we have to deal with yellow pages, now NIS.
8480 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8481         if $test -f /usr/etc/nibindd; then
8482                 echo " "
8483                 echo "I'm fairly confident you're on a NeXT."
8484                 echo " "
8485                 rp='Do you get the hosts file via NetInfo?'
8486                 dflt=y
8487                 case "$hostcat" in
8488                 nidump*) ;;
8489                 '') ;;
8490                 *) dflt=n;;
8491                 esac
8492                 . ./myread
8493                 case "$ans" in
8494                 y*) hostcat='nidump hosts .';;
8495                 *)      case "$hostcat" in
8496                         nidump*) hostcat='';;
8497                         esac
8498                         ;;
8499                 esac
8500         fi
8501         case "$hostcat" in
8502         nidump*) ;;
8503         *)
8504                 case "$hostcat" in
8505                 *ypcat*) dflt=y;;
8506                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8507                                 dflt=y
8508                         else
8509                                 dflt=n
8510                         fi;;
8511                 *) dflt=n;;
8512                 esac
8513                 echo " "
8514                 rp='Are you getting the hosts file via yellow pages?'
8515                 . ./myread
8516                 case "$ans" in
8517                 y*) hostcat='ypcat hosts';;
8518                 *) hostcat='cat /etc/hosts';;
8519                 esac
8520                 ;;
8521         esac
8522 fi
8523 case "$hostcat" in
8524 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8525 esac
8526 case "$groupcat" in
8527 '') test -f /etc/group && groupcat='cat /etc/group';;
8528 esac
8529 case "$passcat" in
8530 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8531 esac
8532
8533 : now get the host name
8534 echo " "
8535 echo "Figuring out host name..." >&4
8536 case "$myhostname" in
8537 '') cont=true
8538         echo 'Maybe "hostname" will work...'
8539         if tans=`sh -c hostname 2>&1` ; then
8540                 myhostname=$tans
8541                 phostname=hostname
8542                 cont=''
8543         fi
8544         ;;
8545 *) cont='';;
8546 esac
8547 if $test "$cont"; then
8548         if ./xenix; then
8549                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8550                 if tans=`cat /etc/systemid 2>&1` ; then
8551                         myhostname=$tans
8552                         phostname='cat /etc/systemid'
8553                         echo "Whadyaknow.  Xenix always was a bit strange..."
8554                         cont=''
8555                 fi
8556         elif $test -r /etc/systemid; then
8557                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8558         fi
8559 fi
8560 if $test "$cont"; then
8561         echo 'No, maybe "uuname -l" will work...'
8562         if tans=`sh -c 'uuname -l' 2>&1` ; then
8563                 myhostname=$tans
8564                 phostname='uuname -l'
8565         else
8566                 echo 'Strange.  Maybe "uname -n" will work...'
8567                 if tans=`sh -c 'uname -n' 2>&1` ; then
8568                         myhostname=$tans
8569                         phostname='uname -n'
8570                 else
8571                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8572                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8573                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8574                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8575                         else
8576                                 case "$myhostname" in
8577                                 '') echo "Does this machine have an identity crisis or something?"
8578                                         phostname='';;
8579                                 *)
8580                                         echo "Well, you said $myhostname before..."
8581                                         phostname='echo $myhostname';;
8582                                 esac
8583                         fi
8584                 fi
8585         fi
8586 fi
8587 case "$myhostname" in
8588 '') myhostname=noname ;;
8589 esac
8590 : you do not want to know about this
8591 set $myhostname
8592 myhostname=$1
8593
8594 : verify guess
8595 if $test "$myhostname" ; then
8596         dflt=y
8597         rp='Your host name appears to be "'$myhostname'".'" Right?"
8598         . ./myread
8599         case "$ans" in
8600         y*) ;;
8601         *) myhostname='';;
8602         esac
8603 fi
8604
8605 : bad guess or no guess
8606 while $test "X$myhostname" = X ; do
8607         dflt=''
8608         rp="Please type the (one word) name of your host:"
8609         . ./myread
8610         myhostname="$ans"
8611 done
8612
8613 : translate upper to lower if necessary
8614 case "$myhostname" in
8615 *[A-Z]*)
8616         echo "(Normalizing case in your host name)"
8617         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8618         ;;
8619 esac
8620
8621 case "$myhostname" in
8622 *.*)
8623         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8624         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8625         echo "(Trimming domain name from host name--host name is now $myhostname)"
8626         ;;
8627 *) case "$mydomain" in
8628         '')
8629                 {
8630                         test "X$hostcat" = "Xypcat hosts" &&
8631                         ypmatch "$myhostname" hosts 2>/dev/null |\
8632                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8633                         $test -s hosts
8634                 } || {
8635                         test "X$hostcat" != "X" &&
8636                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8637                                         /[       ]$myhostname[  . ]/p" > hosts
8638                 }
8639                 tmp_re="[       . ]"
8640                 if $test -f hosts; then
8641                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8642                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8643                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8644                                 hosts | $sort | $uniq | \
8645                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8646                         case `$echo X$dflt` in
8647                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8648                                 dflt=.
8649                                 ;;
8650                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8651                                 ;;
8652                         esac
8653                 else
8654                         echo "(I cannot locate a hosts database anywhere)"
8655                         dflt=.
8656                 fi
8657                 case "$dflt" in
8658                 .)
8659                         tans=`./loc resolv.conf X /etc /usr/etc`
8660                         if $test -f "$tans"; then
8661                                 echo "(Attempting domain name extraction from $tans)"
8662                                 dflt=.`$sed -n -e 's/   / /g' \
8663                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8664                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8665                                 case "$dflt" in
8666                                 .) dflt=.`$sed -n -e 's/        / /g' \
8667                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8668                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8669                                         ;;
8670                                 esac
8671                         fi
8672                         ;;
8673                 esac
8674                 case "$dflt" in
8675                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8676                         dflt=.`sh -c domainname 2>/dev/null`
8677                         case "$dflt" in
8678                         '') dflt='.';;
8679                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8680                         esac
8681                         ;;
8682                 esac
8683                 case "$dflt$osname" in
8684                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8685                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8686                         ;;
8687                 esac
8688                 case "$dflt" in
8689                 .) echo "(Lost all hope -- silly guess then)"
8690                         dflt='.nonet'
8691                         ;;
8692                 esac
8693                 $rm -f hosts
8694                 ;;
8695         *) dflt="$mydomain";;
8696         esac;;
8697 esac
8698 echo " "
8699 rp="What is your domain name?"
8700 . ./myread
8701 tans="$ans"
8702 case "$ans" in
8703 '') ;;
8704 .*) ;;
8705 *) tans=".$tans";;
8706 esac
8707 mydomain="$tans"
8708
8709 : translate upper to lower if necessary
8710 case "$mydomain" in
8711 *[A-Z]*)
8712         echo "(Normalizing case in your domain name)"
8713         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8714         ;;
8715 esac
8716
8717 : a little sanity check here
8718 case "$phostname" in
8719 '') ;;
8720 *)
8721         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8722         $myhostname$mydomain|$myhostname) ;;
8723         *)
8724                 case "$phostname" in
8725                 sed*)
8726                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8727                         ;;
8728                 *)
8729                         echo "(That doesn't agree with your $phostname command, by the way.)"
8730                         ;;
8731                 esac
8732         ;;
8733         esac
8734         ;;
8735 esac
8736
8737 : determine the e-mail address of the user who is running us
8738 $cat <<EOM
8739
8740 I need to get your e-mail address in Internet format if possible, i.e.
8741 something like user@host.domain. Please answer accurately since I have
8742 no easy means to double check it. The default value provided below
8743 is most probably close to reality but may not be valid from outside
8744 your organization...
8745
8746 EOM
8747 cont=x
8748 while test "$cont"; do
8749         case "$cf_email" in
8750         '') dflt="$cf_by@$myhostname$mydomain";;
8751         *) dflt="$cf_email";;
8752         esac
8753         rp='What is your e-mail address?'
8754         . ./myread
8755         cf_email="$ans"
8756         case "$cf_email" in
8757         *@*.*) cont='' ;;
8758         *)
8759                 rp='Address does not look like an Internet one.  Use it anyway?'
8760                 case "$fastread" in
8761                 yes) dflt=y ;;
8762                 *) dflt=n ;;
8763                 esac
8764                 . ./myread
8765                 case "$ans" in
8766                 y*) cont='' ;;
8767                 *) echo " " ;;
8768                 esac
8769                 ;;
8770         esac
8771 done
8772
8773 : Ask e-mail of administrator
8774 $cat <<EOM
8775
8776 If you or somebody else will be maintaining perl at your site, please
8777 fill in the correct e-mail address here so that they may be contacted
8778 if necessary. Currently, the "perlbug" program included with perl
8779 will send mail to this address in addition to perlbug@perl.org. You may
8780 enter "none" for no administrator.
8781
8782 EOM
8783 case "$perladmin" in
8784 '') dflt="$cf_email";;
8785 *) dflt="$perladmin";;
8786 esac
8787 rp='Perl administrator e-mail address'
8788 . ./myread
8789 perladmin="$ans"
8790
8791 : determine whether to only install version-specific parts.
8792 echo " "
8793 $cat <<EOM
8794 Do you want to install only the version-specific parts of the perl
8795 distribution?  Usually you do *not* want to do this.
8796 EOM
8797 case "$versiononly" in
8798 "$define"|[Yy]*|true) dflt='y' ;;
8799 *) dflt='n';
8800 esac
8801 rp="Do you want to install only the version-specific parts of perl?"
8802 . ./myread
8803 case "$ans" in
8804 [yY]*)  val="$define";;
8805 *)      val="$undef" ;;
8806 esac
8807 set versiononly
8808 eval $setvar
8809
8810 case "$versiononly" in
8811 "$define") inc_version_list=''
8812            inc_version_list_init=0
8813            ;;
8814 esac
8815
8816 : figure out how to guarantee perl startup
8817 : XXX Note that this currently takes advantage of the bug that binexp ignores
8818 :     the Configure -Dinstallprefix setting, which in turn means that under
8819 :     relocatable @INC, initialinstalllocation is what binexp started as.
8820 case "$startperl" in
8821 '')
8822         case "$sharpbang" in
8823         *!)
8824                 $cat <<EOH
8825
8826 I can use the #! construct to start perl on your system. This will
8827 make startup of perl scripts faster, but may cause problems if you
8828 want to share those scripts and perl is not in a standard place
8829 ($initialinstalllocation/perl) on all your platforms. The alternative
8830 is to force a shell by starting the script with a single ':' character.
8831
8832 EOH
8833                 case "$versiononly" in
8834                 "$define")      dflt="$initialinstalllocation/perl$version";;
8835                 *)              dflt="$initialinstalllocation/perl";;
8836                 esac
8837                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8838                 . ./myread
8839                 case "$ans" in
8840                 none)   startperl=": # use perl";;
8841                 *)      startperl="#!$ans"
8842                         if $test 30 -lt `echo "$ans" | wc -c`; then
8843                                 $cat >&4 <<EOM
8844
8845 WARNING:  Some systems limit the #! command to 32 characters.
8846 If you experience difficulty running Perl scripts with #!, try
8847 installing Perl in a directory with a shorter pathname.
8848
8849 EOM
8850                         fi ;;
8851                 esac
8852                 ;;
8853         *) startperl=": # use perl"
8854                 ;;
8855         esac
8856         ;;
8857 esac
8858 echo "I'll use $startperl to start perl scripts."
8859
8860 : figure best path for perl in scripts
8861 case "$perlpath" in
8862 '')
8863         case "$versiononly" in
8864         "$define")      perlpath="$initialinstalllocation/perl$version";;
8865         *)              perlpath="$initialinstalllocation/perl";;
8866         esac
8867         case "$startperl" in
8868         *!*) ;;
8869         *)
8870                 $cat <<EOH
8871
8872 I will use the "eval 'exec'" idiom to start Perl on your system.
8873 I can use the full path of your Perl binary for this purpose, but
8874 doing so may cause problems if you want to share those scripts and
8875 Perl is not always in a standard place ($initialinstalllocation/perl).
8876
8877 EOH
8878                 dflt="$initialinstalllocation/perl"
8879                 rp="What path shall I use in \"eval 'exec'\"?"
8880                 . ./myread
8881                 perlpath="$ans"
8882                 ;;
8883         esac
8884         ;;
8885 esac
8886 case "$startperl" in
8887 *!*)    ;;
8888 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8889 esac
8890
8891 : determine where public executable scripts go
8892 set scriptdir scriptdir
8893 eval $prefixit
8894 case "$scriptdir" in
8895 '')
8896         dflt="$bin"
8897         : guess some guesses
8898         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8899         $test -d /usr/share/bin     && dflt=/usr/share/bin
8900         $test -d /usr/local/script  && dflt=/usr/local/script
8901         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8902         $test -d $prefixexp/script  && dflt=$prefixexp/script
8903         set dflt
8904         eval $prefixup
8905         ;;
8906 *)  dflt="$scriptdir"
8907         ;;
8908 esac
8909 $cat <<EOM
8910
8911 Some installations have a separate directory just for executable scripts so
8912 that they can mount it across multiple architectures but keep the scripts in
8913 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8914 Or you might just lump your scripts in with all your other executables.
8915
8916 EOM
8917 fn=d~
8918 rp='Where do you keep publicly executable scripts?'
8919 . ./getfile
8920 if $test "X$ansexp" != "X$scriptdirexp"; then
8921         installscript=''
8922 fi
8923 installscriptdir=''
8924 prefixvar=scriptdir
8925 . ./setprefixvar
8926 : A little fix up for an irregularly named variable.
8927 installscript="$installscriptdir"
8928
8929 : determine where add-on public executables go
8930 case "$sitebin" in
8931 '')     dflt=$siteprefix/bin ;;
8932 *)      dflt=$sitebin ;;
8933 esac
8934 fn=d~
8935 rp='Pathname where the add-on public executables should be installed?'
8936 . ./getfile
8937 prefixvar=sitebin
8938 . ./setprefixvar
8939
8940 : determine where add-on html pages go
8941 : There is no standard location, so try to copy the previously-selected
8942 : directory structure for the core html pages.
8943 case "$sitehtml1dir" in
8944 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8945 *)     dflt=$sitehtml1dir ;;
8946 esac
8947 case "$dflt" in
8948 ''|' ') dflt=none ;;
8949 esac
8950 fn=dn+~
8951 rp='Pathname where the site-specific html pages should be installed?'
8952 . ./getfile
8953 prefixvar=sitehtml1dir
8954 . ./setprefixvar
8955
8956 : determine where add-on library html pages go
8957 : There is no standard location, so try to copy the previously-selected
8958 : directory structure for the core html pages.
8959 case "$sitehtml3dir" in
8960 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8961 *)     dflt=$sitehtml3dir ;;
8962 esac
8963 case "$dflt" in
8964 ''|' ') dflt=none ;;
8965 esac
8966 fn=dn+~
8967 rp='Pathname where the site-specific library html pages should be installed?'
8968 . ./getfile
8969 prefixvar=sitehtml3dir
8970 . ./setprefixvar
8971
8972 : determine where add-on manual pages go
8973 case "$siteman1dir" in
8974 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8975 *)      dflt=$siteman1dir ;;
8976 esac
8977 case "$dflt" in
8978 ''|' ') dflt=none ;;
8979 esac
8980 fn=dn+~
8981 rp='Pathname where the site-specific manual pages should be installed?'
8982 . ./getfile
8983 prefixvar=siteman1dir
8984 . ./setprefixvar
8985
8986 : determine where add-on library man pages go
8987 case "$siteman3dir" in
8988 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8989 *)      dflt=$siteman3dir ;;
8990 esac
8991 case "$dflt" in
8992 ''|' ') dflt=none ;;
8993 esac
8994 fn=dn+~
8995 rp='Pathname where the site-specific library manual pages should be installed?'
8996 . ./getfile
8997 prefixvar=siteman3dir
8998 . ./setprefixvar
8999
9000 : determine where add-on public executable scripts go
9001 case "$sitescript" in
9002 '')     dflt=$siteprefix/script
9003         $test -d $dflt || dflt=$sitebin ;;
9004 *)  dflt="$sitescript" ;;
9005 esac
9006 fn=d~+
9007 rp='Pathname where add-on public executable scripts should be installed?'
9008 . ./getfile
9009 prefixvar=sitescript
9010 . ./setprefixvar
9011
9012 : Check if faststdio is requested and available
9013 case "$usefaststdio" in
9014 $define|true|[yY]*|'')
9015         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
9016         case "$xversion" in
9017         [68])   dflt='y' ;;
9018         *)      dflt='n' ;;
9019         esac
9020         ;;
9021 *) dflt='n';;
9022 esac
9023 cat <<EOM
9024
9025 Perl can be built to use 'fast stdio', which means using the stdio
9026 library but also directly manipulating the stdio buffers to enable
9027 faster I/O.  Using stdio is better for backward compatibility (especially
9028 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
9029 interface has been preferred instead of stdio.
9030
9031 If this doesn't make any sense to you, just accept the default '$dflt'.
9032 EOM
9033 rp='Use the "fast stdio" if available?'
9034 . ./myread
9035 case "$ans" in
9036 y|Y)    val="$define" ;;
9037 *)      val="$undef" ;;
9038 esac
9039 set usefaststdio
9040 eval $setvar
9041
9042
9043 : define an is-a-typedef? function
9044 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9045 case "$inclist" in
9046 "") inclist="sys/types.h";;
9047 esac;
9048 eval "varval=\$$var";
9049 case "$varval" in
9050 "")
9051         $rm -f temp.c;
9052         for inc in $inclist; do
9053                 echo "#include <$inc>" >>temp.c;
9054         done;
9055         echo "#ifdef $type" >> temp.c;
9056         echo "printf(\"We have $type\");" >> temp.c;
9057         echo "#endif" >> temp.c;
9058         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9059         if $contains $type temp.E >/dev/null 2>&1; then
9060                 eval "$var=\$type";
9061         else
9062                 eval "$var=\$def";
9063         fi;
9064         $rm -f temp.?;;
9065 *) eval "$var=\$varval";;
9066 esac'
9067
9068 : define an is-a-typedef? function that prompts if the type is not available.
9069 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9070 case "$inclist" in
9071 "") inclist="sys/types.h";;
9072 esac;
9073 eval "varval=\$$var";
9074 case "$varval" in
9075 "")
9076         $rm -f temp.c;
9077         for inc in $inclist; do
9078                 echo "#include <$inc>" >>temp.c;
9079         done;
9080         echo "#ifdef $type" >> temp.c;
9081         echo "printf(\"We have $type\");" >> temp.c;
9082         echo "#endif" >> temp.c;
9083         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9084         echo " " ;
9085         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9086         if $contains $type temp.E >/dev/null 2>&1; then
9087                 echo "$type found." >&4;
9088                 eval "$var=\$type";
9089         else
9090                 echo "$type NOT found." >&4;
9091                 dflt="$def";
9092                 . ./myread ;
9093                 eval "$var=\$ans";
9094         fi;
9095         $rm -f temp.?;;
9096 *) eval "$var=\$varval";;
9097 esac'
9098
9099 : see what type lseek is declared as in the kernel
9100 rp="What is the type used for lseek's offset on this system?"
9101 set off_t lseektype long stdio.h sys/types.h
9102 eval $typedef_ask
9103
9104 echo " "
9105 echo "Checking to see how big your file offsets are..." >&4
9106 $cat >try.c <<EOCP
9107 #include <sys/types.h>
9108 #include <stdio.h>
9109 int main()
9110 {
9111     printf("%d\n", (int)sizeof($lseektype));
9112     return(0);
9113 }
9114 EOCP
9115 set try
9116 if eval $compile_ok; then
9117         lseeksize=`$run ./try`
9118         echo "Your file offsets are $lseeksize bytes long."
9119 else
9120         dflt=$longsize
9121         echo " "
9122         echo "(I can't seem to compile the test program.  Guessing...)"
9123         rp="What is the size of your file offsets (in bytes)?"
9124         . ./myread
9125         lseeksize="$ans"
9126 fi
9127 $rm_try
9128
9129 : see what type file positions are declared as in the library
9130 rp="What is the type for file position used by fsetpos()?"
9131 set fpos_t fpostype long stdio.h sys/types.h
9132 eval $typedef_ask
9133
9134 : Check size for Fpos_t
9135 echo " "
9136 case "$fpostype" in
9137 *_t) zzz="$fpostype"    ;;
9138 *)   zzz="fpos_t"       ;;
9139 esac
9140 echo "Checking the size of $zzz..." >&4
9141 cat > try.c <<EOCP
9142 #include <sys/types.h>
9143 #include <stdio.h>
9144 #$i_stdlib I_STDLIB
9145 #ifdef I_STDLIB
9146 #include <stdlib.h>
9147 #endif
9148 int main() {
9149     printf("%d\n", (int)sizeof($fpostype));
9150     exit(0);
9151 }
9152 EOCP
9153 set try
9154 if eval $compile_ok; then
9155         yyy=`$run ./try`
9156         case "$yyy" in
9157         '')     fpossize=4
9158                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9159                 ;;
9160         *)      fpossize=$yyy
9161                 echo "Your $zzz is $fpossize bytes long."
9162                 ;;
9163         esac
9164 else
9165         dflt="$longsize"
9166         echo " " >&4
9167         echo "(I can't compile the test program.  Guessing...)" >&4
9168         rp="What is the size of your file positions (in bytes)?"
9169         . ./myread
9170         fpossize="$ans"
9171 fi
9172
9173 : Check for large file support
9174 # Backward compatibility (uselfs is deprecated).
9175 case "$uselfs" in
9176 "$define"|true|[yY]*)
9177         cat <<EOM >&4
9178
9179 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9180 EOM
9181         uselargefiles="$define"
9182         ;;
9183 esac
9184
9185 case "$lseeksize:$fpossize" in
9186 8:8) cat <<EOM
9187
9188 You can have files larger than 2 gigabytes.
9189 EOM
9190    val="$define" ;;
9191 *)    case "$uselargefiles" in
9192    "$undef"|false|[nN]*) dflt='n' ;;
9193    *)   dflt='y' ;;
9194    esac
9195    cat <<EOM
9196
9197 Perl can be built to understand large files (files larger than 2 gigabytes)
9198 on some systems.  To do so, Configure can be run with -Duselargefiles.
9199
9200 If this doesn't make any sense to you, just accept the default '$dflt'.
9201 EOM
9202    rp='Try to understand large files, if available?'
9203    . ./myread
9204    case "$ans" in
9205    y|Y)         val="$define" ;;
9206    *)           val="$undef"  ;;
9207    esac
9208    ;;
9209 esac
9210 set uselargefiles
9211 eval $setvar
9212 : Look for a hint-file generated 'call-back-unit'.  If the
9213 : user has specified that a large files perl is to be built,
9214 : we may need to set or change some other defaults.
9215 if $test -f uselargefiles.cbu; then
9216         echo "Your platform has some specific hints regarding large file builds, using them..."
9217         . ./uselargefiles.cbu
9218 fi
9219 case "$uselargefiles" in
9220 "$define")
9221         if $test -f uselargefiles.cbu; then
9222                 echo " "
9223                 echo "Rechecking to see how big your file offsets are..." >&4
9224                 $cat >try.c <<EOCP
9225 #include <sys/types.h>
9226 #include <stdio.h>
9227 int main()
9228 {
9229     printf("%d\n", (int)sizeof($lseektype));
9230     return(0);
9231 }
9232 EOCP
9233                 set try
9234                 if eval $compile_ok; then
9235                         lseeksize=`$run ./try`
9236                         $echo "Your file offsets are now $lseeksize bytes long."
9237                 else
9238                         dflt="$lseeksize"
9239                         echo " "
9240                         echo "(I can't seem to compile the test program.  Guessing...)"
9241                         rp="What is the size of your file offsets (in bytes)?"
9242                         . ./myread
9243                         lseeksize="$ans"
9244                 fi
9245                 case "$fpostype" in
9246                 *_t) zzz="$fpostype"    ;;
9247                 *)   zzz="fpos_t"       ;;
9248                 esac
9249                 $echo $n "Rechecking the size of $zzz...$c" >&4
9250                 $cat > try.c <<EOCP
9251 #include <sys/types.h>
9252 #include <stdio.h>
9253 #$i_stdlib I_STDLIB
9254 #ifdef I_STDLIB
9255 #include <stdlib.h>
9256 #endif
9257 int main() {
9258     printf("%d\n", (int)sizeof($fpostype));
9259     return(0);
9260 }
9261 EOCP
9262                 set try
9263                 if eval $compile_ok; then
9264                         yyy=`$run ./try`
9265                         dflt="$lseeksize"
9266                         case "$yyy" in
9267                         '')     echo " "
9268                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9269                                 ;;
9270                         *)      fpossize=$yyy
9271                                 echo " $fpossize bytes." >&4
9272                                 ;;
9273                         esac
9274                 else
9275                         dflt="$fpossize"
9276                         echo " "
9277                         echo "(I can't compile the test program.  Guessing...)" >&4
9278                         rp="What is the size of your file positions (in bytes)?"
9279                         . ./myread
9280                         fpossize="$ans"
9281                 fi
9282                 $rm_try
9283         fi
9284         ;;
9285 esac
9286
9287 : Set the vendorbin variables
9288 case "$vendorprefix" in
9289 '')     d_vendorbin="$undef"
9290         vendorbin=''
9291         vendorbinexp=''
9292         ;;
9293 *)      d_vendorbin="$define"
9294         : determine where vendor-supplied executables go.
9295         case "$vendorbin" in
9296         '') dflt=$vendorprefix/bin ;;
9297         *)      dflt="$vendorbin" ;;
9298         esac
9299         fn=d~+
9300         rp='Pathname for the vendor-supplied executables directory?'
9301         . ./getfile
9302         vendorbin="$ans"
9303         vendorbinexp="$ansexp"
9304         ;;
9305 esac
9306 prefixvar=vendorbin
9307 . ./installprefix
9308
9309 : Set the vendorhtml1dir variables
9310 case "$vendorprefix" in
9311 '')     vendorhtml1dir=''
9312         vendorhtml1direxp=''
9313         ;;
9314 *)      : determine where vendor-supplied html pages go.
9315         : There is no standard location, so try to copy the previously-selected
9316         : directory structure for the core html pages.
9317         : XXX Better default suggestions would be welcome.
9318         case "$vendorhtml1dir" in
9319         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9320         *)      dflt=$vendorhtml1dir ;;
9321         esac
9322         case "$dflt" in
9323         ''|' ') dflt=none ;;
9324         esac
9325         fn=dn+~
9326         rp='Pathname for the vendor-supplied html pages?'
9327         . ./getfile
9328         vendorhtml1dir="$ans"
9329         vendorhtml1direxp="$ansexp"
9330         ;;
9331 esac
9332 : Use ' ' for none so value is preserved next time through Configure
9333 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9334 prefixvar=vendorhtml1dir
9335 . ./installprefix
9336
9337 : Set the vendorhtml3dir variables
9338 case "$vendorprefix" in
9339 '')     vendorhtml3dir=''
9340         vendorhtml3direxp=''
9341         ;;
9342 *)      : determine where vendor-supplied module html pages go.
9343         : There is no standard location, so try to copy the previously-selected
9344         : directory structure for the core html pages.
9345         : XXX Better default suggestions would be welcome.
9346         case "$vendorhtml3dir" in
9347         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9348         *)      dflt=$vendorhtml3dir ;;
9349         esac
9350         case "$dflt" in
9351         ''|' ') dflt=none ;;
9352         esac
9353         fn=dn+~
9354         rp='Pathname for the vendor-supplied html pages?'
9355         . ./getfile
9356         vendorhtml3dir="$ans"
9357         vendorhtml3direxp="$ansexp"
9358         ;;
9359 esac
9360 : Use ' ' for none so value is preserved next time through Configure
9361 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9362 prefixvar=vendorhtml3dir
9363 . ./installprefix
9364
9365 : Set the vendorman1dir variables
9366 case "$vendorprefix" in
9367 '')     vendorman1dir=''
9368         vendorman1direxp=''
9369         ;;
9370 *)      : determine where vendor-supplied manual pages go.
9371         case "$vendorman1dir" in
9372         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9373         *)      dflt=$vendorman1dir ;;
9374         esac
9375         case "$dflt" in
9376         ''|' ') dflt=none ;;
9377         esac
9378         fn=nd~+
9379         rp='Pathname for the vendor-supplied manual section 1 pages?'
9380         . ./getfile
9381         vendorman1dir="$ans"
9382         vendorman1direxp="$ansexp"
9383         ;;
9384 esac
9385 : Use ' ' for none so value is preserved next time through Configure
9386 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9387 prefixvar=vendorman1dir
9388 . ./installprefix
9389
9390 : Set the vendorman3dir variables
9391 case "$vendorprefix" in
9392 '')     vendorman3dir=''
9393         vendorman3direxp=''
9394         ;;
9395 *)      : determine where vendor-supplied module manual pages go.
9396         case "$vendorman3dir" in
9397         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9398         *)      dflt=$vendorman3dir ;;
9399         esac
9400         case "$dflt" in
9401         ''|' ') dflt=none ;;
9402         esac
9403         fn=nd~+
9404         rp='Pathname for the vendor-supplied manual section 3 pages?'
9405         . ./getfile
9406         vendorman3dir="$ans"
9407         vendorman3direxp="$ansexp"
9408         ;;
9409 esac
9410 : Use ' ' for none so value is preserved next time through Configure
9411 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9412 prefixvar=vendorman3dir
9413 . ./installprefix
9414
9415 : Set the vendorscript variables
9416 case "$vendorprefix" in
9417 '')     d_vendorscript="$undef"
9418         vendorscript=''
9419         vendorscriptexp=''
9420         ;;
9421 *)      d_vendorscript="$define"
9422         : determine where vendor-supplied scripts go.
9423         case "$vendorscript" in
9424         '')     dflt=$vendorprefix/script
9425                 $test -d $dflt || dflt=$vendorbin ;;
9426         *)  dflt="$vendorscript" ;;
9427         esac
9428         $cat <<EOM
9429
9430 The installation process will create a directory for
9431 vendor-supplied scripts.
9432
9433 EOM
9434         fn=d~+
9435         rp='Pathname for the vendor-supplied scripts directory?'
9436         . ./getfile
9437         vendorscript="$ans"
9438         vendorscriptexp="$ansexp"
9439         ;;
9440 esac
9441 prefixvar=vendorscript
9442 . ./installprefix
9443
9444 : see if qgcvt exists
9445 set qgcvt d_qgcvt
9446 eval $inlibc
9447
9448 : Check print/scan long double stuff
9449 echo " "
9450
9451 if $test X"$d_longdbl" = X"$define"; then
9452
9453 echo "Checking how to print long doubles..." >&4
9454
9455 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9456         $cat >try.c <<'EOCP'
9457 #include <sys/types.h>
9458 #include <stdio.h>
9459 int main() {
9460   double d = 123.456;
9461   printf("%.3f\n", d);
9462 }
9463 EOCP
9464         set try
9465         if eval $compile; then
9466                 yyy=`$run ./try`
9467                 case "$yyy" in
9468                 123.456)
9469                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9470                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9471                         echo "We will use %f."
9472                         ;;
9473                 esac
9474         fi
9475 fi
9476
9477 if $test X"$sPRIfldbl" = X; then
9478         $cat >try.c <<'EOCP'
9479 #include <sys/types.h>
9480 #include <stdio.h>
9481 int main() {
9482   long double d = 123.456;
9483   printf("%.3Lf\n", d);
9484 }
9485 EOCP
9486         set try
9487         if eval $compile; then
9488                 yyy=`$run ./try`
9489                 case "$yyy" in
9490                 123.456)
9491                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9492                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9493                         echo "We will use %Lf."
9494                         ;;
9495                 esac
9496         fi
9497 fi
9498
9499 if $test X"$sPRIfldbl" = X; then
9500         $cat >try.c <<'EOCP'
9501 #include <sys/types.h>
9502 #include <stdio.h>
9503 int main() {
9504   long double d = 123.456;
9505   printf("%.3llf\n", d);
9506 }
9507 EOCP
9508         set try
9509         if eval $compile; then
9510                 yyy=`$run ./try`
9511                 case "$yyy" in
9512                 123.456)
9513                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9514                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9515                         echo "We will use %llf."
9516                         ;;
9517                 esac
9518         fi
9519 fi
9520
9521 if $test X"$sPRIfldbl" = X; then
9522         $cat >try.c <<'EOCP'
9523 #include <sys/types.h>
9524 #include <stdio.h>
9525 int main() {
9526   long double d = 123.456;
9527   printf("%.3lf\n", d);
9528 }
9529 EOCP
9530         set try
9531         if eval $compile; then
9532                 yyy=`$run ./try`
9533                 case "$yyy" in
9534                 123.456)
9535                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9536                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9537                         echo "We will use %lf."
9538                         ;;
9539                 esac
9540         fi
9541 fi
9542
9543 if $test X"$sPRIfldbl" = X; then
9544         echo "Cannot figure out how to print long doubles." >&4
9545 else
9546         sSCNfldbl=$sPRIfldbl    # expect consistency
9547 fi
9548
9549 $rm_try
9550
9551 fi # d_longdbl
9552
9553 case "$sPRIfldbl" in
9554 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9555         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9556         d_SCNfldbl="$undef";
9557         ;;
9558 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9559         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9560         d_SCNfldbl="$define";
9561         ;;
9562 esac
9563
9564 : Check how to convert floats to strings.
9565
9566 if test "X$d_Gconvert" = X; then
9567
9568 echo " "
9569 echo "Checking for an efficient way to convert floats to strings."
9570 echo " " > try.c
9571 case "$uselongdouble" in
9572 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9573 esac
9574 case "$d_longdbl" in
9575 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9576 esac
9577 case "$d_PRIgldbl" in
9578 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9579 esac
9580 $cat >>try.c <<EOP
9581 #ifdef TRY_gconvert
9582 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9583 char *myname = "gconvert";
9584 #endif
9585 #ifdef TRY_gcvt
9586 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9587 char *myname = "gcvt";
9588 #endif
9589 #ifdef TRY_qgcvt
9590 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9591 char *myname = "qgcvt";
9592 #define DOUBLETYPE long double
9593 #endif
9594 #ifdef TRY_sprintf
9595 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9596 #ifdef HAS_PRIgldbl
9597 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9598 #else
9599 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9600 #endif
9601 #else
9602 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9603 #endif
9604 char *myname = "sprintf";
9605 #endif
9606
9607 #ifndef DOUBLETYPE
9608 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9609 #define DOUBLETYPE long double
9610 #else
9611 #define DOUBLETYPE double
9612 #endif
9613 #endif
9614
9615 #include <stdio.h>
9616
9617 #define I_STDLIB $i_stdlib
9618 #ifdef I_STDLIB
9619 #include <stdlib.h>
9620 #endif
9621
9622 int
9623 checkit(expect, got)
9624 char *expect;
9625 char *got;
9626 {
9627     if (strcmp(expect, got)) {
9628                 printf("%s oddity:  Expected %s, got %s\n",
9629                         myname, expect, got);
9630                 exit(1);
9631         }
9632 }
9633
9634 int main()
9635 {
9636         char buf[64];
9637         buf[63] = '\0';
9638
9639         /* This must be 1st test on (which?) platform */
9640         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9641         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9642         checkit("0.1", buf);
9643
9644         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9645         checkit("0.01", buf);
9646
9647         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9648         checkit("0.001", buf);
9649
9650         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9651         checkit("0.0001", buf);
9652
9653         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9654         if (strlen(buf) > 5)
9655             checkit("9e-005", buf); /* for Microsoft ?? */
9656         else
9657             checkit("9e-05", buf);
9658
9659         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9660         checkit("1", buf);
9661
9662         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9663         checkit("1.1", buf);
9664
9665         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9666         checkit("1.01", buf);
9667
9668         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9669         checkit("1.001", buf);
9670
9671         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9672         checkit("1.0001", buf);
9673
9674         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9675         checkit("1.00001", buf);
9676
9677         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9678         checkit("1.000001", buf);
9679
9680         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9681         checkit("0", buf);
9682
9683         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9684         checkit("-1", buf);
9685
9686         /* Some Linux gcvt's give 1.e+5 here. */
9687         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9688         checkit("100000", buf);
9689
9690         /* Some Linux gcvt's give -1.e+5 here. */
9691         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9692         checkit("-100000", buf);
9693
9694         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9695         checkit("123.456", buf);
9696
9697         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9698         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9699         /* 34 should be enough to scare even long double
9700          * places into using the e notation. */
9701         if (strlen(buf) > 5)
9702             checkit("1e+034", buf); /* for Microsoft */
9703         else
9704             checkit("1e+34", buf);
9705
9706         /* For Perl, if you add additional tests here, also add them to
9707          * t/base/num.t for benefit of platforms not using Configure or
9708          * overriding d_Gconvert */
9709
9710         exit(0);
9711 }
9712 EOP
9713 : first add preferred functions to our list
9714 xxx_list=""
9715 for xxx_convert in $gconvert_preference; do
9716     case $xxx_convert in
9717     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9718     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9719     esac
9720 done
9721 : then add any others
9722 for xxx_convert in gconvert gcvt sprintf; do
9723     case "$xxx_list" in
9724     *$xxx_convert*) ;;
9725     *) xxx_list="$xxx_list $xxx_convert" ;;
9726     esac
9727 done
9728
9729 case "$d_longdbl$uselongdouble" in
9730 "$define$define")
9731     : again, add prefered functions to our list first
9732     xxx_ld_list=""
9733     for xxx_convert in $gconvert_ld_preference; do
9734         case $xxx_convert in
9735         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9736         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9737         esac
9738     done
9739     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9740     for xxx_convert in qgcvt sprintf $xxx_list; do
9741         case "$xxx_ld_list" in
9742         $xxx_convert*|*" $xxx_convert"*) ;;
9743         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9744         esac
9745     done
9746     : if sprintf cannot do long doubles, move it to the end
9747     if test "$d_PRIgldbl" != "$define"; then
9748         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9749     fi
9750     : if no qgcvt, remove it
9751     if test "$d_qgcvt" != "$define"; then
9752         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9753     fi
9754     : use the ld_list
9755     xxx_list="$xxx_ld_list"
9756     ;;
9757 esac
9758
9759 for xxx_convert in $xxx_list; do
9760         echo "Trying $xxx_convert..."
9761         $rm -f try try$_o core
9762         set try -DTRY_$xxx_convert
9763         if eval $compile; then
9764                 echo "$xxx_convert() found." >&4
9765                 if $run ./try; then
9766                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9767                         break;
9768                 else
9769                         echo "...But $xxx_convert didn't work as I expected."
9770                         xxx_convert=''
9771                 fi
9772         else
9773                 echo "$xxx_convert NOT found." >&4
9774         fi
9775 done
9776
9777 if test X$xxx_convert = X; then
9778     echo "*** WHOA THERE!!! ***" >&4
9779     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9780     xxx_convert=sprintf
9781 fi
9782
9783 case "$xxx_convert" in
9784 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9785 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9786 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9787 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9788    "$define$define$define")
9789       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9790    "$define$define$undef")
9791       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9792    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9793    esac
9794    ;;
9795 esac
9796
9797 fi
9798 $rm_try
9799
9800 : see if _fwalk exists
9801 set fwalk d__fwalk
9802 eval $inlibc
9803
9804 : Initialize h_fcntl
9805 h_fcntl=false
9806
9807 : Initialize h_sysfile
9808 h_sysfile=false
9809
9810 : access call always available on UNIX
9811 set access d_access
9812 eval $inlibc
9813
9814 : locate the flags for 'access()'
9815 case "$d_access" in
9816 "$define")
9817         echo " "
9818         $cat >access.c <<EOCP
9819 #include <sys/types.h>
9820 #ifdef I_FCNTL
9821 #include <fcntl.h>
9822 #endif
9823 #ifdef I_SYS_FILE
9824 #include <sys/file.h>
9825 #endif
9826 #ifdef I_UNISTD
9827 #include <unistd.h>
9828 #endif
9829 #$i_stdlib I_STDLIB
9830 #ifdef I_STDLIB
9831 #include <stdlib.h>
9832 #endif
9833 int main() {
9834         exit(R_OK);
9835 }
9836 EOCP
9837         : check sys/file.h first, no particular reason here
9838         if $test `./findhdr sys/file.h` && \
9839                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9840                 h_sysfile=true;
9841                 echo "<sys/file.h> defines the *_OK access constants." >&4
9842         elif $test `./findhdr fcntl.h` && \
9843                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9844                 h_fcntl=true;
9845                 echo "<fcntl.h> defines the *_OK access constants." >&4
9846         elif $test `./findhdr unistd.h` && \
9847                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9848                 echo "<unistd.h> defines the *_OK access constants." >&4
9849         else
9850                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9851         fi
9852         ;;
9853 esac
9854 $rm -f access*
9855
9856 : see if accessx exists
9857 set accessx d_accessx
9858 eval $inlibc
9859
9860 : see if aintl exists
9861 set aintl d_aintl
9862 eval $inlibc
9863
9864 : see if alarm exists
9865 set alarm d_alarm
9866 eval $inlibc
9867
9868 : see if POSIX threads are available
9869 set pthread.h i_pthread
9870 eval $inhdr
9871
9872 : define a fucntion to check prototypes
9873 $cat > protochk <<EOSH
9874 $startsh
9875 cc="$cc"
9876 optimize="$optimize"
9877 ccflags="$ccflags"
9878 prototype="$prototype"
9879 define="$define"
9880 rm_try="$rm_try"
9881 usethreads=$usethreads
9882 i_pthread=$i_pthread
9883 pthread_h_first=$pthread_h_first
9884 EOSH
9885
9886 $cat >> protochk <<'EOSH'
9887
9888 $rm_try
9889 foo="$1"
9890 shift
9891 while test $# -ge 2; do
9892         case "$1" in
9893                 $define) echo "#include <$2>" >> try.c ;;
9894                 literal) echo "$2" >> try.c ;;
9895         esac
9896     # Extra magic for the benefit of systems that need pthread.h
9897     # to be included early to correctly detect threadsafe functions.
9898     # Such functions must guarantee themselves, though, that the usethreads
9899     # and i_pthread have been defined, before calling protochk.
9900     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9901         echo "#include <pthread.h>" >> try.c
9902         pthread_h_done=yes
9903     fi
9904     shift 2
9905 done
9906 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9907 cat >> try.c <<'EOCP'
9908 #ifdef CAN_PROTOTYPE
9909 #define _(args) args
9910 #else
9911 #define _(args) ()
9912 #endif
9913 EOCP
9914 echo "$foo" >> try.c
9915 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9916 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9917 status=$?
9918 $rm_try
9919 exit $status
9920 EOSH
9921 chmod +x protochk
9922 $eunicefix protochk
9923
9924 : Define hasproto macro for Configure internal use
9925 hasproto='varname=$1; func=$2; shift; shift;
9926 while $test $# -ge 2; do
9927         case "$1" in
9928         $define) echo "#include <$2>";;
9929         esac ;
9930     shift 2;
9931 done > try.c;
9932 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9933 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9934         echo "$func() prototype found.";
9935         val="$define";
9936 else
9937         echo "$func() prototype NOT found.";
9938         val="$undef";
9939 fi;
9940 set $varname;
9941 eval $setvar;
9942 $rm_try tryout.c'
9943
9944 : see if sys/types.h has to be included
9945 set sys/types.h i_systypes
9946 eval $inhdr
9947
9948 : see if sys/select.h has to be included
9949 set sys/select.h i_sysselct
9950 eval $inhdr
9951
9952 : Define hasfield macro for Configure internal use
9953 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9954 while $test $# -ge 2; do
9955         case "$1" in
9956         $define) echo "#include <$2>";;
9957         esac ;
9958     shift 2;
9959 done > try.c;
9960 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9961 set try;
9962 if eval $compile; then
9963         val="$define";
9964 else
9965         val="$undef";
9966 fi;
9967 set $varname;
9968 eval $setvar;
9969 $rm_try'
9970
9971 : see if we should include time.h, sys/time.h, or both
9972 echo " "
9973 if test "X$timeincl" = X; then
9974         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9975         $echo $n "I'm now running the test program...$c"
9976         $cat >try.c <<EOCP
9977 #include <sys/types.h>
9978 #ifdef I_TIME
9979 #include <time.h>
9980 #endif
9981 #ifdef I_SYSTIME
9982 #ifdef SYSTIMEKERNEL
9983 #define KERNEL
9984 #endif
9985 #include <sys/time.h>
9986 #endif
9987 #ifdef I_SYSSELECT
9988 #include <sys/select.h>
9989 #endif
9990 #$i_stdlib I_STDLIB
9991 #ifdef I_STDLIB
9992 #include <stdlib.h>
9993 #endif
9994 int main()
9995 {
9996         struct tm foo;
9997 #ifdef S_TIMEVAL
9998         struct timeval bar;
9999 #endif
10000 #ifdef S_TIMEZONE
10001         struct timezone tzp;
10002 #endif
10003         if (foo.tm_sec == foo.tm_sec)
10004                 exit(0);
10005 #ifdef S_TIMEVAL
10006         if (bar.tv_sec == bar.tv_sec)
10007                 exit(0);
10008 #endif
10009         exit(1);
10010 }
10011 EOCP
10012         flags=''
10013         for s_timezone in '-DS_TIMEZONE' ''; do
10014         sysselect=''
10015         for s_timeval in '-DS_TIMEVAL' ''; do
10016         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10017         for i_time in '' '-DI_TIME'; do
10018         for i_systime in '-DI_SYSTIME' ''; do
10019                 case "$flags" in
10020                 '') $echo $n ".$c"
10021                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10022                         if eval $compile; then
10023                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10024                                 shift
10025                                 flags="$*"
10026                                 echo " "
10027                                 $echo $n "Succeeded with $flags$c"
10028                         fi
10029                         ;;
10030                 esac
10031         done
10032         done
10033         done
10034         done
10035         done
10036         timeincl=''
10037         echo " "
10038         case "$flags" in
10039         *SYSTIMEKERNEL*) i_systimek="$define"
10040                 timeincl=`./findhdr sys/time.h`
10041                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10042         *) i_systimek="$undef";;
10043         esac
10044         case "$flags" in
10045         *I_TIME*) i_time="$define"
10046                 timeincl=`./findhdr time.h`" $timeincl"
10047                 echo "We'll include <time.h>." >&4;;
10048         *) i_time="$undef";;
10049         esac
10050         case "$flags" in
10051         *I_SYSTIME*) i_systime="$define"
10052                 timeincl=`./findhdr sys/time.h`" $timeincl"
10053                 echo "We'll include <sys/time.h>." >&4;;
10054         *) i_systime="$undef";;
10055         esac
10056         $rm_try
10057 fi
10058 : see if struct tm knows about tm_zone
10059 case "$i_systime$i_time" in
10060 *$define*)
10061         echo " "
10062         echo "Checking to see if your struct tm has tm_zone field..." >&4
10063         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10064         eval $hasfield
10065         ;;
10066 *)      val="$undef"
10067         set d_tm_tm_zone
10068         eval $setvar
10069         ;;
10070 esac
10071 case "$d_tm_tm_zone" in
10072 "$define")      echo "Yes, it does."   ;;
10073 *)              echo "No, it doesn't." ;;
10074 esac
10075 : see if struct tm knows about tm_gmtoff
10076 case "$i_systime$i_time" in
10077 *$define*)
10078         echo " "
10079         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10080         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10081         eval $hasfield
10082         ;;
10083 *)      val="$undef"
10084         set d_tm_tm_gmtoff
10085         eval $setvar
10086         ;;
10087 esac
10088 case "$d_tm_tm_gmtoff" in
10089 "$define")      echo "Yes, it does."   ;;
10090 *)              echo "No, it doesn't." ;;
10091 esac
10092
10093 : see if asctime_r exists
10094 set asctime_r d_asctime_r
10095 eval $inlibc
10096 case "$d_asctime_r" in
10097 "$define")
10098         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10099         case "$d_asctime_r_proto:$usethreads" in
10100         ":define")      d_asctime_r_proto=define
10101                 set d_asctime_r_proto asctime_r $hdrs
10102                 eval $hasproto ;;
10103         *)      ;;
10104         esac
10105         case "$d_asctime_r_proto" in
10106         define)
10107         case "$asctime_r_proto" in
10108         ''|0) try='char* asctime_r(const struct tm*, char*);'
10109         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
10110         esac
10111         case "$asctime_r_proto" in
10112         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
10113         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
10114         esac
10115         case "$asctime_r_proto" in
10116         ''|0) try='int asctime_r(const struct tm*, char*);'
10117         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
10118         esac
10119         case "$asctime_r_proto" in
10120         ''|0) try='int asctime_r(const struct tm*, char*, int);'
10121         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
10122         esac
10123         case "$asctime_r_proto" in
10124         ''|0)   d_asctime_r=undef
10125                 asctime_r_proto=0
10126                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10127         * )     case "$asctime_r_proto" in
10128                 REENTRANT_PROTO*) ;;
10129                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
10130                 esac
10131                 echo "Prototype: $try" ;;
10132         esac
10133         ;;
10134         *)      case "$usethreads" in
10135                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
10136                 esac
10137                 d_asctime_r=undef
10138                 asctime_r_proto=0
10139                 ;;
10140         esac
10141         ;;
10142 *)      asctime_r_proto=0
10143         ;;
10144 esac
10145
10146 : see if atolf exists
10147 set atolf d_atolf
10148 eval $inlibc
10149
10150 : see if atoll exists
10151 set atoll d_atoll
10152 eval $inlibc
10153
10154 : Look for GCC-style attribute format
10155 case "$d_attribute_format" in
10156 '')
10157 echo " "
10158 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10159 $cat >attrib.c <<'EOCP'
10160 #include <stdio.h>
10161 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10162 EOCP
10163 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10164         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10165                 echo "Your C compiler doesn't support __attribute__((format))."
10166                 val="$undef"
10167         else
10168                 echo "Your C compiler supports __attribute__((format))."
10169                 val="$define"
10170         fi
10171 else
10172         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10173         val="$undef"
10174 fi
10175 ;;
10176 *) val="$d_attribute_format" ;;
10177 esac
10178 set d_attribute_format
10179 eval $setvar
10180 $rm -f attrib*
10181
10182 : Look for GCC-style attribute format with null format allowed
10183 case "$d_printf_format_null" in
10184 '') case "$d_attribute_format" in
10185     $define)
10186         echo " "
10187         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10188 $cat >attrib.c <<EOCP
10189 #include <stdio.h>
10190 #$i_stdlib I_STDLIB
10191 #ifdef I_STDLIB
10192 #include <stdlib.h>
10193 #endif
10194 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10195 int null_printf (char* pat,...) { return (int)pat; }
10196 int main () { exit(null_printf(NULL)); }
10197 EOCP
10198         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10199             : run the executable in case it produces a run-time warning
10200             if $run ./attrib >>attrib.out 2>&1; then
10201                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10202                     echo "Your C compiler doesn't allow __printf__ format to be null."
10203                     val="$undef"
10204                 else
10205                     echo "Your C compiler allows __printf__ format to be null."
10206                     val="$define"
10207                 fi
10208             else
10209             echo "Your C compiler executable failed with __printf__ format null."
10210             val="$undef"
10211         fi
10212     else
10213         echo "Your C compiler fails with __printf__ format null."
10214         val="$undef"
10215     fi
10216     ;;
10217     *)  val="$undef" ;;
10218     esac
10219 ;;
10220 *)  val="$d_printf_format_null" ;;
10221 esac
10222 set d_printf_format_null
10223 eval $setvar
10224 $rm -f attrib*
10225
10226 : Look for GCC-style attribute malloc
10227 case "$d_attribute_malloc" in
10228 '')
10229 echo " "
10230 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10231 $cat >attrib.c <<'EOCP'
10232 #include <stdio.h>
10233 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10234 EOCP
10235 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10236         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10237                 echo "Your C compiler doesn't support __attribute__((malloc))."
10238                 val="$undef"
10239         else
10240                 echo "Your C compiler supports __attribute__((malloc))."
10241                 val="$define"
10242         fi
10243 else
10244         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10245         val="$undef"
10246 fi
10247 ;;
10248 *) val="$d_attribute_malloc" ;;
10249 esac
10250 set d_attribute_malloc
10251 eval $setvar
10252 $rm -f attrib*
10253
10254 : Look for GCC-style attribute nonnull
10255 case "$d_attribute_nonnull" in
10256 '')
10257 echo " "
10258 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10259 $cat >attrib.c <<'EOCP'
10260 #include <stdio.h>
10261 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10262 EOCP
10263 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10264         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10265                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10266                 val="$undef"
10267         else
10268                 echo "Your C compiler supports __attribute__((nonnull))."
10269                 val="$define"
10270         fi
10271 else
10272         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10273         val="$undef"
10274 fi
10275 ;;
10276 *) val="$d_attribute_nonnull" ;;
10277 esac
10278 set d_attribute_nonnull
10279 eval $setvar
10280 $rm -f attrib*
10281
10282 : Look for GCC-style attribute noreturn
10283 case "$d_attribute_noreturn" in
10284 '')
10285 echo " "
10286 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10287 $cat >attrib.c <<'EOCP'
10288 #include <stdio.h>
10289 void fall_over_dead( void ) __attribute__((noreturn));
10290 EOCP
10291 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10292         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10293                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10294                 val="$undef"
10295         else
10296                 echo "Your C compiler supports __attribute__((noreturn))."
10297                 val="$define"
10298         fi
10299 else
10300         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10301         val="$undef"
10302 fi
10303 ;;
10304 *) val="$d_attribute_noreturn" ;;
10305 esac
10306 set d_attribute_noreturn
10307 eval $setvar
10308 $rm -f attrib*
10309
10310 : Look for GCC-style attribute pure
10311 case "$d_attribute_pure" in
10312 '')
10313 echo " "
10314 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10315 $cat >attrib.c <<'EOCP'
10316 #include <stdio.h>
10317 int square( int n ) __attribute__((pure));
10318 EOCP
10319 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10320         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10321                 echo "Your C compiler doesn't support __attribute__((pure))."
10322                 val="$undef"
10323         else
10324                 echo "Your C compiler supports __attribute__((pure))."
10325                 val="$define"
10326         fi
10327 else
10328         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10329         val="$undef"
10330 fi
10331 ;;
10332 *) val="$d_attribute_pure" ;;
10333 esac
10334 set d_attribute_pure
10335 eval $setvar
10336 $rm -f attrib*
10337
10338 : Look for GCC-style attribute unused
10339 case "$d_attribute_unused" in
10340 '')
10341 echo " "
10342 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10343 $cat >attrib.c <<'EOCP'
10344 #include <stdio.h>
10345 int do_something( int dummy __attribute__((unused)), int n );
10346 EOCP
10347 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10348         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10349                 echo "Your C compiler doesn't support __attribute__((unused))."
10350                 val="$undef"
10351         else
10352                 echo "Your C compiler supports __attribute__((unused))."
10353                 val="$define"
10354         fi
10355 else
10356         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10357         val="$undef"
10358 fi
10359 ;;
10360 *) val="$d_attribute_unused" ;;
10361 esac
10362 set d_attribute_unused
10363 eval $setvar
10364 $rm -f attrib*
10365
10366 : Look for GCC-style attribute warn_unused_result
10367 case "$d_attribute_warn_unused_result" in
10368 '')
10369 echo " "
10370 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10371 $cat >attrib.c <<'EOCP'
10372 #include <stdio.h>
10373 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10374 EOCP
10375 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10376         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10377                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10378                 val="$undef"
10379         else
10380                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10381                 val="$define"
10382         fi
10383 else
10384         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10385         val="$undef"
10386 fi
10387 ;;
10388 *) val="$d_attribute_warn_unused_result" ;;
10389 esac
10390 set d_attribute_warn_unused_result
10391 eval $setvar
10392 $rm -f attrib*
10393
10394 : see if bcmp exists
10395 set bcmp d_bcmp
10396 eval $inlibc
10397
10398 : see if bcopy exists
10399 set bcopy d_bcopy
10400 eval $inlibc
10401
10402 : see if getpgrp exists
10403 set getpgrp d_getpgrp
10404 eval $inlibc
10405
10406 case "$d_getpgrp" in
10407 "$define")
10408         echo " "
10409         echo "Checking to see which flavor of getpgrp is in use..."
10410         $cat >try.c <<EOP
10411 #$i_unistd I_UNISTD
10412 #include <sys/types.h>
10413 #ifdef I_UNISTD
10414 #  include <unistd.h>
10415 #endif
10416 #$i_stdlib I_STDLIB
10417 #ifdef I_STDLIB
10418 #include <stdlib.h>
10419 #endif
10420 int main()
10421 {
10422         if (getuid() == 0) {
10423                 printf("(I see you are running Configure as super-user...)\n");
10424                 setuid(1);
10425         }
10426 #ifdef TRY_BSD_PGRP
10427         if (getpgrp(1) == 0)
10428                 exit(0);
10429 #else
10430         if (getpgrp() > 0)
10431                 exit(0);
10432 #endif
10433         exit(1);
10434 }
10435 EOP
10436         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10437                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10438                 val="$define"
10439         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10440                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10441                 val="$undef"
10442         else
10443                 echo "I can't seem to compile and run the test program."
10444                 if ./usg; then
10445                         xxx="a USG one, i.e. you use getpgrp()."
10446                 else
10447                         # SVR4 systems can appear rather BSD-ish.
10448                         case "$i_unistd" in
10449                         $undef)
10450                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10451                                 val="$define"
10452                                 ;;
10453                         $define)
10454                                 xxx="probably a USG one, i.e. you use getpgrp()."
10455                                 val="$undef"
10456                                 ;;
10457                         esac
10458                 fi
10459                 echo "Assuming your getpgrp is $xxx" >&4
10460         fi
10461         ;;
10462 *) val="$undef";;
10463 esac
10464 set d_bsdgetpgrp
10465 eval $setvar
10466 $rm_try
10467
10468 : see if setpgrp exists
10469 set setpgrp d_setpgrp
10470 eval $inlibc
10471
10472 case "$d_setpgrp" in
10473 "$define")
10474         echo " "
10475         echo "Checking to see which flavor of setpgrp is in use..."
10476         $cat >try.c <<EOP
10477 #$i_unistd I_UNISTD
10478 #include <sys/types.h>
10479 #ifdef I_UNISTD
10480 #  include <unistd.h>
10481 #endif
10482 #$i_stdlib I_STDLIB
10483 #ifdef I_STDLIB
10484 #include <stdlib.h>
10485 #endif
10486 int main()
10487 {
10488         if (getuid() == 0) {
10489                 printf("(I see you are running Configure as super-user...)\n");
10490                 setuid(1);
10491         }
10492 #ifdef TRY_BSD_PGRP
10493         if (-1 == setpgrp(1, 1))
10494                 exit(0);
10495 #else
10496         if (setpgrp() != -1)
10497                 exit(0);
10498 #endif
10499         exit(1);
10500 }
10501 EOP
10502         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10503                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10504                 val="$define"
10505         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10506                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10507                 val="$undef"
10508         else
10509                 echo "(I can't seem to compile and run the test program.)"
10510                 if ./usg; then
10511                         xxx="a USG one, i.e. you use setpgrp()."
10512                 else
10513                         # SVR4 systems can appear rather BSD-ish.
10514                         case "$i_unistd" in
10515                         $undef)
10516                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10517                                 val="$define"
10518                                 ;;
10519                         $define)
10520                                 xxx="probably a USG one, i.e. you use setpgrp()."
10521                                 val="$undef"
10522                                 ;;
10523                         esac
10524                 fi
10525                 echo "Assuming your setpgrp is $xxx" >&4
10526         fi
10527         ;;
10528 *) val="$undef";;
10529 esac
10530 set d_bsdsetpgrp
10531 eval $setvar
10532 $rm_try
10533
10534 : Look for GCC-style __builtin_choose_expr
10535 case "$d_builtin_choose_expr" in
10536 '')
10537     echo " "
10538     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10539     $cat >try.c <<'EOCP'
10540 #include <assert.h>
10541 #include <stdlib.h>
10542 #include <stdio.h>
10543
10544 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10545
10546 int main(void) {
10547     assert( SYRINX(1) == 2112 );
10548     assert( SYRINX(1) != 5150 );
10549     assert( SYRINX(0) == 5150 );
10550     assert( SYRINX(0) != 2112 );
10551     puts( "All good!" );
10552     exit(0);
10553 }
10554
10555 EOCP
10556     set try
10557     if eval $compile; then
10558         echo "Your C compiler supports __builtin_choose_expr."
10559         val="$define"
10560     else
10561         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10562         val="$undef"
10563     fi
10564 ;;
10565 *) val="$d_builtin_choose_expr" ;;
10566 esac
10567
10568 set d_builtin_choose_expr
10569 eval $setvar
10570 $rm_try
10571
10572 : Look for GCC-style __builtin_expect
10573 case "$d_builtin_expect" in
10574 '')
10575     echo " "
10576     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10577     $cat >builtin.c <<'EOCP'
10578 int main(void) {
10579     int n = 50;
10580     if ( __builtin_expect(n, 0) ) n = 1;
10581 }
10582 EOCP
10583     set try
10584     if eval $compile; then
10585         echo "Your C compiler supports __builtin_choose_expr."
10586         val="$define"
10587     else
10588         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10589         val="$undef"
10590     fi
10591     ;;
10592 *) val="$d_builtin_expect" ;;
10593 esac
10594
10595 set d_builtin_expect
10596 eval $setvar
10597 $rm_try
10598
10599 : see if bzero exists
10600 set bzero d_bzero
10601 eval $inlibc
10602
10603 : see if stdarg is available
10604 echo " "
10605 if $test `./findhdr stdarg.h`; then
10606         echo "<stdarg.h> found." >&4
10607         valstd="$define"
10608 else
10609         echo "<stdarg.h> NOT found." >&4
10610         valstd="$undef"
10611 fi
10612
10613 : see if varags is available
10614 echo " "
10615 if $test `./findhdr varargs.h`; then
10616         echo "<varargs.h> found." >&4
10617 else
10618         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10619 fi
10620
10621 : set up the varargs testing programs
10622 $cat > varargs.c <<EOP
10623 #ifdef I_STDARG
10624 #include <stdarg.h>
10625 #endif
10626 #ifdef I_VARARGS
10627 #include <varargs.h>
10628 #endif
10629
10630 #ifdef I_STDARG
10631 int f(char *p, ...)
10632 #else
10633 int f(va_alist)
10634 va_dcl
10635 #endif
10636 {
10637         va_list ap;
10638 #ifndef I_STDARG
10639         char *p;
10640 #endif
10641 #ifdef I_STDARG
10642         va_start(ap,p);
10643 #else
10644         va_start(ap);
10645         p = va_arg(ap, char *);
10646 #endif
10647         va_end(ap);
10648         return 0;
10649 }
10650 EOP
10651 $cat > varargs <<EOP
10652 $startsh
10653 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10654         echo "true"
10655 else
10656         echo "false"
10657 fi
10658 $rm -f varargs$_o
10659 EOP
10660 chmod +x varargs
10661
10662 : now check which varargs header should be included
10663 echo " "
10664 i_varhdr=''
10665 case "$valstd" in
10666 "$define")
10667         if `./varargs I_STDARG`; then
10668                 val='stdarg.h'
10669         elif `./varargs I_VARARGS`; then
10670                 val='varargs.h'
10671         fi
10672         ;;
10673 *)
10674         if `./varargs I_VARARGS`; then
10675                 val='varargs.h'
10676         fi
10677         ;;
10678 esac
10679 case "$val" in
10680 '')
10681 echo "I could not find the definition for va_dcl... You have problems..." >&4
10682         val="$undef"; set i_stdarg; eval $setvar
10683         val="$undef"; set i_varargs; eval $setvar
10684         ;;
10685 *)
10686         set i_varhdr
10687         eval $setvar
10688         case "$i_varhdr" in
10689         stdarg.h)
10690                 val="$define"; set i_stdarg; eval $setvar
10691                 val="$undef"; set i_varargs; eval $setvar
10692                 ;;
10693         varargs.h)
10694                 val="$undef"; set i_stdarg; eval $setvar
10695                 val="$define"; set i_varargs; eval $setvar
10696                 ;;
10697         esac
10698         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10699 esac
10700 $rm -f varargs*
10701
10702 : see if the Compiler supports C99 variadic macros
10703 case "$i_stdarg$i_stdlib" in
10704     "$define$define")
10705     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10706     $cat >try.c <<EOCP
10707 #include <stdio.h>
10708 #include <stdarg.h>
10709
10710 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10711
10712 int main() {
10713   char buf[20];
10714   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10715   puts(buf);
10716   return 0;
10717 }
10718 EOCP
10719     set try
10720     if eval $compile && $run ./try 2>&1 >/dev/null; then
10721         case "`$run ./try`" in
10722             "123 456 789")
10723             echo "You have C99 variadic macros." >&4
10724             d_c99_variadic_macros="$define"
10725             ;;
10726             *)
10727             echo "You don't have functional C99 variadic macros." >&4
10728             d_c99_variadic_macros="$undef"
10729             ;;
10730         esac
10731     else
10732         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10733         d_c99_variadic_macros="$undef"
10734     fi
10735     $rm_try
10736     ;;
10737     *)
10738     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10739     d_c99_variadic_macros="$undef"
10740     ;;
10741 esac
10742
10743 : see if signal is declared as pointer to function returning int or void
10744 echo " "
10745 xxx=`./findhdr signal.h`
10746 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10747 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10748         echo "You have int (*signal())() instead of void." >&4
10749         val="$undef"
10750 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10751         echo "You have void (*signal())()." >&4
10752         val="$define"
10753 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10754         echo "You have int (*signal())() instead of void." >&4
10755         val="$undef"
10756 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10757         echo "You have void (*signal())()." >&4
10758         val="$define"
10759 else
10760         case "$d_voidsig" in
10761         '')
10762         echo "I can't determine whether signal handler returns void or int..." >&4
10763                 dflt=void
10764                 rp="What type does your signal handler return?"
10765                 . ./myread
10766                 case "$ans" in
10767                 v*) val="$define";;
10768                 *) val="$undef";;
10769                 esac;;
10770         "$define")
10771                 echo "As you already told me, signal handler returns void." >&4
10772                 val="$define"
10773                 ;;
10774         *)      echo "As you already told me, signal handler returns int." >&4
10775                 val="$undef"
10776                 ;;
10777         esac
10778 fi
10779 set d_voidsig
10780 eval $setvar
10781 case "$d_voidsig" in
10782 "$define") signal_t="void";;
10783 *) signal_t="int";;
10784 esac
10785 $rm -f $$.tmp
10786
10787 : check for ability to cast large floats to 32-bit ints.
10788 echo " "
10789 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10790 if $test "$intsize" -ge 4; then
10791         xxx=int
10792 else
10793         xxx=long
10794 fi
10795 $cat >try.c <<EOCP
10796 #include <stdio.h>
10797 #$i_stdlib I_STDLIB
10798 #ifdef I_STDLIB
10799 #include <stdlib.h>
10800 #endif
10801 #include <sys/types.h>
10802 #include <signal.h>
10803 $signal_t blech(int s) { exit(3); }
10804 int main()
10805 {
10806         $xxx i32;
10807         double f, g;
10808         int result = 0;
10809         char str[16];
10810         signal(SIGFPE, blech);
10811
10812         /* Don't let compiler optimize the test away.  Store the number
10813            in a writable string for gcc to pass to sscanf under HP/UX.
10814         */
10815         sprintf(str, "2147483647");
10816         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10817         g = 10 * f;
10818         i32  = ($xxx) g;
10819
10820         /* x86 processors will probably give 0x8000 0000, which is a
10821            sign change.  We don't want that.  We want to mimic SPARC
10822            behavior here, which is to preserve the sign and give
10823            back 0x7fff ffff.
10824         */
10825         if (i32 != ($xxx) f)
10826                 result |= 1;
10827         exit(result);
10828 }
10829 EOCP
10830 set try
10831 if eval $compile_ok; then
10832         $run ./try
10833         yyy=$?
10834 else
10835         echo "(I can't seem to compile the test program--assuming it can't)"
10836         yyy=1
10837 fi
10838 case "$yyy" in
10839 0)      val="$define"
10840         echo "Yup, it can."
10841         ;;
10842 *)      val="$undef"
10843         echo "Nope, it can't."
10844         ;;
10845 esac
10846 set d_casti32
10847 eval $setvar
10848 $rm_try
10849
10850 : check for ability to cast negative floats to unsigned
10851 echo " "
10852 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10853 $cat >try.c <<EOCP
10854 #include <stdio.h>
10855 #$i_stdlib I_STDLIB
10856 #ifdef I_STDLIB
10857 #include <stdlib.h>
10858 #endif
10859 #include <sys/types.h>
10860 #include <signal.h>
10861 $signal_t blech(int s) { exit(7); }
10862 $signal_t blech_in_list(int s) { exit(4); }
10863 unsigned long dummy_long(unsigned long p) { return p; }
10864 unsigned int dummy_int(unsigned int p) { return p; }
10865 unsigned short dummy_short(unsigned short p) { return p; }
10866 int main()
10867 {
10868         double f;
10869         unsigned long along;
10870         unsigned int aint;
10871         unsigned short ashort;
10872         int result = 0;
10873         char str[16];
10874
10875         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10876            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10877            optimized the whole file away
10878         */
10879         /* Store the number in a writable string for gcc to pass to
10880            sscanf under HP/UX.
10881         */
10882         sprintf(str, "-123");
10883         sscanf(str, "%lf", &f);  /* f = -123.; */
10884
10885         signal(SIGFPE, blech);
10886         along = (unsigned long)f;
10887         aint = (unsigned int)f;
10888         ashort = (unsigned short)f;
10889         if (along != (unsigned long)-123)
10890                 result |= 1;
10891         if (aint != (unsigned int)-123)
10892                 result |= 1;
10893         if (ashort != (unsigned short)-123)
10894                 result |= 1;
10895         sprintf(str, "1073741824.");
10896         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10897         f = f + f;
10898         along = 0;
10899         along = (unsigned long)f;
10900         if (along != 0x80000000)
10901                 result |= 2;
10902         f -= 1.;
10903         along = 0;
10904         along = (unsigned long)f;
10905         if (along != 0x7fffffff)
10906                 result |= 1;
10907         f += 2.;
10908         along = 0;
10909         along = (unsigned long)f;
10910         if (along != 0x80000001)
10911                 result |= 2;
10912         if (result)
10913                 exit(result);
10914         signal(SIGFPE, blech_in_list);
10915         sprintf(str, "123.");
10916         sscanf(str, "%lf", &f);  /* f = 123.; */
10917         along = dummy_long((unsigned long)f);
10918         aint = dummy_int((unsigned int)f);
10919         ashort = dummy_short((unsigned short)f);
10920         if (along != (unsigned long)123)
10921                 result |= 4;
10922         if (aint != (unsigned int)123)
10923                 result |= 4;
10924         if (ashort != (unsigned short)123)
10925                 result |= 4;
10926         exit(result);
10927
10928 }
10929 EOCP
10930 set try
10931 if eval $compile_ok; then
10932         $run ./try
10933         castflags=$?
10934 else
10935         echo "(I can't seem to compile the test program--assuming it can't)"
10936         castflags=7
10937 fi
10938 case "$castflags" in
10939 0)      val="$define"
10940         echo "Yup, it can."
10941         ;;
10942 *)      val="$undef"
10943         echo "Nope, it can't."
10944         ;;
10945 esac
10946 set d_castneg
10947 eval $setvar
10948 $rm_try
10949
10950 : see if vprintf exists
10951 echo " "
10952 if set vprintf val -f d_vprintf; eval $csym; $val; then
10953         echo 'vprintf() found.' >&4
10954         val="$define"
10955         $cat >try.c <<EOF
10956 #$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
10957 #$i_varargs I_VARARGS
10958
10959 #$i_stdlib I_STDLIB
10960 #$i_unistd I_UNISTD
10961
10962 #ifdef I_STDARG
10963 #  include <stdarg.h>
10964 #else /* I_VARARGS */
10965 #  include <varargs.h>
10966 #endif
10967
10968 #ifdef I_UNISTD
10969 #  include <unistd.h>
10970 #endif
10971
10972 #ifdef I_STDLIB
10973 #  include <stdlib.h>
10974 #endif
10975
10976 #include <stdio.h> /* vsprintf prototype */
10977
10978 #ifdef I_STDARG
10979 void xxx(int n, ...)
10980 {
10981     va_list args;
10982     char buf[10];
10983     va_start(args, n);
10984     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10985 }
10986 int main() { xxx(1, "foo"); }
10987
10988 #else /* I_VARARGS */
10989
10990 xxx(va_alist)
10991 va_dcl
10992 {
10993     va_list args;
10994     char buf[10];
10995     va_start(args);
10996     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10997 }
10998 int main() { xxx("foo"); }
10999
11000 #endif
11001
11002 EOF
11003         set try
11004         if eval $compile_ok; then
11005                 if $run ./try; then
11006                         echo "Your vsprintf() returns (int)." >&4
11007                         val2="$undef"
11008                 else
11009                         echo "Your vsprintf() returns (char*)." >&4
11010                         val2="$define"
11011                 fi
11012         else
11013                 echo 'I am unable to compile the vsprintf() test program.' >&4
11014                 # We shouldn't get here.  If we do, assume the standard signature,
11015                 # not the old BSD one.
11016                 echo 'Guessing that vsprintf() returns (int).' >&4
11017                 val2="$undef"
11018         fi
11019 else
11020         echo 'vprintf() NOT found.' >&4
11021         val="$undef"
11022         val2="$undef"
11023 fi
11024 $rm_try
11025 set d_vprintf
11026 eval $setvar
11027 val=$val2
11028 set d_charvspr
11029 eval $setvar
11030
11031 : see if chown exists
11032 set chown d_chown
11033 eval $inlibc
11034
11035 : see if chroot exists
11036 set chroot d_chroot
11037 eval $inlibc
11038
11039 : see if chsize exists
11040 set chsize d_chsize
11041 eval $inlibc
11042
11043 : see if class exists
11044 set class d_class
11045 eval $inlibc
11046
11047 : see if clearenv exists
11048 set clearenv d_clearenv
11049 eval $inlibc
11050
11051 : Define hasstruct macro for Configure internal use
11052 hasstruct='varname=$1; struct=$2; shift; shift;
11053 while $test $# -ge 2; do
11054         case "$1" in
11055         $define) echo "#include <$2>";;
11056         esac ;
11057     shift 2;
11058 done > try.c;
11059 echo "int main () { struct $struct foo; }" >> try.c;
11060 set try;
11061 if eval $compile; then
11062         val="$define";
11063 else
11064         val="$undef";
11065 fi;
11066 set $varname;
11067 eval $setvar;
11068 $rm_try'
11069
11070 : see whether socket exists
11071 socketlib=''
11072 sockethdr=''
11073 echo " "
11074 $echo $n "Hmm... $c" >&4
11075 if set socket val -f d_socket; eval $csym; $val; then
11076         echo "Looks like you have Berkeley networking support." >&4
11077         d_socket="$define"
11078         if set setsockopt val -f; eval $csym; $val; then
11079                 d_oldsock="$undef"
11080         else
11081                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
11082                 d_oldsock="$define"
11083         fi
11084 else
11085         if $contains socklib libc.list >/dev/null 2>&1; then
11086                 echo "Looks like you have Berkeley networking support." >&4
11087                 d_socket="$define"
11088                 : we will have to assume that it supports the 4.2 BSD interface
11089                 d_oldsock="$undef"
11090         else
11091                 echo "You don't have Berkeley networking in libc$_a..." >&4
11092                 if test "X$d_socket" = "X$define"; then
11093                    echo "...but you seem to believe that you have sockets." >&4
11094                 else
11095                         for net in net socket
11096                         do
11097                                 if test -f /usr/lib/lib$net$_a; then
11098                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
11099                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
11100                                         if $contains socket libc.list >/dev/null 2>&1; then
11101                                                 d_socket="$define"
11102                                                 socketlib="-l$net"
11103                                                 case "$net" in
11104                                                 net)
11105                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
11106                                                         sockethdr="-I/usr/netinclude"
11107                                                         ;;
11108                                                 esac
11109                                                 echo "Found Berkeley sockets interface in lib$net." >&4
11110                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
11111                                                         d_oldsock="$undef"
11112                                                 else
11113                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
11114                                                         d_oldsock="$define"
11115                                                 fi
11116                                                 break
11117                                         fi
11118                                 fi
11119                         done
11120                         if test "X$d_socket" != "X$define"; then
11121                            echo "or anywhere else I see." >&4
11122                            d_socket="$undef"
11123                            d_oldsock="$undef"
11124                         fi
11125                 fi
11126         fi
11127 fi
11128
11129 : see if socketpair exists
11130 set socketpair d_sockpair
11131 eval $inlibc
11132
11133
11134 echo " "
11135 echo "Checking the availability of certain socket constants..." >&4
11136 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
11137         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
11138         $cat >try.c <<EOF
11139 #include <sys/types.h>
11140 #include <sys/socket.h>
11141 int main() {
11142     int i = $ENUM;
11143 }
11144 EOF
11145         val="$undef"
11146         set try; if eval $compile; then
11147                 val="$define"
11148         fi
11149         set d_${enum}; eval $setvar
11150         $rm_try
11151 done
11152
11153 : see if this is a sys/uio.h system
11154 set sys/uio.h i_sysuio
11155 eval $inhdr
11156
11157 : Check for cmsghdr support
11158 echo " "
11159 echo "Checking to see if your system supports struct cmsghdr..." >&4
11160 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11161 eval $hasstruct
11162 case "$d_cmsghdr_s" in
11163 "$define")      echo "Yes, it does."   ;;
11164 *)              echo "No, it doesn't." ;;
11165 esac
11166
11167
11168 : check for const keyword
11169 echo " "
11170 echo 'Checking to see if your C compiler knows about "const"...' >&4
11171 $cat >const.c <<'EOCP'
11172 typedef struct spug { int drokk; } spug;
11173 int main()
11174 {
11175         const char *foo;
11176         const spug y = { 0 };
11177 }
11178 EOCP
11179 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11180         val="$define"
11181         echo "Yup, it does."
11182 else
11183         val="$undef"
11184         echo "Nope, it doesn't."
11185 fi
11186 set d_const
11187 eval $setvar
11188
11189 : see if copysignl exists
11190 set copysignl d_copysignl
11191 eval $inlibc
11192
11193 : see if crypt exists
11194 echo " "
11195 set crypt d_crypt
11196 eval $inlibc
11197 case "$d_crypt" in
11198 $define) cryptlib='' ;;
11199 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11200                 echo 'crypt() found.' >&4
11201                 val="$define"
11202                 cryptlib=''
11203         else
11204                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11205                 if $test -z "$cryptlib"; then
11206                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11207                 else
11208                         cryptlib=-lcrypt
11209                 fi
11210                 if $test -z "$cryptlib"; then
11211                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11212                 else
11213                         cryptlib=-lcrypt
11214                 fi
11215                 if $test -z "$cryptlib"; then
11216                         cryptlib=`./loc libcrypt$_a "" $libpth`
11217                 else
11218                         cryptlib=-lcrypt
11219                 fi
11220                 if $test -z "$cryptlib"; then
11221                         echo 'crypt() NOT found.' >&4
11222                         val="$undef"
11223                 else
11224                         val="$define"
11225                 fi
11226         fi
11227         set d_crypt
11228         eval $setvar
11229         ;;
11230 esac
11231
11232 : see if this is a crypt.h system
11233 set crypt.h i_crypt
11234 eval $inhdr
11235
11236 : see if crypt_r exists
11237 set crypt_r d_crypt_r
11238 eval $inlibc
11239 case "$d_crypt_r" in
11240 "$define")
11241         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11242         case "$d_crypt_r_proto:$usethreads" in
11243         ":define")      d_crypt_r_proto=define
11244                 set d_crypt_r_proto crypt_r $hdrs
11245                 eval $hasproto ;;
11246         *)      ;;
11247         esac
11248         case "$d_crypt_r_proto" in
11249         define)
11250         case "$crypt_r_proto" in
11251         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11252         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11253         esac
11254         case "$crypt_r_proto" in
11255         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11256         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11257         esac
11258         case "$crypt_r_proto" in
11259         ''|0)   d_crypt_r=undef
11260                 crypt_r_proto=0
11261                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11262         * )     case "$crypt_r_proto" in
11263                 REENTRANT_PROTO*) ;;
11264                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11265                 esac
11266                 echo "Prototype: $try" ;;
11267         esac
11268         ;;
11269         *)      case "$usethreads" in
11270                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11271                 esac
11272                 d_crypt_r=undef
11273                 crypt_r_proto=0
11274                 ;;
11275         esac
11276         ;;
11277 *)      crypt_r_proto=0
11278         ;;
11279 esac
11280
11281 : get csh whereabouts
11282 case "$csh" in
11283 'csh') val="$undef" ;;
11284 *) val="$define" ;;
11285 esac
11286 set d_csh
11287 eval $setvar
11288 : Respect a hint or command line value for full_csh.
11289 case "$full_csh" in
11290 '') full_csh=$csh ;;
11291 esac
11292
11293 : see if ctermid exists
11294 set ctermid d_ctermid
11295 eval $inlibc
11296
11297 : see if ctermid_r exists
11298 set ctermid_r d_ctermid_r
11299 eval $inlibc
11300 case "$d_ctermid_r" in
11301 "$define")
11302         hdrs="$i_systypes sys/types.h define stdio.h "
11303         case "$d_ctermid_r_proto:$usethreads" in
11304         ":define")      d_ctermid_r_proto=define
11305                 set d_ctermid_r_proto ctermid_r $hdrs
11306                 eval $hasproto ;;
11307         *)      ;;
11308         esac
11309         case "$d_ctermid_r_proto" in
11310         define)
11311         case "$ctermid_r_proto" in
11312         ''|0) try='char* ctermid_r(char*);'
11313         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11314         esac
11315         case "$ctermid_r_proto" in
11316         ''|0)   d_ctermid_r=undef
11317                 ctermid_r_proto=0
11318                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11319         * )     case "$ctermid_r_proto" in
11320                 REENTRANT_PROTO*) ;;
11321                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11322                 esac
11323                 echo "Prototype: $try" ;;
11324         esac
11325         ;;
11326         *)      case "$usethreads" in
11327                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11328                 esac
11329                 d_ctermid_r=undef
11330                 ctermid_r_proto=0
11331                 ;;
11332         esac
11333         ;;
11334 *)      ctermid_r_proto=0
11335         ;;
11336 esac
11337
11338 : see if ctime_r exists
11339 set ctime_r d_ctime_r
11340 eval $inlibc
11341 case "$d_ctime_r" in
11342 "$define")
11343         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11344         case "$d_ctime_r_proto:$usethreads" in
11345         ":define")      d_ctime_r_proto=define
11346                 set d_ctime_r_proto ctime_r $hdrs
11347                 eval $hasproto ;;
11348         *)      ;;
11349         esac
11350         case "$d_ctime_r_proto" in
11351         define)
11352         case "$ctime_r_proto" in
11353         ''|0) try='char* ctime_r(const time_t*, char*);'
11354         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11355         esac
11356         case "$ctime_r_proto" in
11357         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11358         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11359         esac
11360         case "$ctime_r_proto" in
11361         ''|0) try='int ctime_r(const time_t*, char*);'
11362         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11363         esac
11364         case "$ctime_r_proto" in
11365         ''|0) try='int ctime_r(const time_t*, char*, int);'
11366         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11367         esac
11368         case "$ctime_r_proto" in
11369         ''|0)   d_ctime_r=undef
11370                 ctime_r_proto=0
11371                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11372         * )     case "$ctime_r_proto" in
11373                 REENTRANT_PROTO*) ;;
11374                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11375                 esac
11376                 echo "Prototype: $try" ;;
11377         esac
11378         ;;
11379         *)      case "$usethreads" in
11380                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11381                 esac
11382                 d_ctime_r=undef
11383                 ctime_r_proto=0
11384                 ;;
11385         esac
11386         ;;
11387 *)      ctime_r_proto=0
11388         ;;
11389 esac
11390
11391 : see if cuserid exists
11392 set cuserid d_cuserid
11393 eval $inlibc
11394
11395 : see if this is a limits.h system
11396 set limits.h i_limits
11397 eval $inhdr
11398
11399 : see if this is a float.h system
11400 set float.h i_float
11401 eval $inhdr
11402
11403 : See if number of significant digits in a double precision number is known
11404 echo " "
11405 $cat >dbl_dig.c <<EOM
11406 #$i_limits I_LIMITS
11407 #$i_float I_FLOAT
11408 #ifdef I_LIMITS
11409 #include <limits.h>
11410 #endif
11411 #ifdef I_FLOAT
11412 #include <float.h>
11413 #endif
11414 #ifdef DBL_DIG
11415 printf("Contains DBL_DIG");
11416 #endif
11417 EOM
11418 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11419 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11420         echo "DBL_DIG found." >&4
11421         val="$define"
11422 else
11423         echo "DBL_DIG NOT found." >&4
11424         val="$undef"
11425 fi
11426 $rm -f dbl_dig.?
11427 set d_dbl_dig
11428 eval $setvar
11429
11430 : see if dbm.h is available
11431 : see if dbmclose exists
11432 set dbmclose d_dbmclose
11433 eval $inlibc
11434
11435 case "$d_dbmclose" in
11436 $define)
11437         set dbm.h i_dbm
11438         eval $inhdr
11439         case "$i_dbm" in
11440         $define)
11441                 val="$undef"
11442                 set i_rpcsvcdbm
11443                 eval $setvar
11444                 ;;
11445         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11446                 eval $inhdr
11447                 ;;
11448         esac
11449         ;;
11450 *)      echo "We won't be including <dbm.h>"
11451         val="$undef"
11452         set i_dbm
11453         eval $setvar
11454         val="$undef"
11455         set i_rpcsvcdbm
11456         eval $setvar
11457         ;;
11458 esac
11459
11460 : see if prototype for dbminit is available
11461 echo " "
11462 set d_dbminitproto dbminit $i_dbm dbm.h
11463 eval $hasproto
11464
11465 : see if difftime exists
11466 set difftime d_difftime
11467 eval $inlibc
11468
11469 : see if this is a dirent system
11470 echo " "
11471 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11472         val="$define"
11473         echo "<dirent.h> found." >&4
11474 else
11475         val="$undef"
11476         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11477                 echo "<sys/dir.h> found." >&4
11478                 echo " "
11479         else
11480                 xinc=`./findhdr sys/ndir.h`
11481         fi
11482         echo "<dirent.h> NOT found." >&4
11483 fi
11484 set i_dirent
11485 eval $setvar
11486
11487 : Look for type of directory structure.
11488 echo " "
11489 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11490
11491 case "$direntrytype" in
11492 ''|' ')
11493         case "$i_dirent" in
11494         $define) guess1='struct dirent' ;;
11495         *) guess1='struct direct'  ;;
11496         esac
11497         ;;
11498 *)      guess1="$direntrytype"
11499         ;;
11500 esac
11501
11502 case "$guess1" in
11503 'struct dirent') guess2='struct direct' ;;
11504 *) guess2='struct dirent' ;;
11505 esac
11506
11507 if $contains "$guess1" try.c >/dev/null 2>&1; then
11508         direntrytype="$guess1"
11509         echo "Your directory entries are $direntrytype." >&4
11510 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11511         direntrytype="$guess2"
11512         echo "Your directory entries seem to be $direntrytype." >&4
11513 else
11514         echo "I don't recognize your system's directory entries." >&4
11515         rp="What type is used for directory entries on this system?"
11516         dflt="$guess1"
11517         . ./myread
11518         direntrytype="$ans"
11519 fi
11520 $rm_try
11521
11522 : see if the directory entry stores field length
11523 echo " "
11524 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11525 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11526         echo "Good, your directory entry keeps length information in d_namlen." >&4
11527         val="$define"
11528 else
11529         echo "Your directory entry does not know about the d_namlen field." >&4
11530         val="$undef"
11531 fi
11532 set d_dirnamlen
11533 eval $setvar
11534 $rm_try
11535
11536 : Look for DIR.dd_fd
11537 case "$i_dirent" in
11538 "$define")
11539     echo "Checking to see if DIR has a dd_fd member variable" >&4
11540     $cat >try.c <<EOCP
11541 #$i_stdlib I_STDLIB
11542 #ifdef I_STDLIB
11543 #include <stdlib.h>
11544 #endif
11545 #include <dirent.h>
11546
11547 int main() {
11548     DIR dir;
11549     dir.dd_fd = 1;
11550     return 0;
11551 }
11552 EOCP
11553     val=$undef
11554     set try
11555     if eval $compile; then
11556         echo "Yes, it does."
11557         val="$define"
11558     else
11559         echo "No, it does not."
11560         val="$undef"
11561     fi
11562     ;;
11563 *)
11564     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11565     val="$undef"
11566     ;;
11567 esac
11568 set d_dir_dd_fd
11569 eval $setvar
11570 $rm_try
11571
11572 : see if this is an sysdir system
11573 set sys/dir.h i_sysdir
11574 eval $inhdr
11575
11576 : see if this is an sysndir system
11577 set sys/ndir.h i_sysndir
11578 eval $inhdr
11579
11580 : Look for dirfd
11581 echo " "
11582 $cat >dirfd.c <<EOM
11583 #include <stdio.h>
11584 #$i_stdlib I_STDLIB
11585 #ifdef I_STDLIB
11586 #include <stdlib.h>
11587 #endif
11588 #$i_dirent I_DIRENT             /**/
11589 #$i_sysdir I_SYS_DIR            /**/
11590 #$i_sysndir I_SYS_NDIR          /**/
11591 #$i_systypes I_SYS_TYPES        /**/
11592 #if defined(I_SYS_TYPES)
11593 #include <sys/types.h>
11594 #endif
11595 #if defined(I_DIRENT)
11596 #include <dirent.h>
11597 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11598 #include <sys/dir.h>
11599 #endif
11600 #else
11601 #ifdef I_SYS_NDIR
11602 #include <sys/ndir.h>
11603 #else
11604 #ifdef I_SYS_DIR
11605 #ifdef hp9000s500
11606 #include <ndir.h>       /* may be wrong in the future */
11607 #else
11608 #include <sys/dir.h>
11609 #endif
11610 #endif
11611 #endif
11612 #endif 
11613 int main() {
11614         DIR *dirp = opendir(".");
11615         if (dirfd(dirp) >= 0)
11616                 exit(0);
11617         else
11618                 exit(1);
11619 }
11620 EOM
11621 val=$undef
11622 set dirfd
11623 if eval $compile; then
11624         val="$define"
11625 fi
11626 case "$val" in
11627 $define)        echo "dirfd() found." >&4       ;;
11628 *)              echo "dirfd() NOT found." >&4   ;;
11629 esac
11630 set d_dirfd
11631 eval $setvar
11632 $rm -f dirfd*
11633
11634 : see if dlerror exists
11635 xxx_runnm="$runnm"
11636 runnm=false
11637 set dlerror d_dlerror
11638 eval $inlibc
11639 runnm="$xxx_runnm"
11640
11641 : see if dlfcn is available
11642 set dlfcn.h i_dlfcn
11643 eval $inhdr
11644
11645 : Check what extension to use for shared libs
11646 case "$usedl" in
11647 $define|y|true)
11648         $cat << EOM
11649
11650 On a few systems, the dynamically loaded modules that perl generates and uses
11651 will need a different extension than shared libs. The default will probably
11652 be appropriate.
11653
11654 EOM
11655         case "$dlext" in
11656         '')     dflt="$so" ;;
11657         *)      dflt="$dlext" ;;
11658         esac
11659         rp='What is the extension of dynamically loaded modules'
11660         . ./myread
11661         dlext="$ans"
11662         ;;
11663 *)
11664         dlext="none"
11665         ;;
11666 esac
11667
11668 : Check if dlsym need a leading underscore
11669 echo " "
11670 val="$undef"
11671
11672 case "$dlsrc" in
11673 dl_dlopen.xs)
11674         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11675         $cat >dyna.c <<'EOM'
11676 fred () { }
11677 EOM
11678
11679 $cat >fred.c<<EOM
11680
11681 #include <stdio.h>
11682 #$i_stdlib I_STDLIB
11683 #ifdef I_STDLIB
11684 #include <stdlib.h>
11685 #endif
11686 #$i_dlfcn I_DLFCN
11687 #ifdef I_DLFCN
11688 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11689 #else
11690 #include <sys/types.h>
11691 #include <nlist.h>
11692 #include <link.h>
11693 #endif
11694
11695 extern int fred() ;
11696
11697 int main()
11698 {
11699     void * handle ;
11700     void * symbol ;
11701 #ifndef RTLD_LAZY
11702     int mode = 1 ;
11703 #else
11704     int mode = RTLD_LAZY ;
11705 #endif
11706     handle = dlopen("./dyna.$dlext", mode) ;
11707     if (handle == NULL) {
11708         printf ("1\n") ;
11709         fflush (stdout) ;
11710         exit(0);
11711     }
11712     symbol = dlsym(handle, "fred") ;
11713     if (symbol == NULL) {
11714         /* try putting a leading underscore */
11715         symbol = dlsym(handle, "_fred") ;
11716         if (symbol == NULL) {
11717             printf ("2\n") ;
11718             fflush (stdout) ;
11719             exit(0);
11720         }
11721         printf ("3\n") ;
11722     }
11723     else
11724         printf ("4\n") ;
11725     fflush (stdout) ;
11726     exit(0);
11727 }
11728 EOM
11729         : Call the object file tmp-dyna.o in case dlext=o.
11730         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11731                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11732                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11733                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11734                 xxx=`$run ./fred`
11735                 case $xxx in
11736                 1)      echo "Test program failed using dlopen." >&4
11737                         echo "Perhaps you should not use dynamic loading." >&4;;
11738                 2)      echo "Test program failed using dlsym." >&4
11739                         echo "Perhaps you should not use dynamic loading." >&4;;
11740                 3)      echo "dlsym needs a leading underscore" >&4
11741                         val="$define" ;;
11742                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11743                 esac
11744         else
11745                 echo "I can't compile and run the test program." >&4
11746                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11747         fi
11748         ;;
11749 esac
11750
11751 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11752
11753 set d_dlsymun
11754 eval $setvar
11755
11756 : see if drand48_r exists
11757 set drand48_r d_drand48_r
11758 eval $inlibc
11759 case "$d_drand48_r" in
11760 "$define")
11761         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11762         case "$d_drand48_r_proto:$usethreads" in
11763         ":define")      d_drand48_r_proto=define
11764                 set d_drand48_r_proto drand48_r $hdrs
11765                 eval $hasproto ;;
11766         *)      ;;
11767         esac
11768         case "$d_drand48_r_proto" in
11769         define)
11770         case "$drand48_r_proto" in
11771         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11772         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11773         esac
11774         case "$drand48_r_proto" in
11775         ''|0)   d_drand48_r=undef
11776                 drand48_r_proto=0
11777                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11778         * )     case "$drand48_r_proto" in
11779                 REENTRANT_PROTO*) ;;
11780                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11781                 esac
11782                 echo "Prototype: $try" ;;
11783         esac
11784         ;;
11785         *)      case "$usethreads" in
11786                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11787                 esac
11788                 d_drand48_r=undef
11789                 drand48_r_proto=0
11790                 ;;
11791         esac
11792         ;;
11793 *)      drand48_r_proto=0
11794         ;;
11795 esac
11796
11797 : see if prototype for drand48 is available
11798 echo " "
11799 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11800 eval $hasproto
11801
11802 : see if dup2 exists
11803 set dup2 d_dup2
11804 eval $inlibc
11805
11806 : see if eaccess exists
11807 set eaccess d_eaccess
11808 eval $inlibc
11809
11810 : see if endgrent exists
11811 set endgrent d_endgrent
11812 eval $inlibc
11813
11814 : see if this is an grp system
11815 set grp.h i_grp
11816 eval $inhdr
11817
11818 case "$i_grp" in
11819 $define)
11820         xxx=`./findhdr grp.h`
11821         $cppstdin $cppflags $cppminus < $xxx >$$.h
11822
11823         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11824                 val="$define"
11825         else
11826                 val="$undef"
11827         fi
11828         set d_grpasswd
11829         eval $setvar
11830
11831         $rm -f $$.h
11832         ;;
11833 *)
11834         val="$undef";
11835         set d_grpasswd; eval $setvar
11836         ;;
11837 esac
11838
11839 : see if endgrent_r exists
11840 set endgrent_r d_endgrent_r
11841 eval $inlibc
11842 case "$d_endgrent_r" in
11843 "$define")
11844         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11845         case "$d_endgrent_r_proto:$usethreads" in
11846         ":define")      d_endgrent_r_proto=define
11847                 set d_endgrent_r_proto endgrent_r $hdrs
11848                 eval $hasproto ;;
11849         *)      ;;
11850         esac
11851         case "$d_endgrent_r_proto" in
11852         define)
11853         case "$endgrent_r_proto" in
11854         ''|0) try='int endgrent_r(FILE**);'
11855         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11856         esac
11857         case "$endgrent_r_proto" in
11858         ''|0) try='void endgrent_r(FILE**);'
11859         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11860         esac
11861         case "$endgrent_r_proto" in
11862         ''|0)   d_endgrent_r=undef
11863                 endgrent_r_proto=0
11864                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11865         * )     case "$endgrent_r_proto" in
11866                 REENTRANT_PROTO*) ;;
11867                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11868                 esac
11869                 echo "Prototype: $try" ;;
11870         esac
11871         ;;
11872         *)      case "$usethreads" in
11873                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11874                 esac
11875                 d_endgrent_r=undef
11876                 endgrent_r_proto=0
11877                 ;;
11878         esac
11879         ;;
11880 *)      endgrent_r_proto=0
11881         ;;
11882 esac
11883
11884 : see if endhostent exists
11885 set endhostent d_endhent
11886 eval $inlibc
11887
11888 : see if this is a netdb.h system
11889 set netdb.h i_netdb
11890 eval $inhdr
11891
11892 : see if endhostent_r exists
11893 set endhostent_r d_endhostent_r
11894 eval $inlibc
11895 case "$d_endhostent_r" in
11896 "$define")
11897         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11898         case "$d_endhostent_r_proto:$usethreads" in
11899         ":define")      d_endhostent_r_proto=define
11900                 set d_endhostent_r_proto endhostent_r $hdrs
11901                 eval $hasproto ;;
11902         *)      ;;
11903         esac
11904         case "$d_endhostent_r_proto" in
11905         define)
11906         case "$endhostent_r_proto" in
11907         ''|0) try='int endhostent_r(struct hostent_data*);'
11908         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11909         esac
11910         case "$endhostent_r_proto" in
11911         ''|0) try='void endhostent_r(struct hostent_data*);'
11912         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11913         esac
11914         case "$endhostent_r_proto" in
11915         ''|0)   d_endhostent_r=undef
11916                 endhostent_r_proto=0
11917                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11918         * )     case "$endhostent_r_proto" in
11919                 REENTRANT_PROTO*) ;;
11920                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11921                 esac
11922                 echo "Prototype: $try" ;;
11923         esac
11924         ;;
11925         *)      case "$usethreads" in
11926                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11927                 esac
11928                 d_endhostent_r=undef
11929                 endhostent_r_proto=0
11930                 ;;
11931         esac
11932         ;;
11933 *)      endhostent_r_proto=0
11934         ;;
11935 esac
11936
11937 : see if endnetent exists
11938 set endnetent d_endnent
11939 eval $inlibc
11940
11941 : see if endnetent_r exists
11942 set endnetent_r d_endnetent_r
11943 eval $inlibc
11944 case "$d_endnetent_r" in
11945 "$define")
11946         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11947         case "$d_endnetent_r_proto:$usethreads" in
11948         ":define")      d_endnetent_r_proto=define
11949                 set d_endnetent_r_proto endnetent_r $hdrs
11950                 eval $hasproto ;;
11951         *)      ;;
11952         esac
11953         case "$d_endnetent_r_proto" in
11954         define)
11955         case "$endnetent_r_proto" in
11956         ''|0) try='int endnetent_r(struct netent_data*);'
11957         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11958         esac
11959         case "$endnetent_r_proto" in
11960         ''|0) try='void endnetent_r(struct netent_data*);'
11961         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11962         esac
11963         case "$endnetent_r_proto" in
11964         ''|0)   d_endnetent_r=undef
11965                 endnetent_r_proto=0
11966                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11967         * )     case "$endnetent_r_proto" in
11968                 REENTRANT_PROTO*) ;;
11969                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11970                 esac
11971                 echo "Prototype: $try" ;;
11972         esac
11973         ;;
11974         *)      case "$usethreads" in
11975                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11976                 esac
11977                 d_endnetent_r=undef
11978                 endnetent_r_proto=0
11979                 ;;
11980         esac
11981         ;;
11982 *)      endnetent_r_proto=0
11983         ;;
11984 esac
11985
11986 : see if endprotoent exists
11987 set endprotoent d_endpent
11988 eval $inlibc
11989
11990 : see if endprotoent_r exists
11991 set endprotoent_r d_endprotoent_r
11992 eval $inlibc
11993 case "$d_endprotoent_r" in
11994 "$define")
11995         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11996         case "$d_endprotoent_r_proto:$usethreads" in
11997         ":define")      d_endprotoent_r_proto=define
11998                 set d_endprotoent_r_proto endprotoent_r $hdrs
11999                 eval $hasproto ;;
12000         *)      ;;
12001         esac
12002         case "$d_endprotoent_r_proto" in
12003         define)
12004         case "$endprotoent_r_proto" in
12005         ''|0) try='int endprotoent_r(struct protoent_data*);'
12006         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
12007         esac
12008         case "$endprotoent_r_proto" in
12009         ''|0) try='void endprotoent_r(struct protoent_data*);'
12010         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
12011         esac
12012         case "$endprotoent_r_proto" in
12013         ''|0)   d_endprotoent_r=undef
12014                 endprotoent_r_proto=0
12015                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
12016         * )     case "$endprotoent_r_proto" in
12017                 REENTRANT_PROTO*) ;;
12018                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
12019                 esac
12020                 echo "Prototype: $try" ;;
12021         esac
12022         ;;
12023         *)      case "$usethreads" in
12024                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
12025                 esac
12026                 d_endprotoent_r=undef
12027                 endprotoent_r_proto=0
12028                 ;;
12029         esac
12030         ;;
12031 *)      endprotoent_r_proto=0
12032         ;;
12033 esac
12034
12035 : see if endpwent exists
12036 set endpwent d_endpwent
12037 eval $inlibc
12038
12039 : see if this is a pwd.h system
12040 set pwd.h i_pwd
12041 eval $inhdr
12042
12043 case "$i_pwd" in
12044 $define)
12045         xxx=`./findhdr pwd.h`
12046         $cppstdin $cppflags $cppminus < $xxx >$$.h
12047
12048         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
12049                 val="$define"
12050         else
12051                 val="$undef"
12052         fi
12053         set d_pwquota
12054         eval $setvar
12055
12056         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
12057                 val="$define"
12058         else
12059                 val="$undef"
12060         fi
12061         set d_pwage
12062         eval $setvar
12063
12064         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
12065                 val="$define"
12066         else
12067                 val="$undef"
12068         fi
12069         set d_pwchange
12070         eval $setvar
12071
12072         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
12073                 val="$define"
12074         else
12075                 val="$undef"
12076         fi
12077         set d_pwclass
12078         eval $setvar
12079
12080         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
12081                 val="$define"
12082         else
12083                 val="$undef"
12084         fi
12085         set d_pwexpire
12086         eval $setvar
12087
12088         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
12089                 val="$define"
12090         else
12091                 val="$undef"
12092         fi
12093         set d_pwcomment
12094         eval $setvar
12095
12096         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
12097                 val="$define"
12098         else
12099                 val="$undef"
12100         fi
12101         set d_pwgecos
12102         eval $setvar
12103
12104         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
12105                 val="$define"
12106         else
12107                 val="$undef"
12108         fi
12109         set d_pwpasswd
12110         eval $setvar
12111
12112         $rm -f $$.h
12113         ;;
12114 *)
12115         val="$undef"; 
12116         set d_pwquota; eval $setvar
12117         set d_pwage; eval $setvar
12118         set d_pwchange; eval $setvar
12119         set d_pwclass; eval $setvar
12120         set d_pwexpire; eval $setvar
12121         set d_pwcomment; eval $setvar
12122         set d_pwgecos; eval $setvar
12123         set d_pwpasswd; eval $setvar
12124         ;;
12125 esac
12126
12127 : see if endpwent_r exists
12128 set endpwent_r d_endpwent_r
12129 eval $inlibc
12130 case "$d_endpwent_r" in
12131 "$define")
12132         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12133         case "$d_endpwent_r_proto:$usethreads" in
12134         ":define")      d_endpwent_r_proto=define
12135                 set d_endpwent_r_proto endpwent_r $hdrs
12136                 eval $hasproto ;;
12137         *)      ;;
12138         esac
12139         case "$d_endpwent_r_proto" in
12140         define)
12141         case "$endpwent_r_proto" in
12142         ''|0) try='int endpwent_r(FILE**);'
12143         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
12144         esac
12145         case "$endpwent_r_proto" in
12146         ''|0) try='void endpwent_r(FILE**);'
12147         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
12148         esac
12149         case "$endpwent_r_proto" in
12150         ''|0)   d_endpwent_r=undef
12151                 endpwent_r_proto=0
12152                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12153         * )     case "$endpwent_r_proto" in
12154                 REENTRANT_PROTO*) ;;
12155                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12156                 esac
12157                 echo "Prototype: $try" ;;
12158         esac
12159         ;;
12160         *)      case "$usethreads" in
12161                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12162                 esac
12163                 d_endpwent_r=undef
12164                 endpwent_r_proto=0
12165                 ;;
12166         esac
12167         ;;
12168 *)      endpwent_r_proto=0
12169         ;;
12170 esac
12171
12172 : see if endservent exists
12173 set endservent d_endsent
12174 eval $inlibc
12175
12176 : see if endservent_r exists
12177 set endservent_r d_endservent_r
12178 eval $inlibc
12179 case "$d_endservent_r" in
12180 "$define")
12181         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12182         case "$d_endservent_r_proto:$usethreads" in
12183         ":define")      d_endservent_r_proto=define
12184                 set d_endservent_r_proto endservent_r $hdrs
12185                 eval $hasproto ;;
12186         *)      ;;
12187         esac
12188         case "$d_endservent_r_proto" in
12189         define)
12190         case "$endservent_r_proto" in
12191         ''|0) try='int endservent_r(struct servent_data*);'
12192         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12193         esac
12194         case "$endservent_r_proto" in
12195         ''|0) try='void endservent_r(struct servent_data*);'
12196         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12197         esac
12198         case "$endservent_r_proto" in
12199         ''|0)   d_endservent_r=undef
12200                 endservent_r_proto=0
12201                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12202         * )     case "$endservent_r_proto" in
12203                 REENTRANT_PROTO*) ;;
12204                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12205                 esac
12206                 echo "Prototype: $try" ;;
12207         esac
12208         ;;
12209         *)      case "$usethreads" in
12210                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12211                 esac
12212                 d_endservent_r=undef
12213                 endservent_r_proto=0
12214                 ;;
12215         esac
12216         ;;
12217 *)      endservent_r_proto=0
12218         ;;
12219 esac
12220
12221 : Locate the flags for 'open()'
12222 echo " "
12223 $cat >try.c <<EOCP
12224 #include <sys/types.h>
12225 #ifdef I_FCNTL
12226 #include <fcntl.h>
12227 #endif
12228 #ifdef I_SYS_FILE
12229 #include <sys/file.h>
12230 #endif
12231 #$i_stdlib I_STDLIB
12232 #ifdef I_STDLIB
12233 #include <stdlib.h>
12234 #endif
12235 int main() {
12236         if(O_RDONLY);
12237 #ifdef O_TRUNC
12238         exit(0);
12239 #else
12240         exit(1);
12241 #endif
12242 }
12243 EOCP
12244 : check sys/file.h first to get FREAD on Sun
12245 if $test `./findhdr sys/file.h` && \
12246                 set try -DI_SYS_FILE && eval $compile; then
12247         h_sysfile=true;
12248         echo "<sys/file.h> defines the O_* constants..." >&4
12249         if $run ./try; then
12250                 echo "and you have the 3 argument form of open()." >&4
12251                 val="$define"
12252         else
12253                 echo "but not the 3 argument form of open().  Oh, well." >&4
12254                 val="$undef"
12255         fi
12256 elif $test `./findhdr fcntl.h` && \
12257                 set try -DI_FCNTL && eval $compile; then
12258         h_fcntl=true;
12259         echo "<fcntl.h> defines the O_* constants..." >&4
12260         if $run ./try; then
12261                 echo "and you have the 3 argument form of open()." >&4
12262                 val="$define"
12263         else
12264                 echo "but not the 3 argument form of open().  Oh, well." >&4
12265                 val="$undef"
12266         fi
12267 else
12268         val="$undef"
12269         echo "I can't find the O_* constant definitions!  You got problems." >&4
12270 fi
12271 set d_open3
12272 eval $setvar
12273 $rm_try
12274
12275 : script used to emit important warnings
12276 cat >warn <<EOS
12277 $startsh
12278 if test \$# -gt 0; then
12279         echo "\$@" >msg
12280 else
12281         cat >msg
12282 fi
12283 echo "*** WARNING:" >&4
12284 sed -e 's/^/*** /' <msg >&4
12285 echo "*** " >&4
12286 cat msg >>config.msg
12287 echo " " >>config.msg
12288 rm -f msg
12289 EOS
12290 chmod +x warn
12291 $eunicefix warn
12292
12293 : see which of string.h or strings.h is needed
12294 echo " "
12295 strings=`./findhdr string.h`
12296 if $test "$strings" && $test -r "$strings"; then
12297         echo "Using <string.h> instead of <strings.h>." >&4
12298         val="$define"
12299 else
12300         val="$undef"
12301         strings=`./findhdr strings.h`
12302         if $test "$strings" && $test -r "$strings"; then
12303                 echo "Using <strings.h> instead of <string.h>." >&4
12304         else
12305                 ./warn "No string header found -- You'll surely have problems."
12306         fi
12307 fi
12308 set i_string
12309 eval $setvar
12310 case "$i_string" in
12311 "$undef") strings=`./findhdr strings.h`;;
12312 *)        strings=`./findhdr string.h`;;
12313 esac
12314
12315 : see if this is a sys/file.h system
12316 val=''
12317 set sys/file.h val
12318 eval $inhdr
12319
12320 : do we need to include sys/file.h ?
12321 case "$val" in
12322 "$define")
12323         echo " "
12324         if $h_sysfile; then
12325                 val="$define"
12326                 echo "We'll be including <sys/file.h>." >&4
12327         else
12328                 val="$undef"
12329                 echo "We won't be including <sys/file.h>." >&4
12330         fi
12331         ;;
12332 *)
12333         h_sysfile=false
12334         ;;
12335 esac
12336 set i_sysfile
12337 eval $setvar
12338
12339 : see if fcntl.h is there
12340 val=''
12341 set fcntl.h val
12342 eval $inhdr
12343
12344 : see if we can include fcntl.h
12345 case "$val" in
12346 "$define")
12347         echo " "
12348         if $h_fcntl; then
12349                 val="$define"
12350                 echo "We'll be including <fcntl.h>." >&4
12351         else
12352                 val="$undef"
12353                 if $h_sysfile; then
12354         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12355                 else
12356                         echo "We won't be including <fcntl.h>." >&4
12357                 fi
12358         fi
12359         ;;
12360 *)
12361         h_fcntl=false
12362         val="$undef"
12363         ;;
12364 esac
12365 set i_fcntl
12366 eval $setvar
12367
12368 : see if fork exists
12369 set fork d_fork
12370 eval $inlibc
12371
12372 : see if pipe exists
12373 set pipe d_pipe
12374 eval $inlibc
12375
12376 : check for non-blocking I/O stuff
12377 case "$h_sysfile" in
12378 true) echo "#include <sys/file.h>" > head.c;;
12379 *)
12380        case "$h_fcntl" in
12381        true) echo "#include <fcntl.h>" > head.c;;
12382        *) echo "#include <sys/fcntl.h>" > head.c;;
12383        esac
12384        ;;
12385 esac
12386 echo " "
12387 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12388 case "$o_nonblock" in
12389 '')
12390         $cat head.c > try.c
12391         $cat >>try.c <<EOCP
12392 #include <stdio.h>
12393 #$i_stdlib I_STDLIB
12394 #ifdef I_STDLIB
12395 #include <stdlib.h>
12396 #endif
12397 #$i_fcntl I_FCNTL
12398 #ifdef I_FCNTL
12399 #include <fcntl.h>
12400 #endif
12401 int main() {
12402 #ifdef O_NONBLOCK
12403         printf("O_NONBLOCK\n");
12404         exit(0);
12405 #endif
12406 #ifdef O_NDELAY
12407         printf("O_NDELAY\n");
12408         exit(0);
12409 #endif
12410 #ifdef FNDELAY
12411         printf("FNDELAY\n");
12412         exit(0);
12413 #endif
12414         exit(0);
12415 }
12416 EOCP
12417         set try
12418         if eval $compile_ok; then
12419                 o_nonblock=`$run ./try`
12420                 case "$o_nonblock" in
12421                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12422                 *) echo "Seems like we can use $o_nonblock.";;
12423                 esac
12424         else
12425                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12426         fi
12427         ;;
12428 *) echo "Using $hint value $o_nonblock.";;
12429 esac
12430 $rm_try
12431
12432 echo " "
12433 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12434 case "$eagain" in
12435 '')
12436         case "$d_fork:$d_pipe" in
12437         define:define)
12438         $cat head.c > try.c
12439         $cat >>try.c <<EOCP
12440 #include <errno.h>
12441 #include <sys/types.h>
12442 #include <signal.h>
12443 #include <stdio.h>
12444 #$i_stdlib I_STDLIB
12445 #ifdef I_STDLIB
12446 #include <stdlib.h>
12447 #endif
12448 #$i_fcntl I_FCNTL
12449 #ifdef I_FCNTL
12450 #include <fcntl.h>
12451 #endif
12452 #define MY_O_NONBLOCK $o_nonblock
12453 #ifndef errno  /* XXX need better Configure test */
12454 extern int errno;
12455 #endif
12456 #$i_unistd I_UNISTD
12457 #ifdef I_UNISTD
12458 #include <unistd.h>
12459 #endif
12460 #$i_string I_STRING
12461 #ifdef I_STRING
12462 #include <string.h>
12463 #else
12464 #include <strings.h>
12465 #endif
12466 $signal_t blech(int x) { exit(3); }
12467 EOCP
12468         $cat >> try.c <<'EOCP'
12469 int main()
12470 {
12471         int pd[2];
12472         int pu[2];
12473         char buf[1];
12474         char string[100];
12475
12476         pipe(pd);       /* Down: child -> parent */
12477         pipe(pu);       /* Up: parent -> child */
12478         if (0 != fork()) {
12479                 int ret;
12480                 close(pd[1]);   /* Parent reads from pd[0] */
12481                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12482 #ifdef F_SETFL
12483                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12484                         exit(1);
12485 #else
12486                 exit(4);
12487 #endif
12488                 signal(SIGALRM, blech);
12489                 alarm(5);
12490                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12491                         exit(2);
12492                 sprintf(string, "%d\n", ret);
12493                 write(2, string, strlen(string));
12494                 alarm(0);
12495 #ifdef EAGAIN
12496                 if (errno == EAGAIN) {
12497                         printf("EAGAIN\n");
12498                         goto ok;
12499                 }
12500 #endif
12501 #ifdef EWOULDBLOCK
12502                 if (errno == EWOULDBLOCK)
12503                         printf("EWOULDBLOCK\n");
12504 #endif
12505         ok:
12506                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12507                 sleep(2);                               /* Give it time to close our pipe */
12508                 alarm(5);
12509                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12510                 alarm(0);
12511                 sprintf(string, "%d\n", ret);
12512                 write(4, string, strlen(string));
12513                 exit(0);
12514         }
12515
12516         close(pd[0]);                   /* We write to pd[1] */
12517         close(pu[1]);                   /* We read from pu[0] */
12518         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12519         close(pd[1]);                   /* Pipe pd is now fully closed! */
12520         exit(0);                                /* Bye bye, thank you for playing! */
12521 }
12522 EOCP
12523         set try
12524         if eval $compile_ok; then
12525                 echo "$startsh" >mtry
12526                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12527                 chmod +x mtry
12528                 ./mtry >/dev/null 2>&1
12529                 case $? in
12530                 0) eagain=`$cat try.out`;;
12531                 1) echo "Could not perform non-blocking setting!";;
12532                 2) echo "I did a successful read() for something that was not there!";;
12533                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12534                 4) echo "Could not find F_SETFL!";;
12535                 *) echo "Something terribly wrong happened during testing.";;
12536                 esac
12537                 rd_nodata=`$cat try.ret`
12538                 echo "A read() system call with no data present returns $rd_nodata."
12539                 case "$rd_nodata" in
12540                 0|-1) ;;
12541                 *)
12542                         echo "(That's peculiar, fixing that to be -1.)"
12543                         rd_nodata=-1
12544                         ;;
12545                 esac
12546                 case "$eagain" in
12547                 '')
12548                         echo "Forcing errno EAGAIN on read() with no data available."
12549                         eagain=EAGAIN
12550                         ;;
12551                 *)
12552                         echo "Your read() sets errno to $eagain when no data is available."
12553                         ;;
12554                 esac
12555                 status=`$cat try.err`
12556                 case "$status" in
12557                 0) echo "And it correctly returns 0 to signal EOF.";;
12558                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12559                 *) echo "However, your read() returns '$status' on EOF??";;
12560                 esac
12561                 val="$define"
12562                 if test "$status" = "$rd_nodata"; then
12563                         echo "WARNING: you can't distinguish between EOF and no data!"
12564                         val="$undef"
12565                 fi
12566         else
12567                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12568                 eagain=EAGAIN
12569         fi
12570         ;;
12571         *)      echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12572                 eagain=EAGAIN
12573                 val="$define"
12574                 ;;
12575         esac
12576         set d_eofnblk
12577         eval $setvar
12578         ;;
12579 *)
12580         echo "Using $hint value $eagain."
12581         echo "Your read() returns $rd_nodata when no data is present."
12582         case "$d_eofnblk" in
12583         "$define") echo "And you can see EOF because read() returns 0.";;
12584         "$undef") echo "But you can't see EOF status from read() returned value.";;
12585         *)
12586                 echo "(Assuming you can't see EOF status from read anyway.)"
12587                 d_eofnblk=$undef
12588                 ;;
12589         esac
12590         ;;
12591 esac
12592 $rm_try head.c mtry
12593
12594 : see if _ptr and _cnt from stdio act std
12595 echo " "
12596
12597 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12598         echo "(Looks like you have stdio.h from BSD.)"
12599         case "$stdio_ptr" in
12600         '') stdio_ptr='((fp)->_p)'
12601                 ptr_lval=$define
12602                 ;;
12603         *)      ptr_lval=$d_stdio_ptr_lval;;
12604         esac
12605         case "$stdio_cnt" in
12606         '') stdio_cnt='((fp)->_r)'
12607                 cnt_lval=$define
12608                 ;;
12609         *)      cnt_lval=$d_stdio_cnt_lval;;
12610         esac
12611         case "$stdio_base" in
12612         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12613         esac
12614         case "$stdio_bufsiz" in
12615         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12616         esac
12617 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12618         echo "(Looks like you have stdio.h from Linux.)"
12619         case "$stdio_ptr" in
12620         '') stdio_ptr='((fp)->_IO_read_ptr)'
12621                 ptr_lval=$define
12622                 ;;
12623         *)      ptr_lval=$d_stdio_ptr_lval;;
12624         esac
12625         case "$stdio_cnt" in
12626         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12627                 cnt_lval=$undef
12628                 ;;
12629         *)      cnt_lval=$d_stdio_cnt_lval;;
12630         esac
12631         case "$stdio_base" in
12632         '') stdio_base='((fp)->_IO_read_base)';;
12633         esac
12634         case "$stdio_bufsiz" in
12635         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12636         esac
12637 else
12638         case "$stdio_ptr" in
12639         '') stdio_ptr='((fp)->_ptr)'
12640                 ptr_lval=$define
12641                 ;;
12642         *)      ptr_lval=$d_stdio_ptr_lval;;
12643         esac
12644         case "$stdio_cnt" in
12645         '') stdio_cnt='((fp)->_cnt)'
12646                 cnt_lval=$define
12647                 ;;
12648         *)      cnt_lval=$d_stdio_cnt_lval;;
12649         esac
12650         case "$stdio_base" in
12651         '') stdio_base='((fp)->_base)';;
12652         esac
12653         case "$stdio_bufsiz" in
12654         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12655         esac
12656 fi
12657
12658 : test whether _ptr and _cnt really work
12659 echo "Checking how std your stdio is..." >&4
12660 $cat >try.c <<EOP
12661 #include <stdio.h>
12662 #$i_stdlib I_STDLIB
12663 #ifdef I_STDLIB
12664 #include <stdlib.h>
12665 #endif
12666 #define FILE_ptr(fp)    $stdio_ptr
12667 #define FILE_cnt(fp)    $stdio_cnt
12668 int main() {
12669         FILE *fp = fopen("try.c", "r");
12670         char c = getc(fp);
12671         if (
12672                 18 <= FILE_cnt(fp) &&
12673                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12674         )
12675                 exit(0);
12676         exit(1);
12677 }
12678 EOP
12679 val="$undef"
12680 set try
12681 if eval $compile && $to try.c; then
12682         if $run ./try; then
12683                 echo "Your stdio acts pretty std."
12684                 val="$define"
12685         else
12686                 echo "Your stdio isn't very std."
12687         fi
12688 else
12689         echo "Your stdio doesn't appear very std."
12690 fi
12691 $rm_try
12692
12693 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12694 # direct buffer manipulation no longer works.  The Configure tests
12695 # should be changed to correctly detect this, but until then,
12696 # the following check should at least let perl compile and run.
12697 # (This quick fix should be updated before 5.8.1.)
12698 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12699 # A. Dougherty, June 3, 2002.
12700 case "$d_gnulibc" in
12701 $define)
12702         case "$gnulibc_version" in
12703         2.[01]*)  ;;
12704         2.2) ;;
12705         2.2.[0-9]) ;;
12706         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12707                 val="$undef"
12708                 ;;
12709         esac
12710         ;;
12711 esac
12712 set d_stdstdio
12713 eval $setvar
12714
12715 : Can _ptr be used as an lvalue?
12716 case "$d_stdstdio$ptr_lval" in
12717 $define$define) val=$define ;;
12718 *) val=$undef ;;
12719 esac
12720 set d_stdio_ptr_lval
12721 eval $setvar
12722
12723 : Can _cnt be used as an lvalue?
12724 case "$d_stdstdio$cnt_lval" in
12725 $define$define) val=$define ;;
12726 *) val=$undef ;;
12727 esac
12728 set d_stdio_cnt_lval
12729 eval $setvar
12730
12731
12732 : test whether setting _ptr sets _cnt as a side effect
12733 d_stdio_ptr_lval_sets_cnt="$undef"
12734 d_stdio_ptr_lval_nochange_cnt="$undef"
12735 case "$d_stdio_ptr_lval$d_stdstdio" in
12736 $define$define)
12737         echo "Checking to see what happens if we set the stdio ptr..." >&4
12738 $cat >try.c <<EOP
12739 #include <stdio.h>
12740 /* Can we scream? */
12741 /* Eat dust sed :-) */
12742 /* In the buffer space, no one can hear you scream. */
12743 #$i_stdlib I_STDLIB
12744 #ifdef I_STDLIB
12745 #include <stdlib.h>
12746 #endif
12747 #define FILE_ptr(fp)    $stdio_ptr
12748 #define FILE_cnt(fp)    $stdio_cnt
12749 #include <sys/types.h>
12750 int main() {
12751         FILE *fp = fopen("try.c", "r");
12752         int c;
12753         char *ptr;
12754         size_t cnt;
12755         if (!fp) {
12756             puts("Fail even to read");
12757             exit(1);
12758         }
12759         c = getc(fp); /* Read away the first # */
12760         if (c == EOF) {
12761             puts("Fail even to read");
12762             exit(1);
12763         }
12764         if (!(
12765                 18 <= FILE_cnt(fp) &&
12766                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12767         )) {
12768                 puts("Fail even to read");
12769                 exit (1);
12770         }
12771         ptr = (char*) FILE_ptr(fp);
12772         cnt = (size_t)FILE_cnt(fp);
12773
12774         FILE_ptr(fp) += 42;
12775
12776         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12777                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12778                 exit (1);
12779         }
12780         if (FILE_cnt(fp) <= 20) {
12781                 printf ("Fail (<20 chars to test)");
12782                 exit (1);
12783         }
12784         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12785                 puts("Fail compare");
12786                 exit (1);
12787         }
12788         if (cnt == FILE_cnt(fp)) {
12789                 puts("Pass_unchanged");
12790                 exit (0);
12791         }
12792         if (FILE_cnt(fp) == (cnt - 42)) {
12793                 puts("Pass_changed");
12794                 exit (0);
12795         }
12796         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12797         return 1;
12798
12799 }
12800 EOP
12801         set try
12802         if eval $compile && $to try.c; then
12803                 case `$run ./try` in
12804                 Pass_changed)
12805                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12806                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12807                 Pass_unchanged)
12808                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12809                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12810                 Fail*)
12811                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12812                 *)
12813                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12814         esac
12815         else
12816                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12817         fi
12818         $rm_try
12819         ;;
12820 esac
12821
12822 : see if _base is also standard
12823 val="$undef"
12824 case "$d_stdstdio" in
12825 $define)
12826         $cat >try.c <<EOP
12827 #include <stdio.h>
12828 #$i_stdlib I_STDLIB
12829 #ifdef I_STDLIB
12830 #include <stdlib.h>
12831 #endif
12832 #define FILE_base(fp)   $stdio_base
12833 #define FILE_bufsiz(fp) $stdio_bufsiz
12834 int main() {
12835         FILE *fp = fopen("try.c", "r");
12836         char c = getc(fp);
12837         if (
12838                 19 <= FILE_bufsiz(fp) &&
12839                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12840         )
12841                 exit(0);
12842         exit(1);
12843 }
12844 EOP
12845         set try
12846         if eval $compile && $to try.c; then
12847                 if $run ./try; then
12848                         echo "And its _base field acts std."
12849                         val="$define"
12850                 else
12851                         echo "But its _base field isn't std."
12852                 fi
12853         else
12854                 echo "However, it seems to be lacking the _base field."
12855         fi
12856         $rm_try
12857         ;;
12858 esac
12859 set d_stdiobase
12860 eval $setvar
12861
12862 : see if fast_stdio exists
12863 val="$undef"
12864 case "$d_stdstdio:$d_stdio_ptr_lval" in
12865 "$define:$define")
12866         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12867         *$define*)
12868                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12869                 val="$define"
12870                 ;;
12871         esac
12872         ;;
12873 esac
12874 set d_faststdio
12875 eval $setvar
12876
12877
12878
12879 : see if fchdir exists
12880 set fchdir d_fchdir
12881 eval $inlibc
12882
12883 : see if fchmod exists
12884 set fchmod d_fchmod
12885 eval $inlibc
12886
12887 : see if fchown exists
12888 set fchown d_fchown
12889 eval $inlibc
12890
12891 : see if this is an fcntl system
12892 set fcntl d_fcntl
12893 eval $inlibc
12894
12895 : See if fcntl-based locking works.
12896 echo " "
12897 $cat >try.c <<EOCP
12898 #$i_stdlib I_STDLIB
12899 #ifdef I_STDLIB
12900 #include <stdlib.h>
12901 #endif
12902 #include <unistd.h>
12903 #include <fcntl.h>
12904 #include <signal.h>
12905 $signal_t blech(int x) { exit(3); }
12906 int main() {
12907 #if defined(F_SETLK) && defined(F_SETLKW)
12908      struct flock flock;
12909      int retval, fd;
12910      fd = open("try.c", O_RDONLY);
12911      flock.l_type = F_RDLCK;
12912      flock.l_whence = SEEK_SET;
12913      flock.l_start = flock.l_len = 0;
12914      signal(SIGALRM, blech);
12915      alarm(10);
12916      retval = fcntl(fd, F_SETLK, &flock);
12917      close(fd);
12918      (retval < 0 ? exit(2) : exit(0));
12919 #else
12920      exit(2);
12921 #endif
12922 }
12923 EOCP
12924 echo "Checking if fcntl-based file locking works... "
12925 case "$d_fcntl" in
12926 "$define")
12927         set try
12928         if eval $compile_ok; then
12929                 if $run ./try; then
12930                         echo "Yes, it seems to work."
12931                         val="$define"
12932                 else
12933                         echo "Nope, it didn't work."
12934                         val="$undef"
12935                         case "$?" in
12936                         3) $cat >&4 <<EOM
12937 ***
12938 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12939 *** This is (almost) impossible.
12940 *** If your NFS lock daemons are not feeling well, something like
12941 *** this may happen, please investigate.  Cannot continue, aborting.
12942 ***
12943 EOM
12944                                 exit 1
12945                                 ;;
12946                         esac
12947                 fi
12948         else
12949                 echo "I'm unable to compile the test program, so I'll assume not."
12950                 val="$undef"
12951         fi
12952         ;;
12953 *) val="$undef";
12954         echo "Nope, since you don't even have fcntl()."
12955         ;;
12956 esac
12957 set d_fcntl_can_lock
12958 eval $setvar
12959 $rm_try
12960
12961 : check for fd_set items
12962 $cat <<EOM
12963
12964 Checking to see how well your C compiler handles fd_set and friends ...
12965 EOM
12966 $cat >try.c <<EOCP
12967 #$i_stdlib I_STDLIB
12968 #ifdef I_STDLIB
12969 #include <stdlib.h>
12970 #endif
12971 #$i_systime I_SYS_TIME
12972 #$i_sysselct I_SYS_SELECT
12973 #$d_socket HAS_SOCKET
12974 #include <sys/types.h>
12975 #ifdef HAS_SOCKET
12976 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12977 #endif
12978 #ifdef I_SYS_TIME
12979 #include <sys/time.h>
12980 #endif
12981 #ifdef I_SYS_SELECT
12982 #include <sys/select.h>
12983 #endif
12984 int main() {
12985         fd_set fds;
12986
12987 #ifdef TRYBITS
12988         if(fds.fds_bits);
12989 #endif
12990
12991 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12992         exit(0);
12993 #else
12994         exit(1);
12995 #endif
12996 }
12997 EOCP
12998 set try -DTRYBITS
12999 if eval $compile; then
13000         d_fds_bits="$define"
13001         d_fd_set="$define"
13002         echo "Well, your system knows about the normal fd_set typedef..." >&4
13003         if $run ./try; then
13004                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
13005                 d_fd_macros="$define"
13006         else
13007                 $cat >&4 <<'EOM'
13008 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
13009 EOM
13010                 d_fd_macros="$undef"
13011         fi
13012 else
13013         $cat <<'EOM'
13014 Hmm, your compiler has some difficulty with fd_set.  Checking further...
13015 EOM
13016         set try
13017         if eval $compile; then
13018                 d_fds_bits="$undef"
13019                 d_fd_set="$define"
13020                 echo "Well, your system has some sort of fd_set available..." >&4
13021                 if $run ./try; then
13022                         echo "and you have the normal fd_set macros." >&4
13023                         d_fd_macros="$define"
13024                 else
13025                         $cat <<'EOM'
13026 but not the normal fd_set macros!  Gross!  More work for me...
13027 EOM
13028                         d_fd_macros="$undef"
13029                 fi
13030         else
13031         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
13032                 d_fd_set="$undef"
13033                 d_fds_bits="$undef"
13034                 d_fd_macros="$undef"
13035         fi
13036 fi
13037 $rm_try
13038
13039 : see if fgetpos exists
13040 set fgetpos d_fgetpos
13041 eval $inlibc
13042
13043 : see if finite exists
13044 set finite d_finite
13045 eval $inlibc
13046
13047 : see if finitel exists
13048 set finitel d_finitel
13049 eval $inlibc
13050
13051 : see if flock exists
13052 set flock d_flock
13053 eval $inlibc
13054
13055 : see if prototype for flock is available
13056 echo " "
13057 set d_flockproto flock $i_sysfile sys/file.h
13058 eval $hasproto
13059
13060 : see if fp_class exists
13061 set fp_class d_fp_class
13062 eval $inlibc
13063
13064 : see if pathconf exists
13065 set pathconf d_pathconf
13066 eval $inlibc
13067
13068 : see if fpathconf exists
13069 set fpathconf d_fpathconf
13070 eval $inlibc
13071
13072 : see if fpclass exists
13073 set fpclass d_fpclass
13074 eval $inlibc
13075
13076 : see if fpclassify exists
13077 set fpclassify d_fpclassify
13078 eval $inlibc
13079
13080 : see if fpclassl exists
13081 set fpclassl d_fpclassl
13082 eval $inlibc
13083
13084 : check for fpos64_t
13085 echo " "
13086 echo "Checking to see if you have fpos64_t..." >&4
13087 $cat >try.c <<EOCP
13088 #include <stdio.h>
13089 int main() { fpos64_t x = 7; }
13090 EOCP
13091 set try
13092 if eval $compile; then
13093         val="$define"
13094         echo "You have fpos64_t."
13095 else
13096         val="$undef"
13097         echo "You do not have fpos64_t."
13098         case "$fpossize" in
13099         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
13100         esac
13101 fi
13102 $rm_try
13103 set d_fpos64_t
13104 eval $setvar
13105
13106 : see if frexpl exists
13107 set frexpl d_frexpl
13108 eval $inlibc
13109
13110 : see if this is a sys/param system
13111 set sys/param.h i_sysparam
13112 eval $inhdr
13113
13114 : see if this is a sys/mount.h system
13115 set sys/mount.h i_sysmount
13116 eval $inhdr
13117
13118 : Check for fs_data_s
13119 echo " "
13120 echo "Checking to see if your system supports struct fs_data..." >&4
13121 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
13122 eval $hasstruct
13123 case "$d_fs_data_s" in
13124 "$define")      echo "Yes, it does."   ;;
13125 *)              echo "No, it doesn't." ;;
13126 esac
13127
13128 : see if fseeko exists
13129 set fseeko d_fseeko
13130 eval $inlibc
13131 case "$longsize" in
13132 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
13133 esac
13134
13135 : see if fsetpos exists
13136 set fsetpos d_fsetpos
13137 eval $inlibc
13138
13139 : see if fstatfs exists
13140 set fstatfs d_fstatfs
13141 eval $inlibc
13142
13143 : see if statvfs exists
13144 set statvfs d_statvfs
13145 eval $inlibc
13146
13147 : see if fstatvfs exists
13148 set fstatvfs d_fstatvfs
13149 eval $inlibc
13150
13151
13152 : see if fsync exists
13153 set fsync d_fsync
13154 eval $inlibc
13155
13156 : see if ftello exists
13157 set ftello d_ftello
13158 eval $inlibc
13159 case "$longsize" in
13160 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
13161 esac
13162
13163 : check for a working futimes
13164 d_futimes="$undef"
13165 echo " "
13166 echo "Checking if you have a working futimes()" >&4
13167 $cat >try.c <<EOCP
13168 #include <stdio.h>
13169 #include <sys/time.h>
13170 #include <errno.h>
13171 #include <fcntl.h>
13172
13173 int main ()
13174 {
13175     int fd, rv;
13176     fd = open ("try.c", O_RDWR);
13177     if (-1 == fd) exit (1);
13178     rv = futimes (fd, NULL);
13179     exit (rv == -1 ? errno : 0);
13180 }
13181 EOCP
13182 set try
13183 if eval $compile; then
13184     `$run ./try`
13185     rc=$?
13186     case "$rc" in
13187         0)  echo "Yes, you have" >&4
13188             d_futimes="$define"
13189             ;;
13190         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13191             ;;
13192     esac
13193 else
13194     echo "No, it does not (probably harmless)" >&4
13195 fi
13196 $rm_try
13197
13198 : see if getcwd exists
13199 set getcwd d_getcwd
13200 eval $inlibc
13201
13202 : see if getespwnam exists
13203 set getespwnam d_getespwnam
13204 eval $inlibc
13205
13206 : see if getfsstat exists
13207 set getfsstat d_getfsstat
13208 eval $inlibc
13209
13210 : see if getgrent exists
13211 set getgrent d_getgrent
13212 eval $inlibc
13213
13214 : see if getgrent_r exists
13215 set getgrent_r d_getgrent_r
13216 eval $inlibc
13217 case "$d_getgrent_r" in
13218 "$define")
13219         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13220         case "$d_getgrent_r_proto:$usethreads" in
13221         ":define")      d_getgrent_r_proto=define
13222                 set d_getgrent_r_proto getgrent_r $hdrs
13223                 eval $hasproto ;;
13224         *)      ;;
13225         esac
13226         case "$d_getgrent_r_proto" in
13227         define)
13228         case "$getgrent_r_proto" in
13229         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13230         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13231         esac
13232         case "$getgrent_r_proto" in
13233         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13234         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13235         esac
13236         case "$getgrent_r_proto" in
13237         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13238         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13239         esac
13240         case "$getgrent_r_proto" in
13241         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13242         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13243         esac
13244         case "$getgrent_r_proto" in
13245         ''|0) try='int getgrent_r(struct group*, char*, int);'
13246         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13247         esac
13248         case "$getgrent_r_proto" in
13249         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13250         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13251         esac
13252         case "$getgrent_r_proto" in
13253         ''|0)   d_getgrent_r=undef
13254                 getgrent_r_proto=0
13255                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13256         * )     case "$getgrent_r_proto" in
13257                 REENTRANT_PROTO*) ;;
13258                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13259                 esac
13260                 echo "Prototype: $try" ;;
13261         esac
13262         ;;
13263         *)      case "$usethreads" in
13264                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13265                 esac
13266                 d_getgrent_r=undef
13267                 getgrent_r_proto=0
13268                 ;;
13269         esac
13270         ;;
13271 *)      getgrent_r_proto=0
13272         ;;
13273 esac
13274
13275 : see if getgrgid_r exists
13276 set getgrgid_r d_getgrgid_r
13277 eval $inlibc
13278 case "$d_getgrgid_r" in
13279 "$define")
13280         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13281         case "$d_getgrgid_r_proto:$usethreads" in
13282         ":define")      d_getgrgid_r_proto=define
13283                 set d_getgrgid_r_proto getgrgid_r $hdrs
13284                 eval $hasproto ;;
13285         *)      ;;
13286         esac
13287         case "$d_getgrgid_r_proto" in
13288         define)
13289         case "$getgrgid_r_proto" in
13290         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13291         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13292         esac
13293         case "$getgrgid_r_proto" in
13294         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13295         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13296         esac
13297         case "$getgrgid_r_proto" in
13298         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13299         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13300         esac
13301         case "$getgrgid_r_proto" in
13302         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13303         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13304         esac
13305         case "$getgrgid_r_proto" in
13306         ''|0)   d_getgrgid_r=undef
13307                 getgrgid_r_proto=0
13308                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13309         * )     case "$getgrgid_r_proto" in
13310                 REENTRANT_PROTO*) ;;
13311                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13312                 esac
13313                 echo "Prototype: $try" ;;
13314         esac
13315         ;;
13316         *)      case "$usethreads" in
13317                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13318                 esac
13319                 d_getgrgid_r=undef
13320                 getgrgid_r_proto=0
13321                 ;;
13322         esac
13323         ;;
13324 *)      getgrgid_r_proto=0
13325         ;;
13326 esac
13327
13328 : see if getgrnam_r exists
13329 set getgrnam_r d_getgrnam_r
13330 eval $inlibc
13331 case "$d_getgrnam_r" in
13332 "$define")
13333         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13334         case "$d_getgrnam_r_proto:$usethreads" in
13335         ":define")      d_getgrnam_r_proto=define
13336                 set d_getgrnam_r_proto getgrnam_r $hdrs
13337                 eval $hasproto ;;
13338         *)      ;;
13339         esac
13340         case "$d_getgrnam_r_proto" in
13341         define)
13342         case "$getgrnam_r_proto" in
13343         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13344         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13345         esac
13346         case "$getgrnam_r_proto" in
13347         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13348         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13349         esac
13350         case "$getgrnam_r_proto" in
13351         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13352         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13353         esac
13354         case "$getgrnam_r_proto" in
13355         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13356         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13357         esac
13358         case "$getgrnam_r_proto" in
13359         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13360         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13361         esac
13362         case "$getgrnam_r_proto" in
13363         ''|0)   d_getgrnam_r=undef
13364                 getgrnam_r_proto=0
13365                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13366         * )     case "$getgrnam_r_proto" in
13367                 REENTRANT_PROTO*) ;;
13368                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13369                 esac
13370                 echo "Prototype: $try" ;;
13371         esac
13372         ;;
13373         *)      case "$usethreads" in
13374                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13375                 esac
13376                 d_getgrnam_r=undef
13377                 getgrnam_r_proto=0
13378                 ;;
13379         esac
13380         ;;
13381 *)      getgrnam_r_proto=0
13382         ;;
13383 esac
13384
13385 : see if gethostbyaddr exists
13386 set gethostbyaddr d_gethbyaddr
13387 eval $inlibc
13388
13389 : see if gethostbyname exists
13390 set gethostbyname d_gethbyname
13391 eval $inlibc
13392
13393 : see if gethostent exists
13394 set gethostent d_gethent
13395 eval $inlibc
13396
13397 : see how we will look up host name
13398 echo " "
13399 call=''
13400 if set gethostname val -f d_gethname; eval $csym; $val; then
13401         echo 'gethostname() found.' >&4
13402         d_gethname="$define"
13403         call=gethostname
13404 fi
13405 if set uname val -f d_uname; eval $csym; $val; then
13406         if ./xenix; then
13407                 $cat <<'EOM'
13408 uname() was found, but you're running xenix, and older versions of xenix
13409 have a broken uname(). If you don't really know whether your xenix is old
13410 enough to have a broken system call, use the default answer.
13411
13412 EOM
13413                 dflt=y
13414                 case "$d_uname" in
13415                 "$define") dflt=n;;
13416                 esac
13417                 rp='Is your uname() broken?'
13418                 . ./myread
13419                 case "$ans" in
13420                 n*) d_uname="$define"; call=uname;;
13421                 esac
13422         else
13423                 echo 'uname() found.' >&4
13424                 d_uname="$define"
13425                 case "$call" in
13426                 '') call=uname ;;
13427                 esac
13428         fi
13429 fi
13430 case "$d_gethname" in
13431 '') d_gethname="$undef";;
13432 esac
13433 case "$d_uname" in
13434 '') d_uname="$undef";;
13435 esac
13436 case "$d_uname$d_gethname" in
13437 *define*)
13438         dflt=n
13439         cat <<EOM
13440
13441 Every now and then someone has a $call() that lies about the hostname
13442 but can't be fixed for political or economic reasons.  If you wish, I can
13443 pretend $call() isn't there and maybe compute hostname at run-time
13444 thanks to the '$phostname' command.
13445
13446 EOM
13447         rp="Shall I ignore $call() from now on?"
13448         . ./myread
13449         case "$ans" in
13450         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13451         esac;;
13452 esac
13453 case "$phostname" in
13454 '') aphostname='';;
13455 *) case "$aphostname" in
13456         /*) ;;
13457         *) set X $phostname
13458                 shift
13459                 file=$1
13460                 shift
13461                 file=`./loc $file $file $pth`
13462                 aphostname=`echo $file $*`
13463                 ;;
13464         esac
13465         ;;
13466 esac
13467 case "$d_uname$d_gethname" in
13468 *define*) ;;
13469 *)
13470         case "$phostname" in
13471         '')
13472                 echo "There will be no way for $package to get your hostname." >&4;;
13473         *)
13474         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13475                 ;;
13476         esac;;
13477 esac
13478 case "$d_phostname" in
13479 '') d_phostname="$undef";;
13480 esac
13481
13482 : see if gethostbyaddr_r exists
13483 set gethostbyaddr_r d_gethostbyaddr_r
13484 eval $inlibc
13485 case "$d_gethostbyaddr_r" in
13486 "$define")
13487         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13488         case "$d_gethostbyaddr_r_proto:$usethreads" in
13489         ":define")      d_gethostbyaddr_r_proto=define
13490                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13491                 eval $hasproto ;;
13492         *)      ;;
13493         esac
13494         case "$d_gethostbyaddr_r_proto" in
13495         define)
13496         case "$gethostbyaddr_r_proto" in
13497         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13498         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13499         esac
13500         case "$gethostbyaddr_r_proto" in
13501         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13502         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13503         esac
13504         case "$gethostbyaddr_r_proto" in
13505         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13506         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13507         esac
13508         case "$gethostbyaddr_r_proto" in
13509         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13510         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13511         esac
13512         case "$gethostbyaddr_r_proto" in
13513         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13514         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13515         esac
13516         case "$gethostbyaddr_r_proto" in
13517         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13518         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13519         esac
13520         case "$gethostbyaddr_r_proto" in
13521         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13522         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13523         esac
13524         case "$gethostbyaddr_r_proto" in
13525         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13526         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13527         esac
13528         case "$gethostbyaddr_r_proto" in
13529         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13530         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13531         esac
13532         case "$gethostbyaddr_r_proto" in
13533         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13534         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13535         esac
13536         case "$gethostbyaddr_r_proto" in
13537         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13538         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13539         esac
13540         case "$gethostbyaddr_r_proto" in
13541         ''|0)   d_gethostbyaddr_r=undef
13542                 gethostbyaddr_r_proto=0
13543                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13544         * )     case "$gethostbyaddr_r_proto" in
13545                 REENTRANT_PROTO*) ;;
13546                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13547                 esac
13548                 echo "Prototype: $try" ;;
13549         esac
13550         ;;
13551         *)      case "$usethreads" in
13552                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13553                 esac
13554                 d_gethostbyaddr_r=undef
13555                 gethostbyaddr_r_proto=0
13556                 ;;
13557         esac
13558         ;;
13559 *)      gethostbyaddr_r_proto=0
13560         ;;
13561 esac
13562
13563 : see if gethostbyname_r exists
13564 set gethostbyname_r d_gethostbyname_r
13565 eval $inlibc
13566 case "$d_gethostbyname_r" in
13567 "$define")
13568         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13569         case "$d_gethostbyname_r_proto:$usethreads" in
13570         ":define")      d_gethostbyname_r_proto=define
13571                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13572                 eval $hasproto ;;
13573         *)      ;;
13574         esac
13575         case "$d_gethostbyname_r_proto" in
13576         define)
13577         case "$gethostbyname_r_proto" in
13578         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13579         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13580         esac
13581         case "$gethostbyname_r_proto" in
13582         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13583         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13584         esac
13585         case "$gethostbyname_r_proto" in
13586         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13587         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13588         esac
13589         case "$gethostbyname_r_proto" in
13590         ''|0)   d_gethostbyname_r=undef
13591                 gethostbyname_r_proto=0
13592                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13593         * )     case "$gethostbyname_r_proto" in
13594                 REENTRANT_PROTO*) ;;
13595                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13596                 esac
13597                 echo "Prototype: $try" ;;
13598         esac
13599         ;;
13600         *)      case "$usethreads" in
13601                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13602                 esac
13603                 d_gethostbyname_r=undef
13604                 gethostbyname_r_proto=0
13605                 ;;
13606         esac
13607         ;;
13608 *)      gethostbyname_r_proto=0
13609         ;;
13610 esac
13611
13612 : see if gethostent_r exists
13613 set gethostent_r d_gethostent_r
13614 eval $inlibc
13615 case "$d_gethostent_r" in
13616 "$define")
13617         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13618         case "$d_gethostent_r_proto:$usethreads" in
13619         ":define")      d_gethostent_r_proto=define
13620                 set d_gethostent_r_proto gethostent_r $hdrs
13621                 eval $hasproto ;;
13622         *)      ;;
13623         esac
13624         case "$d_gethostent_r_proto" in
13625         define)
13626         case "$gethostent_r_proto" in
13627         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13628         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13629         esac
13630         case "$gethostent_r_proto" in
13631         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13632         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13633         esac
13634         case "$gethostent_r_proto" in
13635         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13636         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13637         esac
13638         case "$gethostent_r_proto" in
13639         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13640         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13641         esac
13642         case "$gethostent_r_proto" in
13643         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13644         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13645         esac
13646         case "$gethostent_r_proto" in
13647         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13648         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13649         esac
13650         case "$gethostent_r_proto" in
13651         ''|0)   d_gethostent_r=undef
13652                 gethostent_r_proto=0
13653                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13654         * )     case "$gethostent_r_proto" in
13655                 REENTRANT_PROTO*) ;;
13656                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13657                 esac
13658                 echo "Prototype: $try" ;;
13659         esac
13660         ;;
13661         *)      case "$usethreads" in
13662                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13663                 esac
13664                 d_gethostent_r=undef
13665                 gethostent_r_proto=0
13666                 ;;
13667         esac
13668         ;;
13669 *)      gethostent_r_proto=0
13670         ;;
13671 esac
13672
13673 : see if prototypes for various gethostxxx netdb.h functions are available
13674 echo " "
13675 set d_gethostprotos gethostent $i_netdb netdb.h
13676 eval $hasproto
13677
13678 : see if getitimer exists
13679 set getitimer d_getitimer
13680 eval $inlibc
13681
13682 : see if getlogin exists
13683 set getlogin d_getlogin
13684 eval $inlibc
13685
13686 : see if getlogin_r exists
13687 set getlogin_r d_getlogin_r
13688 eval $inlibc
13689 case "$d_getlogin_r" in
13690 "$define")
13691         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13692         case "$d_getlogin_r_proto:$usethreads" in
13693         ":define")      d_getlogin_r_proto=define
13694                 set d_getlogin_r_proto getlogin_r $hdrs
13695                 eval $hasproto ;;
13696         *)      ;;
13697         esac
13698         case "$d_getlogin_r_proto" in
13699         define)
13700         case "$getlogin_r_proto" in
13701         ''|0) try='int getlogin_r(char*, size_t);'
13702         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13703         esac
13704         case "$getlogin_r_proto" in
13705         ''|0) try='int getlogin_r(char*, int);'
13706         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13707         esac
13708         case "$getlogin_r_proto" in
13709         ''|0) try='char* getlogin_r(char*, size_t);'
13710         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13711         esac
13712         case "$getlogin_r_proto" in
13713         ''|0) try='char* getlogin_r(char*, int);'
13714         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13715         esac
13716         case "$getlogin_r_proto" in
13717         ''|0)   d_getlogin_r=undef
13718                 getlogin_r_proto=0
13719                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13720         * )     case "$getlogin_r_proto" in
13721                 REENTRANT_PROTO*) ;;
13722                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13723                 esac
13724                 echo "Prototype: $try" ;;
13725         esac
13726         ;;
13727         *)      case "$usethreads" in
13728                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13729                 esac
13730                 d_getlogin_r=undef
13731                 getlogin_r_proto=0
13732                 ;;
13733         esac
13734         ;;
13735 *)      getlogin_r_proto=0
13736         ;;
13737 esac
13738
13739 : see if getmnt exists
13740 set getmnt d_getmnt
13741 eval $inlibc
13742
13743 : see if getmntent exists
13744 set getmntent d_getmntent
13745 eval $inlibc
13746
13747 : see if getnetbyaddr exists
13748 set getnetbyaddr d_getnbyaddr
13749 eval $inlibc
13750
13751 : see if getnetbyname exists
13752 set getnetbyname d_getnbyname
13753 eval $inlibc
13754
13755 : see if getnetent exists
13756 set getnetent d_getnent
13757 eval $inlibc
13758
13759 : see if getnetbyaddr_r exists
13760 set getnetbyaddr_r d_getnetbyaddr_r
13761 eval $inlibc
13762 case "$d_getnetbyaddr_r" in
13763 "$define")
13764         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13765         case "$d_getnetbyaddr_r_proto:$usethreads" in
13766         ":define")      d_getnetbyaddr_r_proto=define
13767                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13768                 eval $hasproto ;;
13769         *)      ;;
13770         esac
13771         case "$d_getnetbyaddr_r_proto" in
13772         define)
13773         case "$getnetbyaddr_r_proto" in
13774         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13775         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13776         esac
13777         case "$getnetbyaddr_r_proto" in
13778         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13779         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13780         esac
13781         case "$getnetbyaddr_r_proto" in
13782         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13783         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13784         esac
13785         case "$getnetbyaddr_r_proto" in
13786         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13787         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13788         esac
13789         case "$getnetbyaddr_r_proto" in
13790         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13791         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13792         esac
13793         case "$getnetbyaddr_r_proto" in
13794         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13795         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13796         esac
13797         case "$getnetbyaddr_r_proto" in
13798         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13799         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13800         esac
13801         case "$getnetbyaddr_r_proto" in
13802         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13803         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13804         esac
13805         case "$getnetbyaddr_r_proto" in
13806         ''|0)   d_getnetbyaddr_r=undef
13807                 getnetbyaddr_r_proto=0
13808                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13809         * )     case "$getnetbyaddr_r_proto" in
13810                 REENTRANT_PROTO*) ;;
13811                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13812                 esac
13813                 echo "Prototype: $try" ;;
13814         esac
13815         ;;
13816         *)      case "$usethreads" in
13817                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13818                 esac
13819                 d_getnetbyaddr_r=undef
13820                 getnetbyaddr_r_proto=0
13821                 ;;
13822         esac
13823         ;;
13824 *)      getnetbyaddr_r_proto=0
13825         ;;
13826 esac
13827
13828 : see if getnetbyname_r exists
13829 set getnetbyname_r d_getnetbyname_r
13830 eval $inlibc
13831 case "$d_getnetbyname_r" in
13832 "$define")
13833         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13834         case "$d_getnetbyname_r_proto:$usethreads" in
13835         ":define")      d_getnetbyname_r_proto=define
13836                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13837                 eval $hasproto ;;
13838         *)      ;;
13839         esac
13840         case "$d_getnetbyname_r_proto" in
13841         define)
13842         case "$getnetbyname_r_proto" in
13843         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13844         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13845         esac
13846         case "$getnetbyname_r_proto" in
13847         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13848         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13849         esac
13850         case "$getnetbyname_r_proto" in
13851         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13852         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13853         esac
13854         case "$getnetbyname_r_proto" in
13855         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13856         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13857         esac
13858         case "$getnetbyname_r_proto" in
13859         ''|0)   d_getnetbyname_r=undef
13860                 getnetbyname_r_proto=0
13861                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13862         * )     case "$getnetbyname_r_proto" in
13863                 REENTRANT_PROTO*) ;;
13864                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13865                 esac
13866                 echo "Prototype: $try" ;;
13867         esac
13868         ;;
13869         *)      case "$usethreads" in
13870                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13871                 esac
13872                 d_getnetbyname_r=undef
13873                 getnetbyname_r_proto=0
13874                 ;;
13875         esac
13876         ;;
13877 *)      getnetbyname_r_proto=0
13878         ;;
13879 esac
13880
13881 : see if getnetent_r exists
13882 set getnetent_r d_getnetent_r
13883 eval $inlibc
13884 case "$d_getnetent_r" in
13885 "$define")
13886         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13887         case "$d_getnetent_r_proto:$usethreads" in
13888         ":define")      d_getnetent_r_proto=define
13889                 set d_getnetent_r_proto getnetent_r $hdrs
13890                 eval $hasproto ;;
13891         *)      ;;
13892         esac
13893         case "$d_getnetent_r_proto" in
13894         define)
13895         case "$getnetent_r_proto" in
13896         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13897         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13898         esac
13899         case "$getnetent_r_proto" in
13900         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13901         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13902         esac
13903         case "$getnetent_r_proto" in
13904         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13905         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13906         esac
13907         case "$getnetent_r_proto" in
13908         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13909         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13910         esac
13911         case "$getnetent_r_proto" in
13912         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13913         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13914         esac
13915         case "$getnetent_r_proto" in
13916         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13917         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13918         esac
13919         case "$getnetent_r_proto" in
13920         ''|0)   d_getnetent_r=undef
13921                 getnetent_r_proto=0
13922                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13923         * )     case "$getnetent_r_proto" in
13924                 REENTRANT_PROTO*) ;;
13925                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13926                 esac
13927                 echo "Prototype: $try" ;;
13928         esac
13929         ;;
13930         *)      case "$usethreads" in
13931                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13932                 esac
13933                 d_getnetent_r=undef
13934                 getnetent_r_proto=0
13935                 ;;
13936         esac
13937         ;;
13938 *)      getnetent_r_proto=0
13939         ;;
13940 esac
13941
13942 : see if prototypes for various getnetxxx netdb.h functions are available
13943 echo " "
13944 set d_getnetprotos getnetent $i_netdb netdb.h
13945 eval $hasproto
13946
13947 : see if getpagesize exists
13948 set getpagesize d_getpagsz
13949 eval $inlibc
13950
13951 : Optional checks for getprotobyname and getprotobynumber
13952
13953 : see if getprotobyname exists
13954 set getprotobyname d_getpbyname
13955 eval $inlibc
13956
13957 : see if getprotobynumber exists
13958 set getprotobynumber d_getpbynumber
13959 eval $inlibc
13960
13961 : see if getprotoent exists
13962 set getprotoent d_getpent
13963 eval $inlibc
13964
13965 : see if getpgid exists
13966 set getpgid d_getpgid
13967 eval $inlibc
13968
13969 : see if getpgrp2 exists
13970 set getpgrp2 d_getpgrp2
13971 eval $inlibc
13972
13973 : see if getppid exists
13974 set getppid d_getppid
13975 eval $inlibc
13976
13977 : see if getpriority exists
13978 set getpriority d_getprior
13979 eval $inlibc
13980
13981 : see if getprotobyname_r exists
13982 set getprotobyname_r d_getprotobyname_r
13983 eval $inlibc
13984 case "$d_getprotobyname_r" in
13985 "$define")
13986         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13987         case "$d_getprotobyname_r_proto:$usethreads" in
13988         ":define")      d_getprotobyname_r_proto=define
13989                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13990                 eval $hasproto ;;
13991         *)      ;;
13992         esac
13993         case "$d_getprotobyname_r_proto" in
13994         define)
13995         case "$getprotobyname_r_proto" in
13996         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13997         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13998         esac
13999         case "$getprotobyname_r_proto" in
14000         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
14001         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
14002         esac
14003         case "$getprotobyname_r_proto" in
14004         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
14005         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
14006         esac
14007         case "$getprotobyname_r_proto" in
14008         ''|0)   d_getprotobyname_r=undef
14009                 getprotobyname_r_proto=0
14010                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
14011         * )     case "$getprotobyname_r_proto" in
14012                 REENTRANT_PROTO*) ;;
14013                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
14014                 esac
14015                 echo "Prototype: $try" ;;
14016         esac
14017         ;;
14018         *)      case "$usethreads" in
14019                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
14020                 esac
14021                 d_getprotobyname_r=undef
14022                 getprotobyname_r_proto=0
14023                 ;;
14024         esac
14025         ;;
14026 *)      getprotobyname_r_proto=0
14027         ;;
14028 esac
14029
14030 : see if getprotobynumber_r exists
14031 set getprotobynumber_r d_getprotobynumber_r
14032 eval $inlibc
14033 case "$d_getprotobynumber_r" in
14034 "$define")
14035         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14036         case "$d_getprotobynumber_r_proto:$usethreads" in
14037         ":define")      d_getprotobynumber_r_proto=define
14038                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
14039                 eval $hasproto ;;
14040         *)      ;;
14041         esac
14042         case "$d_getprotobynumber_r_proto" in
14043         define)
14044         case "$getprotobynumber_r_proto" in
14045         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
14046         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
14047         esac
14048         case "$getprotobynumber_r_proto" in
14049         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
14050         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
14051         esac
14052         case "$getprotobynumber_r_proto" in
14053         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
14054         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
14055         esac
14056         case "$getprotobynumber_r_proto" in
14057         ''|0)   d_getprotobynumber_r=undef
14058                 getprotobynumber_r_proto=0
14059                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
14060         * )     case "$getprotobynumber_r_proto" in
14061                 REENTRANT_PROTO*) ;;
14062                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
14063                 esac
14064                 echo "Prototype: $try" ;;
14065         esac
14066         ;;
14067         *)      case "$usethreads" in
14068                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
14069                 esac
14070                 d_getprotobynumber_r=undef
14071                 getprotobynumber_r_proto=0
14072                 ;;
14073         esac
14074         ;;
14075 *)      getprotobynumber_r_proto=0
14076         ;;
14077 esac
14078
14079 : see if getprotoent_r exists
14080 set getprotoent_r d_getprotoent_r
14081 eval $inlibc
14082 case "$d_getprotoent_r" in
14083 "$define")
14084         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14085         case "$d_getprotoent_r_proto:$usethreads" in
14086         ":define")      d_getprotoent_r_proto=define
14087                 set d_getprotoent_r_proto getprotoent_r $hdrs
14088                 eval $hasproto ;;
14089         *)      ;;
14090         esac
14091         case "$d_getprotoent_r_proto" in
14092         define)
14093         case "$getprotoent_r_proto" in
14094         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
14095         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
14096         esac
14097         case "$getprotoent_r_proto" in
14098         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
14099         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
14100         esac
14101         case "$getprotoent_r_proto" in
14102         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
14103         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
14104         esac
14105         case "$getprotoent_r_proto" in
14106         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
14107         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
14108         esac
14109         case "$getprotoent_r_proto" in
14110         ''|0)   d_getprotoent_r=undef
14111                 getprotoent_r_proto=0
14112                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
14113         * )     case "$getprotoent_r_proto" in
14114                 REENTRANT_PROTO*) ;;
14115                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
14116                 esac
14117                 echo "Prototype: $try" ;;
14118         esac
14119         ;;
14120         *)      case "$usethreads" in
14121                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
14122                 esac
14123                 d_getprotoent_r=undef
14124                 getprotoent_r_proto=0
14125                 ;;
14126         esac
14127         ;;
14128 *)      getprotoent_r_proto=0
14129         ;;
14130 esac
14131
14132 : see if prototypes for various getprotoxxx netdb.h functions are available
14133 echo " "
14134 set d_getprotoprotos getprotoent $i_netdb netdb.h
14135 eval $hasproto
14136
14137 : see if getprpwnam exists
14138 set getprpwnam d_getprpwnam
14139 eval $inlibc
14140
14141 : see if getpwent exists
14142 set getpwent d_getpwent
14143 eval $inlibc
14144
14145 : see if getpwent_r exists
14146 set getpwent_r d_getpwent_r
14147 eval $inlibc
14148 case "$d_getpwent_r" in
14149 "$define")
14150         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14151         case "$d_getpwent_r_proto:$usethreads" in
14152         ":define")      d_getpwent_r_proto=define
14153                 set d_getpwent_r_proto getpwent_r $hdrs
14154                 eval $hasproto ;;
14155         *)      ;;
14156         esac
14157         case "$d_getpwent_r_proto" in
14158         define)
14159         case "$getpwent_r_proto" in
14160         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
14161         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
14162         esac
14163         case "$getpwent_r_proto" in
14164         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
14165         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14166         esac
14167         case "$getpwent_r_proto" in
14168         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14169         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14170         esac
14171         case "$getpwent_r_proto" in
14172         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14173         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14174         esac
14175         case "$getpwent_r_proto" in
14176         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14177         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14178         esac
14179         case "$getpwent_r_proto" in
14180         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14181         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14182         esac
14183         case "$getpwent_r_proto" in
14184         ''|0)   d_getpwent_r=undef
14185                 getpwent_r_proto=0
14186                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14187         * )     case "$getpwent_r_proto" in
14188                 REENTRANT_PROTO*) ;;
14189                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14190                 esac
14191                 echo "Prototype: $try" ;;
14192         esac
14193         ;;
14194         *)      case "$usethreads" in
14195                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14196                 esac
14197                 d_getpwent_r=undef
14198                 getpwent_r_proto=0
14199                 ;;
14200         esac
14201         ;;
14202 *)      getpwent_r_proto=0
14203         ;;
14204 esac
14205
14206 : see if getpwnam_r exists
14207 set getpwnam_r d_getpwnam_r
14208 eval $inlibc
14209 case "$d_getpwnam_r" in
14210 "$define")
14211         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14212         case "$d_getpwnam_r_proto:$usethreads" in
14213         ":define")      d_getpwnam_r_proto=define
14214                 set d_getpwnam_r_proto getpwnam_r $hdrs
14215                 eval $hasproto ;;
14216         *)      ;;
14217         esac
14218         case "$d_getpwnam_r_proto" in
14219         define)
14220         case "$getpwnam_r_proto" in
14221         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14222         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14223         esac
14224         case "$getpwnam_r_proto" in
14225         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14226         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14227         esac
14228         case "$getpwnam_r_proto" in
14229         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14230         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14231         esac
14232         case "$getpwnam_r_proto" in
14233         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14234         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14235         esac
14236         case "$getpwnam_r_proto" in
14237         ''|0)   d_getpwnam_r=undef
14238                 getpwnam_r_proto=0
14239                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14240         * )     case "$getpwnam_r_proto" in
14241                 REENTRANT_PROTO*) ;;
14242                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14243                 esac
14244                 echo "Prototype: $try" ;;
14245         esac
14246         ;;
14247         *)      case "$usethreads" in
14248                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14249                 esac
14250                 d_getpwnam_r=undef
14251                 getpwnam_r_proto=0
14252                 ;;
14253         esac
14254         ;;
14255 *)      getpwnam_r_proto=0
14256         ;;
14257 esac
14258
14259 : see if getpwuid_r exists
14260 set getpwuid_r d_getpwuid_r
14261 eval $inlibc
14262 case "$d_getpwuid_r" in
14263 "$define")
14264         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14265         case "$d_getpwuid_r_proto:$usethreads" in
14266         ":define")      d_getpwuid_r_proto=define
14267                 set d_getpwuid_r_proto getpwuid_r $hdrs
14268                 eval $hasproto ;;
14269         *)      ;;
14270         esac
14271         case "$d_getpwuid_r_proto" in
14272         define)
14273         case "$getpwuid_r_proto" in
14274         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14275         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14276         esac
14277         case "$getpwuid_r_proto" in
14278         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14279         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14280         esac
14281         case "$getpwuid_r_proto" in
14282         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14283         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14284         esac
14285         case "$getpwuid_r_proto" in
14286         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14287         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14288         esac
14289         case "$getpwuid_r_proto" in
14290         ''|0)   d_getpwuid_r=undef
14291                 getpwuid_r_proto=0
14292                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14293         * )     case "$getpwuid_r_proto" in
14294                 REENTRANT_PROTO*) ;;
14295                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14296                 esac
14297                 echo "Prototype: $try" ;;
14298         esac
14299         ;;
14300         *)      case "$usethreads" in
14301                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14302                 esac
14303                 d_getpwuid_r=undef
14304                 getpwuid_r_proto=0
14305                 ;;
14306         esac
14307         ;;
14308 *)      getpwuid_r_proto=0
14309         ;;
14310 esac
14311
14312 : Optional checks for getsbyname and getsbyport
14313
14314 : see if getservbyname exists
14315 set getservbyname d_getsbyname
14316 eval $inlibc
14317
14318 : see if getservbyport exists
14319 set getservbyport d_getsbyport
14320 eval $inlibc
14321
14322 : see if getservent exists
14323 set getservent d_getsent
14324 eval $inlibc
14325
14326 : see if getservbyname_r exists
14327 set getservbyname_r d_getservbyname_r
14328 eval $inlibc
14329 case "$d_getservbyname_r" in
14330 "$define")
14331         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14332         case "$d_getservbyname_r_proto:$usethreads" in
14333         ":define")      d_getservbyname_r_proto=define
14334                 set d_getservbyname_r_proto getservbyname_r $hdrs
14335                 eval $hasproto ;;
14336         *)      ;;
14337         esac
14338         case "$d_getservbyname_r_proto" in
14339         define)
14340         case "$getservbyname_r_proto" in
14341         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14342         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14343         esac
14344         case "$getservbyname_r_proto" in
14345         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14346         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14347         esac
14348         case "$getservbyname_r_proto" in
14349         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14350         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14351         esac
14352         case "$getservbyname_r_proto" in
14353         ''|0)   d_getservbyname_r=undef
14354                 getservbyname_r_proto=0
14355                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14356         * )     case "$getservbyname_r_proto" in
14357                 REENTRANT_PROTO*) ;;
14358                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14359                 esac
14360                 echo "Prototype: $try" ;;
14361         esac
14362         ;;
14363         *)      case "$usethreads" in
14364                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14365                 esac
14366                 d_getservbyname_r=undef
14367                 getservbyname_r_proto=0
14368                 ;;
14369         esac
14370         ;;
14371 *)      getservbyname_r_proto=0
14372         ;;
14373 esac
14374
14375 : see if getservbyport_r exists
14376 set getservbyport_r d_getservbyport_r
14377 eval $inlibc
14378 case "$d_getservbyport_r" in
14379 "$define")
14380         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14381         case "$d_getservbyport_r_proto:$usethreads" in
14382         ":define")      d_getservbyport_r_proto=define
14383                 set d_getservbyport_r_proto getservbyport_r $hdrs
14384                 eval $hasproto ;;
14385         *)      ;;
14386         esac
14387         case "$d_getservbyport_r_proto" in
14388         define)
14389         case "$getservbyport_r_proto" in
14390         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14391         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14392         esac
14393         case "$getservbyport_r_proto" in
14394         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14395         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14396         esac
14397         case "$getservbyport_r_proto" in
14398         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14399         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14400         esac
14401         case "$getservbyport_r_proto" in
14402         ''|0)   d_getservbyport_r=undef
14403                 getservbyport_r_proto=0
14404                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14405         * )     case "$getservbyport_r_proto" in
14406                 REENTRANT_PROTO*) ;;
14407                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14408                 esac
14409                 echo "Prototype: $try" ;;
14410         esac
14411         ;;
14412         *)      case "$usethreads" in
14413                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14414                 esac
14415                 d_getservbyport_r=undef
14416                 getservbyport_r_proto=0
14417                 ;;
14418         esac
14419         ;;
14420 *)      getservbyport_r_proto=0
14421         ;;
14422 esac
14423
14424 : see if getservent_r exists
14425 set getservent_r d_getservent_r
14426 eval $inlibc
14427 case "$d_getservent_r" in
14428 "$define")
14429         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14430         case "$d_getservent_r_proto:$usethreads" in
14431         ":define")      d_getservent_r_proto=define
14432                 set d_getservent_r_proto getservent_r $hdrs
14433                 eval $hasproto ;;
14434         *)      ;;
14435         esac
14436         case "$d_getservent_r_proto" in
14437         define)
14438         case "$getservent_r_proto" in
14439         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14440         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14441         esac
14442         case "$getservent_r_proto" in
14443         ''|0) try='int getservent_r(struct servent*, char*, int);'
14444         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14445         esac
14446         case "$getservent_r_proto" in
14447         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14448         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14449         esac
14450         case "$getservent_r_proto" in
14451         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14452         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14453         esac
14454         case "$getservent_r_proto" in
14455         ''|0)   d_getservent_r=undef
14456                 getservent_r_proto=0
14457                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14458         * )     case "$getservent_r_proto" in
14459                 REENTRANT_PROTO*) ;;
14460                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14461                 esac
14462                 echo "Prototype: $try" ;;
14463         esac
14464         ;;
14465         *)      case "$usethreads" in
14466                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14467                 esac
14468                 d_getservent_r=undef
14469                 getservent_r_proto=0
14470                 ;;
14471         esac
14472         ;;
14473 *)      getservent_r_proto=0
14474         ;;
14475 esac
14476
14477 : see if prototypes for various getservxxx netdb.h functions are available
14478 echo " "
14479 set d_getservprotos getservent $i_netdb netdb.h
14480 eval $hasproto
14481
14482 : see if getspnam exists
14483 set getspnam d_getspnam
14484 eval $inlibc
14485
14486 : see if this is a shadow.h system
14487 set shadow.h i_shadow
14488 eval $inhdr
14489
14490 : see if getspnam_r exists
14491 set getspnam_r d_getspnam_r
14492 eval $inlibc
14493 case "$d_getspnam_r" in
14494 "$define")
14495         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14496         case "$d_getspnam_r_proto:$usethreads" in
14497         ":define")      d_getspnam_r_proto=define
14498                 set d_getspnam_r_proto getspnam_r $hdrs
14499                 eval $hasproto ;;
14500         *)      ;;
14501         esac
14502         case "$d_getspnam_r_proto" in
14503         define)
14504         case "$getspnam_r_proto" in
14505         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14506         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14507         esac
14508         case "$getspnam_r_proto" in
14509         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14510         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14511         esac
14512         case "$getspnam_r_proto" in
14513         ''|0)   d_getspnam_r=undef
14514                 getspnam_r_proto=0
14515                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14516         * )     case "$getspnam_r_proto" in
14517                 REENTRANT_PROTO*) ;;
14518                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14519                 esac
14520                 echo "Prototype: $try" ;;
14521         esac
14522         ;;
14523         *)      case "$usethreads" in
14524                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14525                 esac
14526                 d_getspnam_r=undef
14527                 getspnam_r_proto=0
14528                 ;;
14529         esac
14530         ;;
14531 *)      getspnam_r_proto=0
14532         ;;
14533 esac
14534
14535 : see if gettimeofday or ftime exists
14536 set gettimeofday d_gettimeod
14537 eval $inlibc
14538 case "$d_gettimeod" in
14539 "$undef")
14540         set ftime d_ftime 
14541         eval $inlibc
14542         ;;
14543 *)
14544         val="$undef"; set d_ftime; eval $setvar
14545         ;;
14546 esac
14547 case "$d_gettimeod$d_ftime" in
14548 "$undef$undef")
14549         echo " "
14550         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14551         ;;
14552 esac
14553
14554 : see if gmtime_r exists
14555 set gmtime_r d_gmtime_r
14556 eval $inlibc
14557 case "$d_gmtime_r" in
14558 "$define")
14559         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14560         case "$d_gmtime_r_proto:$usethreads" in
14561         ":define")      d_gmtime_r_proto=define
14562                 set d_gmtime_r_proto gmtime_r $hdrs
14563                 eval $hasproto ;;
14564         *)      ;;
14565         esac
14566         case "$d_gmtime_r_proto" in
14567         define)
14568         case "$gmtime_r_proto" in
14569         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14570         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14571         esac
14572         case "$gmtime_r_proto" in
14573         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14574         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14575         esac
14576         case "$gmtime_r_proto" in
14577         ''|0)   d_gmtime_r=undef
14578                 gmtime_r_proto=0
14579                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14580         * )     case "$gmtime_r_proto" in
14581                 REENTRANT_PROTO*) ;;
14582                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14583                 esac
14584                 echo "Prototype: $try" ;;
14585         esac
14586         ;;
14587         *)      case "$usethreads" in
14588                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14589                 esac
14590                 d_gmtime_r=undef
14591                 gmtime_r_proto=0
14592                 ;;
14593         esac
14594         ;;
14595 *)      gmtime_r_proto=0
14596         ;;
14597 esac
14598
14599 : see if hasmntopt exists
14600 set hasmntopt d_hasmntopt
14601 eval $inlibc
14602
14603 : see if this is a netinet/in.h or sys/in.h system
14604 set netinet/in.h i_niin sys/in.h i_sysin
14605 eval $inhdr
14606
14607 : see if arpa/inet.h has to be included
14608 set arpa/inet.h i_arpainet
14609 eval $inhdr
14610
14611 : see if htonl --and friends-- exists
14612 val=''
14613 set htonl val
14614 eval $inlibc
14615
14616 : Maybe they are macros.
14617 case "$val" in
14618 $undef)
14619         $cat >htonl.c <<EOM
14620 #include <stdio.h>
14621 #include <sys/types.h>
14622 #$i_niin I_NETINET_IN
14623 #$i_sysin I_SYS_IN
14624 #$i_arpainet I_ARPA_INET
14625 #ifdef I_NETINET_IN
14626 #include <netinet/in.h>
14627 #endif
14628 #ifdef I_SYS_IN
14629 #include <sys/in.h>
14630 #endif
14631 #ifdef I_ARPA_INET
14632 #include <arpa/inet.h>
14633 #endif
14634 #ifdef htonl
14635 printf("Defined as a macro.");
14636 #endif
14637 EOM
14638         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14639         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14640                 val="$define"
14641                 echo "But it seems to be defined as a macro." >&4
14642         fi
14643         $rm -f htonl.?
14644         ;;
14645 esac
14646 set d_htonl
14647 eval $setvar
14648
14649 : see if ilogbl exists
14650 set ilogbl d_ilogbl
14651 eval $inlibc
14652
14653 : index or strchr
14654 echo " "
14655 if set index val -f; eval $csym; $val; then
14656         if set strchr val -f d_strchr; eval $csym; $val; then
14657                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14658                         val="$define"
14659                         vali="$undef"
14660                         echo "strchr() found." >&4
14661                 else
14662                         val="$undef"
14663                         vali="$define"
14664                         echo "index() found." >&4
14665                 fi
14666         else
14667                 val="$undef"
14668                 vali="$define"
14669                 echo "index() found." >&4
14670         fi
14671 else
14672         if set strchr val -f d_strchr; eval $csym; $val; then
14673                 val="$define"
14674                 vali="$undef"
14675                 echo "strchr() found." >&4
14676         else
14677                 echo "No index() or strchr() found!" >&4
14678                 val="$undef"
14679                 vali="$undef"
14680         fi
14681 fi
14682 set d_strchr; eval $setvar
14683 val="$vali"
14684 set d_index; eval $setvar
14685
14686 : check whether inet_aton exists
14687 set inet_aton d_inetaton
14688 eval $inlibc
14689
14690 : Look for isascii
14691 echo " "
14692 $cat >isascii.c <<EOCP
14693 #include <stdio.h>
14694 #include <ctype.h>
14695 #$i_stdlib I_STDLIB
14696 #ifdef I_STDLIB
14697 #include <stdlib.h>
14698 #endif
14699 int main() {
14700         int c = 'A';
14701         if (isascii(c))
14702                 exit(0);
14703         else
14704                 exit(1);
14705 }
14706 EOCP
14707 set isascii
14708 if eval $compile; then
14709         echo "isascii() found." >&4
14710         val="$define"
14711 else
14712         echo "isascii() NOT found." >&4
14713         val="$undef"
14714 fi
14715 set d_isascii
14716 eval $setvar
14717 $rm -f isascii*
14718
14719 : see if isfinite exists
14720 set isfinite d_isfinite
14721 eval $inlibc
14722
14723 : see if isinf exists
14724 set isinf d_isinf
14725 eval $inlibc
14726
14727 : see if isnan exists
14728 set isnan d_isnan
14729 eval $inlibc
14730
14731 : see if isnanl exists
14732 set isnanl d_isnanl
14733 eval $inlibc
14734
14735 : see if killpg exists
14736 set killpg d_killpg
14737 eval $inlibc
14738
14739 : see if lchown exists
14740 echo " "
14741 $cat > try.c <<'EOCP'
14742 /* System header to define __stub macros and hopefully few prototypes,
14743     which can conflict with char lchown(); below.  */
14744 #include <assert.h>
14745 /* Override any gcc2 internal prototype to avoid an error.  */
14746 /* We use char because int might match the return type of a gcc2
14747    builtin and then its argument prototype would still apply.  */
14748 char lchown();
14749 int main() {
14750     /*  The GNU C library defines this for functions which it implements
14751         to always fail with ENOSYS.  Some functions are actually named
14752         something starting with __ and the normal name is an alias.  */
14753 #if defined (__stub_lchown) || defined (__stub___lchown)
14754 choke me
14755 #else
14756 lchown();
14757 #endif
14758 ; return 0; }
14759 EOCP
14760 set try
14761 if eval $compile; then
14762     $echo "lchown() found." >&4
14763     val="$define"
14764 else
14765     $echo "lchown() NOT found." >&4
14766     val="$undef"
14767 fi
14768 set d_lchown
14769 eval $setvar
14770
14771 : See if number of significant digits in a double precision number is known
14772 echo " "
14773 $cat >ldbl_dig.c <<EOM
14774 #$i_limits I_LIMITS
14775 #$i_float I_FLOAT
14776 #ifdef I_LIMITS
14777 #include <limits.h>
14778 #endif
14779 #ifdef I_FLOAT
14780 #include <float.h>
14781 #endif
14782 #ifdef LDBL_DIG
14783 printf("Contains LDBL_DIG");
14784 #endif
14785 EOM
14786 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14787 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14788         echo "LDBL_DIG found." >&4
14789         val="$define"
14790 else
14791         echo "LDBL_DIG NOT found." >&4
14792         val="$undef"
14793 fi
14794 $rm -f ldbl_dig.?
14795 set d_ldbl_dig
14796 eval $setvar
14797
14798 : see if this is a math.h system
14799 set math.h i_math
14800 eval $inhdr
14801
14802 : check to see if math.h defines _LIB_VERSION
14803 d_libm_lib_version="$undef"
14804 case $i_math in
14805     $define)
14806         echo " "
14807         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14808         $cat >try.c <<EOCP
14809 #include <unistd.h>
14810 #include <math.h>
14811 int main (int argc, char *argv[])
14812 {
14813     printf ("%d\n", _LIB_VERSION);
14814     return (0);
14815     } /* main */
14816 EOCP
14817         set try
14818         if eval $compile; then
14819             foo=`$run ./try`
14820             echo "Yes, it does ($foo)" >&4
14821             d_libm_lib_version="$define"
14822         else
14823             echo "No, it does not (probably harmless)" >&4
14824             fi
14825         $rm_try
14826         ;;
14827
14828     esac
14829
14830 : see if link exists
14831 set link d_link
14832 eval $inlibc
14833
14834 : see if localtime_r exists
14835 set localtime_r d_localtime_r
14836 eval $inlibc
14837 case "$d_localtime_r" in
14838 "$define")
14839         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14840         case "$d_localtime_r_proto:$usethreads" in
14841         ":define")      d_localtime_r_proto=define
14842                 set d_localtime_r_proto localtime_r $hdrs
14843                 eval $hasproto ;;
14844         *)      ;;
14845         esac
14846         case "$d_localtime_r_proto" in
14847         define)
14848         case "$localtime_r_proto" in
14849         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14850         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14851         esac
14852         case "$localtime_r_proto" in
14853         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14854         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14855         esac
14856         case "$localtime_r_proto" in
14857         ''|0)   d_localtime_r=undef
14858                 localtime_r_proto=0
14859                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14860         * )     case "$localtime_r_proto" in
14861                 REENTRANT_PROTO*) ;;
14862                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14863                 esac
14864                 echo "Prototype: $try" ;;
14865         esac
14866         ;;
14867         *)      case "$usethreads" in
14868                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14869                 esac
14870                 d_localtime_r=undef
14871                 localtime_r_proto=0
14872                 ;;
14873         esac
14874         ;;
14875 *)      localtime_r_proto=0
14876         ;;
14877 esac
14878
14879 : see if localtime_r calls tzset
14880 case "$localtime_r_proto" in
14881 REENTRANT_PROTO*)
14882         $cat >try.c <<EOCP
14883 /*  Does our libc's localtime_r call tzset ?
14884  *  return 0 if so, 1 otherwise.
14885  */
14886 #include <sys/types.h>
14887 #include <unistd.h>
14888 #include <time.h>
14889 #include <string.h>
14890 #include <malloc.h>
14891 int main()
14892 {
14893     time_t t = time(0L);
14894     char w_tz[]="TZ" "=GMT+5",
14895          e_tz[]="TZ" "=GMT-5",
14896         *tz_e = (char*)malloc(16),
14897         *tz_w = (char*)malloc(16);
14898     struct tm tm_e, tm_w;
14899     memset(&tm_e,'\0',sizeof(struct tm));
14900     memset(&tm_w,'\0',sizeof(struct tm));
14901     strcpy(tz_e,e_tz);
14902     strcpy(tz_w,w_tz);
14903
14904     putenv(tz_e);
14905     localtime_r(&t, &tm_e);
14906
14907     putenv(tz_w);
14908     localtime_r(&t, &tm_w);
14909
14910     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14911         return 1;
14912     return 0;
14913 }
14914 EOCP
14915         set try
14916         if eval $compile; then
14917             if $run ./try; then
14918                 d_localtime_r_needs_tzset=undef;
14919             else
14920                 d_localtime_r_needs_tzset=define;
14921             fi;
14922         else
14923             d_localtime_r_needs_tzset=undef;
14924         fi;
14925      ;;
14926   *)
14927      d_localtime_r_needs_tzset=undef;
14928      ;;
14929 esac
14930 $rm_try
14931
14932 : see if localeconv exists
14933 set localeconv d_locconv
14934 eval $inlibc
14935
14936 : see if lockf exists
14937 set lockf d_lockf
14938 eval $inlibc
14939
14940 : see if prototype for lseek is available
14941 echo " "
14942 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14943 eval $hasproto
14944
14945 : see if lstat exists
14946 set lstat d_lstat
14947 eval $inlibc
14948
14949 : see if madvise exists
14950 set madvise d_madvise
14951 eval $inlibc
14952
14953 : see if malloc_size exists
14954 set malloc_size d_malloc_size
14955 eval $inlibc
14956
14957 : see if malloc_size_good exists
14958 set malloc_good_size d_malloc_good_size
14959 eval $inlibc
14960
14961 : see if mblen exists
14962 set mblen d_mblen
14963 eval $inlibc
14964
14965 : see if mbstowcs exists
14966 set mbstowcs d_mbstowcs
14967 eval $inlibc
14968
14969 : see if mbtowc exists
14970 set mbtowc d_mbtowc
14971 eval $inlibc
14972
14973 : see if memchr exists
14974 set memchr d_memchr
14975 eval $inlibc
14976
14977 : see if memcmp exists
14978 set memcmp d_memcmp
14979 eval $inlibc
14980
14981 : see if memcpy exists
14982 set memcpy d_memcpy
14983 eval $inlibc
14984
14985 : see if memmove exists
14986 set memmove d_memmove
14987 eval $inlibc
14988
14989 : see if memset exists
14990 set memset d_memset
14991 eval $inlibc
14992
14993 : see if mkdir exists
14994 set mkdir d_mkdir
14995 eval $inlibc
14996
14997 : see if mkdtemp exists
14998 set mkdtemp d_mkdtemp
14999 eval $inlibc
15000
15001 : see if mkfifo exists
15002 set mkfifo d_mkfifo
15003 eval $inlibc
15004
15005 : see if mkstemp exists
15006 set mkstemp d_mkstemp
15007 eval $inlibc
15008
15009 : see if mkstemps exists
15010 set mkstemps d_mkstemps
15011 eval $inlibc
15012
15013 : see if mktime exists
15014 set mktime d_mktime
15015 eval $inlibc
15016
15017 : see if this is a sys/mman.h system
15018 set sys/mman.h i_sysmman
15019 eval $inhdr
15020
15021 : see if mmap exists
15022 set mmap d_mmap
15023 eval $inlibc
15024 : see what shmat returns
15025 : default to something harmless
15026 mmaptype='void *'
15027 case "$i_sysmman$d_mmap" in
15028 "$define$define")
15029         $cat >mmap.c <<'END'
15030 #include <sys/mman.h>
15031 void *mmap();
15032 END
15033         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
15034                 mmaptype='void *'
15035         else
15036                 mmaptype='caddr_t'
15037         fi
15038         echo "and it returns ($mmaptype)." >&4
15039         ;;
15040 esac
15041
15042
15043
15044 : see if sqrtl exists
15045 set sqrtl d_sqrtl
15046 eval $inlibc
15047
15048 : see if scalbnl exists
15049 set scalbnl d_scalbnl
15050 eval $inlibc
15051
15052 : see if modfl exists
15053 set modfl d_modfl
15054 eval $inlibc
15055
15056 : see if prototype for modfl is available
15057 echo " "
15058 set d_modflproto modfl $i_math math.h
15059 eval $hasproto
15060
15061 d_modfl_pow32_bug="$undef"
15062
15063 case "$d_longdbl$d_modfl" in
15064 $define$define)
15065         $cat <<EOM
15066 Checking to see whether your modfl() is okay for large values...
15067 EOM
15068 $cat >try.c <<EOCP
15069 #include <math.h>
15070 #include <stdio.h>
15071 EOCP
15072 if $test "X$d_modflproto" != "X$define"; then
15073         $cat >>try.c <<EOCP
15074 /* Sigh. many current glibcs provide the function, but do not prototype it. */
15075 long double modfl (long double, long double *);
15076 EOCP
15077 fi
15078 $cat >>try.c <<EOCP
15079 int main() {
15080     long double nv = 4294967303.15;
15081     long double v, w;
15082     v = modfl(nv, &w);
15083 #ifdef __GLIBC__
15084     printf("glibc");
15085 #endif
15086     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
15087     return 0;
15088 }
15089 EOCP
15090         case "$osname:$gccversion" in
15091         aix:)   saveccflags="$ccflags"
15092                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
15093         esac
15094         set try
15095         if eval $compile; then
15096                 foo=`$run ./try`
15097                 case "$foo" in
15098                 *" 4294967303.150000 1.150000 4294967302.000000")
15099                         echo >&4 "Your modfl() is broken for large values."
15100                         d_modfl_pow32_bug="$define"
15101                         case "$foo" in
15102                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
15103                         ;;
15104                         esac
15105                         ;;
15106                 *" 4294967303.150000 0.150000 4294967303.000000")
15107                         echo >&4 "Your modfl() seems okay for large values."
15108                         ;;
15109                 *)      echo >&4 "I don't understand your modfl() at all."
15110                         d_modfl="$undef"
15111                         ;;
15112                 esac
15113                 $rm_try
15114         else
15115                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
15116                 d_modfl="$undef"
15117         fi
15118         case "$osname:$gccversion" in
15119         aix:)   ccflags="$saveccflags" ;; # restore
15120         esac
15121         ;;
15122 esac
15123
15124 if $test "$uselongdouble" = "$define"; then
15125     message=""
15126     if $test "$d_sqrtl" != "$define"; then
15127         message="$message sqrtl"
15128     fi
15129     if $test "$d_modfl" != "$define"; then
15130         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
15131             echo "You have both aintl and copysignl, so I can emulate modfl."
15132         else
15133             message="$message modfl"
15134         fi
15135     fi
15136     if $test "$d_frexpl" != "$define"; then
15137         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
15138             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
15139         else
15140             message="$message frexpl"
15141         fi
15142     fi
15143
15144     if $test "$message" != ""; then
15145         $cat <<EOM >&4
15146
15147 *** You requested the use of long doubles but you do not seem to have
15148 *** the following mathematical functions needed for long double support:
15149 ***    $message
15150 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
15151 *** Cannot continue, aborting.
15152
15153 EOM
15154
15155         exit 1
15156     fi
15157 fi
15158
15159 : see if mprotect exists
15160 set mprotect d_mprotect
15161 eval $inlibc
15162
15163 : see if msgctl exists
15164 set msgctl d_msgctl
15165 eval $inlibc
15166
15167 : see if msgget exists
15168 set msgget d_msgget
15169 eval $inlibc
15170
15171 : see if msgsnd exists
15172 set msgsnd d_msgsnd
15173 eval $inlibc
15174
15175 : see if msgrcv exists
15176 set msgrcv d_msgrcv
15177 eval $inlibc
15178
15179 : see how much of the 'msg*(2)' library is present.
15180 h_msg=true
15181 echo " "
15182 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15183 *"$undef"*) h_msg=false;;
15184 esac
15185 case "$osname" in
15186 freebsd)
15187     case "`ipcs 2>&1`" in
15188     "SVID messages"*"not configured"*)
15189         echo "Your $osname does not have the msg*(2) configured." >&4
15190         h_msg=false
15191         val="$undef"
15192         set msgctl d_msgctl
15193         eval $setvar
15194         set msgget d_msgget
15195         eval $setvar
15196         set msgsnd d_msgsnd
15197         eval $setvar
15198         set msgrcv d_msgrcv
15199         eval $setvar
15200         ;;
15201     esac
15202     ;;
15203 esac
15204 : we could also check for sys/ipc.h ...
15205 if $h_msg && $test `./findhdr sys/msg.h`; then
15206         echo "You have the full msg*(2) library." >&4
15207         val="$define"
15208 else
15209         echo "You don't have the full msg*(2) library." >&4
15210         val="$undef"
15211 fi
15212 set d_msg
15213 eval $setvar
15214
15215 : Check for msghdr_s
15216 echo " "
15217 echo "Checking to see if your system supports struct msghdr..." >&4
15218 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15219 eval $hasstruct
15220 case "$d_msghdr_s" in
15221 "$define")      echo "Yes, it does."   ;;
15222 *)              echo "No, it doesn't." ;;
15223 esac
15224
15225
15226 : see if msync exists
15227 set msync d_msync
15228 eval $inlibc
15229
15230 : see if munmap exists
15231 set munmap d_munmap
15232 eval $inlibc
15233
15234 : see if nice exists
15235 set nice d_nice
15236 eval $inlibc
15237
15238 : see if this is a langinfo.h system
15239 set langinfo.h i_langinfo
15240 eval $inhdr
15241
15242 : see if nl_langinfo exists
15243 set nl_langinfo d_nl_langinfo
15244 eval $inlibc
15245
15246 : check for volatile keyword
15247 echo " "
15248 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15249 $cat >try.c <<'EOCP'
15250 int main()
15251 {
15252         typedef struct _goo_struct goo_struct;
15253         goo_struct * volatile goo = ((goo_struct *)0);
15254         struct _goo_struct {
15255                 long long_int;
15256                 int reg_int;
15257                 char char_var;
15258         };
15259         typedef unsigned short foo_t;
15260         char *volatile foo;
15261         volatile int bar;
15262         volatile foo_t blech;
15263         foo = foo;
15264 }
15265 EOCP
15266 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15267         val="$define"
15268         echo "Yup, it does."
15269 else
15270         val="$undef"
15271         echo "Nope, it doesn't."
15272 fi
15273 set d_volatile
15274 eval $setvar
15275 $rm_try
15276
15277 : Check basic sizes
15278 echo " "
15279 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15280
15281 case "$use64bitint:$d_quad:$quadtype" in
15282 define:define:?*)
15283         ivtype="$quadtype"
15284         uvtype="$uquadtype"
15285         ivsize=8
15286         uvsize=8
15287         ;;
15288 *)      ivtype="long"
15289         uvtype="unsigned long"
15290         ivsize=$longsize
15291         uvsize=$longsize
15292         ;;
15293 esac
15294
15295 case "$uselongdouble:$d_longdbl" in
15296 define:define)
15297         nvtype="long double"
15298         nvsize=$longdblsize
15299         ;;
15300 *)      nvtype=double
15301         nvsize=$doublesize
15302         ;;
15303 esac
15304
15305 $echo "(IV will be "$ivtype", $ivsize bytes)"
15306 $echo "(UV will be "$uvtype", $uvsize bytes)"
15307 $echo "(NV will be "$nvtype", $nvsize bytes)"
15308
15309 $cat >try.c <<EOCP
15310 #$i_inttypes I_INTTYPES
15311 #ifdef I_INTTYPES
15312 #include <inttypes.h>
15313 #endif
15314 #include <stdio.h>
15315 int main() {
15316 #ifdef INT8
15317    int8_t i =  INT8_MAX;
15318   uint8_t u = UINT8_MAX;
15319   printf("int8_t\n");
15320 #endif
15321 #ifdef INT16
15322    int16_t i =  INT16_MAX;
15323   uint16_t i = UINT16_MAX;
15324   printf("int16_t\n");
15325 #endif
15326 #ifdef INT32
15327    int32_t i =  INT32_MAX;
15328   uint32_t u = UINT32_MAX;
15329   printf("int32_t\n");
15330 #endif
15331 }
15332 EOCP
15333
15334 i8type="signed char"
15335 u8type="unsigned char"
15336 i8size=1
15337 u8size=1
15338
15339 case "$i16type" in
15340 '')     case "$shortsize" in
15341         2)      i16type=short
15342                 u16type="unsigned short"
15343                 i16size=$shortsize
15344                 u16size=$shortsize
15345                 ;;
15346         esac
15347         ;;
15348 esac
15349 case "$i16type" in
15350 '')     set try -DINT16
15351         if eval $compile; then
15352                 case "`$run ./try`" in
15353                 int16_t)
15354                         i16type=int16_t
15355                         u16type=uint16_t
15356                         i16size=2
15357                         u16size=2
15358                         ;;
15359                 esac
15360         fi
15361         ;;
15362 esac
15363 case "$i16type" in
15364 '')     if $test $shortsize -ge 2; then
15365                 i16type=short
15366                 u16type="unsigned short"
15367                 i16size=$shortsize
15368                 u16size=$shortsize
15369         fi
15370         ;;
15371 esac
15372
15373 case "$i32type" in
15374 '')     case "$longsize" in
15375         4)      i32type=long
15376                 u32type="unsigned long"
15377                 i32size=$longsize
15378                 u32size=$longsize
15379                 ;;
15380         *)      case "$intsize" in
15381                 4)      i32type=int
15382                         u32type="unsigned int"
15383                         i32size=$intsize
15384                         u32size=$intsize
15385                         ;;
15386                 esac
15387                 ;;
15388         esac
15389         ;;
15390 esac
15391 case "$i32type" in
15392 '')     set try -DINT32
15393         if eval $compile; then
15394                 case "`$run ./try`" in
15395                 int32_t)
15396                         i32type=int32_t
15397                         u32type=uint32_t
15398                         i32size=4
15399                         u32size=4
15400                         ;;
15401                 esac
15402         fi
15403         ;;
15404 esac
15405 case "$i32type" in
15406 '')     if $test $intsize -ge 4; then
15407                 i32type=int
15408                 u32type="unsigned int"
15409                 i32size=$intsize
15410                 u32size=$intsize
15411         fi
15412         ;;
15413 esac
15414
15415 case "$i64type" in
15416 '')     case "$d_quad:$quadtype" in
15417         define:?*)
15418                 i64type="$quadtype"
15419                 u64type="$uquadtype"
15420                 i64size=8
15421                 u64size=8
15422                 ;;
15423         esac
15424         ;;
15425 esac
15426
15427 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15428 : volatile so that the compiler has to store it out to memory.
15429 if test X"$d_volatile" = X"$define"; then
15430         volatile=volatile
15431 fi
15432 $cat <<EOP >try.c
15433 #include <stdio.h>
15434 #$i_stdlib I_STDLIB
15435 #ifdef I_STDLIB
15436 #include <stdlib.h>
15437 #endif
15438 #include <sys/types.h>
15439 #include <signal.h>
15440 #ifdef SIGFPE
15441 $volatile int bletched = 0;
15442 $signal_t blech(int s) { bletched = 1; }
15443 #endif
15444 int main() {
15445     $uvtype u = 0;
15446     $nvtype d;
15447     int     n = 8 * $uvsize;
15448     int     i;
15449 #ifdef SIGFPE
15450     signal(SIGFPE, blech);
15451 #endif
15452
15453     for (i = 0; i < n; i++) {
15454       u = u << 1 | ($uvtype)1;
15455       d = ($nvtype)u;
15456       if (($uvtype)d != u)
15457         break;
15458       if (d <= 0)
15459         break;
15460       d = ($nvtype)(u - 1);
15461       if (($uvtype)d != (u - 1))
15462         break;
15463 #ifdef SIGFPE
15464       if (bletched)
15465         break;
15466 #endif
15467     }
15468     printf("%d\n", ((i == n) ? -n : i));
15469     exit(0);
15470 }
15471 EOP
15472 set try
15473
15474 d_nv_preserves_uv="$undef"
15475 if eval $compile; then
15476         nv_preserves_uv_bits="`$run ./try`"
15477 fi
15478 case "$nv_preserves_uv_bits" in
15479 \-[1-9]*)
15480         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15481         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15482         d_nv_preserves_uv="$define"
15483         ;;
15484 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15485         d_nv_preserves_uv="$undef" ;;
15486 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15487         nv_preserves_uv_bits="0" ;;
15488 esac
15489 $rm_try
15490
15491 $echo "Checking to find the largest integer value your NVs can hold..." >&4
15492 : volatile so that the compiler has to store it out to memory.
15493 if test X"$d_volatile" = X"$define"; then
15494         volatile=volatile
15495 fi
15496 $cat <<EOP >try.c
15497 #include <stdio.h>
15498
15499 typedef $nvtype NV;
15500
15501 int
15502 main() {
15503   NV value = 2;
15504   int count = 1;
15505
15506   while(count < 256) {
15507     $volatile NV up = value + 1.0;
15508     $volatile NV negated = -value;
15509     $volatile NV down = negated - 1.0;
15510     $volatile NV got_up = up - value;
15511     int up_good = got_up == 1.0;
15512     int got_down = down - negated;
15513     int down_good = got_down == -1.0;
15514
15515     if (down_good != up_good) {
15516       fprintf(stderr,
15517               "Inconsistency - up %d %f; down %d %f; for 2**%d (%.20f)\n",
15518               up_good, (double) got_up, down_good, (double) got_down,
15519               count, (double) value);
15520       return 1;
15521     }
15522     if (!up_good) {
15523       while (1) {
15524         if (count > 8) {
15525           count -= 8;
15526           fputs("256.0", stdout);
15527         } else {
15528           count--;
15529           fputs("2.0", stdout);
15530         }
15531         if (!count) {
15532           puts("");
15533           return 0;
15534         }
15535         fputs("*", stdout);
15536       }
15537     }
15538     value *= 2;
15539     ++count;
15540   }
15541   fprintf(stderr, "Cannot overflow integer range, even at 2**%d (%.20f)\n",
15542           count, (double) value);
15543   return 1;
15544 }
15545 EOP
15546 set try
15547
15548 nv_overflows_integers_at='0'
15549 if eval $compile; then
15550     xxx="`$run ./try`"
15551     case "$?" in
15552         0)
15553             case "$xxx" in
15554                 2*)  cat >&4 <<EOM
15555 The largest integer your NVs can preserve is equal to $xxx
15556 EOM
15557                     nv_overflows_integers_at="$xxx"
15558                     ;;
15559                 *)  cat >&4 <<EOM
15560 Cannot determine the largest integer value your NVs can hold, unexpected output
15561 '$xxx'
15562 EOM
15563                     ;;
15564             esac
15565             ;;
15566         *)  cat >&4 <<EOM
15567 Cannot determine the largest integer value your NVs can hold
15568 EOM
15569             ;;
15570     esac
15571 fi
15572 $rm_try
15573
15574 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15575 : volatile so that the compiler has to store it out to memory.
15576 if test X"$d_volatile" = X"$define"; then
15577         volatile=volatile
15578 fi
15579 $cat <<EOP >try.c
15580 #include <stdio.h>
15581 #$i_stdlib I_STDLIB
15582 #ifdef I_STDLIB
15583 #include <stdlib.h>
15584 #endif
15585 #$i_string I_STRING
15586 #ifdef I_STRING
15587 #  include <string.h>
15588 #else
15589 #  include <strings.h>
15590 #endif
15591 #include <sys/types.h>
15592 #include <signal.h>
15593 #ifdef SIGFPE
15594 $volatile int bletched = 0;
15595 $signal_t blech(int s) { bletched = 1; }
15596 #endif
15597
15598 int checkit($nvtype d, char *where) {
15599     unsigned char *p = (char *)&d;
15600     unsigned char *end = p + sizeof(d);
15601     int fail = 0;
15602
15603     while (p < end)
15604         fail += *p++;
15605
15606     if (!fail)
15607         return 0;
15608
15609     p = (char *)&d;
15610     printf("No - %s: 0x", where);
15611     while (p < end)
15612         printf ("%02X", *p++);
15613     printf("\n");
15614     return 1;
15615 }
15616
15617 int main(int argc, char **argv) {
15618     $nvtype d = 0.0;
15619     int fail = 0;
15620     fail += checkit(d, "0.0");
15621
15622     /* The compiler shouldn't be assuming that bletched is 0  */
15623     d = bletched;
15624
15625     fail += checkit(d, "bleched");
15626
15627 #ifdef SIGFPE
15628     signal(SIGFPE, blech);
15629 #endif
15630
15631     /* Paranoia - the compiler should have no way of knowing that ANSI says
15632        that argv[argc] will always be NULL.  Actually, if it did assume this it
15633        would be buggy, as this is C and main() can be called from elsewhere in
15634        the program.  */
15635     d = argv[argc] ? 1 : 0;
15636
15637     if (d) {
15638         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15639     }
15640
15641     fail += checkit(d, "ternary");
15642
15643     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15644
15645     if (d != 0.0) {
15646         printf("No - memset doesn't give 0.0\n");
15647         /* This might just blow up:  */
15648         printf("(gives %g)\n", d);
15649         return 1;
15650     }
15651
15652 #ifdef SIGFPE
15653     if (bletched) {
15654         printf("No - something bleched\n");
15655         return 1;
15656     }
15657 #endif
15658     if (fail) {
15659       printf("No - %d fail(s)\n", fail);
15660       return 1;
15661     }
15662     printf("Yes\n");
15663     return 0;
15664 }
15665 EOP
15666 set try
15667
15668 d_nv_zero_is_allbits_zero="$undef"
15669 if eval $compile; then
15670     xxx="`$run ./try`"
15671     case "$?" in
15672         0)
15673             case "$xxx" in
15674                 Yes)  cat >&4 <<EOM
15675 0.0 is represented as all bits zero in memory
15676 EOM
15677                     d_nv_zero_is_allbits_zero="$define"
15678                     ;;
15679                 *)  cat >&4 <<EOM
15680 0.0 is not represented as all bits zero in memory
15681 EOM
15682                     d_nv_zero_is_allbits_zero="$undef"
15683                     ;;
15684             esac
15685             ;;
15686         *)  cat >&4 <<EOM
15687 0.0 is not represented as all bits zero in memory
15688 EOM
15689             d_nv_zero_is_allbits_zero="$undef"
15690             ;;
15691     esac
15692 fi
15693 $rm_try
15694
15695 : check for off64_t
15696 echo " "
15697 echo "Checking to see if you have off64_t..." >&4
15698 $cat >try.c <<EOCP
15699 #include <sys/types.h>
15700 #include <unistd.h>
15701 int main() { off64_t x = 7; }
15702 EOCP
15703 set try
15704 if eval $compile; then
15705         val="$define"
15706         echo "You have off64_t."
15707 else
15708         val="$undef"
15709         echo "You do not have off64_t."
15710         case "$lseeksize" in
15711         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15712         esac
15713 fi
15714 $rm_try
15715 set d_off64_t
15716 eval $setvar
15717
15718 : how to create joinable pthreads
15719 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15720         echo " "
15721         echo "Checking what constant to use for creating joinable pthreads..." >&4
15722         $cat >try.c <<'EOCP'
15723 #include <pthread.h>
15724 int main() {
15725     int detachstate = JOINABLE;
15726 }
15727 EOCP
15728         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15729         if eval $compile; then
15730                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15731                 val="$undef" # Yes, undef.
15732                 set d_old_pthread_create_joinable
15733                 eval $setvar
15734                 val=""
15735                 set old_pthread_create_joinable
15736                 eval $setvar
15737         else
15738                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15739                 if eval $compile; then
15740                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15741                         val="$define"
15742                         set d_old_pthread_create_joinable
15743                         eval $setvar
15744                         val=PTHREAD_CREATE_UNDETACHED
15745                         set old_pthread_create_joinable
15746                         eval $setvar
15747                 else
15748                         set try -DJOINABLE=__UNDETACHED
15749                         if eval $compile; then
15750                                 echo "You seem to use __UNDETACHED." >&4
15751                                 val="$define"
15752                                 set d_old_pthread_create_joinable
15753                                 eval $setvar
15754                                 val=__UNDETACHED
15755                                 set old_pthread_create_joinable
15756                                 eval $setvar
15757                         else
15758                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15759                                 val="$define"
15760                                 set d_old_pthread_create_joinable
15761                                 eval $setvar
15762                                 val=0
15763                                 set old_pthread_create_joinable
15764                                 eval $setvar
15765                         fi
15766                 fi
15767         fi
15768         $rm_try
15769 else
15770     d_old_pthread_create_joinable="$undef"
15771     old_pthread_create_joinable=""
15772 fi
15773
15774 : see if pause exists
15775 set pause d_pause
15776 eval $inlibc
15777
15778 : see if poll exists
15779 set poll d_poll
15780 eval $inlibc
15781
15782 : see if readlink exists
15783 set readlink d_readlink
15784 eval $inlibc
15785
15786 : Check if exe is symlink to abs path of executing program
15787 echo " "
15788 procselfexe=''
15789 val="$undef"
15790 case "$d_readlink" in
15791 "$define")
15792         if $issymlink /proc/self/exe ; then
15793                 $ls -l /proc/self/exe > reflect
15794                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15795                         echo "You have Linux-like /proc/self/exe."
15796                         procselfexe='"/proc/self/exe"'
15797                         val="$define"
15798                 fi
15799         fi
15800         if $issymlink /proc/curproc/file ; then
15801                 $ls -l /proc/curproc/file > reflect
15802                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15803                         echo "You have BSD-like /proc/curproc/file."
15804                         procselfexe='"/proc/curproc/file"'
15805                         val="$define"
15806                 fi
15807         fi
15808         ;;
15809 esac
15810 $rm -f reflect
15811 set d_procselfexe
15812 eval $setvar
15813
15814 : backward compatibility for d_hvfork
15815 if test X$d_hvfork != X; then
15816         d_vfork="$d_hvfork"
15817         d_hvfork=''
15818 fi
15819 : see if there is a vfork
15820 val=''
15821 set vfork val
15822 eval $inlibc
15823
15824 d_pseudofork=$undef
15825
15826 : Ok, but do we want to use it. vfork is reportedly unreliable in
15827 : perl on Solaris 2.x, and probably elsewhere.
15828 case "$val" in
15829 $define)
15830         echo " "
15831         case "$usevfork" in
15832         false) dflt='n';;
15833         *) dflt='y';;
15834         esac
15835         cat <<'EOM'
15836
15837 Perl can only use a vfork() that doesn't suffer from strict
15838 restrictions on calling functions or modifying global data in
15839 the child.  For example, glibc-2.1 contains such a vfork()
15840 that is unsuitable.  If your system provides a proper fork()
15841 call, chances are that you do NOT want perl to use vfork().
15842
15843 EOM
15844         rp="Do you still want to use vfork()?"
15845         . ./myread
15846         case "$ans" in
15847         y|Y) ;;
15848         *)
15849                 echo "Ok, we won't use vfork()."
15850                 val="$undef"
15851                 ;;
15852         esac
15853         ;;
15854 esac
15855 set d_vfork
15856 eval $setvar
15857 case "$d_vfork" in
15858 $define) usevfork='true';;
15859 *) usevfork='false';;
15860 esac
15861
15862 : see whether the pthread_atfork exists
15863 $cat >try.c <<EOP
15864 #include <pthread.h>
15865 #include <stdio.h>
15866 int main() {
15867 #ifdef  PTHREAD_ATFORK
15868         pthread_atfork(NULL,NULL,NULL);
15869 #endif
15870 }
15871 EOP
15872
15873 : see if pthread_atfork exists
15874 set try -DPTHREAD_ATFORK
15875 if eval $compile; then
15876     val="$define"
15877 else
15878     val="$undef"
15879 fi
15880 case "$usethreads" in
15881 $define)
15882         case "$val" in
15883         $define) echo 'pthread_atfork found.' >&4        ;;
15884         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15885         esac
15886 esac
15887 set d_pthread_atfork
15888 eval $setvar
15889
15890 : see if pthread_attr_setscope exists
15891 set pthread_attr_setscope d_pthread_attr_setscope
15892 eval $inlibc
15893
15894 : see whether the various POSIXish _yields exist
15895 $cat >try.c <<EOP
15896 #include <pthread.h>
15897 #include <stdio.h>
15898 int main() {
15899 #ifdef SCHED_YIELD
15900         sched_yield();
15901 #else
15902 #ifdef PTHREAD_YIELD
15903         pthread_yield();
15904 #else
15905 #ifdef PTHREAD_YIELD_NULL
15906         pthread_yield(NULL);
15907 #endif
15908 #endif
15909 #endif
15910 }
15911 EOP
15912 : see if sched_yield exists
15913 set try -DSCHED_YIELD
15914 if eval $compile; then
15915     val="$define"
15916     sched_yield='sched_yield()'
15917 else
15918     val="$undef"
15919 fi
15920 case "$usethreads" in
15921 $define)
15922         case "$val" in
15923         $define) echo 'sched_yield() found.' >&4        ;;
15924         *)       echo 'sched_yield() NOT found.' >&4    ;;
15925         esac
15926 esac
15927 set d_sched_yield
15928 eval $setvar
15929
15930 : see if pthread_yield exists
15931 set try -DPTHREAD_YIELD
15932 if eval $compile; then
15933     val="$define"
15934     case "$sched_yield" in
15935     '') sched_yield='pthread_yield()' ;;
15936     esac
15937 else
15938     set try -DPTHREAD_YIELD_NULL
15939     if eval $compile; then
15940         val="$define"
15941         case "$sched_yield" in
15942         '') sched_yield='pthread_yield(NULL)' ;;
15943         esac
15944     else
15945         val="$undef"
15946     fi
15947 fi
15948 case "$usethreads" in
15949 $define)
15950         case "$val" in
15951         $define) echo 'pthread_yield() found.' >&4      ;;
15952         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15953         esac
15954         ;;
15955 esac
15956 set d_pthread_yield
15957 eval $setvar
15958 case "$sched_yield" in
15959 '') sched_yield=undef ;;
15960 esac
15961 $rm_try
15962
15963 : see if random_r exists
15964 set random_r d_random_r
15965 eval $inlibc
15966 case "$d_random_r" in
15967 "$define")
15968         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15969         case "$d_random_r_proto:$usethreads" in
15970         ":define")      d_random_r_proto=define
15971                 set d_random_r_proto random_r $hdrs
15972                 eval $hasproto ;;
15973         *)      ;;
15974         esac
15975         case "$d_random_r_proto" in
15976         define)
15977         case "$random_r_proto" in
15978         ''|0) try='int random_r(int*, struct random_data*);'
15979         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15980         esac
15981         case "$random_r_proto" in
15982         ''|0) try='int random_r(long*, struct random_data*);'
15983         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15984         esac
15985         case "$random_r_proto" in
15986         ''|0) try='int random_r(struct random_data*, int32_t*);'
15987         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15988         esac
15989         case "$random_r_proto" in
15990         ''|0)   d_random_r=undef
15991                 random_r_proto=0
15992                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15993         * )     case "$random_r_proto" in
15994                 REENTRANT_PROTO*) ;;
15995                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15996                 esac
15997                 echo "Prototype: $try" ;;
15998         esac
15999         ;;
16000         *)      case "$usethreads" in
16001                 define) echo "random_r has no prototype, not using it." >&4 ;;
16002                 esac
16003                 d_random_r=undef
16004                 random_r_proto=0
16005                 ;;
16006         esac
16007         ;;
16008 *)      random_r_proto=0
16009         ;;
16010 esac
16011
16012 : see if readdir and friends exist
16013 set readdir d_readdir
16014 eval $inlibc
16015 set seekdir d_seekdir
16016 eval $inlibc
16017 set telldir d_telldir
16018 eval $inlibc
16019 set rewinddir d_rewinddir
16020 eval $inlibc
16021
16022 : see if readdir64_r exists
16023 set readdir64_r d_readdir64_r
16024 eval $inlibc
16025 case "$d_readdir64_r" in
16026 "$define")
16027         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
16028         case "$d_readdir64_r_proto:$usethreads" in
16029         ":define")      d_readdir64_r_proto=define
16030                 set d_readdir64_r_proto readdir64_r $hdrs
16031                 eval $hasproto ;;
16032         *)      ;;
16033         esac
16034         case "$d_readdir64_r_proto" in
16035         define)
16036         case "$readdir64_r_proto" in
16037         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
16038         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
16039         esac
16040         case "$readdir64_r_proto" in
16041         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
16042         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
16043         esac
16044         case "$readdir64_r_proto" in
16045         ''|0)   d_readdir64_r=undef
16046                 readdir64_r_proto=0
16047                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
16048         * )     case "$readdir64_r_proto" in
16049                 REENTRANT_PROTO*) ;;
16050                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
16051                 esac
16052                 echo "Prototype: $try" ;;
16053         esac
16054         ;;
16055         *)      case "$usethreads" in
16056                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
16057                 esac
16058                 d_readdir64_r=undef
16059                 readdir64_r_proto=0
16060                 ;;
16061         esac
16062         ;;
16063 *)      readdir64_r_proto=0
16064         ;;
16065 esac
16066
16067 : see if readdir_r exists
16068 set readdir_r d_readdir_r
16069 eval $inlibc
16070 case "$d_readdir_r" in
16071 "$define")
16072         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
16073         case "$d_readdir_r_proto:$usethreads" in
16074         ":define")      d_readdir_r_proto=define
16075                 set d_readdir_r_proto readdir_r $hdrs
16076                 eval $hasproto ;;
16077         *)      ;;
16078         esac
16079         case "$d_readdir_r_proto" in
16080         define)
16081         case "$readdir_r_proto" in
16082         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
16083         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
16084         esac
16085         case "$readdir_r_proto" in
16086         ''|0) try='int readdir_r(DIR*, struct dirent*);'
16087         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
16088         esac
16089         case "$readdir_r_proto" in
16090         ''|0)   d_readdir_r=undef
16091                 readdir_r_proto=0
16092                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
16093         * )     case "$readdir_r_proto" in
16094                 REENTRANT_PROTO*) ;;
16095                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
16096                 esac
16097                 echo "Prototype: $try" ;;
16098         esac
16099         ;;
16100         *)      case "$usethreads" in
16101                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
16102                 esac
16103                 d_readdir_r=undef
16104                 readdir_r_proto=0
16105                 ;;
16106         esac
16107         ;;
16108 *)      readdir_r_proto=0
16109         ;;
16110 esac
16111
16112 : see if readv exists
16113 set readv d_readv
16114 eval $inlibc
16115
16116 : see if recvmsg exists
16117 set recvmsg d_recvmsg
16118 eval $inlibc
16119
16120 : see if rename exists
16121 set rename d_rename
16122 eval $inlibc
16123
16124 : see if rmdir exists
16125 set rmdir d_rmdir
16126 eval $inlibc
16127
16128 : see if memory.h is available.
16129 val=''
16130 set memory.h val
16131 eval $inhdr
16132
16133 : See if it conflicts with string.h
16134 case "$val" in
16135 $define)
16136         case "$strings" in
16137         '') ;;
16138         *)
16139                 $cppstdin $cppflags $cppminus < $strings > mem.h
16140                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
16141                         echo " "
16142                         echo "We won't be including <memory.h>."
16143                         val="$undef"
16144                 fi
16145                 $rm -f mem.h
16146                 ;;
16147         esac
16148 esac
16149 set i_memory
16150 eval $setvar
16151
16152 : can bcopy handle overlapping blocks?
16153 echo " "
16154 val="$undef"
16155 case "$d_memmove" in
16156 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
16157 *)      case "$d_bcopy" in
16158         "$define")
16159                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
16160                 $cat >try.c <<EOCP
16161 #$i_memory I_MEMORY
16162 #$i_stdlib I_STDLIB
16163 #$i_string I_STRING
16164 #$i_unistd I_UNISTD
16165 EOCP
16166         $cat >>try.c <<'EOCP'
16167 #include <stdio.h>
16168 #ifdef I_MEMORY
16169 #  include <memory.h>
16170 #endif
16171 #ifdef I_STDLIB
16172 #  include <stdlib.h>
16173 #endif
16174 #ifdef I_STRING
16175 #  include <string.h>
16176 #else
16177 #  include <strings.h>
16178 #endif
16179 #ifdef I_UNISTD
16180 #  include <unistd.h>  /* Needed for NetBSD */
16181 #endif
16182 int main()
16183 {
16184 char buf[128], abc[128];
16185 char *b;
16186 int len;
16187 int off;
16188 int align;
16189
16190 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16191    try to store the string in read-only memory. */
16192 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
16193
16194 for (align = 7; align >= 0; align--) {
16195         for (len = 36; len; len--) {
16196                 b = buf+align;
16197                 bcopy(abc, b, len);
16198                 for (off = 1; off <= len; off++) {
16199                         bcopy(b, b+off, len);
16200                         bcopy(b+off, b, len);
16201                         if (bcmp(b, abc, len))
16202                                 exit(1);
16203                 }
16204         }
16205 }
16206 exit(0);
16207 }
16208 EOCP
16209                 set try
16210                 if eval $compile_ok; then
16211                         if $run ./try 2>/dev/null; then
16212                                 echo "Yes, it can."
16213                                 val="$define"
16214                         else
16215                                 echo "It can't, sorry."
16216                         fi
16217                 else
16218                         echo "(I can't compile the test program, so we'll assume not...)"
16219                 fi
16220                 ;;
16221         esac
16222         $rm_try
16223         ;;
16224 esac
16225 set d_safebcpy
16226 eval $setvar
16227
16228 : can memcpy handle overlapping blocks?
16229 echo " "
16230 val="$undef"
16231 case "$d_memmove" in
16232 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16233 *)      case "$d_memcpy" in
16234         "$define")
16235                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16236                 $cat >try.c <<EOCP
16237 #$i_memory I_MEMORY
16238 #$i_stdlib I_STDLIB
16239 #$i_string I_STRING
16240 #$i_unistd I_UNISTD
16241 EOCP
16242         $cat >>try.c <<'EOCP'
16243 #include <stdio.h>
16244 #ifdef I_MEMORY
16245 #  include <memory.h>
16246 #endif
16247 #ifdef I_STDLIB
16248 #  include <stdlib.h>
16249 #endif
16250 #ifdef I_STRING
16251 #  include <string.h>
16252 #else
16253 #  include <strings.h>
16254 #endif
16255 #ifdef I_UNISTD
16256 #  include <unistd.h>  /* Needed for NetBSD */
16257 #endif
16258 int main()
16259 {
16260 char buf[128], abc[128];
16261 char *b;
16262 int len;
16263 int off;
16264 int align;
16265
16266 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16267    try to store the string in read-only memory. */
16268 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16269
16270 for (align = 7; align >= 0; align--) {
16271         for (len = 36; len; len--) {
16272                 b = buf+align;
16273                 memcpy(b, abc, len);
16274                 for (off = 1; off <= len; off++) {
16275                         memcpy(b+off, b, len);
16276                         memcpy(b, b+off, len);
16277                         if (memcmp(b, abc, len))
16278                                 exit(1);
16279                 }
16280         }
16281 }
16282 exit(0);
16283 }
16284 EOCP
16285                 set try
16286                 if eval $compile_ok; then
16287                         if $run ./try 2>/dev/null; then
16288                                 echo "Yes, it can."
16289                                 val="$define"
16290                         else
16291                                 echo "It can't, sorry."
16292                         fi
16293                 else
16294                         echo "(I can't compile the test program, so we'll assume not...)"
16295                 fi
16296                 ;;
16297         esac
16298         $rm_try
16299         ;;
16300 esac
16301 set d_safemcpy
16302 eval $setvar
16303
16304 : can memcmp be trusted to compare relative magnitude?
16305 val="$undef"
16306 case "$d_memcmp" in
16307 "$define")
16308         echo " "
16309         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16310         $cat >try.c <<EOCP
16311 #$i_memory I_MEMORY
16312 #$i_stdlib I_STDLIB
16313 #$i_string I_STRING
16314 #$i_unistd I_UNISTD
16315 EOCP
16316         $cat >>try.c <<'EOCP'
16317 #include <stdio.h>
16318 #ifdef I_MEMORY
16319 #  include <memory.h>
16320 #endif
16321 #ifdef I_STDLIB
16322 #  include <stdlib.h>
16323 #endif
16324 #ifdef I_STRING
16325 #  include <string.h>
16326 #else
16327 #  include <strings.h>
16328 #endif
16329 #ifdef I_UNISTD
16330 #  include <unistd.h>  /* Needed for NetBSD */
16331 #endif
16332 int main()
16333 {
16334 char a = -1;
16335 char b = 0;
16336 if ((a < b) && memcmp(&a, &b, 1) < 0)
16337         exit(1);
16338 exit(0);
16339 }
16340 EOCP
16341         set try
16342         if eval $compile_ok; then
16343                 if $run ./try 2>/dev/null; then
16344                         echo "Yes, it can."
16345                         val="$define"
16346                 else
16347                         echo "No, it can't (it uses signed chars)."
16348                 fi
16349         else
16350                 echo "(I can't compile the test program, so we'll assume not...)"
16351         fi
16352         ;;
16353 esac
16354 $rm_try
16355 set d_sanemcmp
16356 eval $setvar
16357
16358 : see if prototype for sbrk is available
16359 echo " "
16360 set d_sbrkproto sbrk $i_unistd unistd.h
16361 eval $hasproto
16362
16363 : see if select exists
16364 set select d_select
16365 eval $inlibc
16366
16367 : see if semctl exists
16368 set semctl d_semctl
16369 eval $inlibc
16370
16371 : see if semget exists
16372 set semget d_semget
16373 eval $inlibc
16374
16375 : see if semop exists
16376 set semop d_semop
16377 eval $inlibc
16378
16379 : see how much of the 'sem*(2)' library is present.
16380 h_sem=true
16381 echo " "
16382 case "$d_semctl$d_semget$d_semop" in
16383 *"$undef"*) h_sem=false;;
16384 esac
16385 case "$osname" in
16386 freebsd)
16387     case "`ipcs 2>&1`" in
16388     "SVID messages"*"not configured"*)
16389         echo "Your $osname does not have the sem*(2) configured." >&4
16390         h_sem=false
16391         val="$undef"
16392         set semctl d_semctl
16393         eval $setvar
16394         set semget d_semget
16395         eval $setvar
16396         set semop d_semop
16397         eval $setvar
16398         ;;
16399     esac
16400     ;;
16401 esac
16402 : we could also check for sys/ipc.h ...
16403 if $h_sem && $test `./findhdr sys/sem.h`; then
16404         echo "You have the full sem*(2) library." >&4
16405         val="$define"
16406 else
16407         echo "You don't have the full sem*(2) library." >&4
16408         val="$undef"
16409 fi
16410 set d_sem
16411 eval $setvar
16412
16413 : see whether sys/sem.h defines union semun
16414 echo " "
16415 $cat > try.c <<'END'
16416 #include <sys/types.h>
16417 #include <sys/ipc.h>
16418 #include <sys/sem.h>
16419 int main () { union semun semun; semun.buf = 0; }
16420 END
16421 set try
16422 if eval $compile; then
16423     echo "You have union semun in <sys/sem.h>." >&4
16424     val="$define"
16425 else
16426     echo "You do not have union semun in <sys/sem.h>." >&4
16427     val="$undef"
16428 fi
16429 $rm_try
16430 set d_union_semun
16431 eval $setvar
16432
16433 : see how to do semctl IPC_STAT
16434 case "$d_sem" in
16435 $define)
16436     echo " "
16437     $cat > tryh.h <<END
16438 #ifndef S_IRUSR
16439 #   ifdef S_IREAD
16440 #       define S_IRUSR S_IREAD
16441 #       define S_IWUSR S_IWRITE
16442 #       define S_IXUSR S_IEXEC
16443 #   else
16444 #       define S_IRUSR 0400
16445 #       define S_IWUSR 0200
16446 #       define S_IXUSR 0100
16447 #   endif
16448 #   define S_IRGRP (S_IRUSR>>3)
16449 #   define S_IWGRP (S_IWUSR>>3)
16450 #   define S_IXGRP (S_IXUSR>>3)
16451 #   define S_IROTH (S_IRUSR>>6)
16452 #   define S_IWOTH (S_IWUSR>>6)
16453 #   define S_IXOTH (S_IXUSR>>6)
16454 #endif
16455 #ifndef S_IRWXU
16456 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16457 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16458 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16459 #endif
16460 END
16461     : see whether semctl IPC_STAT can use union semun
16462     case "$d_semctl_semun" in
16463     '')
16464       val="$undef"
16465       $cat > try.c <<END
16466 #include <sys/types.h>
16467 #include <sys/ipc.h>
16468 #include <sys/sem.h>
16469 #include <sys/stat.h>
16470 #include <stdio.h>
16471 #include <errno.h>
16472 #include "tryh.h"
16473 #ifndef errno
16474 extern int errno;
16475 #endif
16476 #$d_union_semun HAS_UNION_SEMUN
16477 int main() {
16478     union semun
16479 #ifndef HAS_UNION_SEMUN
16480     {
16481         int val;
16482         struct semid_ds *buf;
16483         unsigned short *array;
16484     }
16485 #endif
16486     arg;
16487     int sem, st;
16488
16489 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16490     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16491     if (sem > -1) {
16492         struct semid_ds argbuf;
16493         arg.buf = &argbuf;
16494 #       ifdef IPC_STAT
16495         st = semctl(sem, 0, IPC_STAT, arg);
16496         if (st == 0)
16497             printf("semun\n");
16498         else
16499 #       endif /* IPC_STAT */
16500             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16501 #       ifdef IPC_RMID
16502         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16503 #       endif /* IPC_RMID */
16504             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16505     } else
16506 #endif /* IPC_PRIVATE && ... */
16507         printf("semget failed: errno = %d\n", errno);
16508   return 0;
16509 }
16510 END
16511       set try
16512       if eval $compile; then
16513           xxx=`$run ./try`
16514           case "$xxx" in
16515           semun) val="$define" ;;
16516           esac
16517       fi
16518       $rm_try
16519       set d_semctl_semun
16520       eval $setvar
16521       ;;
16522     esac
16523     case "$d_semctl_semun" in
16524     $define)
16525         echo "You can use union semun for semctl IPC_STAT." >&4
16526         also='also'
16527         ;;
16528     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16529         also=''
16530         ;;
16531     esac
16532
16533     : see whether semctl IPC_STAT can use struct semid_ds pointer
16534     case "$d_semctl_semid_ds" in
16535     '')
16536       val="$undef"
16537       $cat > try.c <<'END'
16538 #include <sys/types.h>
16539 #include <sys/ipc.h>
16540 #include <sys/sem.h>
16541 #include <sys/stat.h>
16542 #include "tryh.h"
16543 #include <stdio.h>
16544 #include <errno.h>
16545 #ifndef errno
16546 extern int errno;
16547 #endif
16548 int main() {
16549     struct semid_ds arg;
16550     int sem, st;
16551
16552 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16553     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16554     if (sem > -1) {
16555 #       ifdef IPC_STAT
16556         st = semctl(sem, 0, IPC_STAT, &arg);
16557         if (st == 0)
16558             printf("semid_ds\n");
16559         else
16560 #       endif /* IPC_STAT */
16561             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16562 #       ifdef IPC_RMID
16563         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16564 #       endif /* IPC_RMID */
16565             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16566     } else
16567 #endif /* IPC_PRIVATE && ... */
16568         printf("semget failed: errno = %d\n", errno);
16569
16570     return 0;
16571 }
16572 END
16573       set try
16574       if eval $compile; then
16575           xxx=`$run ./try`
16576           case "$xxx" in
16577           semid_ds) val="$define" ;;
16578           esac
16579       fi
16580       $rm_try
16581       set d_semctl_semid_ds
16582       eval $setvar
16583       ;;
16584     esac
16585     case "$d_semctl_semid_ds" in
16586     $define)
16587         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16588         ;;
16589     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16590         ;;
16591     esac
16592     ;;
16593 *)  val="$undef"
16594
16595     # We do not have the full sem*(2) library, so assume we can not
16596     # use either.
16597
16598     set d_semctl_semun
16599     eval $setvar
16600
16601     set d_semctl_semid_ds
16602     eval $setvar
16603     ;;
16604 esac
16605 $rm_try tryh.h
16606
16607 : see if sendmsg exists
16608 set sendmsg d_sendmsg
16609 eval $inlibc
16610
16611 : see if setegid exists
16612 set setegid d_setegid
16613 eval $inlibc
16614
16615 : see if seteuid exists
16616 set seteuid d_seteuid
16617 eval $inlibc
16618
16619 : see if setgrent exists
16620 set setgrent d_setgrent
16621 eval $inlibc
16622
16623 : see if setgrent_r exists
16624 set setgrent_r d_setgrent_r
16625 eval $inlibc
16626 case "$d_setgrent_r" in
16627 "$define")
16628         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16629         case "$d_setgrent_r_proto:$usethreads" in
16630         ":define")      d_setgrent_r_proto=define
16631                 set d_setgrent_r_proto setgrent_r $hdrs
16632                 eval $hasproto ;;
16633         *)      ;;
16634         esac
16635         case "$d_setgrent_r_proto" in
16636         define)
16637         case "$setgrent_r_proto" in
16638         ''|0) try='int setgrent_r(FILE**);'
16639         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16640         esac
16641         case "$setgrent_r_proto" in
16642         ''|0) try='void setgrent_r(FILE**);'
16643         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16644         esac
16645         case "$setgrent_r_proto" in
16646         ''|0)   d_setgrent_r=undef
16647                 setgrent_r_proto=0
16648                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16649         * )     case "$setgrent_r_proto" in
16650                 REENTRANT_PROTO*) ;;
16651                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16652                 esac
16653                 echo "Prototype: $try" ;;
16654         esac
16655         ;;
16656         *)      case "$usethreads" in
16657                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16658                 esac
16659                 d_setgrent_r=undef
16660                 setgrent_r_proto=0
16661                 ;;
16662         esac
16663         ;;
16664 *)      setgrent_r_proto=0
16665         ;;
16666 esac
16667
16668 : see if sethostent exists
16669 set sethostent d_sethent
16670 eval $inlibc
16671
16672 : see if sethostent_r exists
16673 set sethostent_r d_sethostent_r
16674 eval $inlibc
16675 case "$d_sethostent_r" in
16676 "$define")
16677         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16678         case "$d_sethostent_r_proto:$usethreads" in
16679         ":define")      d_sethostent_r_proto=define
16680                 set d_sethostent_r_proto sethostent_r $hdrs
16681                 eval $hasproto ;;
16682         *)      ;;
16683         esac
16684         case "$d_sethostent_r_proto" in
16685         define)
16686         case "$sethostent_r_proto" in
16687         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16688         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16689         esac
16690         case "$sethostent_r_proto" in
16691         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16692         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16693         esac
16694         case "$sethostent_r_proto" in
16695         ''|0)   d_sethostent_r=undef
16696                 sethostent_r_proto=0
16697                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16698         * )     case "$sethostent_r_proto" in
16699                 REENTRANT_PROTO*) ;;
16700                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16701                 esac
16702                 echo "Prototype: $try" ;;
16703         esac
16704         ;;
16705         *)      case "$usethreads" in
16706                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16707                 esac
16708                 d_sethostent_r=undef
16709                 sethostent_r_proto=0
16710                 ;;
16711         esac
16712         ;;
16713 *)      sethostent_r_proto=0
16714         ;;
16715 esac
16716
16717 : see if setitimer exists
16718 set setitimer d_setitimer
16719 eval $inlibc
16720
16721 : see if setlinebuf exists
16722 set setlinebuf d_setlinebuf
16723 eval $inlibc
16724
16725 : see if setlocale exists
16726 set setlocale d_setlocale
16727 eval $inlibc
16728
16729 : see if locale.h is available
16730 set locale.h i_locale
16731 eval $inhdr
16732
16733 : see if setlocale_r exists
16734 set setlocale_r d_setlocale_r
16735 eval $inlibc
16736 case "$d_setlocale_r" in
16737 "$define")
16738         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16739         case "$d_setlocale_r_proto:$usethreads" in
16740         ":define")      d_setlocale_r_proto=define
16741                 set d_setlocale_r_proto setlocale_r $hdrs
16742                 eval $hasproto ;;
16743         *)      ;;
16744         esac
16745         case "$d_setlocale_r_proto" in
16746         define)
16747         case "$setlocale_r_proto" in
16748         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16749         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16750         esac
16751         case "$setlocale_r_proto" in
16752         ''|0)   d_setlocale_r=undef
16753                 setlocale_r_proto=0
16754                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16755         * )     case "$setlocale_r_proto" in
16756                 REENTRANT_PROTO*) ;;
16757                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16758                 esac
16759                 echo "Prototype: $try" ;;
16760         esac
16761         ;;
16762         *)      case "$usethreads" in
16763                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16764                 esac
16765                 d_setlocale_r=undef
16766                 setlocale_r_proto=0
16767                 ;;
16768         esac
16769         ;;
16770 *)      setlocale_r_proto=0
16771         ;;
16772 esac
16773
16774 : see if setnetent exists
16775 set setnetent d_setnent
16776 eval $inlibc
16777
16778 : see if setnetent_r exists
16779 set setnetent_r d_setnetent_r
16780 eval $inlibc
16781 case "$d_setnetent_r" in
16782 "$define")
16783         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16784         case "$d_setnetent_r_proto:$usethreads" in
16785         ":define")      d_setnetent_r_proto=define
16786                 set d_setnetent_r_proto setnetent_r $hdrs
16787                 eval $hasproto ;;
16788         *)      ;;
16789         esac
16790         case "$d_setnetent_r_proto" in
16791         define)
16792         case "$setnetent_r_proto" in
16793         ''|0) try='int setnetent_r(int, struct netent_data*);'
16794         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16795         esac
16796         case "$setnetent_r_proto" in
16797         ''|0) try='void setnetent_r(int, struct netent_data*);'
16798         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16799         esac
16800         case "$setnetent_r_proto" in
16801         ''|0)   d_setnetent_r=undef
16802                 setnetent_r_proto=0
16803                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16804         * )     case "$setnetent_r_proto" in
16805                 REENTRANT_PROTO*) ;;
16806                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16807                 esac
16808                 echo "Prototype: $try" ;;
16809         esac
16810         ;;
16811         *)      case "$usethreads" in
16812                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16813                 esac
16814                 d_setnetent_r=undef
16815                 setnetent_r_proto=0
16816                 ;;
16817         esac
16818         ;;
16819 *)      setnetent_r_proto=0
16820         ;;
16821 esac
16822
16823 : see if setprotoent exists
16824 set setprotoent d_setpent
16825 eval $inlibc
16826
16827 : see if setpgid exists
16828 set setpgid d_setpgid
16829 eval $inlibc
16830
16831 : see if setpgrp2 exists
16832 set setpgrp2 d_setpgrp2
16833 eval $inlibc
16834
16835 : see if setpriority exists
16836 set setpriority d_setprior
16837 eval $inlibc
16838
16839 : see if setproctitle exists
16840 set setproctitle d_setproctitle
16841 eval $inlibc
16842
16843 : see if setprotoent_r exists
16844 set setprotoent_r d_setprotoent_r
16845 eval $inlibc
16846 case "$d_setprotoent_r" in
16847 "$define")
16848         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16849         case "$d_setprotoent_r_proto:$usethreads" in
16850         ":define")      d_setprotoent_r_proto=define
16851                 set d_setprotoent_r_proto setprotoent_r $hdrs
16852                 eval $hasproto ;;
16853         *)      ;;
16854         esac
16855         case "$d_setprotoent_r_proto" in
16856         define)
16857         case "$setprotoent_r_proto" in
16858         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16859         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16860         esac
16861         case "$setprotoent_r_proto" in
16862         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16863         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16864         esac
16865         case "$setprotoent_r_proto" in
16866         ''|0)   d_setprotoent_r=undef
16867                 setprotoent_r_proto=0
16868                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16869         * )     case "$setprotoent_r_proto" in
16870                 REENTRANT_PROTO*) ;;
16871                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16872                 esac
16873                 echo "Prototype: $try" ;;
16874         esac
16875         ;;
16876         *)      case "$usethreads" in
16877                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16878                 esac
16879                 d_setprotoent_r=undef
16880                 setprotoent_r_proto=0
16881                 ;;
16882         esac
16883         ;;
16884 *)      setprotoent_r_proto=0
16885         ;;
16886 esac
16887
16888 : see if setpwent exists
16889 set setpwent d_setpwent
16890 eval $inlibc
16891
16892 : see if setpwent_r exists
16893 set setpwent_r d_setpwent_r
16894 eval $inlibc
16895 case "$d_setpwent_r" in
16896 "$define")
16897         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16898         case "$d_setpwent_r_proto:$usethreads" in
16899         ":define")      d_setpwent_r_proto=define
16900                 set d_setpwent_r_proto setpwent_r $hdrs
16901                 eval $hasproto ;;
16902         *)      ;;
16903         esac
16904         case "$d_setpwent_r_proto" in
16905         define)
16906         case "$setpwent_r_proto" in
16907         ''|0) try='int setpwent_r(FILE**);'
16908         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16909         esac
16910         case "$setpwent_r_proto" in
16911         ''|0) try='void setpwent_r(FILE**);'
16912         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16913         esac
16914         case "$setpwent_r_proto" in
16915         ''|0)   d_setpwent_r=undef
16916                 setpwent_r_proto=0
16917                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16918         * )     case "$setpwent_r_proto" in
16919                 REENTRANT_PROTO*) ;;
16920                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16921                 esac
16922                 echo "Prototype: $try" ;;
16923         esac
16924         ;;
16925         *)      case "$usethreads" in
16926                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16927                 esac
16928                 d_setpwent_r=undef
16929                 setpwent_r_proto=0
16930                 ;;
16931         esac
16932         ;;
16933 *)      setpwent_r_proto=0
16934         ;;
16935 esac
16936
16937 : see if setregid exists
16938 set setregid d_setregid
16939 eval $inlibc
16940 set setresgid d_setresgid
16941 eval $inlibc
16942
16943 : see if setreuid exists
16944 set setreuid d_setreuid
16945 eval $inlibc
16946 set setresuid d_setresuid
16947 eval $inlibc
16948
16949 : see if setrgid exists
16950 set setrgid d_setrgid
16951 eval $inlibc
16952
16953 : see if setruid exists
16954 set setruid d_setruid
16955 eval $inlibc
16956
16957 : see if setservent exists
16958 set setservent d_setsent
16959 eval $inlibc
16960
16961 : see if setservent_r exists
16962 set setservent_r d_setservent_r
16963 eval $inlibc
16964 case "$d_setservent_r" in
16965 "$define")
16966         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16967         case "$d_setservent_r_proto:$usethreads" in
16968         ":define")      d_setservent_r_proto=define
16969                 set d_setservent_r_proto setservent_r $hdrs
16970                 eval $hasproto ;;
16971         *)      ;;
16972         esac
16973         case "$d_setservent_r_proto" in
16974         define)
16975         case "$setservent_r_proto" in
16976         ''|0) try='int setservent_r(int, struct servent_data*);'
16977         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16978         esac
16979         case "$setservent_r_proto" in
16980         ''|0) try='void setservent_r(int, struct servent_data*);'
16981         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16982         esac
16983         case "$setservent_r_proto" in
16984         ''|0)   d_setservent_r=undef
16985                 setservent_r_proto=0
16986                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16987         * )     case "$setservent_r_proto" in
16988                 REENTRANT_PROTO*) ;;
16989                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16990                 esac
16991                 echo "Prototype: $try" ;;
16992         esac
16993         ;;
16994         *)      case "$usethreads" in
16995                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16996                 esac
16997                 d_setservent_r=undef
16998                 setservent_r_proto=0
16999                 ;;
17000         esac
17001         ;;
17002 *)      setservent_r_proto=0
17003         ;;
17004 esac
17005
17006 : see if setsid exists
17007 set setsid d_setsid
17008 eval $inlibc
17009
17010 : see if setvbuf exists
17011 set setvbuf d_setvbuf
17012 eval $inlibc
17013
17014 : see if sfio.h is available
17015 set sfio.h i_sfio
17016 eval $inhdr
17017
17018 : see if sfio library is available
17019 case "$i_sfio" in
17020 $define)
17021         val=''
17022         set sfreserve val
17023         eval $inlibc
17024         ;;
17025 *)
17026         val="$undef"
17027         ;;
17028 esac
17029 : Ok, but do we want to use it.
17030 case "$val" in
17031 $define)
17032         case "$usesfio" in
17033         true|$define|[yY]*) dflt='y';;
17034         *) dflt='n';;
17035         esac
17036         echo "$package can use the sfio library, but it is experimental."
17037         case "$useperlio" in
17038         "$undef")
17039             echo "For sfio also the PerlIO abstraction layer is needed."
17040             echo "Earlier you said you wouldn't want that."
17041             ;;
17042         esac
17043         rp="You seem to have sfio available, do you want to try using it?"
17044         . ./myread
17045         case "$ans" in
17046         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
17047                 useperlio="$define"
17048                 val="$define"
17049                 ;;
17050         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
17051                 val="$undef"
17052                 ;;
17053         esac
17054         ;;
17055 *)      case "$usesfio" in
17056         true|$define|[yY]*)
17057                 echo "Sorry, cannot find sfio on this machine." >&4
17058                 echo "Ignoring your setting of usesfio=$usesfio." >&4
17059                 val="$undef"
17060                 ;;
17061         esac
17062         ;;
17063 esac
17064 set d_sfio
17065 eval $setvar
17066 case "$d_sfio" in
17067 $define) usesfio='true';;
17068 *) usesfio='false';;
17069 esac
17070 case "$d_sfio" in
17071 $define) ;;
17072 *)      : Remove sfio from list of libraries to use
17073         case "$libs" in
17074         *-lsfio*)
17075                 echo "Removing unneeded -lsfio from library list" >&4
17076                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
17077                 shift
17078                 libs="$*"
17079                 echo "libs = $libs" >&4
17080                 ;;
17081         esac
17082 ;;
17083 esac
17084
17085
17086 : see if shmctl exists
17087 set shmctl d_shmctl
17088 eval $inlibc
17089
17090 : see if shmget exists
17091 set shmget d_shmget
17092 eval $inlibc
17093
17094 : see if shmat exists
17095 set shmat d_shmat
17096 eval $inlibc
17097 : see what shmat returns
17098 case "$d_shmat" in
17099 "$define")
17100         $cat >shmat.c <<'END'
17101 #include <sys/shm.h>
17102 void *shmat();
17103 END
17104         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
17105                 shmattype='void *'
17106         else
17107                 shmattype='char *'
17108         fi
17109         echo "and it returns ($shmattype)." >&4
17110         : see if a prototype for shmat is available
17111         xxx=`./findhdr sys/shm.h`
17112         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
17113         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
17114                 val="$define"
17115         else
17116                 val="$undef"
17117         fi
17118         $rm -f shmat.[co]
17119         ;;
17120 *)
17121         val="$undef"
17122         ;;
17123 esac
17124 set d_shmatprototype
17125 eval $setvar
17126
17127 : see if shmdt exists
17128 set shmdt d_shmdt
17129 eval $inlibc
17130
17131 : see how much of the 'shm*(2)' library is present.
17132 h_shm=true
17133 echo " "
17134 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
17135 *"$undef"*) h_shm=false;;
17136 esac
17137 case "$osname" in
17138 freebsd)
17139     case "`ipcs 2>&1`" in
17140     "SVID shared memory"*"not configured"*)
17141         echo "Your $osname does not have the shm*(2) configured." >&4
17142         h_shm=false
17143         val="$undef"
17144         set shmctl d_shmctl
17145         evat $setvar
17146         set shmget d_shmget
17147         evat $setvar
17148         set shmat d_shmat
17149         evat $setvar
17150         set shmdt d_shmdt
17151         evat $setvar
17152         ;;
17153     esac
17154     ;;
17155 esac
17156 : we could also check for sys/ipc.h ...
17157 if $h_shm && $test `./findhdr sys/shm.h`; then
17158         echo "You have the full shm*(2) library." >&4
17159         val="$define"
17160 else
17161         echo "You don't have the full shm*(2) library." >&4
17162         val="$undef"
17163 fi
17164 set d_shm
17165 eval $setvar
17166
17167 : see if we have sigaction
17168 echo " "
17169 if set sigaction val -f d_sigaction; eval $csym; $val; then
17170         echo 'sigaction() found.' >&4
17171         $cat > try.c <<EOP
17172 #include <stdio.h>
17173 #include <sys/types.h>
17174 #include <signal.h>
17175 #$i_stdlib I_STDLIB
17176 #ifdef I_STDLIB
17177 #include <stdlib.h>
17178 #endif
17179 int main()
17180 {
17181     struct sigaction act, oact;
17182     act.sa_flags = 0;
17183     oact.sa_handler = 0;
17184     /* so that act and oact are used */
17185     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
17186 }
17187 EOP
17188         set try
17189         if eval $compile_ok; then
17190                 val="$define"
17191         else
17192                 echo "But you don't seem to have a useable struct sigaction." >&4
17193                 val="$undef"
17194         fi
17195 else
17196         echo 'sigaction NOT found.' >&4
17197         val="$undef"
17198 fi
17199 set d_sigaction; eval $setvar
17200 $rm_try
17201
17202 : see if this is a sunmath.h system
17203 set sunmath.h i_sunmath
17204 eval $inhdr
17205
17206 : see if signbit exists
17207 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
17208 $cat >try.c <<EOCP
17209 #$i_math I_MATH
17210 #$i_sunmath I_SUNMATH
17211 #ifdef I_MATH
17212 #  include <math.h>
17213 #endif
17214 #ifdef I_SUNMATH  /* Solaris special math library */
17215 #  include <sunmath.h>
17216 #endif
17217 #define NV $nvtype
17218 int main(int argc, char **argv)
17219 {
17220     NV x = 0.0;
17221     NV y = -0.0;
17222     if ((signbit(x) == 0) && (signbit(y) != 0))
17223         return 0;
17224     else
17225         return 1;
17226 }
17227 EOCP
17228 val="$undef"
17229 set try
17230 if eval $compile; then
17231     if $run ./try; then
17232         $echo "Yes." >&4
17233         val="$define"
17234     else
17235         $echo "Signbit seems to be available, but doesn't work as I expected."
17236         $echo "I won't use it." >&4
17237         val="$undef"
17238     fi
17239 else
17240     $echo "Nope." >&4
17241     dflt="$undef"
17242 fi
17243 set d_signbit
17244 eval $setvar
17245 $rm_try
17246
17247 : see if sigprocmask exists
17248 set sigprocmask d_sigprocmask
17249 eval $inlibc
17250
17251 : see if sigsetjmp exists
17252 echo " "
17253 case "$d_sigsetjmp" in
17254 '')
17255         $cat >try.c <<EOP
17256 #include <setjmp.h>
17257 #$i_stdlib I_STDLIB
17258 #ifdef I_STDLIB
17259 #include <stdlib.h>
17260 #endif
17261 sigjmp_buf env;
17262 int set = 1;
17263 int main()
17264 {
17265         if (sigsetjmp(env,1))
17266                 exit(set);
17267         set = 0;
17268         siglongjmp(env, 1);
17269         exit(1);
17270 }
17271 EOP
17272         set try
17273         if eval $compile; then
17274                 if $run ./try >/dev/null 2>&1; then
17275                         echo "POSIX sigsetjmp found." >&4
17276                         val="$define"
17277                 else
17278                         $cat >&4 <<EOM
17279 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17280 I'll ignore them.
17281 EOM
17282                         val="$undef"
17283                 fi
17284         else
17285                 echo "sigsetjmp not found." >&4
17286                 val="$undef"
17287         fi
17288         ;;
17289 *) val="$d_sigsetjmp"
17290         case "$d_sigsetjmp" in
17291         $define) echo "POSIX sigsetjmp found." >&4;;
17292         $undef) echo "sigsetjmp not found." >&4;;
17293         esac
17294         ;;
17295 esac
17296 set d_sigsetjmp
17297 eval $setvar
17298 $rm_try
17299
17300 : see if snprintf exists
17301 set snprintf d_snprintf
17302 eval $inlibc
17303
17304 : see if vsnprintf exists
17305 set vsnprintf d_vsnprintf
17306 eval $inlibc
17307
17308 case "$d_snprintf-$d_vsnprintf" in
17309 "$define-$define")
17310     $cat <<EOM
17311 Checking whether your snprintf() and vsnprintf() work okay...
17312 EOM
17313     $cat >try.c <<'EOCP'
17314 /* v?snprintf testing logic courtesy of Russ Allbery.
17315  * According to C99:
17316  * - if the buffer is too short it still must be \0-terminated
17317  * - if the buffer is too short the potentially required length
17318  *   must be returned and not -1
17319  * - if the buffer is NULL the potentially required length
17320  *   must be returned and not -1 or core dump
17321  */
17322 #include <stdio.h>
17323 #include <stdarg.h>
17324
17325 char buf[2];
17326
17327 int test (char *format, ...)
17328 {
17329     va_list args;
17330     int count;
17331
17332     va_start (args, format);
17333     count = vsnprintf (buf, sizeof buf, format, args);
17334     va_end (args);
17335     return count;
17336 }
17337
17338 int main ()
17339 {
17340     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17341              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17342 }
17343 EOCP
17344     set try
17345     if eval $compile; then
17346         `$run ./try`
17347         case "$?" in
17348         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17349         *) cat <<EOM >&4
17350 Your snprintf() and snprintf() don't seem to be working okay.
17351 EOM
17352            d_snprintf="$undef"
17353            d_vsnprintf="$undef"
17354            ;;
17355         esac
17356     else
17357         echo "(I can't seem to compile the test program--assuming they don't)"
17358         d_snprintf="$undef"
17359         d_vsnprintf="$undef"
17360     fi
17361     $rm_try
17362     ;;
17363 esac
17364
17365 : see if sockatmark exists
17366 set sockatmark d_sockatmark
17367 eval $inlibc
17368
17369 : see if prototype for sockatmark is available
17370 echo " "
17371 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17372 eval $hasproto
17373
17374 : see if socks5_init exists
17375 set socks5_init d_socks5_init
17376 eval $inlibc
17377
17378 : see if sprintf returns the length of the string in the buffer as per ANSI
17379 $echo "Checking whether sprintf returns the length of the string..." >&4
17380 $cat <<EOP >try.c
17381 #include <stdio.h>
17382 #$i_stdlib I_STDLIB
17383 #ifdef I_STDLIB
17384 #include <stdlib.h>
17385 #endif
17386 #$i_string I_STRING
17387 #ifdef I_STRING
17388 #  include <string.h>
17389 #else
17390 #  include <strings.h>
17391 #endif
17392 #$i_math I_MATH
17393 #ifdef I_MATH
17394 #include <math.h>
17395 #endif
17396
17397 char buffer[256];
17398
17399 int check (size_t expect, int test) {
17400   size_t got = strlen(buffer);
17401   if (expect == got)
17402     return 0;
17403
17404   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17405        test, buffer);
17406   exit (test);
17407 }
17408
17409 int main(int argc, char **argv) {
17410   int test = 0;
17411
17412   check(sprintf(buffer, ""), ++test);
17413   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17414   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17415
17416   return 0;
17417 }
17418 EOP
17419 set try
17420
17421 d_sprintf_returns_strlen="$undef"
17422 if eval $compile; then
17423     xxx="`$run ./try`"
17424     case "$?" in
17425         0) cat >&4 <<EOM
17426 sprintf returns the length of the string (as ANSI says it should)
17427 EOM
17428         d_sprintf_returns_strlen="$define"
17429         ;;
17430         *) cat >&4 <<EOM
17431 sprintf does not return the length of the string (how old is this system?)
17432 EOM
17433         d_sprintf_returns_strlen="$undef"
17434         ;;
17435     esac
17436 fi
17437 $rm_try
17438
17439 : see if srand48_r exists
17440 set srand48_r d_srand48_r
17441 eval $inlibc
17442 case "$d_srand48_r" in
17443 "$define")
17444         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17445         case "$d_srand48_r_proto:$usethreads" in
17446         ":define")      d_srand48_r_proto=define
17447                 set d_srand48_r_proto srand48_r $hdrs
17448                 eval $hasproto ;;
17449         *)      ;;
17450         esac
17451         case "$d_srand48_r_proto" in
17452         define)
17453         case "$srand48_r_proto" in
17454         ''|0) try='int srand48_r(long, struct drand48_data*);'
17455         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17456         esac
17457         case "$srand48_r_proto" in
17458         ''|0)   d_srand48_r=undef
17459                 srand48_r_proto=0
17460                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17461         * )     case "$srand48_r_proto" in
17462                 REENTRANT_PROTO*) ;;
17463                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17464                 esac
17465                 echo "Prototype: $try" ;;
17466         esac
17467         ;;
17468         *)      case "$usethreads" in
17469                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17470                 esac
17471                 d_srand48_r=undef
17472                 srand48_r_proto=0
17473                 ;;
17474         esac
17475         ;;
17476 *)      srand48_r_proto=0
17477         ;;
17478 esac
17479
17480 : see if srandom_r exists
17481 set srandom_r d_srandom_r
17482 eval $inlibc
17483 case "$d_srandom_r" in
17484 "$define")
17485         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17486         case "$d_srandom_r_proto:$usethreads" in
17487         ":define")      d_srandom_r_proto=define
17488                 set d_srandom_r_proto srandom_r $hdrs
17489                 eval $hasproto ;;
17490         *)      ;;
17491         esac
17492         case "$d_srandom_r_proto" in
17493         define)
17494         case "$srandom_r_proto" in
17495         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17496         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17497         esac
17498         case "$srandom_r_proto" in
17499         ''|0)   d_srandom_r=undef
17500                 srandom_r_proto=0
17501                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17502         * )     case "$srandom_r_proto" in
17503                 REENTRANT_PROTO*) ;;
17504                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17505                 esac
17506                 echo "Prototype: $try" ;;
17507         esac
17508         ;;
17509         *)      case "$usethreads" in
17510                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17511                 esac
17512                 d_srandom_r=undef
17513                 srandom_r_proto=0
17514                 ;;
17515         esac
17516         ;;
17517 *)      srandom_r_proto=0
17518         ;;
17519 esac
17520
17521 : see if prototype for setresgid is available
17522 echo " "
17523 set d_sresgproto setresgid $i_unistd unistd.h
17524 eval $hasproto
17525
17526 : see if prototype for setresuid is available
17527 echo " "
17528 set d_sresuproto setresuid $i_unistd unistd.h
17529 eval $hasproto
17530
17531 : see if sys/stat.h is available
17532 set sys/stat.h i_sysstat
17533 eval $inhdr
17534
17535 : see if stat knows about block sizes
17536 echo " "
17537 echo "Checking to see if your struct stat has st_blocks field..." >&4
17538 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17539 eval $hasfield
17540
17541 : see if this is a sys/vfs.h system
17542 set sys/vfs.h i_sysvfs
17543 eval $inhdr
17544
17545 : see if this is a sys/statfs.h system
17546 set sys/statfs.h i_sysstatfs
17547 eval $inhdr
17548
17549 : Check for statfs_s
17550 echo " "
17551 echo "Checking to see if your system supports struct statfs..." >&4
17552 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
17553 eval $hasstruct
17554 case "$d_statfs_s" in
17555 "$define")      echo "Yes, it does."   ;;
17556 *)              echo "No, it doesn't." ;;
17557 esac
17558
17559
17560 : see if struct statfs knows about f_flags
17561 case "$d_statfs_s" in
17562 define)
17563         echo " "
17564         echo "Checking to see if your struct statfs has f_flags field..." >&4
17565         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
17566         eval $hasfield
17567         ;;
17568 *)      val="$undef"
17569         set d_statfs_f_flags
17570         eval $setvar
17571         ;;
17572 esac
17573 case "$d_statfs_f_flags" in
17574 "$define")      echo "Yes, it does."   ;;
17575 *)              echo "No, it doesn't." ;;
17576 esac
17577
17578 : Check stream access
17579 $cat >&4 <<EOM
17580 Checking how to access stdio streams by file descriptor number...
17581 EOM
17582 case "$stdio_stream_array" in
17583 '')     $cat >try.c <<EOCP
17584 #include <stdio.h>
17585 int main() {
17586   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17587     printf("yes\n");
17588 }
17589 EOCP
17590         for s in _iob __iob __sF
17591         do
17592                 set try -DSTDIO_STREAM_ARRAY=$s
17593                 if eval $compile; then
17594                         case "`$run ./try`" in
17595                         yes)    stdio_stream_array=$s; break ;;
17596                         esac
17597                 fi
17598         done
17599         $rm_try
17600 esac
17601 case "$stdio_stream_array" in
17602 '')     $cat >&4 <<EOM
17603 I can't figure out how to access stdio streams by file descriptor number.
17604 EOM
17605         d_stdio_stream_array="$undef"
17606         ;;
17607 *)      $cat >&4 <<EOM
17608 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17609 EOM
17610         d_stdio_stream_array="$define"
17611         ;;
17612 esac
17613
17614 : see if strcoll exists
17615 set strcoll d_strcoll
17616 eval $inlibc
17617
17618 : check for structure copying
17619 echo " "
17620 echo "Checking to see if your C compiler can copy structs..." >&4
17621 $cat >try.c <<'EOCP'
17622 int main()
17623 {
17624         struct blurfl {
17625                 int dyick;
17626         } foo, bar;
17627
17628         foo = bar;
17629 }
17630 EOCP
17631 if $cc -c try.c >/dev/null 2>&1 ; then
17632         val="$define"
17633         echo "Yup, it can."
17634 else
17635         val="$undef"
17636         echo "Nope, it can't."
17637 fi
17638 set d_strctcpy
17639 eval $setvar
17640 $rm_try
17641
17642 : see if strerror and/or sys_errlist[] exist
17643 echo " "
17644 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17645     if set strerror val -f d_strerror; eval $csym; $val; then
17646                 echo 'strerror() found.' >&4
17647                 d_strerror="$define"
17648                 d_strerrm='strerror(e)'
17649                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17650                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17651                         d_syserrlst="$define"
17652                 else
17653                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17654                         d_syserrlst="$undef"
17655                 fi
17656     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17657                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17658                 echo 'strerror() found in string header.' >&4
17659                 d_strerror="$define"
17660                 d_strerrm='strerror(e)'
17661                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17662                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17663                                 d_syserrlst="$define"
17664                 else
17665                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17666                         d_syserrlst="$undef"
17667                 fi
17668     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17669                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17670                 d_strerror="$undef"
17671                 d_syserrlst="$define"
17672                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17673     else
17674                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17675                 d_strerror="$undef"
17676                 d_syserrlst="$undef"
17677                 d_strerrm='"unknown"'
17678     fi
17679 fi
17680
17681 : see if strerror_r exists
17682 set strerror_r d_strerror_r
17683 eval $inlibc
17684 case "$d_strerror_r" in
17685 "$define")
17686         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17687         case "$d_strerror_r_proto:$usethreads" in
17688         ":define")      d_strerror_r_proto=define
17689                 set d_strerror_r_proto strerror_r $hdrs
17690                 eval $hasproto ;;
17691         *)      ;;
17692         esac
17693         case "$d_strerror_r_proto" in
17694         define)
17695         case "$strerror_r_proto" in
17696         ''|0) try='int strerror_r(int, char*, size_t);'
17697         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17698         esac
17699         case "$strerror_r_proto" in
17700         ''|0) try='int strerror_r(int, char*, int);'
17701         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17702         esac
17703         case "$strerror_r_proto" in
17704         ''|0) try='char* strerror_r(int, char*, size_t);'
17705         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17706         esac
17707         case "$strerror_r_proto" in
17708         ''|0)   d_strerror_r=undef
17709                 strerror_r_proto=0
17710                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17711         * )     case "$strerror_r_proto" in
17712                 REENTRANT_PROTO*) ;;
17713                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17714                 esac
17715                 echo "Prototype: $try" ;;
17716         esac
17717         ;;
17718         *)      case "$usethreads" in
17719                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17720                 esac
17721                 d_strerror_r=undef
17722                 strerror_r_proto=0
17723                 ;;
17724         esac
17725         ;;
17726 *)      strerror_r_proto=0
17727         ;;
17728 esac
17729
17730 : see if strftime exists
17731 set strftime d_strftime
17732 eval $inlibc
17733
17734 : see if strlcat exists
17735 set strlcat d_strlcat
17736 eval $inlibc
17737
17738 : see if strlcpy exists
17739 set strlcpy d_strlcpy
17740 eval $inlibc
17741
17742 : see if strtod exists
17743 set strtod d_strtod
17744 eval $inlibc
17745
17746 : see if strtol exists
17747 set strtol d_strtol
17748 eval $inlibc
17749
17750 : see if strtold exists
17751 set strtold d_strtold
17752 eval $inlibc
17753
17754 : see if strtoll exists
17755 set strtoll d_strtoll
17756 eval $inlibc
17757
17758 case "$d_longlong-$d_strtoll" in
17759 "$define-$define")
17760         $cat <<EOM
17761 Checking whether your strtoll() works okay...
17762 EOM
17763         $cat >try.c <<'EOCP'
17764 #include <errno.h>
17765 #ifdef __hpux
17766 #define strtoll __strtoll
17767 #endif
17768 #ifdef __EMX__
17769 #define strtoll _strtoll
17770 #endif
17771 #include <stdio.h>
17772 extern long long int strtoll(char *s, char **, int);
17773 static int bad = 0;
17774 int check(char *s, long long ell, int een) {
17775         long long gll;
17776         errno = 0;
17777         gll = strtoll(s, 0, 10);
17778         if (!((gll == ell) && (errno == een)))
17779                 bad++;
17780 }
17781 int main() {
17782         check(" 1",                                      1LL, 0);
17783         check(" 0",                                      0LL, 0);
17784         check("-1",                                     -1LL, 0);
17785         check("-9223372036854775808", -9223372036854775808LL, 0);
17786         check("-9223372036854775808", -9223372036854775808LL, 0);
17787         check(" 9223372036854775807",  9223372036854775807LL, 0);
17788         check("-9223372036854775808", -9223372036854775808LL, 0);
17789         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17790         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17791         if (!bad)
17792                 printf("ok\n");
17793 }
17794 EOCP
17795         set try
17796         if eval $compile; then
17797                 yyy=`$run ./try`
17798                 case "$yyy" in
17799                 ok) echo "Your strtoll() seems to be working okay." ;;
17800                 *) cat <<EOM >&4
17801 Your strtoll() doesn't seem to be working okay.
17802 EOM
17803                    d_strtoll="$undef"
17804                    ;;
17805                 esac
17806         else
17807                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17808                 d_strtoll="$undef"
17809         fi
17810         ;;
17811 esac
17812
17813 : see if strtoq exists
17814 set strtoq d_strtoq
17815 eval $inlibc
17816
17817 : see if strtoul exists
17818 set strtoul d_strtoul
17819 eval $inlibc
17820
17821 case "$d_strtoul" in
17822 "$define")
17823         $cat <<EOM
17824 Checking whether your strtoul() works okay...
17825 EOM
17826         $cat >try.c <<'EOCP'
17827 #include <errno.h>
17828 #include <stdio.h>
17829 extern unsigned long int strtoul(char *s, char **, int);
17830 static int bad = 0;
17831 void check(char *s, unsigned long eul, int een) {
17832         unsigned long gul;
17833         errno = 0;
17834         gul = strtoul(s, 0, 10);
17835         if (!((gul == eul) && (errno == een)))
17836                 bad++;
17837 }
17838 int main() {
17839         check(" 1", 1L, 0);
17840         check(" 0", 0L, 0);
17841 EOCP
17842         case "$longsize" in
17843         8)
17844             $cat >>try.c <<'EOCP'
17845         check("18446744073709551615", 18446744073709551615UL, 0);
17846         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17847 #if 0 /* strtoul() for /^-/ strings is undefined. */
17848         check("-1", 18446744073709551615UL, 0);
17849         check("-18446744073709551614", 2, 0);
17850         check("-18446744073709551615", 1, 0);
17851         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17852         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17853 #endif
17854 EOCP
17855                 ;;
17856         4)
17857                     $cat >>try.c <<'EOCP'
17858         check("4294967295", 4294967295UL, 0);
17859         check("4294967296", 4294967295UL, ERANGE);
17860 #if 0 /* strtoul() for /^-/ strings is undefined. */
17861         check("-1", 4294967295UL, 0);
17862         check("-4294967294", 2, 0);
17863         check("-4294967295", 1, 0);
17864         check("-4294967296", 4294967295UL, ERANGE);
17865         check("-4294967297", 4294967295UL, ERANGE);
17866 #endif
17867 EOCP
17868                 ;;
17869         *)
17870 : Should we write these tests to be more portable by sprintf-ing
17871 : ~0 and then manipulating that char string as input for strtol?
17872                 ;;
17873         esac
17874         $cat >>try.c <<'EOCP'
17875         if (!bad)
17876                 printf("ok\n");
17877         return 0;
17878 }
17879 EOCP
17880         set try
17881         if eval $compile; then
17882                 case "`$run ./try`" in
17883                 ok) echo "Your strtoul() seems to be working okay." ;;
17884                 *) cat <<EOM >&4
17885 Your strtoul() doesn't seem to be working okay.
17886 EOM
17887                    d_strtoul="$undef"
17888                    ;;
17889                 esac
17890         else
17891                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17892                 d_strtoul="$undef"
17893         fi
17894         ;;
17895 esac
17896
17897 : see if strtoull exists
17898 set strtoull d_strtoull
17899 eval $inlibc
17900
17901 case "$d_longlong-$d_strtoull" in
17902 "$define-$define")
17903         $cat <<EOM
17904 Checking whether your strtoull() works okay...
17905 EOM
17906         $cat >try.c <<'EOCP'
17907 #include <errno.h>
17908 #ifdef __hpux
17909 #define strtoull __strtoull
17910 #endif
17911 #include <stdio.h>
17912 extern unsigned long long int strtoull(char *s, char **, int);
17913 static int bad = 0;
17914 int check(char *s, long long eull, int een) {
17915         long long gull;
17916         errno = 0;
17917         gull = strtoull(s, 0, 10);
17918         if (!((gull == eull) && (errno == een)))
17919                 bad++;
17920 }
17921 int main() {
17922         check(" 1",                                        1LL, 0);
17923         check(" 0",                                        0LL, 0);
17924         check("18446744073709551615",  18446744073709551615ULL, 0);
17925         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17926 #if 0 /* strtoull() for /^-/ strings is undefined. */
17927         check("-1",                    18446744073709551615ULL, 0);
17928         check("-18446744073709551614",                     2LL, 0);
17929         check("-18446744073709551615",                     1LL, 0);
17930         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17931         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17932 #endif
17933         if (!bad)
17934                 printf("ok\n");
17935 }
17936 EOCP
17937         set try
17938         if eval $compile; then
17939                 case "`$run ./try`" in
17940                 ok) echo "Your strtoull() seems to be working okay." ;;
17941                 *) cat <<EOM >&4
17942 Your strtoull() doesn't seem to be working okay.
17943 EOM
17944                    d_strtoull="$undef"
17945                    ;;
17946                 esac
17947         else
17948                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17949                 d_strtoull="$undef"
17950         fi
17951         ;;
17952 esac
17953
17954 : see if strtouq exists
17955 set strtouq d_strtouq
17956 eval $inlibc
17957
17958 case "$d_strtouq" in
17959 "$define")
17960         $cat <<EOM
17961 Checking whether your strtouq() works okay...
17962 EOM
17963         $cat >try.c <<'EOCP'
17964 #include <errno.h>
17965 #include <stdio.h>
17966 extern unsigned long long int strtouq(char *s, char **, int);
17967 static int bad = 0;
17968 void check(char *s, unsigned long long eull, int een) {
17969         unsigned long long gull;
17970         errno = 0;
17971         gull = strtouq(s, 0, 10);
17972         if (!((gull == eull) && (errno == een)))
17973                 bad++;
17974 }
17975 int main() {
17976         check(" 1",                                        1LL, 0);
17977         check(" 0",                                        0LL, 0);
17978         check("18446744073709551615",  18446744073709551615ULL, 0);
17979         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17980 #if 0 /* strtouq() for /^-/ strings is undefined. */
17981         check("-1",                    18446744073709551615ULL, 0);
17982         check("-18446744073709551614",                     2LL, 0);
17983         check("-18446744073709551615",                     1LL, 0);
17984         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17985         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17986 #endif
17987         if (!bad)
17988                 printf("ok\n");
17989         return 0;
17990 }
17991 EOCP
17992         set try
17993         if eval $compile; then
17994                 case "`$run ./try`" in
17995                 ok) echo "Your strtouq() seems to be working okay." ;;
17996                 *) cat <<EOM >&4
17997 Your strtouq() doesn't seem to be working okay.
17998 EOM
17999                    d_strtouq="$undef"
18000                    ;;
18001                 esac
18002         else
18003                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18004                 d_strtouq="$undef"
18005         fi
18006         ;;
18007 esac
18008
18009 : see if strxfrm exists
18010 set strxfrm d_strxfrm
18011 eval $inlibc
18012
18013 : see if symlink exists
18014 set symlink d_symlink
18015 eval $inlibc
18016
18017 : see if syscall exists
18018 set syscall d_syscall
18019 eval $inlibc
18020
18021 : see if prototype for syscall is available
18022 echo " "
18023 set d_syscallproto syscall $i_unistd unistd.h
18024 eval $hasproto
18025
18026 : see if sysconf exists
18027 set sysconf d_sysconf
18028 eval $inlibc
18029
18030 : see if system exists
18031 set system d_system
18032 eval $inlibc
18033
18034 : see if tcgetpgrp exists
18035 set tcgetpgrp d_tcgetpgrp
18036 eval $inlibc
18037
18038 : see if tcsetpgrp exists
18039 set tcsetpgrp d_tcsetpgrp
18040 eval $inlibc
18041
18042 : see if prototype for telldir is available
18043 echo " "
18044 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
18045 eval $hasproto
18046
18047 : see if time exists
18048 echo " "
18049 if test "X$d_time" = X -o X"$timetype" = X; then
18050     if set time val -f d_time; eval $csym; $val; then
18051                 echo 'time() found.' >&4
18052                 val="$define"
18053                 rp="What is the type returned by time() on this system?"
18054                 set time_t timetype long stdio.h sys/types.h
18055                 eval $typedef_ask
18056     else
18057                 echo 'time() not found, hope that will do.' >&4
18058                 val="$undef"
18059                 timetype='int';
18060     fi
18061     set d_time
18062     eval $setvar
18063 fi
18064
18065 : see if this is a sys/times.h system
18066 set sys/times.h i_systimes
18067 eval $inhdr
18068
18069 : see if times exists
18070 echo " "
18071 if set times val -f d_times; eval $csym; $val; then
18072         echo 'times() found.' >&4
18073         d_times="$define"
18074         inc=''
18075         case "$i_systimes" in
18076         "$define") inc='sys/times.h';;
18077         esac
18078         rp="What is the type returned by times() on this system?"
18079         set clock_t clocktype long stdio.h sys/types.h $inc
18080         eval $typedef_ask
18081 else
18082         echo 'times() NOT found, hope that will do.' >&4
18083         d_times="$undef"
18084         clocktype='int'
18085 fi
18086
18087 : see if tmpnam_r exists
18088 set tmpnam_r d_tmpnam_r
18089 eval $inlibc
18090 case "$d_tmpnam_r" in
18091 "$define")
18092         hdrs="$i_systypes sys/types.h define stdio.h "
18093         case "$d_tmpnam_r_proto:$usethreads" in
18094         ":define")      d_tmpnam_r_proto=define
18095                 set d_tmpnam_r_proto tmpnam_r $hdrs
18096                 eval $hasproto ;;
18097         *)      ;;
18098         esac
18099         case "$d_tmpnam_r_proto" in
18100         define)
18101         case "$tmpnam_r_proto" in
18102         ''|0) try='char* tmpnam_r(char*);'
18103         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
18104         esac
18105         case "$tmpnam_r_proto" in
18106         ''|0)   d_tmpnam_r=undef
18107                 tmpnam_r_proto=0
18108                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
18109         * )     case "$tmpnam_r_proto" in
18110                 REENTRANT_PROTO*) ;;
18111                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
18112                 esac
18113                 echo "Prototype: $try" ;;
18114         esac
18115         ;;
18116         *)      case "$usethreads" in
18117                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
18118                 esac
18119                 d_tmpnam_r=undef
18120                 tmpnam_r_proto=0
18121                 ;;
18122         esac
18123         ;;
18124 *)      tmpnam_r_proto=0
18125         ;;
18126 esac
18127
18128 : see if truncate exists
18129 set truncate d_truncate
18130 eval $inlibc
18131
18132 : see if ttyname_r exists
18133 set ttyname_r d_ttyname_r
18134 eval $inlibc
18135 case "$d_ttyname_r" in
18136 "$define")
18137         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
18138         case "$d_ttyname_r_proto:$usethreads" in
18139         ":define")      d_ttyname_r_proto=define
18140                 set d_ttyname_r_proto ttyname_r $hdrs
18141                 eval $hasproto ;;
18142         *)      ;;
18143         esac
18144         case "$d_ttyname_r_proto" in
18145         define)
18146         case "$ttyname_r_proto" in
18147         ''|0) try='int ttyname_r(int, char*, size_t);'
18148         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
18149         esac
18150         case "$ttyname_r_proto" in
18151         ''|0) try='int ttyname_r(int, char*, int);'
18152         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
18153         esac
18154         case "$ttyname_r_proto" in
18155         ''|0) try='char* ttyname_r(int, char*, int);'
18156         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
18157         esac
18158         case "$ttyname_r_proto" in
18159         ''|0)   d_ttyname_r=undef
18160                 ttyname_r_proto=0
18161                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
18162         * )     case "$ttyname_r_proto" in
18163                 REENTRANT_PROTO*) ;;
18164                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
18165                 esac
18166                 echo "Prototype: $try" ;;
18167         esac
18168         ;;
18169         *)      case "$usethreads" in
18170                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
18171                 esac
18172                 d_ttyname_r=undef
18173                 ttyname_r_proto=0
18174                 ;;
18175         esac
18176         ;;
18177 *)      ttyname_r_proto=0
18178         ;;
18179 esac
18180
18181 : see if tzname[] exists
18182 echo " "
18183 if set tzname val -a d_tzname; eval $csym; $val; then
18184         val="$define"
18185         echo 'tzname[] found.' >&4
18186 else
18187         val="$undef"
18188         echo 'tzname[] NOT found.' >&4
18189 fi
18190 set d_tzname
18191 eval $setvar
18192
18193 : Check if is a multiplatform env
18194 case "$osname" in
18195 next|rhapsody|darwin) multiarch="$define" ;;
18196 esac
18197 case "$multiarch" in
18198 ''|[nN]*) multiarch="$undef" ;;
18199 esac
18200
18201 : check for ordering of bytes in a UV
18202 echo " "
18203 case "$usecrosscompile$multiarch" in
18204 *$define*)
18205         $cat <<EOM
18206 You seem to be either cross-compiling or doing a multiarchitecture build,
18207 skipping the byteorder check.
18208
18209 EOM
18210         byteorder='ffff'
18211         ;;
18212 *)
18213         case "$byteorder" in
18214         '')
18215                 $cat <<'EOM'
18216 In the following, larger digits indicate more significance.  A big-endian
18217 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
18218 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
18219 machines may have weird orders like 3412.  A Cray will report 87654321,
18220 an Alpha will report 12345678. If the test program works the default is
18221 probably right.
18222 I'm now running the test program...
18223 EOM
18224                 $cat >try.c <<EOCP
18225 #include <stdio.h>
18226 #$i_stdlib I_STDLIB
18227 #ifdef I_STDLIB
18228 #include <stdlib.h>
18229 #endif
18230 #include <sys/types.h>
18231 typedef $uvtype UV;
18232 int main()
18233 {
18234         int i;
18235         union {
18236                 UV l;
18237                 char c[$uvsize];
18238         } u;
18239
18240         if ($uvsize > 4)
18241                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18242         else
18243                 u.l = (UV)0x04030201;
18244         for (i = 0; i < $uvsize; i++)
18245                 printf("%c", u.c[i]+'0');
18246         printf("\n");
18247         exit(0);
18248 }
18249 EOCP
18250                 xxx_prompt=y
18251                 set try
18252                 if eval $compile && $run ./try > /dev/null; then
18253                         dflt=`$run ./try`
18254                         case "$dflt" in
18255                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18256                                 echo "(The test program ran ok.)"
18257                                 echo "byteorder=$dflt"
18258                                 xxx_prompt=n
18259                         ;;
18260                         ????|????????) echo "(The test program ran ok.)" ;;
18261                         *) echo "(The test program didn't run right for some reason.)" ;;
18262                         esac
18263                 else
18264                         dflt='4321'
18265                         cat <<'EOM'
18266 (I can't seem to compile the test program.  Guessing big-endian...)
18267 EOM
18268                 fi
18269                 case "$xxx_prompt" in
18270                 y)
18271                         rp="What is the order of bytes in $uvtype?"
18272                         . ./myread
18273                         byteorder="$ans"
18274                         ;;
18275                 *)      byteorder=$dflt
18276                         ;;
18277                 esac
18278                 ;;
18279         esac
18280         $rm_try
18281         ;;
18282 esac
18283
18284 : Checking 32bit aligndness
18285 $cat <<EOM
18286
18287 Checking to see whether you can access character data unalignedly...
18288 EOM
18289 case "$d_u32align" in
18290 '')   $cat >try.c <<EOCP
18291 #include <stdio.h>
18292 #$i_stdlib I_STDLIB
18293 #ifdef I_STDLIB
18294 #include <stdlib.h>
18295 #endif
18296 #define U32 $u32type
18297 #define BYTEORDER 0x$byteorder
18298 #define U8 $u8type
18299 #include <signal.h>
18300 #ifdef SIGBUS
18301 $signal_t bletch(int s) { exit(4); }
18302 #endif
18303 int main() {
18304 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18305     U8 buf[8];
18306     U32 *up;
18307     int i;
18308
18309     if (sizeof(U32) != 4) {
18310         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18311         exit(1);
18312     }
18313
18314     fflush(stdout);
18315
18316 #ifdef SIGBUS
18317     signal(SIGBUS, bletch);
18318 #endif
18319
18320     buf[0] = 0;
18321     buf[1] = 0;
18322     buf[2] = 0;
18323     buf[3] = 1;
18324     buf[4] = 0;
18325     buf[5] = 0;
18326     buf[6] = 0;
18327     buf[7] = 1;
18328
18329     for (i = 0; i < 4; i++) {
18330         up = (U32*)(buf + i);
18331         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18332                (*up == 1 << (8*(3-i)))  /* little-endian */
18333               )
18334            )
18335         {
18336             printf("read failed (%x)\n", *up);
18337             exit(2);
18338         }
18339     }
18340
18341     /* write test */
18342     for (i = 0; i < 4; i++) {
18343         up = (U32*)(buf + i);
18344         *up = 0xBeef;
18345         if (*up != 0xBeef) {
18346             printf("write failed (%x)\n", *up);
18347             exit(3);
18348         }
18349     }
18350
18351     exit(0);
18352 #else
18353     printf("1\n");
18354     exit(1);
18355 #endif
18356     return 0;
18357 }
18358 EOCP
18359 set try
18360 if eval $compile_ok; then
18361         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18362         $run ./try 2>&1 >/dev/null
18363         case "$?" in
18364         0)      cat >&4 <<EOM
18365 You can access character data pretty unalignedly.
18366 EOM
18367                 d_u32align="$undef"
18368                 ;;
18369         *)      cat >&4 <<EOM
18370 It seems that you must access character data in an aligned manner.
18371 EOM
18372                 d_u32align="$define"
18373                 ;;
18374         esac
18375 else
18376         rp='Can you access character data at unaligned addresses?'
18377         dflt='n'
18378         . ./myread
18379         case "$ans" in
18380         [yY]*)  d_u32align="$undef"  ;;
18381         *)      d_u32align="$define" ;;
18382         esac
18383 fi
18384 $rm_try
18385 ;;
18386 esac
18387
18388 : see if ualarm exists
18389 set ualarm d_ualarm
18390 eval $inlibc
18391
18392 : see if umask exists
18393 set umask d_umask
18394 eval $inlibc
18395
18396 : see if unordered exists
18397 set unordered d_unordered
18398 eval $inlibc
18399
18400 : see if unsetenv exists
18401 set unsetenv d_unsetenv
18402 eval $inlibc
18403
18404 : see if usleep exists
18405 set usleep d_usleep
18406 eval $inlibc
18407
18408 : see if prototype for usleep is available
18409 echo " "
18410 set d_usleepproto usleep $i_unistd unistd.h
18411 eval $hasproto
18412
18413 : see if ustat exists
18414 set ustat d_ustat
18415 eval $inlibc
18416
18417 : see if closedir exists
18418 set closedir d_closedir
18419 eval $inlibc
18420
18421 case "$d_closedir" in
18422 "$define")
18423         echo " "
18424         echo "Checking whether closedir() returns a status..." >&4
18425         cat > try.c <<EOM
18426 #$i_dirent I_DIRENT             /**/
18427 #$i_sysdir I_SYS_DIR            /**/
18428 #$i_sysndir I_SYS_NDIR          /**/
18429 #$i_systypes I_SYS_TYPES        /**/
18430
18431 #if defined(I_SYS_TYPES)
18432 #include <sys/types.h>
18433 #endif
18434 #if defined(I_DIRENT)
18435 #include <dirent.h>
18436 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18437 #include <sys/dir.h>
18438 #endif
18439 #else
18440 #ifdef I_SYS_NDIR
18441 #include <sys/ndir.h>
18442 #else
18443 #ifdef I_SYS_DIR
18444 #ifdef hp9000s500
18445 #include <ndir.h>       /* may be wrong in the future */
18446 #else
18447 #include <sys/dir.h>
18448 #endif
18449 #endif
18450 #endif
18451 #endif
18452 int main() { return closedir(opendir(".")); }
18453 EOM
18454         set try
18455         if eval $compile_ok; then
18456                 if $run ./try > /dev/null 2>&1 ; then
18457                         echo "Yes, it does."
18458                         val="$undef"
18459                 else
18460                         echo "No, it doesn't."
18461                         val="$define"
18462                 fi
18463         else
18464                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18465                 val="$define"
18466         fi
18467         ;;
18468 *)
18469         val="$undef";
18470         ;;
18471 esac
18472 set d_void_closedir
18473 eval $setvar
18474 $rm_try
18475
18476 : see if there is a wait4
18477 set wait4 d_wait4
18478 eval $inlibc
18479
18480 : see if waitpid exists
18481 set waitpid d_waitpid
18482 eval $inlibc
18483
18484 : see if wcstombs exists
18485 set wcstombs d_wcstombs
18486 eval $inlibc
18487
18488 : see if wctomb exists
18489 set wctomb d_wctomb
18490 eval $inlibc
18491
18492 : see if writev exists
18493 set writev d_writev
18494 eval $inlibc
18495
18496 : preserve RCS keywords in files with variable substitution, grrr
18497 Date='$Date'
18498 Id='$Id'
18499 Log='$Log'
18500 RCSfile='$RCSfile'
18501 Revision='$Revision'
18502
18503 : check for alignment requirements
18504 echo " "
18505 case "$usecrosscompile$multiarch" in
18506 *$define*)
18507         $cat <<EOM
18508 You seem to be either cross-compiling or doing a multiarchitecture build,
18509 skipping the memory alignment check.
18510
18511 EOM
18512         case "$alignbytes" in
18513         '') alignbytes=8 ;;
18514         esac
18515         ;;
18516 *)
18517         case "$alignbytes" in
18518         '') echo "Checking alignment constraints..." >&4
18519                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18520                         $cat >try.c <<'EOCP'
18521 typedef long double NV;
18522 EOCP
18523                 else
18524                         $cat >try.c <<'EOCP'
18525 typedef double NV;
18526 EOCP
18527                 fi
18528                 $cat >>try.c <<'EOCP'
18529 #include <stdio.h>
18530 struct foobar {
18531         char foo;
18532         NV bar;
18533 } try_algn;
18534 int main()
18535 {
18536     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18537     return(0);
18538 }
18539 EOCP
18540                 set try
18541                 if eval $compile_ok; then
18542                         dflt=`$run ./try`
18543                 else
18544                         dflt='8'
18545                         echo "(I can't seem to compile the test program...)"
18546                 fi
18547                 ;;
18548         *) dflt="$alignbytes"
18549                 ;;
18550         esac
18551         rp="Doubles must be aligned on a how-many-byte boundary?"
18552         . ./myread
18553         alignbytes="$ans"
18554         $rm_try
18555         ;;
18556 esac
18557
18558
18559 : set the base revision
18560 baserev=5.0
18561
18562 : how do we concatenate cpp tokens here?
18563 echo " "
18564 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18565 $cat >cpp_stuff.c <<'EOCP'
18566 #define RCAT(a,b)a/**/b
18567 #define ACAT(a,b)a ## b
18568 RCAT(Rei,ser)
18569 ACAT(Cir,cus)
18570 EOCP
18571 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18572 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18573         echo "Oh!  Smells like ANSI's been here." >&4
18574         echo "We can catify or stringify, separately or together!"
18575         cpp_stuff=42
18576 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18577         echo "Ah, yes!  The good old days!" >&4
18578         echo "However, in the good old days we don't know how to stringify and"
18579         echo "catify at the same time."
18580         cpp_stuff=1
18581 else
18582         $cat >&4 <<EOM
18583 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18584 You're going to have to edit the values of CAT[2-5] in config.h...
18585 EOM
18586         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18587 fi
18588 $rm -f cpp_stuff.*
18589
18590 : see if this is a db.h system
18591 set db.h i_db
18592 eval $inhdr
18593
18594 case "$i_db" in
18595 $define)
18596         : Check db version.
18597         echo " "
18598         echo "Checking Berkeley DB version ..." >&4
18599         $cat >try.c <<EOCP
18600 #$d_const HASCONST
18601 #ifndef HASCONST
18602 #define const
18603 #endif
18604 #include <sys/types.h>
18605 #include <stdio.h>
18606 #$i_stdlib I_STDLIB
18607 #ifdef I_STDLIB
18608 #include <stdlib.h>
18609 #endif
18610 #include <db.h>
18611 int main(int argc, char *argv[])
18612 {
18613 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18614     int Major, Minor, Patch ;
18615     unsigned long Version ;
18616     (void)db_version(&Major, &Minor, &Patch) ;
18617     if (argc == 2) {
18618         printf("%d %d %d %d %d %d\n",
18619                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18620                Major, Minor, Patch);
18621         exit(0);
18622     }
18623     printf("You have Berkeley DB Version 2 or greater.\n");
18624
18625     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18626                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18627     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18628                 Major, Minor, Patch) ;
18629
18630     /* check that db.h & libdb are compatible */
18631     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18632         printf("db.h and libdb are incompatible.\n") ;
18633         exit(3);
18634     }
18635
18636     printf("db.h and libdb are compatible.\n") ;
18637
18638     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18639                 + DB_VERSION_PATCH ;
18640
18641     /* needs to be >= 2.3.4 */
18642     if (Version < 2003004) {
18643     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18644         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18645         exit(2);
18646     }
18647
18648     exit(0);
18649 #else
18650 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18651     if (argc == 2) {
18652         printf("1 0 0\n");
18653         exit(0);
18654     }
18655     printf("You have Berkeley DB Version 1.\n");
18656     exit(0);    /* DB version < 2: the coast is clear. */
18657 #else
18658     exit(1);    /* <db.h> not Berkeley DB? */
18659 #endif
18660 #endif
18661 }
18662 EOCP
18663         set try
18664         if eval $compile_ok && $run ./try; then
18665                 echo 'Looks OK.' >&4
18666                 set `$run ./try 1`
18667                 db_version_major=$1
18668                 db_version_minor=$2
18669                 db_version_patch=$3
18670         else
18671                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18672                 i_db=$undef
18673                 case " $libs " in
18674                 *"-ldb "*)
18675                         : Remove db from list of libraries to use
18676                         echo "Removing unusable -ldb from library list" >&4
18677                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18678                         shift
18679                         libs="$*"
18680                         echo "libs = $libs" >&4
18681                         ;;
18682                 esac
18683         fi
18684         $rm_try
18685         ;;
18686 esac
18687
18688 case "$i_db" in
18689 define)
18690         : Check the return type needed for hash
18691         echo " "
18692         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18693         $cat >try.c <<EOCP
18694 #$d_const HASCONST
18695 #ifndef HASCONST
18696 #define const
18697 #endif
18698 #include <sys/types.h>
18699 #include <db.h>
18700
18701 #ifndef DB_VERSION_MAJOR
18702 u_int32_t hash_cb (ptr, size)
18703 const void *ptr;
18704 size_t size;
18705 {
18706 }
18707 HASHINFO info;
18708 int main()
18709 {
18710         info.hash = hash_cb;
18711 }
18712 #endif
18713 EOCP
18714         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18715                 if $contains warning try.out >>/dev/null 2>&1 ; then
18716                         db_hashtype='int'
18717                 else
18718                         db_hashtype='u_int32_t'
18719                 fi
18720         else
18721                 : XXX Maybe we should just give up here.
18722                 db_hashtype=u_int32_t
18723                 $cat try.out >&4
18724                 echo "Help:  I can't seem to compile the db test program." >&4
18725                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18726         fi
18727         $rm_try
18728         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18729         ;;
18730 *)      db_hashtype=u_int32_t
18731         ;;
18732 esac
18733 case "$i_db" in
18734 define)
18735         : Check the return type needed for prefix
18736         echo " "
18737         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18738         cat >try.c <<EOCP
18739 #$d_const HASCONST
18740 #ifndef HASCONST
18741 #define const
18742 #endif
18743 #include <sys/types.h>
18744 #include <db.h>
18745
18746 #ifndef DB_VERSION_MAJOR
18747 size_t prefix_cb (key1, key2)
18748 const DBT *key1;
18749 const DBT *key2;
18750 {
18751 }
18752 BTREEINFO info;
18753 int main()
18754 {
18755         info.prefix = prefix_cb;
18756 }
18757 #endif
18758 EOCP
18759         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18760                 if $contains warning try.out >>/dev/null 2>&1 ; then
18761                         db_prefixtype='int'
18762                 else
18763                         db_prefixtype='size_t'
18764                 fi
18765         else
18766                 db_prefixtype='size_t'
18767                 : XXX Maybe we should just give up here.
18768                 $cat try.out >&4
18769                 echo "Help:  I can't seem to compile the db test program." >&4
18770                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18771         fi
18772         $rm_try
18773         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18774         ;;
18775 *)      db_prefixtype='size_t'
18776         ;;
18777 esac
18778
18779 : How can we generate normalized random numbers ?
18780 echo " "
18781 echo "Looking for a random number function..." >&4
18782 case "$randfunc" in
18783 '')
18784         if set drand48 val -f; eval $csym; $val; then
18785                 dflt="drand48"
18786                 echo "Good, found drand48()." >&4
18787         elif set random val -f; eval $csym; $val; then
18788                 dflt="random"
18789                 echo "OK, found random()." >&4
18790         else
18791                 dflt="rand"
18792                 echo "Yick, looks like I have to use rand()." >&4
18793         fi
18794         echo " "
18795         ;;
18796 *)
18797         dflt="$randfunc"
18798         ;;
18799 esac
18800 cont=true
18801
18802 case "$ccflags" in
18803 *-Dmy_rand=*|*-Dmy_srand=*)
18804         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18805         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18806         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18807         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18808         ;;
18809 esac
18810
18811 while $test "$cont"; do
18812         rp="Use which function to generate random numbers?"
18813         . ./myread
18814         if $test "$ans" = "$dflt"; then
18815                 : null
18816         else
18817                 randbits=''
18818         fi
18819         randfunc="$ans"
18820         if set $ans val -f; eval $csym; $val; then
18821                 cont=''
18822         else
18823                 dflt=y
18824                 rp="I cannot find function $ans. Use that name anyway?"
18825                 . ./myread
18826                 dflt=rand
18827                 case "$ans" in
18828                         [yY]*) cont='';;
18829                 esac
18830         fi
18831         case "$cont" in
18832         '')
18833                 case "$randfunc" in
18834                 drand48)
18835                         drand01="drand48()"
18836                         seedfunc="srand48"
18837                         randbits=48
18838                         randseedtype=long
18839                         ;;
18840                 rand|random)
18841                         case "$randbits" in
18842                         '')
18843 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18844                                 $cat >try.c <<EOCP
18845 #$i_unistd I_UNISTD
18846 #$i_stdlib I_STDLIB
18847 #include <stdio.h>
18848 #ifdef I_UNISTD
18849 #  include <unistd.h>
18850 #endif
18851 #ifdef I_STDLIB
18852 #  include <stdlib.h>
18853 #endif
18854 int main()
18855 {
18856         register int i;
18857         register unsigned long tmp;
18858         register unsigned long max = 0L;
18859
18860         for (i = 1000; i; i--) {
18861                 tmp = (unsigned long) $randfunc();
18862                 if (tmp > max) max = tmp;
18863         }
18864         for (i = 0; max; i++)
18865                 max /= 2;
18866         printf("%d\n",i);
18867 }
18868 EOCP
18869                                 set try
18870                                 if eval $compile_ok; then
18871                                         dflt=`try`
18872                                 else
18873                                         dflt='?'
18874                                         echo "(I can't seem to compile the test program...)"
18875                                 fi
18876                                 ;;
18877                         *)
18878                                 dflt="$randbits"
18879                                 ;;
18880                         esac
18881                         rp="How many bits does your $randfunc() function produce?"
18882                         . ./myread
18883                         randbits="$ans"
18884                         $rm_try
18885                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18886                         seedfunc="s$randfunc"
18887                         randseedtype=unsigned
18888                         ;;
18889                 *)
18890                         dflt="31"
18891                         rp="How many bits does your $randfunc() function produce?"
18892                         . ./myread
18893                         randbits="$ans"
18894                         seedfunc="s$randfunc"
18895                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18896                         if set $seedfunc val -f; eval $csym; $val; then
18897                                 echo "(Using $seedfunc() to seed random generator)"
18898                         else
18899                                 echo "(Warning: no $seedfunc() to seed random generator)"
18900                                 seedfunc=rand
18901                         fi
18902                         randseedtype=unsigned
18903                         ;;
18904                 esac
18905                 ;;
18906         esac
18907 done
18908
18909 : Determine if this is an EBCDIC system
18910 echo " "
18911 echo "Determining whether or not we are on an EBCDIC system..." >&4
18912 $cat >try.c <<'EOM'
18913 int main()
18914 {
18915   if ('M'==0xd4) return 0;
18916   return 1;
18917 }
18918 EOM
18919
18920 val=$undef
18921 set try
18922 if eval $compile_ok; then
18923         if $run ./try; then
18924                 echo "You seem to speak EBCDIC." >&4
18925                 val="$define"
18926         else
18927                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18928         fi
18929 else
18930         echo "I'm unable to compile the test program." >&4
18931         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18932 fi
18933 $rm_try
18934 set ebcdic
18935 eval $setvar
18936
18937 : Check how to flush
18938 echo " "
18939 $cat >&4 <<EOM
18940 Checking how to flush all pending stdio output...
18941 EOM
18942 # I only know how to find the first 32 possibly open files on SunOS.
18943 # See also hints/sunos_4_1.sh and util.c  --AD
18944 case "$osname" in
18945 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18946 esac
18947 $cat >>try.c <<EOCP
18948 #include <stdio.h>
18949 #$i_stdlib I_STDLIB
18950 #ifdef I_STDLIB
18951 #include <stdlib.h>
18952 #endif
18953 #$i_unistd I_UNISTD
18954 #ifdef I_UNISTD
18955 # include <unistd.h>
18956 #endif
18957 #$d_sysconf HAS_SYSCONF
18958 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18959 #ifdef HAS_STDIO_STREAM_ARRAY
18960 # define STDIO_STREAM_ARRAY $stdio_stream_array
18961 #endif
18962 int main() {
18963   FILE* p;
18964   unlink("try.out");
18965   p = fopen("try.out", "w");
18966 #ifdef TRY_FPUTC
18967   fputc('x', p);
18968 #else
18969 # ifdef TRY_FPRINTF
18970   fprintf(p, "x");
18971 # endif
18972 #endif
18973 #ifdef TRY_FFLUSH_NULL
18974   fflush(NULL);
18975 #endif
18976 #ifdef TRY_FFLUSH_ALL
18977   {
18978     long open_max = -1;
18979 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18980     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18981 # else
18982 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18983     open_max = sysconf(_SC_OPEN_MAX);
18984 #  else
18985 #   ifdef FOPEN_MAX
18986     open_max = FOPEN_MAX;
18987 #   else
18988 #    ifdef OPEN_MAX
18989     open_max = OPEN_MAX;
18990 #    else
18991 #     ifdef _NFILE
18992     open_max = _NFILE;
18993 #     endif
18994 #    endif
18995 #   endif
18996 #  endif
18997 # endif
18998 # ifdef HAS_STDIO_STREAM_ARRAY
18999     if (open_max > 0) {
19000       long i;
19001       for (i = 0; i < open_max; i++)
19002             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
19003                 STDIO_STREAM_ARRAY[i]._file < open_max &&
19004                 STDIO_STREAM_ARRAY[i]._flag)
19005                 fflush(&STDIO_STREAM_ARRAY[i]);
19006     }
19007   }
19008 # endif
19009 #endif
19010   _exit(42);
19011 }
19012 EOCP
19013 : first we have to find out how _not_ to flush
19014 $to try.c
19015 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
19016     output=''
19017     set try -DTRY_FPUTC
19018     if eval $compile; then
19019             $run ./try 2>/dev/null
19020             code="$?"
19021             $from try.out
19022             if $test ! -s try.out -a "X$code" = X42; then
19023                 output=-DTRY_FPUTC
19024             fi
19025     fi
19026     case "$output" in
19027     '')
19028             set try -DTRY_FPRINTF
19029             if eval $compile; then
19030                     $run ./try 2>/dev/null
19031                     code="$?"
19032                     $from try.out
19033                     if $test ! -s try.out -a "X$code" = X42; then
19034                         output=-DTRY_FPRINTF
19035                     fi
19036             fi
19037         ;;
19038     esac
19039 fi
19040 : check for fflush NULL behaviour
19041 case "$fflushNULL" in
19042 '')     set try -DTRY_FFLUSH_NULL $output
19043         if eval $compile; then
19044                 $run ./try 2>/dev/null
19045                 code="$?"
19046                 $from try.out
19047                 if $test -s try.out -a "X$code" = X42; then
19048                         fflushNULL="`$cat try.out`"
19049                 else
19050                         if $test "X$code" != X42; then
19051                                 $cat >&4 <<EOM
19052 (If this test failed, don't worry, we'll try another method shortly.)
19053 EOM
19054                         fi
19055                 fi
19056         fi
19057         $rm_try
19058         case "$fflushNULL" in
19059         x)      $cat >&4 <<EOM
19060 Your fflush(NULL) works okay for output streams.
19061 Let's see if it clobbers input pipes...
19062 EOM
19063 # As of mid-March 2000 all versions of Solaris appear to have a stdio
19064 # bug that improperly flushes the input end of pipes.  So we avoid the
19065 # autoflush on fork/system/exec support for now. :-(
19066 $cat >tryp.c <<EOCP
19067 #include <stdio.h>
19068 int
19069 main(int argc, char **argv)
19070 {
19071     char buf[1024];
19072     int i;
19073     char *bp = buf;
19074     while (1) {
19075         while ((i = getc(stdin)) != -1
19076                && (*bp++ = i) != '\n'
19077                && bp < &buf[1024])
19078         /* DO NOTHING */ ;
19079         *bp = '\0';
19080         fprintf(stdout, "%s", buf);
19081         fflush(NULL);
19082         if (i == -1)
19083             return 0;
19084         bp = buf;
19085     }
19086 }
19087 EOCP
19088                 fflushNULL="$define"
19089                 set tryp
19090                 if eval $compile; then
19091                     $rm -f tryp.out
19092                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19093                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
19094                        $cat >&4 <<EOM
19095 fflush(NULL) seems to behave okay with input streams.
19096 EOM
19097                         fflushNULL="$define"
19098                     else
19099                         $cat >&4 <<EOM
19100 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
19101 EOM
19102                         fflushNULL="$undef"
19103                     fi
19104                 fi
19105                 $rm -f core tryp.c tryp.core core.tryp.*
19106                 ;;
19107         '')     $cat >&4 <<EOM
19108 Your fflush(NULL) isn't working (contrary to ANSI C).
19109 EOM
19110                 fflushNULL="$undef"
19111                 ;;
19112         *)      $cat >&4 <<EOM
19113 Cannot figure out whether your fflush(NULL) works or not.
19114 I'm assuming it doesn't (contrary to ANSI C).
19115 EOM
19116                 fflushNULL="$undef"
19117                 ;;
19118         esac
19119         ;;
19120 $define|true|[yY]*)
19121         fflushNULL="$define"
19122         ;;
19123 *)
19124         fflushNULL="$undef"
19125         ;;
19126 esac
19127 : check explicit looping only if NULL did not work, and if the pipe
19128 : bug does not show up on an explicit flush too
19129 case "$fflushNULL" in
19130 "$undef")
19131         $cat >tryp.c <<EOCP
19132 #include <stdio.h>
19133 int
19134 main(int argc, char **argv)
19135 {
19136     char buf[1024];
19137     int i;
19138     char *bp = buf;
19139     while (1) {
19140         while ((i = getc(stdin)) != -1
19141                && (*bp++ = i) != '\n'
19142                && bp < &buf[1024])
19143         /* DO NOTHING */ ;
19144         *bp = '\0';
19145         fprintf(stdout, "%s", buf);
19146         fflush(stdin);
19147         if (i == -1)
19148             return 0;
19149         bp = buf;
19150     }
19151 }
19152 EOCP
19153         set tryp
19154         if eval $compile; then
19155             $rm -f tryp.out
19156             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19157             if cmp tryp.c tryp.out >/dev/null 2>&1; then
19158                $cat >&4 <<EOM
19159 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
19160 EOM
19161                 : now check for fflushall behaviour
19162                 case "$fflushall" in
19163                 '')     set try -DTRY_FFLUSH_ALL $output
19164                         if eval $compile; then
19165                                 $cat >&4 <<EOM
19166 (Now testing the other method--but note that this also may fail.)
19167 EOM
19168                                 $run ./try 2>/dev/null
19169                                 code=$?
19170                                 $from try.out
19171                                 if $test -s try.out -a "X$code" = X42; then
19172                                         fflushall="`$cat try.out`"
19173                                 fi
19174                         fi
19175                         $rm_try
19176                         case "$fflushall" in
19177                         x)      $cat >&4 <<EOM
19178 Whew. Flushing explicitly all the stdio streams works.
19179 EOM
19180                                 fflushall="$define"
19181                                 ;;
19182                         '')     $cat >&4 <<EOM
19183 Sigh. Flushing explicitly all the stdio streams doesn't work.
19184 EOM
19185                                 fflushall="$undef"
19186                                 ;;
19187                         *)      $cat >&4 <<EOM
19188 Cannot figure out whether flushing stdio streams explicitly works or not.
19189 I'm assuming it doesn't.
19190 EOM
19191                                 fflushall="$undef"
19192                                 ;;
19193                         esac
19194                         ;;
19195                 "$define"|true|[yY]*)
19196                         fflushall="$define"
19197                         ;;
19198                 *)
19199                         fflushall="$undef"
19200                         ;;
19201                 esac
19202             else
19203                 $cat >&4 <<EOM
19204 All is futile.  Even fflush(stdin) clobbers input pipes!
19205 EOM
19206                 fflushall="$undef"
19207             fi
19208         else
19209             fflushall="$undef"
19210         fi
19211         $rm -f core tryp.c tryp.core core.tryp.*
19212         ;;
19213 *)      fflushall="$undef"
19214         ;;
19215 esac
19216
19217 case "$fflushNULL$fflushall" in
19218 undefundef)
19219         $cat <<EOM
19220 OK, I give up.  I cannot figure out how to flush pending stdio output.
19221 We won't be flushing handles at all before fork/exec/popen.
19222 EOM
19223         ;;
19224 esac
19225 $rm_try tryp
19226
19227 : Store the full pathname to the ar program for use in the C program
19228 : Respect a hint or command line value for full_ar.
19229 case "$full_ar" in
19230 '') full_ar=$ar ;;
19231 esac
19232
19233 : Store the full pathname to the sed program for use in the C program
19234 full_sed=$sed
19235
19236 : see what type gids are declared as in the kernel
19237 echo " "
19238 echo "Looking for the type for group ids returned by getgid()."
19239 set gid_t gidtype xxx stdio.h sys/types.h
19240 eval $typedef
19241 case "$gidtype" in
19242 xxx)
19243         xxx=`./findhdr sys/user.h`
19244         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19245         case $1 in
19246         unsigned) dflt="$1 $2" ;;
19247         *) dflt="$1" ;;
19248         esac
19249         ;;
19250 *) dflt="$gidtype";;
19251 esac
19252 case "$gidtype" in
19253 gid_t) echo "gid_t found." ;;
19254 *)      rp="What is the type for group ids returned by getgid()?"
19255         . ./myread
19256         gidtype="$ans"
19257         ;;
19258 esac
19259
19260 : Check the size of GID
19261 echo " "
19262 case "$gidtype" in
19263 *_t) zzz="$gidtype"     ;;
19264 *)   zzz="gid"          ;;
19265 esac
19266 echo "Checking the size of $zzz..." >&4
19267 cat > try.c <<EOCP
19268 #include <sys/types.h>
19269 #include <stdio.h>
19270 #$i_stdlib I_STDLIB
19271 #ifdef I_STDLIB
19272 #include <stdlib.h>
19273 #endif
19274 int main() {
19275     printf("%d\n", (int)sizeof($gidtype));
19276     exit(0);
19277 }
19278 EOCP
19279 set try
19280 if eval $compile_ok; then
19281         yyy=`$run ./try`
19282         case "$yyy" in
19283         '')     gidsize=4
19284                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19285                 ;;
19286         *)      gidsize=$yyy
19287                 echo "Your $zzz is $gidsize bytes long."
19288                 ;;
19289         esac
19290 else
19291         gidsize=4
19292         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19293 fi
19294
19295
19296 : Check if GID is signed
19297 echo " "
19298 case "$gidtype" in
19299 *_t) zzz="$gidtype"     ;;
19300 *)   zzz="gid"          ;;
19301 esac
19302 echo "Checking the sign of $zzz..." >&4
19303 cat > try.c <<EOCP
19304 #include <sys/types.h>
19305 #include <stdio.h>
19306 int main() {
19307         $gidtype foo = -1;
19308         if (foo < 0)
19309                 printf("-1\n");
19310         else
19311                 printf("1\n");
19312 }
19313 EOCP
19314 set try
19315 if eval $compile; then
19316         yyy=`$run ./try`
19317         case "$yyy" in
19318         '')     gidsign=1
19319                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19320                 ;;
19321         *)      gidsign=$yyy
19322                 case "$gidsign" in
19323                  1) echo "Your $zzz is unsigned." ;;
19324                 -1) echo "Your $zzz is signed."   ;;
19325                 esac
19326                 ;;
19327         esac
19328 else
19329         gidsign=1
19330         echo "(I can't compile the test program--guessing unsigned.)" >&4
19331 fi
19332
19333
19334 : Check 64bit sizes
19335 echo " "
19336
19337 if $test X"$quadtype" != X; then
19338
19339 echo "Checking how to print 64-bit integers..." >&4
19340
19341 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19342         $cat >try.c <<'EOCP'
19343 #include <sys/types.h>
19344 #include <stdio.h>
19345 int main() {
19346   int q = 12345678901;
19347   printf("%ld\n", q);
19348 }
19349 EOCP
19350         set try
19351         if eval $compile; then
19352                 yyy=`$run ./try`
19353                 case "$yyy" in
19354                 12345678901)
19355                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19356                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19357                         echo "We will use %d."
19358                         ;;
19359                 esac
19360         fi
19361 fi
19362
19363 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19364         $cat >try.c <<'EOCP'
19365 #include <sys/types.h>
19366 #include <stdio.h>
19367 int main() {
19368   long q = 12345678901;
19369   printf("%ld\n", q);
19370 }
19371 EOCP
19372         set try
19373         if eval $compile; then
19374                 yyy=`$run ./try`
19375                 case "$yyy" in
19376                 12345678901)
19377                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19378                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19379                         echo "We will use %ld."
19380                         ;;
19381                 esac
19382         fi
19383 fi
19384
19385 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19386         $cat >try.c <<'EOCP'
19387 #include <sys/types.h>
19388 #include <inttypes.h>
19389 #include <stdio.h>
19390 int main() {
19391   int64_t q = 12345678901;
19392   printf("%" PRId64 "\n", q);
19393 }
19394 EOCP
19395         set try
19396         if eval $compile; then
19397                 yyy=`$run ./try`
19398                 case "$yyy" in
19399                 12345678901)
19400                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19401                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19402                         echo "We will use the C9X style."
19403                         ;;
19404                 esac
19405         fi
19406 fi
19407
19408 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19409         $cat >try.c <<EOCP
19410 #include <sys/types.h>
19411 #include <stdio.h>
19412 int main() {
19413   $quadtype q = 12345678901;
19414   printf("%Ld\n", q);
19415 }
19416 EOCP
19417         set try
19418         if eval $compile; then
19419                 yyy=`$run ./try`
19420                 case "$yyy" in
19421                 12345678901)
19422                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19423                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19424                         echo "We will use %Ld."
19425                         ;;
19426                 esac
19427         fi
19428 fi
19429
19430 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19431         $cat >try.c <<'EOCP'
19432 #include <sys/types.h>
19433 #include <stdio.h>
19434 int main() {
19435   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19436   printf("%lld\n", q);
19437 }
19438 EOCP
19439         set try
19440         if eval $compile; then
19441                 yyy=`$run ./try`
19442                 case "$yyy" in
19443                 12345678901)
19444                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19445                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19446                         echo "We will use the %lld style."
19447                         ;;
19448                 esac
19449         fi
19450 fi
19451
19452 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19453         $cat >try.c <<EOCP
19454 #include <sys/types.h>
19455 #include <stdio.h>
19456 int main() {
19457   $quadtype q = 12345678901;
19458   printf("%qd\n", q);
19459 }
19460 EOCP
19461         set try
19462         if eval $compile; then
19463                 yyy=`$run ./try`
19464                 case "$yyy" in
19465                 12345678901)
19466                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19467                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19468                         echo "We will use %qd."
19469                         ;;
19470                 esac
19471         fi
19472 fi
19473
19474 if $test X"$sPRId64" = X; then
19475         echo "Cannot figure out how to print 64-bit integers." >&4
19476 fi
19477 $rm_try
19478
19479 fi
19480
19481 case "$sPRId64" in
19482 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19483         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19484         ;;
19485 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19486         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19487         ;;
19488 esac
19489
19490 : Check format strings for internal types
19491 echo " "
19492 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19493
19494 if $test X"$ivsize" = X8; then
19495         ivdformat="$sPRId64"
19496         uvuformat="$sPRIu64"
19497         uvoformat="$sPRIo64"
19498         uvxformat="$sPRIx64"
19499         uvXUformat="$sPRIXU64"
19500 else
19501         if $test X"$ivsize" = X"$longsize"; then
19502                 ivdformat='"ld"'
19503                 uvuformat='"lu"'
19504                 uvoformat='"lo"'
19505                 uvxformat='"lx"'
19506                 uvXUformat='"lX"'
19507         else
19508                 if $test X"$ivsize" = X"$intsize"; then
19509                         ivdformat='"d"'
19510                         uvuformat='"u"'
19511                         uvoformat='"o"'
19512                         uvxformat='"x"'
19513                         uvXUformat='"X"'
19514                 else
19515                         : far out
19516                         if $test X"$ivsize" = X"$shortsize"; then
19517                                 ivdformat='"hd"'
19518                                 uvuformat='"hu"'
19519                                 uvoformat='"ho"'
19520                                 uvxformat='"hx"'
19521                                 uvXUformat='"hX"'
19522                         fi
19523                 fi
19524         fi
19525 fi
19526
19527 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19528         nveformat="$sPRIeldbl"
19529         nvfformat="$sPRIfldbl"
19530         nvgformat="$sPRIgldbl"
19531         nvEUformat="$sPRIEUldbl"
19532         nvFUformat="$sPRIFUldbl"
19533         nvGUformat="$sPRIGUldbl"
19534 else
19535         nveformat='"e"'
19536         nvfformat='"f"'
19537         nvgformat='"g"'
19538         nvEUformat='"E"'
19539         nvFUformat='"F"'
19540         nvGUformat='"G"'
19541 fi
19542
19543 case "$ivdformat" in
19544 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19545     exit 1
19546     ;;
19547 esac
19548
19549 : Check format string for GID
19550
19551 echo " "
19552 $echo "Checking the format string to be used for gids..." >&4
19553
19554 case "$gidsign" in
19555 -1)     if $test X"$gidsize" = X"$ivsize"; then
19556                 gidformat="$ivdformat"
19557         else
19558                 if $test X"$gidsize" = X"$longsize"; then
19559                         gidformat='"ld"'
19560                 else
19561                         if $test X"$gidsize" = X"$intsize"; then
19562                                 gidformat='"d"'
19563                         else
19564                                 if $test X"$gidsize" = X"$shortsize"; then
19565                                         gidformat='"hd"'
19566                                 fi
19567                         fi
19568                 fi
19569         fi
19570         ;;
19571 *)      if $test X"$gidsize" = X"$uvsize"; then
19572                 gidformat="$uvuformat"
19573         else
19574                 if $test X"$gidsize" = X"$longsize"; then
19575                         gidformat='"lu"'
19576                 else
19577                         if $test X"$gidsize" = X"$intsize"; then
19578                                 gidformat='"u"'
19579                         else
19580                                 if $test X"$gidsize" = X"$shortsize"; then
19581                                         gidformat='"hu"'
19582                                 fi
19583                         fi
19584                 fi
19585         fi
19586         ;;
19587 esac
19588
19589 : see if getgroups exists
19590 set getgroups d_getgrps
19591 eval $inlibc
19592
19593 : see if setgroups exists
19594 set setgroups d_setgrps
19595 eval $inlibc
19596
19597 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19598 echo " "
19599 case "$d_getgrps$d_setgrps" in
19600 *define*)
19601         case "$groupstype" in
19602         '') dflt="$gidtype" ;;
19603         *)  dflt="$groupstype" ;;
19604         esac
19605         $cat <<EOM
19606 What type of pointer is the second argument to getgroups() and setgroups()?
19607 Usually this is the same as group ids, $gidtype, but not always.
19608
19609 EOM
19610         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19611         . ./myread
19612         groupstype="$ans"
19613         ;;
19614 *)  groupstype="$gidtype";;
19615 esac
19616
19617 : MAD = Misc Attribute Definition
19618
19619 if $test $patchlevel -lt 9; then
19620 : MAD is not available in 5.8.x or earlier.
19621     ans=n;
19622 else
19623     case "$mad" in
19624     $define|true|[yY]*) dflt='y' ;;
19625     *)                  dflt='n' ;;
19626     esac
19627     cat <<EOM
19628
19629 Would you like to build with Misc Attribute Decoration? This is development
19630 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19631 overhead on the interpreter.
19632
19633 If this doesn't make any sense to you, just accept the default '$dflt'.
19634 EOM
19635     rp='Build Perl with MAD?'
19636     . ./myread
19637 fi
19638 case "$ans" in
19639 y|Y)    val="$define"
19640         madlyh='madly.h madly.act madly.tab'
19641         madlysrc='madly.c'
19642         madlyobj="madly$_o" ;;
19643 *)      val="$undef"
19644         madlyh=''
19645         madlysrc=''
19646         madlyobj='' ;;
19647 esac
19648 set mad
19649 eval $setvar
19650
19651 : check whether make sets MAKE
19652 echo " "
19653 echo "Checking if your $make program sets \$(MAKE)..." >&4
19654 case "$make_set_make" in
19655 '')
19656         $sed 's/^X //' > testmake.mak << 'EOF'
19657 Xall:
19658 X       @echo 'maketemp="$(MAKE)"'
19659 EOF
19660         case "`$make -f testmake.mak 2>/dev/null`" in
19661         *maketemp=*) make_set_make='#' ;;
19662         *)      make_set_make="MAKE=$make" ;;
19663         esac
19664         $rm -f testmake.mak
19665         ;;
19666 esac
19667 case "$make_set_make" in
19668 '#') echo "Yup, it does.";;
19669 *) echo "Nope, it doesn't.";;
19670 esac
19671
19672 : see what type is used for mode_t
19673 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19674 set mode_t modetype int stdio.h sys/types.h
19675 eval $typedef_ask
19676
19677 : see if we need va_copy
19678 echo " "
19679 case "$i_stdarg" in
19680 "$define")
19681         $cat >try.c <<EOCP
19682 #include <stdarg.h>
19683 #include <stdio.h>
19684 #$i_stdlib I_STDLIB
19685 #ifdef I_STDLIB
19686 #include <stdlib.h>
19687 #endif
19688 #include <signal.h>
19689
19690 int
19691 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19692 {
19693   return vfprintf(f, fmt, *valp);
19694 }
19695
19696 int
19697 myvfprintf(FILE *f, const  char *fmt, va_list val)
19698 {
19699   return ivfprintf(f, fmt, &val);
19700 }
19701
19702 int
19703 myprintf(char *fmt, ...)
19704 {
19705   va_list val;
19706   va_start(val, fmt);
19707   return myvfprintf(stdout, fmt, val);
19708 }
19709
19710 int
19711 main(int ac, char **av)
19712 {
19713   signal(SIGSEGV, exit);
19714
19715   myprintf("%s%cs all right, then\n", "that", '\'');
19716   exit(0);
19717 }
19718 EOCP
19719         set try
19720         if eval $compile && $run ./try 2>&1 >/dev/null; then
19721                 case "`$run ./try`" in
19722                 "that's all right, then")
19723                         okay=yes
19724                         ;;
19725                 esac
19726         fi
19727         case "$okay" in
19728         yes)    echo "It seems that you don't need va_copy()." >&4
19729                 need_va_copy="$undef"
19730                 ;;
19731         *)      echo "It seems that va_copy() or similar will be needed." >&4
19732                 need_va_copy="$define"
19733                 ;;
19734         esac
19735         $rm_try
19736         ;;
19737 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19738         ;;
19739 esac
19740
19741 : see what type is used for size_t
19742 rp="What is the type used for the length parameter for string functions?"
19743 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19744 eval $typedef_ask
19745
19746 : check for type of arguments to gethostbyaddr. 
19747 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19748         case "$d_gethbyaddr" in
19749         $define)
19750                 $cat <<EOM
19751
19752 Checking to see what type of arguments are accepted by gethostbyaddr().
19753 EOM
19754                 hdrs="$define sys/types.h
19755                         $d_socket sys/socket.h 
19756                         $i_niin netinet/in.h 
19757                         $i_netdb netdb.h
19758                         $i_unistd unistd.h"
19759                 : The first arg can 'char *' or 'void *'
19760                 : The second arg is some of integral type
19761                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19762                         for yyy in size_t long int; do
19763                                 case "$netdb_host_type" in
19764                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19765                                         if ./protochk "$try" $hdrs; then
19766                                                 echo "Your system accepts $xxx for the first arg."
19767                                                 echo "...and $yyy for the second arg."
19768                                                 netdb_host_type="$xxx"
19769                                                 netdb_hlen_type="$yyy"
19770                                         fi
19771                                         ;;
19772                                 esac
19773                         done
19774                 done
19775                 : In case none of those worked, prompt the user.
19776                 case "$netdb_host_type" in
19777                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19778                         dflt='char *'
19779                         . ./myread
19780                         netdb_host_type=$ans
19781                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19782                         dflt="$sizetype"
19783                         . ./myread
19784                         netdb_hlen_type=$ans
19785                         ;;
19786                 esac
19787                 ;;
19788         *)      : no gethostbyaddr, so pick harmless defaults
19789                 netdb_host_type='char *'
19790                 netdb_hlen_type="$sizetype"
19791                 ;;
19792         esac
19793         # Remove the "const" if needed. -- but then we'll have a 
19794         # prototype clash!
19795         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19796 fi
19797
19798 : check for type of argument to gethostbyname. 
19799 if test "X$netdb_name_type" = X ; then
19800         case "$d_gethbyname" in
19801         $define)
19802                 $cat <<EOM
19803
19804 Checking to see what type of argument is accepted by gethostbyname().
19805 EOM
19806                 hdrs="$define sys/types.h
19807                         $d_socket sys/socket.h 
19808                         $i_niin netinet/in.h 
19809                         $i_netdb netdb.h
19810                         $i_unistd unistd.h"
19811                 for xxx in "const char *" "char *"; do
19812                         case "$netdb_name_type" in
19813                         '')     try="extern struct hostent *gethostbyname($xxx);"
19814                                 if ./protochk "$try" $hdrs; then
19815                                         echo "Your system accepts $xxx."
19816                                         netdb_name_type="$xxx"
19817                                 fi
19818                                 ;;
19819                         esac
19820                 done
19821                 : In case none of those worked, prompt the user.
19822                 case "$netdb_name_type" in
19823                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19824                         dflt='char *'
19825                         . ./myread
19826                         netdb_name_type=$ans
19827                         ;;
19828                 esac
19829                 ;;
19830         *)      : no gethostbyname, so pick harmless default
19831                 netdb_name_type='char *'
19832                 ;;
19833         esac
19834 fi
19835
19836 : check for type of 1st argument to getnetbyaddr. 
19837 if test "X$netdb_net_type" = X ; then
19838         case "$d_getnbyaddr" in
19839         $define)
19840                 $cat <<EOM
19841
19842 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19843 EOM
19844                 hdrs="$define sys/types.h
19845                         $d_socket sys/socket.h 
19846                         $i_niin netinet/in.h 
19847                         $i_netdb netdb.h
19848                         $i_unistd unistd.h"
19849                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19850                         case "$netdb_net_type" in
19851                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19852                                 if ./protochk "$try" $hdrs; then
19853                                         echo "Your system accepts $xxx."
19854                                         netdb_net_type="$xxx"
19855                                 fi
19856                                 ;;
19857                         esac
19858                 done
19859                 : In case none of those worked, prompt the user.
19860                 case "$netdb_net_type" in
19861                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19862                         dflt='long'
19863                         . ./myread
19864                         netdb_net_type=$ans
19865                         ;;
19866                 esac
19867                 ;;
19868         *)      : no getnetbyaddr, so pick harmless default
19869                 netdb_net_type='long'
19870                 ;;
19871         esac
19872 fi
19873 : locate the preferred pager for this system
19874 fn=f/
19875 case "$pager" in
19876 '')
19877         dflt=''
19878         case "$pg" in
19879         /*) dflt=$pg;;
19880         [a-zA-Z]:/*) dflt=$pg;;
19881         esac
19882         case "$more" in
19883         /*) dflt=$more;;
19884         [a-zA-Z]:/*) dflt=$more;;
19885         esac
19886         case "$less" in
19887         /*) dflt=$less;;
19888         [a-zA-Z]:/*) dflt=$less;;
19889         esac
19890         case "$dflt" in
19891         '') dflt=/usr/ucb/more;;
19892         esac
19893         ;;
19894 *)      dflt="$pager"
19895         : Instruct ./getfile to trust the hinted or previous pager value,
19896         : even if it does not begin with a slash.  For example, on os2,
19897         : pager might be cmd /c more.  See comments in UU/getfile.
19898         fn="f/($pager)"
19899         ;;
19900 esac
19901 echo " "
19902 rp='What pager is used on your system?'
19903 . ./getfile
19904 pager="$ans"
19905
19906 : see what type pids are declared as in the kernel
19907 rp="What is the type of process ids on this system?"
19908 set pid_t pidtype int stdio.h sys/types.h
19909 eval $typedef_ask
19910
19911 : see if ar generates random libraries by itself
19912 echo " "
19913 echo "Checking how to generate random libraries on your machine..." >&4
19914 echo 'int bar1() { return bar2(); }' > bar1.c
19915 echo 'int bar2() { return 2; }' > bar2.c
19916 $cat > foo.c <<EOP
19917 #$i_stdlib I_STDLIB
19918 #ifdef I_STDLIB
19919 #include <stdlib.h>
19920 #endif
19921 int main() { printf("%d\n", bar1()); exit(0); }
19922 EOP
19923 $cc $ccflags -c bar1.c >/dev/null 2>&1
19924 $cc $ccflags -c bar2.c >/dev/null 2>&1
19925 $cc $ccflags -c foo.c >/dev/null 2>&1
19926 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19927 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19928         $run ./foobar >/dev/null 2>&1; then
19929         echo "$ar appears to generate random libraries itself."
19930         orderlib=false
19931         if [ "X$ranlib" = "X" ]; then
19932             ranlib=":"
19933         fi
19934 elif $ar s bar$_a >/dev/null 2>&1 &&
19935         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19936         $run ./foobar >/dev/null 2>&1; then
19937                 echo "a table of contents needs to be added with '$ar s'."
19938                 orderlib=false
19939                 ranlib="$ar s"
19940 elif $ar ts bar$_a >/dev/null 2>&1 &&
19941         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19942         $run ./foobar >/dev/null 2>&1; then
19943                 echo "a table of contents needs to be added with '$ar ts'."
19944                 orderlib=false
19945                 ranlib="$ar ts"
19946 else
19947         case "$ranlib" in
19948         :) ranlib='';;
19949         '')
19950                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19951                 $test -f $ranlib || ranlib=''
19952                 ;;
19953         esac
19954         if $test -n "$ranlib"; then
19955                 echo "your system has '$ranlib'; we'll use that."
19956                 orderlib=false
19957         else
19958                 echo "your system doesn't seem to support random libraries"
19959                 echo "so we'll use lorder and tsort to order the libraries."
19960                 orderlib=true
19961                 ranlib=":"
19962         fi
19963 fi
19964 $rm -f foo* bar*
19965
19966 : check for type of arguments to select.
19967 case "$selecttype" in
19968 '') case "$d_select" in
19969         $define)
19970                 echo " "
19971                 $cat <<EOM
19972 Checking to see what type of arguments are accepted by select().
19973 EOM
19974                 hdrs="$define sys/types.h
19975                         $i_systime sys/time.h
19976                         $i_sysselct sys/select.h
19977                         $d_socket sys/socket.h"
19978                 : The first arg can be int, unsigned, or size_t
19979                 : The last arg may or may not be 'const'
19980                 val=''
19981                 : void pointer has been seen but using that
19982                 : breaks the selectminbits test
19983                 for xxx in 'fd_set *' 'int *'; do
19984                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19985                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
19986                                         case "$val" in
19987                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19988                                                 if ./protochk "$try" $hdrs; then
19989                                                         echo "Your system accepts $xxx."
19990                                                         val="$xxx"
19991                                                 fi
19992                                                 ;;
19993                                         esac
19994                                 done
19995                         done
19996                 done
19997                 case "$val" in
19998                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19999                         case "$d_fd_set" in
20000                                 $define) dflt="fd_set *" ;;
20001                                 *)              dflt="int *" ;;
20002                         esac
20003                         . ./myread
20004                         val=$ans
20005                         ;;
20006                 esac
20007                 selecttype="$val"
20008                 ;;
20009         *)      : no select, so pick a harmless default
20010                 selecttype='int *'
20011                 ;;
20012         esac
20013         ;;
20014 esac
20015
20016 : check for the select 'width'
20017 case "$selectminbits" in
20018 '') safebits=`expr $ptrsize \* 8`
20019     case "$d_select" in
20020         $define)
20021                 $cat <<EOM
20022
20023 Checking to see on how many bits at a time your select() operates...
20024 EOM
20025                 $cat >try.c <<EOCP
20026 #include <sys/types.h>
20027 #$i_time I_TIME
20028 #$i_systime I_SYS_TIME
20029 #$i_systimek I_SYS_TIME_KERNEL
20030 #ifdef I_TIME
20031 #   include <time.h>
20032 #endif
20033 #ifdef I_SYS_TIME
20034 #   ifdef I_SYS_TIME_KERNEL
20035 #       define KERNEL
20036 #   endif
20037 #   include <sys/time.h>
20038 #   ifdef I_SYS_TIME_KERNEL
20039 #       undef KERNEL
20040 #   endif
20041 #endif
20042 #$i_sysselct I_SYS_SELECT
20043 #ifdef I_SYS_SELECT
20044 #include <sys/select.h>
20045 #endif
20046 #$d_socket HAS_SOCKET
20047 #ifdef HAS_SOCKET
20048 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
20049 #endif
20050 #include <stdio.h>
20051 #$i_stdlib I_STDLIB
20052 #ifdef I_STDLIB
20053 #include <stdlib.h>
20054 #endif
20055 $selecttype b;
20056 #define S sizeof(*(b))
20057 #define MINBITS 64
20058 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
20059 #define NBITS  (NBYTES * 8)
20060 int main() {
20061     char *s = (char *)malloc(NBYTES);
20062     struct timeval t;
20063     int i;
20064     FILE* fp;
20065     int fd;
20066
20067     if (!s)
20068         exit(1);
20069     fclose(stdin);
20070     fp = fopen("try.c", "r");
20071     if (fp == 0)
20072       exit(2);
20073     fd = fileno(fp);
20074     if (fd < 0)
20075       exit(3);
20076     b = ($selecttype)s;
20077     for (i = 0; i < NBITS; i++)
20078         FD_SET(i, b);
20079     t.tv_sec  = 0;
20080     t.tv_usec = 0;
20081     select(fd + 1, b, 0, 0, &t);
20082     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
20083     free(s);
20084     printf("%d\n", i + 1);
20085     return 0;
20086 }
20087 EOCP
20088                 set try
20089                 if eval $compile_ok; then
20090                         selectminbits=`$run ./try`
20091                         case "$selectminbits" in
20092                         '')     cat >&4 <<EOM
20093 Cannot figure out on how many bits at a time your select() operates.
20094 I'll play safe and guess it is $safebits bits.
20095 EOM
20096                                 selectminbits=$safebits
20097                                 bits="$safebits bits"
20098                                 ;;
20099                         1)      bits="1 bit" ;;
20100                         *)      bits="$selectminbits bits" ;;
20101                         esac
20102                         echo "Your select() operates on $bits at a time." >&4
20103                 else
20104                         rp='What is the minimum number of bits your select() operates on?'
20105                         case "$byteorder" in
20106                         12345678)       dflt=64 ;;
20107                         1234)           dflt=32 ;;
20108                         *)              dflt=1  ;;
20109                         esac
20110                         . ./myread
20111                         val=$ans
20112                         selectminbits="$val"
20113                 fi
20114                 $rm_try
20115                 ;;
20116         *)      : no select, so pick a harmless default
20117                 selectminbits=$safebits
20118                 ;;
20119         esac
20120         ;;
20121 esac
20122
20123 : Trace out the files included by signal.h, then look for SIGxxx names.
20124 if [ "X$fieldn" = X ]; then
20125         : Just make some guesses.  We check them later.
20126         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
20127 else
20128         xxx=`echo '#include <signal.h>' |
20129         $cppstdin $cppminus $cppflags 2>/dev/null |
20130         $grep '^[       ]*#.*include' |
20131         $awk "{print \\$$fieldn}" | $sed 's!"!!g' |\
20132                 $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
20133 fi
20134 xxxfiles=''
20135 for xx in $xxx /dev/null ; do
20136         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
20137 done
20138 case "$xxxfiles" in
20139 '')     xxxfiles=`./findhdr signal.h` ;;
20140 esac
20141 xxx=`awk '
20142 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
20143         print substr($2, 4, 20)
20144 }
20145 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
20146         print substr($3, 4, 20)
20147 }' $xxxfiles`
20148 : Append some common names just in case the awk scan failed.
20149 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
20150 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
20151 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
20152 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
20153 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
20154
20155 : generate a few handy files for later
20156 $cat > signal.c <<EOCP
20157 #include <sys/types.h>
20158 #include <signal.h>
20159 #$i_stdlib I_STDLIB
20160 #ifdef I_STDLIB
20161 #include <stdlib.h>
20162 #endif
20163 #include <stdio.h>
20164 int main() {
20165
20166 /* Strange style to avoid deeply-nested #if/#else/#endif */
20167 #ifndef NSIG
20168 #  ifdef _NSIG
20169 #    define NSIG (_NSIG)
20170 #  endif
20171 #endif
20172
20173 #ifndef NSIG
20174 #  ifdef SIGMAX
20175 #    define NSIG (SIGMAX+1)
20176 #  endif
20177 #endif
20178
20179 #ifndef NSIG
20180 #  ifdef SIG_MAX
20181 #    define NSIG (SIG_MAX+1)
20182 #  endif
20183 #endif
20184
20185 #ifndef NSIG
20186 #  ifdef _SIG_MAX
20187 #    define NSIG (_SIG_MAX+1)
20188 #  endif
20189 #endif
20190
20191 #ifndef NSIG
20192 #  ifdef MAXSIG
20193 #    define NSIG (MAXSIG+1)
20194 #  endif
20195 #endif
20196
20197 #ifndef NSIG
20198 #  ifdef MAX_SIG
20199 #    define NSIG (MAX_SIG+1)
20200 #  endif
20201 #endif
20202
20203 #ifndef NSIG
20204 #  ifdef SIGARRAYSIZE
20205 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
20206 #  endif
20207 #endif
20208
20209 #ifndef NSIG
20210 #  ifdef _sys_nsig
20211 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
20212 #  endif
20213 #endif
20214
20215 /* Default to some arbitrary number that's big enough to get most
20216    of the common signals.
20217 */
20218 #ifndef NSIG
20219 #    define NSIG 50
20220 #endif
20221
20222 printf("NSIG %d\n", NSIG);
20223
20224 #ifndef JUST_NSIG
20225
20226 EOCP
20227
20228 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20229 {
20230         printf "#ifdef SIG"; printf $1; printf "\n"
20231         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20232         printf $1; printf ");\n"
20233         printf "#endif\n"
20234 }
20235 END {
20236         printf "#endif /* JUST_NSIG */\n";
20237         printf "exit(0);\n}\n";
20238 }
20239 ' >>signal.c
20240 $cat >signal.awk <<'EOP'
20241 BEGIN { ndups = 0 }
20242 $1 ~ /^NSIG$/ { nsig = $2 }
20243 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20244     if ($2 > maxsig) { maxsig = $2 }
20245     if (sig_name[$2]) {
20246         dup_name[ndups] = $1
20247         dup_num[ndups] = $2
20248         ndups++
20249     }
20250     else {
20251         sig_name[$2] = $1
20252         sig_num[$2] = $2
20253     }
20254 }
20255 END {
20256     if (nsig == 0) {
20257         nsig = maxsig + 1
20258     }
20259     printf("NSIG %d\n", nsig);
20260     for (n = 1; n < nsig; n++) {
20261         if (sig_name[n]) {
20262             printf("%s %d\n", sig_name[n], sig_num[n])
20263         }
20264         else {
20265             printf("NUM%d %d\n", n, n)
20266         }
20267     }
20268     for (n = 0; n < ndups; n++) {
20269         printf("%s %d\n", dup_name[n], dup_num[n])
20270     }
20271 }
20272 EOP
20273 $cat >signal_cmd <<EOS
20274 $startsh
20275 if $test -s signal.lst; then
20276     echo "Using your existing signal.lst file"
20277         exit 0
20278 fi
20279 xxx="$xxx"
20280 EOS
20281 $cat >>signal_cmd <<'EOS'
20282
20283 set signal
20284 if eval $compile_ok; then
20285         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) |\
20286                 $uniq | $awk -f signal.awk >signal.lst
20287 else
20288         echo "(I can't seem be able to compile the whole test program)" >&4
20289         echo "(I'll try it in little pieces.)" >&4
20290         set signal -DJUST_NSIG
20291         if eval $compile_ok; then
20292                 $run ./signal$_exe > signal.nsg
20293                 $cat signal.nsg
20294         else
20295                 echo "I can't seem to figure out how many signals you have." >&4
20296                 echo "Guessing 50." >&4
20297                 echo 'NSIG 50' > signal.nsg
20298         fi
20299         : Now look at all the signal names, one at a time.
20300         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20301                 $cat > signal.c <<EOCP
20302 #include <sys/types.h>
20303 #include <signal.h>
20304 #include <stdio.h>
20305 int main() {
20306 printf("$xx %d\n", SIG${xx});
20307 return 0;
20308 }
20309 EOCP
20310                 set signal
20311                 if eval $compile; then
20312                         echo "SIG${xx} found."
20313                         $run ./signal$_exe  >> signal.ls1
20314                 else
20315                         echo "SIG${xx} NOT found."
20316                 fi
20317         done
20318         if $test -s signal.ls1; then
20319                 $cat signal.nsg signal.ls1 |
20320                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20321         fi
20322
20323 fi
20324 if $test -s signal.lst; then
20325         :
20326 else
20327         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20328         echo 'kill -l' >signal
20329         set X `csh -f <signal`
20330         $rm -f signal
20331         shift
20332         case $# in
20333         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20334         esac
20335         echo $@ | $tr ' ' $trnl | \
20336             $awk '{ printf "%s %d\n", $1, ++s; }
20337                   END { printf "NSIG %d\n", ++s }' >signal.lst
20338 fi
20339 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20340 EOS
20341 chmod a+x signal_cmd
20342 $eunicefix signal_cmd
20343
20344 : generate list of signal names
20345 echo " "
20346 case "$sig_name_init" in
20347 '') doinit=yes ;;
20348 *)  case "$sig_num_init" in
20349     ''|*,*) doinit=yes ;;
20350     esac ;;
20351 esac
20352 case "$doinit" in
20353 yes)
20354         echo "Generating a list of signal names and numbers..." >&4
20355         . ./signal_cmd
20356         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20357         sig_name=`$awk 'BEGIN { printf "ZERO " }
20358                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20359         sig_num=`$awk  'BEGIN { printf "0 " }
20360                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20361         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20362                              !/^NSIG/   { printf "\"%s\", ", $1 }
20363                              END        { printf "0\n" }' signal.lst`
20364         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20365                              !/^NSIG/   { printf "%d, ", $2}
20366                              END        { printf "0\n"}' signal.lst`
20367         ;;
20368 esac
20369 echo "The following $sig_count signals are available:"
20370 echo " "
20371 echo $sig_name | $awk \
20372 'BEGIN { linelen = 0 }
20373 {
20374         for (i = 1; i <= NF; i++) {
20375                 name = "SIG" $i " "
20376                 linelen = linelen + length(name)
20377                 if (linelen > 70) {
20378                         printf "\n"
20379                         linelen = length(name)
20380                 }
20381                 printf "%s", name
20382         }
20383         printf "\n"
20384 }'
20385 sig_size=`echo $sig_name | awk '{print NF}'`
20386 $rm -f signal signal.c signal.awk signal.lst signal_cmd
20387
20388 : Check size of size
20389 echo " "
20390 case "$sizetype" in
20391 *_t) zzz="$sizetype"    ;;
20392 *)   zzz="filesize"     ;;
20393 esac
20394 echo "Checking the size of $zzz..." >&4
20395 cat > try.c <<EOCP
20396 #include <sys/types.h>
20397 #include <stdio.h>
20398 #$i_stdlib I_STDLIB
20399 #ifdef I_STDLIB
20400 #include <stdlib.h>
20401 #endif
20402 int main() {
20403     printf("%d\n", (int)sizeof($sizetype));
20404     exit(0);
20405 }
20406 EOCP
20407 set try
20408 if eval $compile_ok; then
20409         yyy=`$run ./try`
20410         case "$yyy" in
20411         '')     sizesize=4
20412                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20413                 ;;
20414         *)      sizesize=$yyy
20415                 echo "Your $zzz size is $sizesize bytes."
20416                 ;;
20417         esac
20418 else
20419         sizesize=4
20420         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20421 fi
20422
20423
20424 : check for socklen_t
20425 echo " "
20426 echo "Checking to see if you have socklen_t..." >&4
20427 $cat >try.c <<EOCP
20428 #include <sys/types.h>
20429 #$d_socket HAS_SOCKET
20430 #ifdef HAS_SOCKET
20431 #include <sys/socket.h>
20432 #endif
20433 int main() { socklen_t x = 16; }
20434 EOCP
20435 set try
20436 if eval $compile; then
20437         val="$define"
20438         echo "You have socklen_t."
20439 else
20440         val="$undef"
20441         echo "You do not have socklen_t."
20442         case "$sizetype" in
20443         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20444         esac
20445 fi
20446 $rm_try
20447 set d_socklen_t
20448 eval $setvar
20449
20450 : see if this is a socks.h system
20451 set socks.h i_socks
20452 eval $inhdr
20453
20454 : check for type of the size argument to socket calls
20455 case "$d_socket" in
20456 "$define")
20457         $cat <<EOM
20458
20459 Checking to see what type is the last argument of accept().
20460 EOM
20461         yyy=''
20462         case "$d_socklen_t" in
20463         "$define") yyy="$yyy socklen_t"
20464         esac
20465         yyy="$yyy $sizetype int long unsigned"
20466         for xxx in $yyy; do
20467                 case "$socksizetype" in
20468                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20469                         case "$usesocks" in
20470                         "$define")
20471                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20472                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20473                                         socksizetype="$xxx"
20474                                 fi
20475                                 ;;
20476                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20477                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20478                                         socksizetype="$xxx"
20479                                 fi
20480                                 ;;
20481                         esac
20482                         ;;
20483                 esac
20484         done
20485 : In case none of those worked, prompt the user.
20486         case "$socksizetype" in
20487         '')     rp='What is the type for socket address structure sizes?'
20488                 dflt='int'
20489                 . ./myread
20490                 socksizetype=$ans
20491                 ;;
20492         esac
20493         ;;
20494 *)      : no sockets, so pick relatively harmless default
20495         socksizetype='int'
20496         ;;
20497 esac
20498
20499 : see what type is used for signed size_t
20500 set ssize_t ssizetype int stdio.h sys/types.h
20501 eval $typedef
20502 dflt="$ssizetype"
20503 $cat > try.c <<EOM
20504 #include <stdio.h>
20505 #$i_stdlib I_STDLIB
20506 #ifdef I_STDLIB
20507 #include <stdlib.h>
20508 #endif
20509 #include <sys/types.h>
20510 #define Size_t $sizetype
20511 #define SSize_t $dflt
20512 int main()
20513 {
20514         if (sizeof(Size_t) == sizeof(SSize_t))
20515                 printf("$dflt\n");
20516         else if (sizeof(Size_t) == sizeof(int))
20517                 printf("int\n");
20518         else
20519                 printf("long\n");
20520         exit(0);
20521 }
20522 EOM
20523 echo " "
20524 set try
20525 if eval $compile_ok && $run ./try > /dev/null; then
20526         ssizetype=`$run ./try`
20527         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20528 else
20529         $cat >&4 <<EOM
20530 Help! I can't compile and run the ssize_t test program: please enlighten me!
20531 (This is probably a misconfiguration in your system or libraries, and
20532 you really ought to fix it.  Still, I'll try anyway.)
20533
20534 I need a type that is the same size as $sizetype, but is guaranteed to
20535 be signed.  Common values are ssize_t, int and long.
20536
20537 EOM
20538         rp="What signed type is the same size as $sizetype?"
20539         . ./myread
20540         ssizetype="$ans"
20541 fi
20542 $rm_try
20543
20544 : see what type of char stdio uses.
20545 echo " "
20546 echo '#include <stdio.h>' > stdio.c
20547 $cppstdin $cppminus < stdio.c > stdioh
20548 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20549         echo "Your stdio uses unsigned chars." >&4
20550         stdchar="unsigned char"
20551 else
20552         echo "Your stdio uses signed chars." >&4
20553         stdchar="char"
20554 fi
20555 $rm -f stdio.* stdioh
20556
20557 : see what type uids are declared as in the kernel
20558 echo " "
20559 echo "Looking for the type for user ids returned by getuid()."
20560 set uid_t uidtype xxx stdio.h sys/types.h
20561 eval $typedef
20562 case "$uidtype" in
20563 xxx)
20564         xxx=`./findhdr sys/user.h`
20565         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20566         case $1 in
20567         unsigned) dflt="$1 $2" ;;
20568         *) dflt="$1" ;;
20569         esac
20570         ;;
20571 *) dflt="$uidtype";;
20572 esac
20573 case "$uidtype" in
20574 uid_t)  echo "uid_t found." ;;
20575 *)      rp="What is the type for user ids returned by getuid()?"
20576         . ./myread
20577         uidtype="$ans"
20578         ;;
20579 esac
20580
20581 : Check size of UID
20582 echo " "
20583 case "$uidtype" in
20584 *_t) zzz="$uidtype"     ;;
20585 *)   zzz="uid"          ;;
20586 esac
20587 echo "Checking the size of $zzz..." >&4
20588 cat > try.c <<EOCP
20589 #include <sys/types.h>
20590 #include <stdio.h>
20591 #$i_stdlib I_STDLIB
20592 #ifdef I_STDLIB
20593 #include <stdlib.h>
20594 #endif
20595 int main() {
20596     printf("%d\n", (int)sizeof($uidtype));
20597     exit(0);
20598 }
20599 EOCP
20600 set try
20601 if eval $compile_ok; then
20602         yyy=`$run ./try`
20603         case "$yyy" in
20604         '')     uidsize=4
20605                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20606                 ;;
20607         *)      uidsize=$yyy
20608                 echo "Your $zzz is $uidsize bytes long."
20609                 ;;
20610         esac
20611 else
20612         uidsize=4
20613         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20614 fi
20615
20616 : Check if UID is signed
20617 echo " "
20618 case "$uidtype" in
20619 *_t) zzz="$uidtype"     ;;
20620 *)   zzz="uid"          ;;
20621 esac
20622 echo "Checking the sign of $zzz..." >&4
20623 cat > try.c <<EOCP
20624 #include <sys/types.h>
20625 #include <stdio.h>
20626 int main() {
20627         $uidtype foo = -1;
20628         if (foo < 0)
20629                 printf("-1\n");
20630         else
20631                 printf("1\n");
20632 }
20633 EOCP
20634 set try
20635 if eval $compile; then
20636         yyy=`$run ./try`
20637         case "$yyy" in
20638         '')     uidsign=1
20639                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20640                 ;;
20641         *)      uidsign=$yyy
20642                 case "$uidsign" in
20643                  1) echo "Your $zzz is unsigned." ;;
20644                 -1) echo "Your $zzz is signed."   ;;
20645                 esac
20646                 ;;
20647         esac
20648 else
20649         uidsign=1
20650         echo "(I can't compile the test program--guessing unsigned.)" >&4
20651 fi
20652
20653
20654 : Check format string for UID
20655 echo " "
20656 $echo "Checking the format string to be used for uids..." >&4
20657
20658 case "$uidsign" in
20659 -1)     if $test X"$uidsize" = X"$ivsize"; then
20660                 uidformat="$ivdformat"
20661         else
20662                 if $test X"$uidsize" = X"$longsize"; then
20663                         uidformat='"ld"'
20664                 else
20665                         if $test X"$uidsize" = X"$intsize"; then
20666                                 uidformat='"d"'
20667                         else
20668                                 if $test X"$uidsize" = X"$shortsize"; then
20669                                         uidformat='"hd"'
20670                                 fi
20671                         fi
20672                 fi
20673         fi
20674         ;;
20675 *)      if $test X"$uidsize" = X"$uvsize"; then
20676                 uidformat="$uvuformat"
20677         else
20678                 if $test X"$uidsize" = X"$longsize"; then
20679                         uidformat='"lu"'
20680                 else
20681                         if $test X"$uidsize" = X"$intsize"; then
20682                                 uidformat='"u"'
20683                         else
20684                                 if $test X"$uidsize" = X"$shortsize"; then
20685                                         uidformat='"hu"'
20686                                 fi
20687                         fi
20688                 fi
20689         fi
20690         ;;
20691 esac
20692
20693 : Check if site customization support was requested
20694 case "$usesitecustomize" in
20695     $define|true|[Yy]*)
20696         usesitecustomize="$define"
20697         ;;
20698     *)
20699         usesitecustomize="$undef"
20700         ;;
20701     esac
20702
20703 : determine compiler compiler
20704 case "$yacc" in
20705 '')
20706         dflt=yacc;;
20707 *)
20708         dflt="$yacc";;
20709 esac
20710 echo " "
20711 comp='yacc'
20712 if $test -f "$byacc$_exe"; then
20713         dflt="$byacc"
20714         comp="byacc or $comp"
20715 fi
20716 if $test -f "$bison$_exe"; then
20717         comp="$comp or bison -y"
20718 fi
20719 rp="Which compiler compiler ($comp) shall I use?"
20720 . ./myread
20721 yacc="$ans"
20722 case "$yacc" in
20723 *bis*)
20724         case "$yacc" in
20725         *-y*) ;;
20726         *)
20727                 yacc="$yacc -y"
20728                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20729                 ;;
20730         esac
20731         ;;
20732 esac
20733
20734 : see if this is a assert.h system
20735 set assert.h i_assert
20736 eval $inhdr
20737
20738 : see if this is a fp.h system
20739 set fp.h i_fp
20740 eval $inhdr
20741
20742 : see if this is a fp_class.h system
20743 set fp_class.h i_fp_class
20744 eval $inhdr
20745
20746 : see if gdbm.h is available
20747 set gdbm.h t_gdbm
20748 eval $inhdr
20749 case "$t_gdbm" in
20750 $define)
20751         : see if gdbm_open exists
20752         set gdbm_open d_gdbm_open
20753         eval $inlibc
20754         case "$d_gdbm_open" in
20755         $undef)
20756                 t_gdbm="$undef"
20757                 echo "We won't be including <gdbm.h>"
20758                 ;;
20759         esac
20760         ;;
20761 esac
20762 val="$t_gdbm"
20763 set i_gdbm
20764 eval $setvar
20765
20766 : see if this is a ieeefp.h system
20767 case "$i_ieeefp" in
20768 '' ) set ieeefp.h i_ieeefp
20769      eval $inhdr
20770      ;;
20771 esac
20772
20773 : see if this is a libutil.h system
20774 set libutil.h i_libutil
20775 eval $inhdr
20776
20777 : see if mach cthreads are available
20778 if test "X$usethreads" = "X$define"; then
20779         set mach/cthreads.h i_machcthr
20780         eval $inhdr
20781 else
20782         i_machcthr="$undef"
20783 fi
20784
20785 : see if this is a mntent.h system
20786 set mntent.h i_mntent
20787 eval $inhdr
20788
20789 : see if ndbm.h is available
20790 set ndbm.h t_ndbm
20791 eval $inhdr
20792
20793 case "$t_ndbm" in
20794 $undef)
20795     # Some Linux distributions such as RedHat 7.1 put the
20796     # ndbm.h header in /usr/include/gdbm/ndbm.h.
20797     if $test -f /usr/include/gdbm/ndbm.h; then
20798         echo '<gdbm/ndbm.h> found.'
20799         ccflags="$ccflags -I/usr/include/gdbm"
20800         cppflags="$cppflags -I/usr/include/gdbm"
20801         t_ndbm=$define
20802     fi
20803     ;;
20804 esac
20805
20806 case "$t_ndbm" in
20807 $define)
20808         : see if dbm_open exists
20809         set dbm_open d_dbm_open
20810         eval $inlibc
20811         case "$d_dbm_open" in
20812         $undef)
20813                 t_ndbm="$undef"
20814                 echo "We won't be including <ndbm.h>"
20815                 ;;
20816         esac
20817         ;;
20818 esac
20819 val="$t_ndbm"
20820 set i_ndbm
20821 eval $setvar
20822
20823 : see if net/errno.h is available
20824 val=''
20825 set net/errno.h val
20826 eval $inhdr
20827
20828 : Unfortunately, it causes problems on some systems.  Arrgh.
20829 case "$val" in
20830 $define)
20831         cat > try.c <<'EOM'
20832 #include <stdio.h>
20833 #include <errno.h>
20834 #include <net/errno.h>
20835 int func()
20836 {
20837         return ENOTSOCK;
20838 }
20839 EOM
20840         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20841                 echo "We'll be including <net/errno.h>." >&4
20842         else
20843                 echo "We won't be including <net/errno.h>." >&4
20844                 val="$undef"
20845         fi
20846         $rm_try
20847         ;;
20848 esac
20849 set i_neterrno
20850 eval $setvar
20851
20852 : see if netinet/tcp.h is available
20853 set netinet/tcp.h i_netinettcp
20854 eval $inhdr
20855
20856 : see if this is a poll.h system
20857 set poll.h i_poll
20858 eval $inhdr
20859
20860 : see if this is a prot.h system
20861 set prot.h i_prot
20862 eval $inhdr
20863
20864 : Preprocessor symbols
20865 echo " "
20866 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20867 $cat <<'EOSH' > Cppsym.know
20868 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20869 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20870 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20871 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20872 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20873 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20874 bull c cadmus clipper CMU COFF COMPILER_VERSION
20875 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20876 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20877 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20878 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20879 GLIBC GLIBC_MINOR
20880 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20881 H3050R H3050RX hbullx20 hcx host_mips
20882 hp200 hp300 hp700 HP700 hp800 hp9000
20883 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20884 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20885 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20886 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20887 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20888 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20889 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20890 LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20891 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20892 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20893 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20894 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20895 MATH_HAS_NO_SIDE_EFFECTS
20896 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20897 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20898 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20899 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20900 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20901 NetBSD news1500 news1700 news1800 news1900 news3700
20902 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20903 ns32016 ns32332 ns32k nsc32000
20904 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20905 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20906 pc532 pdp11 PGC PIC plexus PORTAR posix
20907 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20908 POSIX_C_SOURCE POSIX_SOURCE POWER
20909 PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
20910 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20911 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20912 sony sony_news sonyrisc sparc sparclite spectrum
20913 stardent stdc STDC_EXT stratos sun sun3 sun386
20914 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20915 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20916 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20917 sysV68 sysV88 Tek4132 Tek4300 titan
20918 TM3200 TM5400 TM5600
20919 tower tower32 tower32_200 tower32_600 tower32_700
20920 tower32_800 tower32_850 tss
20921 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20922 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20923 unix UNIX95 UNIX99 unixpc unos
20924 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20925 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20926 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20927 USGr4 USGr4_2
20928 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20929 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20930 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20931 z8000
20932 EOSH
20933 # Maybe put other stuff here too.
20934 cat <<EOSH >>Cppsym.know
20935 $osname
20936 EOSH
20937 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20938 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20939 $cat Cppsym.know > Cppsym.c
20940 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20941 $rm -f Cppsym.a Cppsym.b Cppsym.c
20942 cat <<EOSH > Cppsym
20943 $startsh
20944 if $test \$# -gt 0; then
20945     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20946     if $test -s Cppsym.got; then
20947         $rm -f Cppsym.got
20948         exit 0
20949     fi
20950     $rm -f Cppsym.got
20951     exit 1
20952 else
20953     $tr " " "$trnl" | ./Cppsym.try
20954     exit 0
20955 fi
20956 EOSH
20957 chmod +x Cppsym
20958 $eunicefix Cppsym
20959 cat <<EOSH > Cppsym.try
20960 $startsh
20961 cat <<'EOCP' > try.c
20962 #include <stdio.h>
20963 #if cpp_stuff == 1
20964 #define STRINGIFY(a)    "a"
20965 #endif
20966 #if cpp_stuff == 42
20967 #define StGiFy(a)  #a
20968 #define STRINGIFY(a)    StGiFy(a)
20969 #endif
20970 #if $cpp_stuff != 1 && $cpp_stuff != 42
20971 #   include "Bletch: How does this C preprocessor stringify macros?"
20972 #endif
20973 int main() {
20974 EOCP
20975 $awk \\
20976 EOSH
20977 cat <<'EOSH' >> Cppsym.try
20978 'length($1) > 0 {
20979     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20980     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20981     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20982     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20983 }'       >> try.c
20984 echo 'return 0;}' >> try.c
20985 EOSH
20986 cat <<EOSH >> Cppsym.try
20987 ccflags="$ccflags"
20988 case "$osname-$gccversion" in
20989 irix-) ccflags="\$ccflags -woff 1178" ;;
20990 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20991 esac
20992 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20993 EOSH
20994 chmod +x Cppsym.try
20995 $eunicefix Cppsym.try
20996 ./Cppsym < Cppsym.know > Cppsym.true
20997 : Add in any linux cpp "predefined macros":
20998 case "$osname::$gccversion" in
20999   *linux*::*.*)
21000     tHdrH=_tmpHdr
21001     rm -f $tHdrH'.h' $tHdrH
21002     touch $tHdrH'.h'
21003     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
21004        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
21005        if [ -s $tHdrH'_cppsym.real' ]; then
21006           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
21007        fi
21008     fi
21009     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
21010   ;;
21011 esac
21012 : now check the C compiler for additional symbols
21013 postprocess_cc_v=''
21014 case "$osname" in
21015 aix) postprocess_cc_v="|$tr , ' '" ;;
21016 esac
21017 $cat >ccsym <<EOS
21018 $startsh
21019 $cat >tmp.c <<EOF
21020 extern int foo;
21021 EOF
21022 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
21023 do
21024         case "\$i" in
21025         -D*) echo "\$i" | $sed 's/^-D//';;
21026         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
21027         esac
21028 done
21029 $rm_try
21030 EOS
21031 postprocess_cc_v=''
21032 chmod +x ccsym
21033 $eunicefix ccsym
21034 ./ccsym > ccsym1.raw
21035 if $test -s ccsym1.raw; then
21036        $sort ccsym1.raw | $uniq >ccsym.raw
21037 else
21038        mv ccsym1.raw ccsym.raw
21039 fi
21040
21041 $awk '/\=/ { print $0; next }
21042         { print $0"=1" }' ccsym.raw >ccsym.list
21043 $comm -13 Cppsym.true ccsym.list >ccsym.own
21044 $comm -12 Cppsym.true ccsym.list >ccsym.com
21045 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
21046 also=''
21047 if $test -z ccsym.raw; then
21048         echo "Your C compiler doesn't seem to define any symbols!" >&4
21049         echo " "
21050         echo "However, your C preprocessor defines the following symbols:"
21051         $cat Cppsym.true
21052         ccsymbols=''
21053         cppsymbols=`$cat Cppsym.true`
21054         cppsymbols=`echo $cppsymbols`
21055         cppccsymbols="$cppsymbols"
21056 else
21057         if $test -s ccsym.com; then
21058                 echo "Your C compiler and pre-processor define these symbols:"
21059                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
21060                 also='also '
21061                 symbols='ones'
21062                 cppccsymbols=`$cat ccsym.com`
21063                 cppccsymbols=`echo $cppccsymbols`
21064                 $test "$silent" || sleep 1
21065         fi
21066         if $test -s ccsym.cpp; then
21067                 $test "$also" && echo " "
21068                 echo "Your C pre-processor ${also}defines the following symbols:"
21069                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
21070                 also='further '
21071                 cppsymbols=`$cat ccsym.cpp`
21072                 cppsymbols=`echo $cppsymbols`
21073                 $test "$silent" || sleep 1
21074         fi
21075         if $test -s ccsym.own; then
21076                 $test "$also" && echo " "
21077                 echo "Your C compiler ${also}defines the following cpp symbols:"
21078                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
21079                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
21080                 ccsymbols=`$cat ccsym.own`
21081                 ccsymbols=`echo $ccsymbols`
21082                 $test "$silent" || sleep 1
21083         fi
21084 fi
21085
21086 : see if this is a termio system
21087 val="$undef"
21088 val2="$undef"
21089 val3="$undef"
21090 if $test `./findhdr termios.h`; then
21091         set tcsetattr i_termios
21092         eval $inlibc
21093         val3="$i_termios"
21094 fi
21095 echo " "
21096 case "$val3" in
21097 "$define") echo "You have POSIX termios.h... good!" >&4;;
21098 *) if ./Cppsym pyr; then
21099                 case "`/bin/universe`" in
21100                 ucb) if $test `./findhdr sgtty.h`; then
21101                                 val2="$define"
21102                                 echo "<sgtty.h> found." >&4
21103                         else
21104                                 echo "System is pyramid with BSD universe."
21105                                 ./warn "<sgtty.h> not found--you could have problems."
21106                         fi;;
21107                 *) if $test `./findhdr termio.h`; then
21108                                 val="$define"
21109                                 echo "<termio.h> found." >&4
21110                         else
21111                                 echo "System is pyramid with USG universe."
21112                                 ./warn "<termio.h> not found--you could have problems."
21113                         fi;;
21114                 esac
21115         elif ./usg; then
21116                 if $test `./findhdr termio.h`; then
21117                         echo "<termio.h> found." >&4
21118                         val="$define"
21119                 elif $test `./findhdr sgtty.h`; then
21120                         echo "<sgtty.h> found." >&4
21121                         val2="$define"
21122                 else
21123                         ./warn "Neither <termio.h> nor <sgtty.h> found--cross fingers!"
21124                 fi
21125         else
21126                 if $test `./findhdr sgtty.h`; then
21127                         echo "<sgtty.h> found." >&4
21128                         val2="$define"
21129                 elif $test `./findhdr termio.h`; then
21130                         echo "<termio.h> found." >&4
21131                         val="$define"
21132                 else
21133                         ./warn "Neither <sgtty.h> nor <termio.h> found--cross fingers!"
21134                 fi
21135         fi;;
21136 esac
21137 set i_termio; eval $setvar
21138 val=$val2; set i_sgtty; eval $setvar
21139 val=$val3; set i_termios; eval $setvar
21140
21141 : see if stddef is available
21142 set stddef.h i_stddef
21143 eval $inhdr
21144
21145 : see if sys/access.h is available
21146 set sys/access.h i_sysaccess
21147 eval $inhdr
21148
21149 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
21150 set sys/filio.h i_sysfilio
21151 eval $inhdr
21152 echo " "
21153 if $test `./findhdr sys/ioctl.h`; then
21154         val="$define"
21155         echo '<sys/ioctl.h> found.' >&4
21156 else
21157         val="$undef"
21158         if $test $i_sysfilio = "$define"; then
21159             echo '<sys/ioctl.h> NOT found.' >&4
21160         else
21161                 $test $i_sgtty = "$define" && xxx="sgtty.h"
21162                 $test $i_termio = "$define" && xxx="termio.h"
21163                 $test $i_termios = "$define" && xxx="termios.h"
21164 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
21165         fi
21166 fi
21167 set i_sysioctl
21168 eval $setvar
21169
21170 : see if socket ioctl defs are in sys/sockio.h
21171 echo " "
21172 xxx=`./findhdr sys/sockio.h`
21173 if $test "$xxx"; then
21174         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
21175                 val="$define"
21176                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
21177         else
21178                 val="$undef"
21179                 echo "No socket ioctls found in <sys/sockio.h>." >&4
21180         fi
21181 else
21182         val="$undef"
21183         $cat <<EOM
21184 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
21185 EOM
21186 fi
21187 set i_syssockio
21188 eval $setvar
21189
21190 : see if this is a syslog.h system
21191 set syslog.h i_syslog
21192 eval $inhdr
21193
21194 : see if this is a sys/mode.h system
21195 set sys/mode.h i_sysmode
21196 eval $inhdr
21197
21198 : see if there is a sys/poll.h file
21199 set sys/poll.h i_syspoll
21200 eval $inhdr
21201
21202 : see if sys/resource.h has to be included
21203 set sys/resource.h i_sysresrc
21204 eval $inhdr
21205
21206 : see if sys/security.h is available
21207 set sys/security.h i_syssecrt
21208 eval $inhdr
21209
21210 : see if this is a sys/statvfs.h system
21211 set sys/statvfs.h i_sysstatvfs
21212 eval $inhdr
21213
21214 : see if this is a sys/un.h system
21215 set sys/un.h i_sysun
21216 eval $inhdr
21217
21218 : see if this is a sys/utsname.h system
21219 set sys/utsname.h i_sysutsname
21220 eval $inhdr
21221
21222 : see if this is a syswait system
21223 set sys/wait.h i_syswait
21224 eval $inhdr
21225
21226 : see if this is a ustat.h system
21227 set ustat.h i_ustat
21228 eval $inhdr
21229
21230 : see if this is an utime system
21231 set utime.h i_utime
21232 eval $inhdr
21233
21234 : see if this is a values.h system
21235 set values.h i_values
21236 eval $inhdr
21237
21238 : see if this is a vfork system
21239 case "$d_vfork" in
21240 "$define")
21241         set vfork.h i_vfork
21242         eval $inhdr
21243         ;;
21244 *)
21245         i_vfork="$undef"
21246         ;;
21247 esac
21248
21249 : Check extensions
21250 echo " "
21251 echo "Looking for extensions..." >&4
21252 : If we are using the old config.sh, known_extensions may contain
21253 : old or inaccurate or duplicate values.
21254 known_extensions=''
21255 nonxs_extensions=''
21256 : We do not use find because it might not be available.
21257 : We do not just use MANIFEST because the user may have dropped
21258 : some additional extensions into the source tree and expect them
21259 : to be built.
21260
21261 : Function to recursively find available extensions, ignoring DynaLoader
21262 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21263 find_extensions='
21264     for xxx in *; do
21265         case "$xxx" in
21266             DynaLoader|dynaload) ;;
21267             *)
21268             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21269                 known_extensions="$known_extensions $1$xxx";
21270             elif $test -f $xxx/Makefile.PL; then
21271                 nonxs_extensions="$nonxs_extensions $1$xxx";
21272             else
21273                 if $test -d $xxx -a $# -lt 10; then
21274                     set $1$xxx/ $*;
21275                     cd "$xxx";
21276                     eval $find_extensions;
21277                     cd ..;
21278                     shift;
21279                 fi;
21280             fi
21281             ;;
21282         esac;
21283     done'
21284 tdir=`pwd`
21285 cd "$rsrc/ext"
21286 set X
21287 shift
21288 eval $find_extensions
21289 # Special case:  Add in modules that nest beyond the first level.
21290 # Currently threads/shared and Hash/Util/FieldHash, since they are
21291 # not picked up by the recursive find above (and adding in general
21292 # recursive finding breaks SDBM_File/sdbm).
21293 # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
21294 known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
21295 set X $known_extensions
21296 shift
21297 known_extensions="$*"
21298 set X $nonxs_extensions
21299 shift
21300 nonxs_extensions="$*"
21301 cd "$tdir"
21302
21303 : Now see which are supported on this system.
21304 avail_ext=''
21305 for xxx in $known_extensions ; do
21306         case "$xxx" in
21307         DB_File|db_file)
21308                 case "$i_db" in
21309                 $define) avail_ext="$avail_ext $xxx" ;;
21310                 esac
21311                 ;;
21312         GDBM_File|gdbm_fil)
21313                 case "$i_gdbm" in
21314                 $define) avail_ext="$avail_ext $xxx" ;;
21315                 esac
21316                 ;;
21317         I18N/Langinfo|i18n_lan)
21318                 case "$i_langinfo$d_nl_langinfo" in
21319                 $define$define) avail_ext="$avail_ext $xxx" ;;
21320                 esac
21321                 ;;
21322         IPC/SysV|ipc/sysv)
21323                 : XXX Do we need a useipcsysv variable here
21324                 case "${d_msg}${d_sem}${d_shm}" in
21325                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21326                 esac
21327                 ;;
21328         NDBM_File|ndbm_fil)
21329                 case "$i_ndbm" in
21330                 $define)
21331                     case "$osname-$use64bitint" in
21332                     hpux-define)
21333                         case "$libs" in
21334                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21335                         esac
21336                         ;;
21337                     *) avail_ext="$avail_ext $xxx" ;;
21338                     esac
21339                     ;;
21340                 esac
21341                 ;;
21342         ODBM_File|odbm_fil)
21343                 case "${i_dbm}${i_rpcsvcdbm}" in
21344                 *"${define}"*)
21345                     case "$d_cplusplus" in
21346                     define) ;; # delete as a function name will not work
21347                     *)  case "$osname-$use64bitint" in
21348                         hpux-define)
21349                             case "$libs" in
21350                             *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21351                             esac
21352                             ;;
21353                         *) avail_ext="$avail_ext $xxx" ;;
21354                         esac
21355                         ;;
21356                     esac
21357                     ;;
21358                 esac
21359                 ;;
21360         Opcode|opcode)
21361                 case "$useopcode" in
21362                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21363                 esac
21364                 ;;
21365         POSIX|posix)
21366                 case "$useposix" in
21367                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21368                 esac
21369                 ;;
21370         Socket|socket)
21371                 case "$d_socket" in
21372                 true|$define|y)
21373                     case "$osname" in
21374                     beos) ;; # not unless BONE
21375                     *) avail_ext="$avail_ext $xxx" ;;
21376                     esac
21377                     ;;
21378                 esac
21379                 ;;
21380         Sys/Syslog|sys/syslog)
21381                 : XXX syslog requires socket
21382                 case "$d_socket" in
21383                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21384                 esac
21385                 ;;
21386         Thread|thread)
21387                 case "$usethreads" in
21388                 true|$define|y)
21389                         case "$use5005threads" in
21390                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21391                         esac
21392                 esac
21393                 ;;
21394         threads|threads/shared)
21395                 # threads and threads::shared are special cases.
21396                 # To stop people from asking "Perl 5.8.0 was supposed
21397                 # to have this new fancy threads implementation but my
21398                 # perl doesn't have it" and from people trying to
21399                 # (re)install the threads module using CPAN.pm and
21400                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21401                 # the threads.pm and threads/shared.pm will always be
21402                 # there, croaking informatively ("you need to rebuild
21403                 # all of Perl with threads, sorry") when threads haven't
21404                 # been compiled in.
21405                 # --jhi
21406                 avail_ext="$avail_ext $xxx"
21407                 ;;
21408         Win32*)
21409                 case "$osname" in
21410                 cygwin) avail_ext="$avail_ext $xxx" ;;
21411                 esac
21412                 ;;
21413         XS/APItest|xs/apitest)
21414                 # This is just for testing.  Skip it unless we have dynamic loading.
21415
21416                 case "$usedl" in
21417                 $define) avail_ext="$avail_ext $xxx" ;;
21418                 esac
21419                 ;;
21420         XS/Typemap|xs/typemap)
21421                 # This is just for testing.  Skip it unless we have dynamic loading.
21422                 case "$usedl" in
21423                 $define) avail_ext="$avail_ext $xxx" ;;
21424                 esac
21425                 ;;
21426         *)      avail_ext="$avail_ext $xxx"
21427                 ;;
21428         esac
21429 done
21430
21431 set X $avail_ext
21432 shift
21433 avail_ext="$*"
21434
21435 case "$onlyextensions" in
21436 '') ;;
21437 *)  keepextensions=''
21438     echo "You have requested that only certains extensions be included..." >&4
21439     for i in $onlyextensions; do
21440         case " $avail_ext " in
21441         *" $i "*)
21442             echo "Keeping extension $i."
21443             keepextensions="$keepextensions $i"
21444             ;;
21445         *) echo "Ignoring extension $i." ;;
21446         esac
21447     done
21448     avail_ext="$keepextensions"
21449     ;;
21450 esac
21451
21452 case "$noextensions" in
21453 '') ;;
21454 *)  keepextensions=''
21455     echo "You have requested that certain extensions be ignored..." >&4
21456     for i in $avail_ext; do
21457         case " $noextensions " in
21458         *" $i "*) echo "Ignoring extension $i." ;;
21459         *) echo "Keeping extension $i.";
21460            keepextensions="$keepextensions $i"
21461            ;;
21462         esac
21463     done
21464     avail_ext="$keepextensions"
21465     ;;
21466 esac
21467
21468 : Now see which nonxs extensions are supported on this system.
21469 : For now assume all are.
21470 nonxs_ext=''
21471 for xxx in $nonxs_extensions ; do
21472         case "$xxx" in
21473         *)      nonxs_ext="$nonxs_ext $xxx"
21474                 ;;
21475         esac
21476 done
21477
21478 set X $nonxs_ext
21479 shift
21480 nonxs_ext="$*"
21481
21482 case $usedl in
21483 $define)
21484         $cat <<EOM
21485 A number of extensions are supplied with $package.  You may choose to
21486 compile these extensions for dynamic loading (the default), compile
21487 them into the $package executable (static loading), or not include
21488 them at all.  Answer "none" to include no extensions.
21489 Note that DynaLoader is always built and need not be mentioned here.
21490
21491 EOM
21492         case "$dynamic_ext" in
21493         '')
21494                 : Exclude those listed in static_ext
21495                 dflt=''
21496                 for xxx in $avail_ext; do
21497                         case " $static_ext " in
21498                         *" $xxx "*) ;;
21499                         *) dflt="$dflt $xxx" ;;
21500                         esac
21501                 done
21502                 set X $dflt
21503                 shift
21504                 dflt="$*"
21505                 ;;
21506         *)      dflt="$dynamic_ext"
21507                 # Perhaps we are reusing an old out-of-date config.sh.
21508                 case "$hint" in
21509                 previous)
21510                         if test X"$dynamic_ext" != X"$avail_ext"; then
21511                                 $cat <<EOM
21512 NOTICE:  Your previous config.sh list may be incorrect.
21513 The extensions now available to you are
21514         ${avail_ext}
21515 but the default list from your previous config.sh is
21516         ${dynamic_ext}
21517
21518 EOM
21519                         fi
21520                         ;;
21521                 esac
21522                 ;;
21523         esac
21524         case "$dflt" in
21525         '')     dflt=none;;
21526         esac
21527         rp="What extensions do you wish to load dynamically?"
21528         . ./myread
21529         case "$ans" in
21530         none) dynamic_ext=' ' ;;
21531         *) dynamic_ext="$ans" ;;
21532         esac
21533
21534         case "$static_ext" in
21535         '')
21536                 : Exclude those already listed in dynamic linking
21537                 dflt=''
21538                 for xxx in $avail_ext; do
21539                         case " $dynamic_ext " in
21540                         *" $xxx "*) ;;
21541                         *) dflt="$dflt $xxx" ;;
21542                         esac
21543                 done
21544                 set X $dflt
21545                 shift
21546                 dflt="$*"
21547                 ;;
21548         *)  dflt="$static_ext"
21549                 ;;
21550         esac
21551
21552         case "$dflt" in
21553         '')     dflt=none;;
21554         esac
21555         rp="What extensions do you wish to load statically?"
21556         . ./myread
21557         case "$ans" in
21558         none) static_ext=' ' ;;
21559         *) static_ext="$ans" ;;
21560         esac
21561         ;;
21562 *)
21563         $cat <<EOM
21564 A number of extensions are supplied with $package.  Answer "none"
21565 to include no extensions.
21566 Note that DynaLoader is always built and need not be mentioned here.
21567
21568 EOM
21569         case "$static_ext" in
21570         '') dflt="$avail_ext" ;;
21571         *)      dflt="$static_ext"
21572                 # Perhaps we are reusing an old out-of-date config.sh.
21573                 case "$hint" in
21574                 previous)
21575                         if test X"$static_ext" != X"$avail_ext"; then
21576                                 $cat <<EOM
21577 NOTICE:  Your previous config.sh list may be incorrect.
21578 The extensions now available to you are
21579         ${avail_ext}
21580 but the default list from your previous config.sh is
21581         ${static_ext}
21582
21583 EOM
21584                         fi
21585                         ;;
21586                 esac
21587                 ;;
21588         esac
21589         : Exclude those that are not xs extensions
21590         case "$dflt" in
21591         '')     dflt=none;;
21592         esac
21593         rp="What extensions do you wish to include?"
21594         . ./myread
21595         case "$ans" in
21596         none) static_ext=' ' ;;
21597         *) static_ext="$ans" ;;
21598         esac
21599         ;;
21600 esac
21601 #
21602 # Encode is a special case.  If we are building Encode as a static
21603 # extension, we need to explicitly list its subextensions as well.
21604 # For other nested extensions, this is handled automatically by
21605 # the appropriate Makefile.PL.
21606 case " $static_ext " in
21607         *" Encode "*) # Add the subextensions of Encode
21608         cd "$rsrc/ext"
21609         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21610                 static_ext="$static_ext Encode/$xxx"
21611         done
21612         cd "$tdir"
21613         ;;
21614 esac
21615
21616 set X $dynamic_ext $static_ext $nonxs_ext
21617 shift
21618 extensions="$*"
21619
21620 # Sanity check:  We require an extension suitable for use with
21621 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21622 # should show up as failures in the test suite, but it's helpful to
21623 # catch them now.) The 'extensions' list is normally sorted
21624 # alphabetically, so we need to accept either
21625 #    DB_File ... Fcntl ... IO  ....
21626 # or something like
21627 #    Fcntl ... NDBM_File ... IO  ....
21628 case " $extensions"  in
21629 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21630 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21631 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21632 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21633    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21634    ;;
21635 esac
21636
21637 : Remove libraries needed only for extensions
21638 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21639 : The exception is SunOS 4.x, which needs them.
21640 case "${osname}X${osvers}" in
21641 sunos*X4*)
21642     perllibs="$libs"
21643     ;;
21644 *) case "$usedl" in
21645     $define|true|[yY]*)
21646             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21647             shift
21648             perllibs="$*"
21649             ;;
21650     *)  perllibs="$libs"
21651             ;;
21652     esac
21653     ;;
21654 esac
21655
21656 : Remove build directory name from cppstdin so it can be used from
21657 : either the present location or the final installed location.
21658 echo " "
21659 : Get out of the UU directory to get correct path name.
21660 cd ..
21661 case "$cppstdin" in
21662 `pwd`/cppstdin)
21663         echo "Stripping down cppstdin path name"
21664         cppstdin=cppstdin
21665         ;;
21666 esac
21667 cd UU
21668
21669 : end of configuration questions
21670 echo " "
21671 echo "End of configuration questions."
21672 echo " "
21673
21674 : back to where it started
21675 if test -d ../UU; then
21676         cd ..
21677 fi
21678
21679 : configuration may be unconditionally patched via a 'config.arch' file
21680 if $test -f config.arch; then
21681         echo "I see a config.arch file, loading it." >&4
21682         . ./config.arch
21683 fi
21684
21685 : configuration may be patched via a 'config.over' file
21686 if $test -f config.over; then
21687         echo " "
21688         dflt=y
21689         rp='I see a config.over file.  Do you wish to load it?'
21690         . UU/myread
21691         case "$ans" in
21692         n*) echo "OK, I'll ignore it.";;
21693         *)      . ./config.over
21694                 echo "Configuration override changes have been loaded."
21695                 ;;
21696         esac
21697 fi
21698
21699 : in case they want portability, strip down executable paths
21700 case "$d_portable" in
21701 "$define")
21702         echo " "
21703         echo "Stripping down executable paths..." >&4
21704         for file in $loclist $trylist; do
21705                 eval temp=\$$file
21706                 eval $file=`basename $temp`
21707         done
21708         ;;
21709 esac
21710
21711 : create config.sh file
21712 echo " "
21713 echo "Creating config.sh..." >&4
21714 $spitshell <<EOT >config.sh
21715 $startsh
21716 #
21717 # This file was produced by running the Configure script. It holds all the
21718 # definitions figured out by Configure. Should you modify one of these values,
21719 # do not forget to propagate your changes by running "Configure -der". You may
21720 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21721 #
21722
21723 # Package name      : $package
21724 # Source directory  : $src
21725 # Configuration time: $cf_time
21726 # Configured by     : $cf_by
21727 # Target system     : $myuname
21728
21729 EOT
21730 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21731 $spitshell <<EOT >>config.sh
21732
21733 Author='$Author'
21734 Date='$Date'
21735 Header='$Header'
21736 Id='$Id'
21737 Locker='$Locker'
21738 Log='$Log'
21739 RCSfile='$RCSfile'
21740 Revision='$Revision'
21741 Source='$Source'
21742 State='$State'
21743 _a='$_a'
21744 _exe='$_exe'
21745 _o='$_o'
21746 afs='$afs'
21747 afsroot='$afsroot'
21748 alignbytes='$alignbytes'
21749 ansi2knr='$ansi2knr'
21750 aphostname='$aphostname'
21751 api_revision='$api_revision'
21752 api_subversion='$api_subversion'
21753 api_version='$api_version'
21754 api_versionstring='$api_versionstring'
21755 ar='$ar'
21756 archlib='$archlib'
21757 archlibexp='$archlibexp'
21758 archname64='$archname64'
21759 archname='$archname'
21760 archobjs='$archobjs'
21761 asctime_r_proto='$asctime_r_proto'
21762 awk='$awk'
21763 baserev='$baserev'
21764 bash='$bash'
21765 bin='$bin'
21766 binexp='$binexp'
21767 bison='$bison'
21768 byacc='$byacc'
21769 byteorder='$byteorder'
21770 c='$c'
21771 castflags='$castflags'
21772 cat='$cat'
21773 cc='$cc'
21774 cccdlflags='$cccdlflags'
21775 ccdlflags='$ccdlflags'
21776 ccflags='$ccflags'
21777 ccflags_uselargefiles='$ccflags_uselargefiles'
21778 ccname='$ccname'
21779 ccsymbols='$ccsymbols'
21780 ccversion='$ccversion'
21781 cf_by='$cf_by'
21782 cf_email='$cf_email'
21783 cf_time='$cf_time'
21784 chgrp='$chgrp'
21785 chmod='$chmod'
21786 chown='$chown'
21787 clocktype='$clocktype'
21788 comm='$comm'
21789 compress='$compress'
21790 contains='$contains'
21791 cp='$cp'
21792 cpio='$cpio'
21793 cpp='$cpp'
21794 cpp_stuff='$cpp_stuff'
21795 cppccsymbols='$cppccsymbols'
21796 cppflags='$cppflags'
21797 cpplast='$cpplast'
21798 cppminus='$cppminus'
21799 cpprun='$cpprun'
21800 cppstdin='$cppstdin'
21801 cppsymbols='$cppsymbols'
21802 crypt_r_proto='$crypt_r_proto'
21803 cryptlib='$cryptlib'
21804 csh='$csh'
21805 ctermid_r_proto='$ctermid_r_proto'
21806 ctime_r_proto='$ctime_r_proto'
21807 d_Gconvert='$d_Gconvert'
21808 d_PRIEUldbl='$d_PRIEUldbl'
21809 d_PRIFUldbl='$d_PRIFUldbl'
21810 d_PRIGUldbl='$d_PRIGUldbl'
21811 d_PRIXU64='$d_PRIXU64'
21812 d_PRId64='$d_PRId64'
21813 d_PRIeldbl='$d_PRIeldbl'
21814 d_PRIfldbl='$d_PRIfldbl'
21815 d_PRIgldbl='$d_PRIgldbl'
21816 d_PRIi64='$d_PRIi64'
21817 d_PRIo64='$d_PRIo64'
21818 d_PRIu64='$d_PRIu64'
21819 d_PRIx64='$d_PRIx64'
21820 d_SCNfldbl='$d_SCNfldbl'
21821 d__fwalk='$d__fwalk'
21822 d_access='$d_access'
21823 d_accessx='$d_accessx'
21824 d_aintl='$d_aintl'
21825 d_alarm='$d_alarm'
21826 d_archlib='$d_archlib'
21827 d_asctime_r='$d_asctime_r'
21828 d_atolf='$d_atolf'
21829 d_atoll='$d_atoll'
21830 d_attribute_format='$d_attribute_format'
21831 d_attribute_malloc='$d_attribute_malloc'
21832 d_attribute_nonnull='$d_attribute_nonnull'
21833 d_attribute_noreturn='$d_attribute_noreturn'
21834 d_attribute_pure='$d_attribute_pure'
21835 d_attribute_unused='$d_attribute_unused'
21836 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21837 d_bcmp='$d_bcmp'
21838 d_bcopy='$d_bcopy'
21839 d_bsd='$d_bsd'
21840 d_bsdgetpgrp='$d_bsdgetpgrp'
21841 d_bsdsetpgrp='$d_bsdsetpgrp'
21842 d_builtin_choose_expr='$d_builtin_choose_expr'
21843 d_builtin_expect='$d_builtin_expect'
21844 d_bzero='$d_bzero'
21845 d_c99_variadic_macros='$d_c99_variadic_macros'
21846 d_casti32='$d_casti32'
21847 d_castneg='$d_castneg'
21848 d_charvspr='$d_charvspr'
21849 d_chown='$d_chown'
21850 d_chroot='$d_chroot'
21851 d_chsize='$d_chsize'
21852 d_class='$d_class'
21853 d_clearenv='$d_clearenv'
21854 d_closedir='$d_closedir'
21855 d_cmsghdr_s='$d_cmsghdr_s'
21856 d_const='$d_const'
21857 d_copysignl='$d_copysignl'
21858 d_cplusplus='$d_cplusplus'
21859 d_crypt='$d_crypt'
21860 d_crypt_r='$d_crypt_r'
21861 d_csh='$d_csh'
21862 d_ctermid='$d_ctermid'
21863 d_ctermid_r='$d_ctermid_r'
21864 d_ctime_r='$d_ctime_r'
21865 d_cuserid='$d_cuserid'
21866 d_dbl_dig='$d_dbl_dig'
21867 d_dbminitproto='$d_dbminitproto'
21868 d_difftime='$d_difftime'
21869 d_dir_dd_fd='$d_dir_dd_fd'
21870 d_dirfd='$d_dirfd'
21871 d_dirnamlen='$d_dirnamlen'
21872 d_dlerror='$d_dlerror'
21873 d_dlopen='$d_dlopen'
21874 d_dlsymun='$d_dlsymun'
21875 d_dosuid='$d_dosuid'
21876 d_drand48_r='$d_drand48_r'
21877 d_drand48proto='$d_drand48proto'
21878 d_dup2='$d_dup2'
21879 d_eaccess='$d_eaccess'
21880 d_endgrent='$d_endgrent'
21881 d_endgrent_r='$d_endgrent_r'
21882 d_endhent='$d_endhent'
21883 d_endhostent_r='$d_endhostent_r'
21884 d_endnent='$d_endnent'
21885 d_endnetent_r='$d_endnetent_r'
21886 d_endpent='$d_endpent'
21887 d_endprotoent_r='$d_endprotoent_r'
21888 d_endpwent='$d_endpwent'
21889 d_endpwent_r='$d_endpwent_r'
21890 d_endsent='$d_endsent'
21891 d_endservent_r='$d_endservent_r'
21892 d_eofnblk='$d_eofnblk'
21893 d_eunice='$d_eunice'
21894 d_faststdio='$d_faststdio'
21895 d_fchdir='$d_fchdir'
21896 d_fchmod='$d_fchmod'
21897 d_fchown='$d_fchown'
21898 d_fcntl='$d_fcntl'
21899 d_fcntl_can_lock='$d_fcntl_can_lock'
21900 d_fd_macros='$d_fd_macros'
21901 d_fd_set='$d_fd_set'
21902 d_fds_bits='$d_fds_bits'
21903 d_fgetpos='$d_fgetpos'
21904 d_finite='$d_finite'
21905 d_finitel='$d_finitel'
21906 d_flexfnam='$d_flexfnam'
21907 d_flock='$d_flock'
21908 d_flockproto='$d_flockproto'
21909 d_fork='$d_fork'
21910 d_fp_class='$d_fp_class'
21911 d_fpathconf='$d_fpathconf'
21912 d_fpclass='$d_fpclass'
21913 d_fpclassify='$d_fpclassify'
21914 d_fpclassl='$d_fpclassl'
21915 d_fpos64_t='$d_fpos64_t'
21916 d_frexpl='$d_frexpl'
21917 d_fs_data_s='$d_fs_data_s'
21918 d_fseeko='$d_fseeko'
21919 d_fsetpos='$d_fsetpos'
21920 d_fstatfs='$d_fstatfs'
21921 d_fstatvfs='$d_fstatvfs'
21922 d_fsync='$d_fsync'
21923 d_ftello='$d_ftello'
21924 d_ftime='$d_ftime'
21925 d_futimes='$d_futimes'
21926 d_getcwd='$d_getcwd'
21927 d_getespwnam='$d_getespwnam'
21928 d_getfsstat='$d_getfsstat'
21929 d_getgrent='$d_getgrent'
21930 d_getgrent_r='$d_getgrent_r'
21931 d_getgrgid_r='$d_getgrgid_r'
21932 d_getgrnam_r='$d_getgrnam_r'
21933 d_getgrps='$d_getgrps'
21934 d_gethbyaddr='$d_gethbyaddr'
21935 d_gethbyname='$d_gethbyname'
21936 d_gethent='$d_gethent'
21937 d_gethname='$d_gethname'
21938 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21939 d_gethostbyname_r='$d_gethostbyname_r'
21940 d_gethostent_r='$d_gethostent_r'
21941 d_gethostprotos='$d_gethostprotos'
21942 d_getitimer='$d_getitimer'
21943 d_getlogin='$d_getlogin'
21944 d_getlogin_r='$d_getlogin_r'
21945 d_getmnt='$d_getmnt'
21946 d_getmntent='$d_getmntent'
21947 d_getnbyaddr='$d_getnbyaddr'
21948 d_getnbyname='$d_getnbyname'
21949 d_getnent='$d_getnent'
21950 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21951 d_getnetbyname_r='$d_getnetbyname_r'
21952 d_getnetent_r='$d_getnetent_r'
21953 d_getnetprotos='$d_getnetprotos'
21954 d_getpagsz='$d_getpagsz'
21955 d_getpbyname='$d_getpbyname'
21956 d_getpbynumber='$d_getpbynumber'
21957 d_getpent='$d_getpent'
21958 d_getpgid='$d_getpgid'
21959 d_getpgrp2='$d_getpgrp2'
21960 d_getpgrp='$d_getpgrp'
21961 d_getppid='$d_getppid'
21962 d_getprior='$d_getprior'
21963 d_getprotobyname_r='$d_getprotobyname_r'
21964 d_getprotobynumber_r='$d_getprotobynumber_r'
21965 d_getprotoent_r='$d_getprotoent_r'
21966 d_getprotoprotos='$d_getprotoprotos'
21967 d_getprpwnam='$d_getprpwnam'
21968 d_getpwent='$d_getpwent'
21969 d_getpwent_r='$d_getpwent_r'
21970 d_getpwnam_r='$d_getpwnam_r'
21971 d_getpwuid_r='$d_getpwuid_r'
21972 d_getsbyname='$d_getsbyname'
21973 d_getsbyport='$d_getsbyport'
21974 d_getsent='$d_getsent'
21975 d_getservbyname_r='$d_getservbyname_r'
21976 d_getservbyport_r='$d_getservbyport_r'
21977 d_getservent_r='$d_getservent_r'
21978 d_getservprotos='$d_getservprotos'
21979 d_getspnam='$d_getspnam'
21980 d_getspnam_r='$d_getspnam_r'
21981 d_gettimeod='$d_gettimeod'
21982 d_gmtime_r='$d_gmtime_r'
21983 d_gnulibc='$d_gnulibc'
21984 d_grpasswd='$d_grpasswd'
21985 d_hasmntopt='$d_hasmntopt'
21986 d_htonl='$d_htonl'
21987 d_ilogbl='$d_ilogbl'
21988 d_inc_version_list='$d_inc_version_list'
21989 d_index='$d_index'
21990 d_inetaton='$d_inetaton'
21991 d_int64_t='$d_int64_t'
21992 d_isascii='$d_isascii'
21993 d_isfinite='$d_isfinite'
21994 d_isinf='$d_isinf'
21995 d_isnan='$d_isnan'
21996 d_isnanl='$d_isnanl'
21997 d_killpg='$d_killpg'
21998 d_lchown='$d_lchown'
21999 d_ldbl_dig='$d_ldbl_dig'
22000 d_libm_lib_version='$d_libm_lib_version'
22001 d_link='$d_link'
22002 d_localtime_r='$d_localtime_r'
22003 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
22004 d_locconv='$d_locconv'
22005 d_lockf='$d_lockf'
22006 d_longdbl='$d_longdbl'
22007 d_longlong='$d_longlong'
22008 d_lseekproto='$d_lseekproto'
22009 d_lstat='$d_lstat'
22010 d_madvise='$d_madvise'
22011 d_malloc_good_size='$d_malloc_good_size'
22012 d_malloc_size='$d_malloc_size'
22013 d_mblen='$d_mblen'
22014 d_mbstowcs='$d_mbstowcs'
22015 d_mbtowc='$d_mbtowc'
22016 d_memchr='$d_memchr'
22017 d_memcmp='$d_memcmp'
22018 d_memcpy='$d_memcpy'
22019 d_memmove='$d_memmove'
22020 d_memset='$d_memset'
22021 d_mkdir='$d_mkdir'
22022 d_mkdtemp='$d_mkdtemp'
22023 d_mkfifo='$d_mkfifo'
22024 d_mkstemp='$d_mkstemp'
22025 d_mkstemps='$d_mkstemps'
22026 d_mktime='$d_mktime'
22027 d_mmap='$d_mmap'
22028 d_modfl='$d_modfl'
22029 d_modfl_pow32_bug='$d_modfl_pow32_bug'
22030 d_modflproto='$d_modflproto'
22031 d_mprotect='$d_mprotect'
22032 d_msg='$d_msg'
22033 d_msg_ctrunc='$d_msg_ctrunc'
22034 d_msg_dontroute='$d_msg_dontroute'
22035 d_msg_oob='$d_msg_oob'
22036 d_msg_peek='$d_msg_peek'
22037 d_msg_proxy='$d_msg_proxy'
22038 d_msgctl='$d_msgctl'
22039 d_msgget='$d_msgget'
22040 d_msghdr_s='$d_msghdr_s'
22041 d_msgrcv='$d_msgrcv'
22042 d_msgsnd='$d_msgsnd'
22043 d_msync='$d_msync'
22044 d_munmap='$d_munmap'
22045 d_mymalloc='$d_mymalloc'
22046 d_nice='$d_nice'
22047 d_nl_langinfo='$d_nl_langinfo'
22048 d_nv_preserves_uv='$d_nv_preserves_uv'
22049 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
22050 d_off64_t='$d_off64_t'
22051 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
22052 d_oldpthreads='$d_oldpthreads'
22053 d_oldsock='$d_oldsock'
22054 d_open3='$d_open3'
22055 d_pathconf='$d_pathconf'
22056 d_pause='$d_pause'
22057 d_perl_otherlibdirs='$d_perl_otherlibdirs'
22058 d_phostname='$d_phostname'
22059 d_pipe='$d_pipe'
22060 d_poll='$d_poll'
22061 d_portable='$d_portable'
22062 d_printf_format_null='$d_printf_format_null'
22063 d_procselfexe='$d_procselfexe'
22064 d_pseudofork='$d_pseudofork'
22065 d_pthread_atfork='$d_pthread_atfork'
22066 d_pthread_attr_setscope='$d_pthread_attr_setscope'
22067 d_pthread_yield='$d_pthread_yield'
22068 d_pwage='$d_pwage'
22069 d_pwchange='$d_pwchange'
22070 d_pwclass='$d_pwclass'
22071 d_pwcomment='$d_pwcomment'
22072 d_pwexpire='$d_pwexpire'
22073 d_pwgecos='$d_pwgecos'
22074 d_pwpasswd='$d_pwpasswd'
22075 d_pwquota='$d_pwquota'
22076 d_qgcvt='$d_qgcvt'
22077 d_quad='$d_quad'
22078 d_random_r='$d_random_r'
22079 d_readdir64_r='$d_readdir64_r'
22080 d_readdir='$d_readdir'
22081 d_readdir_r='$d_readdir_r'
22082 d_readlink='$d_readlink'
22083 d_readv='$d_readv'
22084 d_recvmsg='$d_recvmsg'
22085 d_rename='$d_rename'
22086 d_rewinddir='$d_rewinddir'
22087 d_rmdir='$d_rmdir'
22088 d_safebcpy='$d_safebcpy'
22089 d_safemcpy='$d_safemcpy'
22090 d_sanemcmp='$d_sanemcmp'
22091 d_sbrkproto='$d_sbrkproto'
22092 d_scalbnl='$d_scalbnl'
22093 d_sched_yield='$d_sched_yield'
22094 d_scm_rights='$d_scm_rights'
22095 d_seekdir='$d_seekdir'
22096 d_select='$d_select'
22097 d_sem='$d_sem'
22098 d_semctl='$d_semctl'
22099 d_semctl_semid_ds='$d_semctl_semid_ds'
22100 d_semctl_semun='$d_semctl_semun'
22101 d_semget='$d_semget'
22102 d_semop='$d_semop'
22103 d_sendmsg='$d_sendmsg'
22104 d_setegid='$d_setegid'
22105 d_seteuid='$d_seteuid'
22106 d_setgrent='$d_setgrent'
22107 d_setgrent_r='$d_setgrent_r'
22108 d_setgrps='$d_setgrps'
22109 d_sethent='$d_sethent'
22110 d_sethostent_r='$d_sethostent_r'
22111 d_setitimer='$d_setitimer'
22112 d_setlinebuf='$d_setlinebuf'
22113 d_setlocale='$d_setlocale'
22114 d_setlocale_r='$d_setlocale_r'
22115 d_setnent='$d_setnent'
22116 d_setnetent_r='$d_setnetent_r'
22117 d_setpent='$d_setpent'
22118 d_setpgid='$d_setpgid'
22119 d_setpgrp2='$d_setpgrp2'
22120 d_setpgrp='$d_setpgrp'
22121 d_setprior='$d_setprior'
22122 d_setproctitle='$d_setproctitle'
22123 d_setprotoent_r='$d_setprotoent_r'
22124 d_setpwent='$d_setpwent'
22125 d_setpwent_r='$d_setpwent_r'
22126 d_setregid='$d_setregid'
22127 d_setresgid='$d_setresgid'
22128 d_setresuid='$d_setresuid'
22129 d_setreuid='$d_setreuid'
22130 d_setrgid='$d_setrgid'
22131 d_setruid='$d_setruid'
22132 d_setsent='$d_setsent'
22133 d_setservent_r='$d_setservent_r'
22134 d_setsid='$d_setsid'
22135 d_setvbuf='$d_setvbuf'
22136 d_sfio='$d_sfio'
22137 d_shm='$d_shm'
22138 d_shmat='$d_shmat'
22139 d_shmatprototype='$d_shmatprototype'
22140 d_shmctl='$d_shmctl'
22141 d_shmdt='$d_shmdt'
22142 d_shmget='$d_shmget'
22143 d_sigaction='$d_sigaction'
22144 d_signbit='$d_signbit'
22145 d_sigprocmask='$d_sigprocmask'
22146 d_sigsetjmp='$d_sigsetjmp'
22147 d_sitearch='$d_sitearch'
22148 d_snprintf='$d_snprintf'
22149 d_sockatmark='$d_sockatmark'
22150 d_sockatmarkproto='$d_sockatmarkproto'
22151 d_socket='$d_socket'
22152 d_socklen_t='$d_socklen_t'
22153 d_sockpair='$d_sockpair'
22154 d_socks5_init='$d_socks5_init'
22155 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
22156 d_sqrtl='$d_sqrtl'
22157 d_srand48_r='$d_srand48_r'
22158 d_srandom_r='$d_srandom_r'
22159 d_sresgproto='$d_sresgproto'
22160 d_sresuproto='$d_sresuproto'
22161 d_statblks='$d_statblks'
22162 d_statfs_f_flags='$d_statfs_f_flags'
22163 d_statfs_s='$d_statfs_s'
22164 d_statvfs='$d_statvfs'
22165 d_stdio_cnt_lval='$d_stdio_cnt_lval'
22166 d_stdio_ptr_lval='$d_stdio_ptr_lval'
22167 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
22168 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
22169 d_stdio_stream_array='$d_stdio_stream_array'
22170 d_stdiobase='$d_stdiobase'
22171 d_stdstdio='$d_stdstdio'
22172 d_strchr='$d_strchr'
22173 d_strcoll='$d_strcoll'
22174 d_strctcpy='$d_strctcpy'
22175 d_strerrm='$d_strerrm'
22176 d_strerror='$d_strerror'
22177 d_strerror_r='$d_strerror_r'
22178 d_strftime='$d_strftime'
22179 d_strlcat='$d_strlcat'
22180 d_strlcpy='$d_strlcpy'
22181 d_strtod='$d_strtod'
22182 d_strtol='$d_strtol'
22183 d_strtold='$d_strtold'
22184 d_strtoll='$d_strtoll'
22185 d_strtoq='$d_strtoq'
22186 d_strtoul='$d_strtoul'
22187 d_strtoull='$d_strtoull'
22188 d_strtouq='$d_strtouq'
22189 d_strxfrm='$d_strxfrm'
22190 d_suidsafe='$d_suidsafe'
22191 d_symlink='$d_symlink'
22192 d_syscall='$d_syscall'
22193 d_syscallproto='$d_syscallproto'
22194 d_sysconf='$d_sysconf'
22195 d_sysernlst='$d_sysernlst'
22196 d_syserrlst='$d_syserrlst'
22197 d_system='$d_system'
22198 d_tcgetpgrp='$d_tcgetpgrp'
22199 d_tcsetpgrp='$d_tcsetpgrp'
22200 d_telldir='$d_telldir'
22201 d_telldirproto='$d_telldirproto'
22202 d_time='$d_time'
22203 d_times='$d_times'
22204 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
22205 d_tm_tm_zone='$d_tm_tm_zone'
22206 d_tmpnam_r='$d_tmpnam_r'
22207 d_truncate='$d_truncate'
22208 d_ttyname_r='$d_ttyname_r'
22209 d_tzname='$d_tzname'
22210 d_u32align='$d_u32align'
22211 d_ualarm='$d_ualarm'
22212 d_umask='$d_umask'
22213 d_uname='$d_uname'
22214 d_union_semun='$d_union_semun'
22215 d_unordered='$d_unordered'
22216 d_unsetenv='$d_unsetenv'
22217 d_usleep='$d_usleep'
22218 d_usleepproto='$d_usleepproto'
22219 d_ustat='$d_ustat'
22220 d_vendorarch='$d_vendorarch'
22221 d_vendorbin='$d_vendorbin'
22222 d_vendorlib='$d_vendorlib'
22223 d_vendorscript='$d_vendorscript'
22224 d_vfork='$d_vfork'
22225 d_void_closedir='$d_void_closedir'
22226 d_voidsig='$d_voidsig'
22227 d_voidtty='$d_voidtty'
22228 d_volatile='$d_volatile'
22229 d_vprintf='$d_vprintf'
22230 d_vsnprintf='$d_vsnprintf'
22231 d_wait4='$d_wait4'
22232 d_waitpid='$d_waitpid'
22233 d_wcstombs='$d_wcstombs'
22234 d_wctomb='$d_wctomb'
22235 d_writev='$d_writev'
22236 d_xenix='$d_xenix'
22237 date='$date'
22238 db_hashtype='$db_hashtype'
22239 db_prefixtype='$db_prefixtype'
22240 db_version_major='$db_version_major'
22241 db_version_minor='$db_version_minor'
22242 db_version_patch='$db_version_patch'
22243 defvoidused='$defvoidused'
22244 direntrytype='$direntrytype'
22245 dlext='$dlext'
22246 dlsrc='$dlsrc'
22247 doublesize='$doublesize'
22248 drand01='$drand01'
22249 drand48_r_proto='$drand48_r_proto'
22250 dtrace='$dtrace'
22251 dynamic_ext='$dynamic_ext'
22252 eagain='$eagain'
22253 ebcdic='$ebcdic'
22254 echo='$echo'
22255 egrep='$egrep'
22256 emacs='$emacs'
22257 endgrent_r_proto='$endgrent_r_proto'
22258 endhostent_r_proto='$endhostent_r_proto'
22259 endnetent_r_proto='$endnetent_r_proto'
22260 endprotoent_r_proto='$endprotoent_r_proto'
22261 endpwent_r_proto='$endpwent_r_proto'
22262 endservent_r_proto='$endservent_r_proto'
22263 eunicefix='$eunicefix'
22264 exe_ext='$exe_ext'
22265 expr='$expr'
22266 extensions='$extensions'
22267 extras='$extras'
22268 fflushNULL='$fflushNULL'
22269 fflushall='$fflushall'
22270 find='$find'
22271 firstmakefile='$firstmakefile'
22272 flex='$flex'
22273 fpossize='$fpossize'
22274 fpostype='$fpostype'
22275 freetype='$freetype'
22276 from='$from'
22277 full_ar='$full_ar'
22278 full_csh='$full_csh'
22279 full_sed='$full_sed'
22280 gccansipedantic='$gccansipedantic'
22281 gccosandvers='$gccosandvers'
22282 gccversion='$gccversion'
22283 getgrent_r_proto='$getgrent_r_proto'
22284 getgrgid_r_proto='$getgrgid_r_proto'
22285 getgrnam_r_proto='$getgrnam_r_proto'
22286 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22287 gethostbyname_r_proto='$gethostbyname_r_proto'
22288 gethostent_r_proto='$gethostent_r_proto'
22289 getlogin_r_proto='$getlogin_r_proto'
22290 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22291 getnetbyname_r_proto='$getnetbyname_r_proto'
22292 getnetent_r_proto='$getnetent_r_proto'
22293 getprotobyname_r_proto='$getprotobyname_r_proto'
22294 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22295 getprotoent_r_proto='$getprotoent_r_proto'
22296 getpwent_r_proto='$getpwent_r_proto'
22297 getpwnam_r_proto='$getpwnam_r_proto'
22298 getpwuid_r_proto='$getpwuid_r_proto'
22299 getservbyname_r_proto='$getservbyname_r_proto'
22300 getservbyport_r_proto='$getservbyport_r_proto'
22301 getservent_r_proto='$getservent_r_proto'
22302 getspnam_r_proto='$getspnam_r_proto'
22303 gidformat='$gidformat'
22304 gidsign='$gidsign'
22305 gidsize='$gidsize'
22306 gidtype='$gidtype'
22307 glibpth='$glibpth'
22308 gmake='$gmake'
22309 gmtime_r_proto='$gmtime_r_proto'
22310 gnulibc_version='$gnulibc_version'
22311 grep='$grep'
22312 groupcat='$groupcat'
22313 groupstype='$groupstype'
22314 gzip='$gzip'
22315 h_fcntl='$h_fcntl'
22316 h_sysfile='$h_sysfile'
22317 hint='$hint'
22318 hostcat='$hostcat'
22319 html1dir='$html1dir'
22320 html1direxp='$html1direxp'
22321 html3dir='$html3dir'
22322 html3direxp='$html3direxp'
22323 i16size='$i16size'
22324 i16type='$i16type'
22325 i32size='$i32size'
22326 i32type='$i32type'
22327 i64size='$i64size'
22328 i64type='$i64type'
22329 i8size='$i8size'
22330 i8type='$i8type'
22331 i_arpainet='$i_arpainet'
22332 i_assert='$i_assert'
22333 i_bsdioctl='$i_bsdioctl'
22334 i_crypt='$i_crypt'
22335 i_db='$i_db'
22336 i_dbm='$i_dbm'
22337 i_dirent='$i_dirent'
22338 i_dld='$i_dld'
22339 i_dlfcn='$i_dlfcn'
22340 i_fcntl='$i_fcntl'
22341 i_float='$i_float'
22342 i_fp='$i_fp'
22343 i_fp_class='$i_fp_class'
22344 i_gdbm='$i_gdbm'
22345 i_grp='$i_grp'
22346 i_ieeefp='$i_ieeefp'
22347 i_inttypes='$i_inttypes'
22348 i_langinfo='$i_langinfo'
22349 i_libutil='$i_libutil'
22350 i_limits='$i_limits'
22351 i_locale='$i_locale'
22352 i_machcthr='$i_machcthr'
22353 i_malloc='$i_malloc'
22354 i_math='$i_math'
22355 i_memory='$i_memory'
22356 i_mntent='$i_mntent'
22357 i_ndbm='$i_ndbm'
22358 i_netdb='$i_netdb'
22359 i_neterrno='$i_neterrno'
22360 i_netinettcp='$i_netinettcp'
22361 i_niin='$i_niin'
22362 i_poll='$i_poll'
22363 i_prot='$i_prot'
22364 i_pthread='$i_pthread'
22365 i_pwd='$i_pwd'
22366 i_rpcsvcdbm='$i_rpcsvcdbm'
22367 i_sfio='$i_sfio'
22368 i_sgtty='$i_sgtty'
22369 i_shadow='$i_shadow'
22370 i_socks='$i_socks'
22371 i_stdarg='$i_stdarg'
22372 i_stddef='$i_stddef'
22373 i_stdlib='$i_stdlib'
22374 i_string='$i_string'
22375 i_sunmath='$i_sunmath'
22376 i_sysaccess='$i_sysaccess'
22377 i_sysdir='$i_sysdir'
22378 i_sysfile='$i_sysfile'
22379 i_sysfilio='$i_sysfilio'
22380 i_sysin='$i_sysin'
22381 i_sysioctl='$i_sysioctl'
22382 i_syslog='$i_syslog'
22383 i_sysmman='$i_sysmman'
22384 i_sysmode='$i_sysmode'
22385 i_sysmount='$i_sysmount'
22386 i_sysndir='$i_sysndir'
22387 i_sysparam='$i_sysparam'
22388 i_syspoll='$i_syspoll'
22389 i_sysresrc='$i_sysresrc'
22390 i_syssecrt='$i_syssecrt'
22391 i_sysselct='$i_sysselct'
22392 i_syssockio='$i_syssockio'
22393 i_sysstat='$i_sysstat'
22394 i_sysstatfs='$i_sysstatfs'
22395 i_sysstatvfs='$i_sysstatvfs'
22396 i_systime='$i_systime'
22397 i_systimek='$i_systimek'
22398 i_systimes='$i_systimes'
22399 i_systypes='$i_systypes'
22400 i_sysuio='$i_sysuio'
22401 i_sysun='$i_sysun'
22402 i_sysutsname='$i_sysutsname'
22403 i_sysvfs='$i_sysvfs'
22404 i_syswait='$i_syswait'
22405 i_termio='$i_termio'
22406 i_termios='$i_termios'
22407 i_time='$i_time'
22408 i_unistd='$i_unistd'
22409 i_ustat='$i_ustat'
22410 i_utime='$i_utime'
22411 i_values='$i_values'
22412 i_varargs='$i_varargs'
22413 i_varhdr='$i_varhdr'
22414 i_vfork='$i_vfork'
22415 ignore_versioned_solibs='$ignore_versioned_solibs'
22416 inc_version_list='$inc_version_list'
22417 inc_version_list_init='$inc_version_list_init'
22418 incpath='$incpath'
22419 inews='$inews'
22420 initialinstalllocation='$initialinstalllocation'
22421 installarchlib='$installarchlib'
22422 installbin='$installbin'
22423 installhtml1dir='$installhtml1dir'
22424 installhtml3dir='$installhtml3dir'
22425 installman1dir='$installman1dir'
22426 installman3dir='$installman3dir'
22427 installprefix='$installprefix'
22428 installprefixexp='$installprefixexp'
22429 installprivlib='$installprivlib'
22430 installscript='$installscript'
22431 installsitearch='$installsitearch'
22432 installsitebin='$installsitebin'
22433 installsitehtml1dir='$installsitehtml1dir'
22434 installsitehtml3dir='$installsitehtml3dir'
22435 installsitelib='$installsitelib'
22436 installsiteman1dir='$installsiteman1dir'
22437 installsiteman3dir='$installsiteman3dir'
22438 installsitescript='$installsitescript'
22439 installstyle='$installstyle'
22440 installusrbinperl='$installusrbinperl'
22441 installvendorarch='$installvendorarch'
22442 installvendorbin='$installvendorbin'
22443 installvendorhtml1dir='$installvendorhtml1dir'
22444 installvendorhtml3dir='$installvendorhtml3dir'
22445 installvendorlib='$installvendorlib'
22446 installvendorman1dir='$installvendorman1dir'
22447 installvendorman3dir='$installvendorman3dir'
22448 installvendorscript='$installvendorscript'
22449 intsize='$intsize'
22450 issymlink='$issymlink'
22451 ivdformat='$ivdformat'
22452 ivsize='$ivsize'
22453 ivtype='$ivtype'
22454 known_extensions='$known_extensions'
22455 ksh='$ksh'
22456 ld='$ld'
22457 lddlflags='$lddlflags'
22458 ldflags='$ldflags'
22459 ldflags_uselargefiles='$ldflags_uselargefiles'
22460 ldlibpthname='$ldlibpthname'
22461 less='$less'
22462 lib_ext='$lib_ext'
22463 libc='$libc'
22464 libperl='$libperl'
22465 libpth='$libpth'
22466 libs='$libs'
22467 libsdirs='$libsdirs'
22468 libsfiles='$libsfiles'
22469 libsfound='$libsfound'
22470 libspath='$libspath'
22471 libswanted='$libswanted'
22472 libswanted_uselargefiles='$libswanted_uselargefiles'
22473 line='$line'
22474 lint='$lint'
22475 lkflags='$lkflags'
22476 ln='$ln'
22477 lns='$lns'
22478 localtime_r_proto='$localtime_r_proto'
22479 locincpth='$locincpth'
22480 loclibpth='$loclibpth'
22481 longdblsize='$longdblsize'
22482 longlongsize='$longlongsize'
22483 longsize='$longsize'
22484 lp='$lp'
22485 lpr='$lpr'
22486 ls='$ls'
22487 lseeksize='$lseeksize'
22488 lseektype='$lseektype'
22489 mad='$mad'
22490 madlyh='$madlyh'
22491 madlyobj='$madlyobj'
22492 madlysrc='$madlysrc'
22493 mail='$mail'
22494 mailx='$mailx'
22495 make='$make'
22496 make_set_make='$make_set_make'
22497 mallocobj='$mallocobj'
22498 mallocsrc='$mallocsrc'
22499 malloctype='$malloctype'
22500 man1dir='$man1dir'
22501 man1direxp='$man1direxp'
22502 man1ext='$man1ext'
22503 man3dir='$man3dir'
22504 man3direxp='$man3direxp'
22505 man3ext='$man3ext'
22506 mips_type='$mips_type'
22507 mistrustnm='$mistrustnm'
22508 mkdir='$mkdir'
22509 mmaptype='$mmaptype'
22510 modetype='$modetype'
22511 more='$more'
22512 multiarch='$multiarch'
22513 mv='$mv'
22514 myarchname='$myarchname'
22515 mydomain='$mydomain'
22516 myhostname='$myhostname'
22517 myuname='$myuname'
22518 n='$n'
22519 need_va_copy='$need_va_copy'
22520 netdb_hlen_type='$netdb_hlen_type'
22521 netdb_host_type='$netdb_host_type'
22522 netdb_name_type='$netdb_name_type'
22523 netdb_net_type='$netdb_net_type'
22524 nm='$nm'
22525 nm_opt='$nm_opt'
22526 nm_so_opt='$nm_so_opt'
22527 nonxs_ext='$nonxs_ext'
22528 nroff='$nroff'
22529 nvEUformat='$nvEUformat'
22530 nvFUformat='$nvFUformat'
22531 nvGUformat='$nvGUformat'
22532 nv_overflows_integers_at='$nv_overflows_integers_at'
22533 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22534 nveformat='$nveformat'
22535 nvfformat='$nvfformat'
22536 nvgformat='$nvgformat'
22537 nvsize='$nvsize'
22538 nvtype='$nvtype'
22539 o_nonblock='$o_nonblock'
22540 obj_ext='$obj_ext'
22541 old_pthread_create_joinable='$old_pthread_create_joinable'
22542 optimize='$optimize'
22543 orderlib='$orderlib'
22544 osname='$osname'
22545 osvers='$osvers'
22546 otherlibdirs='$otherlibdirs'
22547 package='$package'
22548 pager='$pager'
22549 passcat='$passcat'
22550 patchlevel='$patchlevel'
22551 path_sep='$path_sep'
22552 perl5='$perl5'
22553 perl='$perl'
22554 perl_patchlevel='$perl_patchlevel'
22555 perladmin='$perladmin'
22556 perllibs='$perllibs'
22557 perlpath='$perlpath'
22558 pg='$pg'
22559 phostname='$phostname'
22560 pidtype='$pidtype'
22561 plibpth='$plibpth'
22562 pmake='$pmake'
22563 pr='$pr'
22564 prefix='$prefix'
22565 prefixexp='$prefixexp'
22566 privlib='$privlib'
22567 privlibexp='$privlibexp'
22568 procselfexe='$procselfexe'
22569 prototype='$prototype'
22570 ptrsize='$ptrsize'
22571 quadkind='$quadkind'
22572 quadtype='$quadtype'
22573 randbits='$randbits'
22574 randfunc='$randfunc'
22575 random_r_proto='$random_r_proto'
22576 randseedtype='$randseedtype'
22577 ranlib='$ranlib'
22578 rd_nodata='$rd_nodata'
22579 readdir64_r_proto='$readdir64_r_proto'
22580 readdir_r_proto='$readdir_r_proto'
22581 revision='$revision'
22582 rm='$rm'
22583 rm_try='$rm_try'
22584 rmail='$rmail'
22585 run='$run'
22586 runnm='$runnm'
22587 sPRIEUldbl='$sPRIEUldbl'
22588 sPRIFUldbl='$sPRIFUldbl'
22589 sPRIGUldbl='$sPRIGUldbl'
22590 sPRIXU64='$sPRIXU64'
22591 sPRId64='$sPRId64'
22592 sPRIeldbl='$sPRIeldbl'
22593 sPRIfldbl='$sPRIfldbl'
22594 sPRIgldbl='$sPRIgldbl'
22595 sPRIi64='$sPRIi64'
22596 sPRIo64='$sPRIo64'
22597 sPRIu64='$sPRIu64'
22598 sPRIx64='$sPRIx64'
22599 sSCNfldbl='$sSCNfldbl'
22600 sched_yield='$sched_yield'
22601 scriptdir='$scriptdir'
22602 scriptdirexp='$scriptdirexp'
22603 sed='$sed'
22604 seedfunc='$seedfunc'
22605 selectminbits='$selectminbits'
22606 selecttype='$selecttype'
22607 sendmail='$sendmail'
22608 setgrent_r_proto='$setgrent_r_proto'
22609 sethostent_r_proto='$sethostent_r_proto'
22610 setlocale_r_proto='$setlocale_r_proto'
22611 setnetent_r_proto='$setnetent_r_proto'
22612 setprotoent_r_proto='$setprotoent_r_proto'
22613 setpwent_r_proto='$setpwent_r_proto'
22614 setservent_r_proto='$setservent_r_proto'
22615 sh='$sh'
22616 shar='$shar'
22617 sharpbang='$sharpbang'
22618 shmattype='$shmattype'
22619 shortsize='$shortsize'
22620 shrpenv='$shrpenv'
22621 shsharp='$shsharp'
22622 sig_count='$sig_count'
22623 sig_name='$sig_name'
22624 sig_name_init='$sig_name_init'
22625 sig_num='$sig_num'
22626 sig_num_init='$sig_num_init'
22627 sig_size='$sig_size'
22628 signal_t='$signal_t'
22629 sitearch='$sitearch'
22630 sitearchexp='$sitearchexp'
22631 sitebin='$sitebin'
22632 sitebinexp='$sitebinexp'
22633 sitehtml1dir='$sitehtml1dir'
22634 sitehtml1direxp='$sitehtml1direxp'
22635 sitehtml3dir='$sitehtml3dir'
22636 sitehtml3direxp='$sitehtml3direxp'
22637 sitelib='$sitelib'
22638 sitelib_stem='$sitelib_stem'
22639 sitelibexp='$sitelibexp'
22640 siteman1dir='$siteman1dir'
22641 siteman1direxp='$siteman1direxp'
22642 siteman3dir='$siteman3dir'
22643 siteman3direxp='$siteman3direxp'
22644 siteprefix='$siteprefix'
22645 siteprefixexp='$siteprefixexp'
22646 sitescript='$sitescript'
22647 sitescriptexp='$sitescriptexp'
22648 sizesize='$sizesize'
22649 sizetype='$sizetype'
22650 sleep='$sleep'
22651 smail='$smail'
22652 so='$so'
22653 sockethdr='$sockethdr'
22654 socketlib='$socketlib'
22655 socksizetype='$socksizetype'
22656 sort='$sort'
22657 spackage='$spackage'
22658 spitshell='$spitshell'
22659 srand48_r_proto='$srand48_r_proto'
22660 srandom_r_proto='$srandom_r_proto'
22661 src='$src'
22662 ssizetype='$ssizetype'
22663 startperl='$startperl'
22664 startsh='$startsh'
22665 static_ext='$static_ext'
22666 stdchar='$stdchar'
22667 stdio_base='$stdio_base'
22668 stdio_bufsiz='$stdio_bufsiz'
22669 stdio_cnt='$stdio_cnt'
22670 stdio_filbuf='$stdio_filbuf'
22671 stdio_ptr='$stdio_ptr'
22672 stdio_stream_array='$stdio_stream_array'
22673 strerror_r_proto='$strerror_r_proto'
22674 strings='$strings'
22675 submit='$submit'
22676 subversion='$subversion'
22677 sysman='$sysman'
22678 tail='$tail'
22679 tar='$tar'
22680 targetarch='$targetarch'
22681 tbl='$tbl'
22682 tee='$tee'
22683 test='$test'
22684 timeincl='$timeincl'
22685 timetype='$timetype'
22686 tmpnam_r_proto='$tmpnam_r_proto'
22687 to='$to'
22688 touch='$touch'
22689 tr='$tr'
22690 trnl='$trnl'
22691 troff='$troff'
22692 ttyname_r_proto='$ttyname_r_proto'
22693 u16size='$u16size'
22694 u16type='$u16type'
22695 u32size='$u32size'
22696 u32type='$u32type'
22697 u64size='$u64size'
22698 u64type='$u64type'
22699 u8size='$u8size'
22700 u8type='$u8type'
22701 uidformat='$uidformat'
22702 uidsign='$uidsign'
22703 uidsize='$uidsize'
22704 uidtype='$uidtype'
22705 uname='$uname'
22706 uniq='$uniq'
22707 uquadtype='$uquadtype'
22708 use5005threads='$use5005threads'
22709 use64bitall='$use64bitall'
22710 use64bitint='$use64bitint'
22711 usecrosscompile='$usecrosscompile'
22712 usedl='$usedl'
22713 usedtrace='$usedtrace'
22714 usefaststdio='$usefaststdio'
22715 useithreads='$useithreads'
22716 uselargefiles='$uselargefiles'
22717 uselongdouble='$uselongdouble'
22718 usemallocwrap='$usemallocwrap'
22719 usemorebits='$usemorebits'
22720 usemultiplicity='$usemultiplicity'
22721 usemymalloc='$usemymalloc'
22722 usenm='$usenm'
22723 useopcode='$useopcode'
22724 useperlio='$useperlio'
22725 useposix='$useposix'
22726 usereentrant='$usereentrant'
22727 userelocatableinc='$userelocatableinc'
22728 usesfio='$usesfio'
22729 useshrplib='$useshrplib'
22730 usesitecustomize='$usesitecustomize'
22731 usesocks='$usesocks'
22732 usethreads='$usethreads'
22733 usevendorprefix='$usevendorprefix'
22734 usevfork='$usevfork'
22735 usrinc='$usrinc'
22736 uuname='$uuname'
22737 uvXUformat='$uvXUformat'
22738 uvoformat='$uvoformat'
22739 uvsize='$uvsize'
22740 uvtype='$uvtype'
22741 uvuformat='$uvuformat'
22742 uvxformat='$uvxformat'
22743 vendorarch='$vendorarch'
22744 vendorarchexp='$vendorarchexp'
22745 vendorbin='$vendorbin'
22746 vendorbinexp='$vendorbinexp'
22747 vendorhtml1dir='$vendorhtml1dir'
22748 vendorhtml1direxp='$vendorhtml1direxp'
22749 vendorhtml3dir='$vendorhtml3dir'
22750 vendorhtml3direxp='$vendorhtml3direxp'
22751 vendorlib='$vendorlib'
22752 vendorlib_stem='$vendorlib_stem'
22753 vendorlibexp='$vendorlibexp'
22754 vendorman1dir='$vendorman1dir'
22755 vendorman1direxp='$vendorman1direxp'
22756 vendorman3dir='$vendorman3dir'
22757 vendorman3direxp='$vendorman3direxp'
22758 vendorprefix='$vendorprefix'
22759 vendorprefixexp='$vendorprefixexp'
22760 vendorscript='$vendorscript'
22761 vendorscriptexp='$vendorscriptexp'
22762 version='$version'
22763 version_patchlevel_string='$version_patchlevel_string'
22764 versiononly='$versiononly'
22765 vi='$vi'
22766 voidflags='$voidflags'
22767 xlibpth='$xlibpth'
22768 yacc='$yacc'
22769 yaccflags='$yaccflags'
22770 zcat='$zcat'
22771 zip='$zip'
22772 EOT
22773
22774 : Add in command line options if available
22775 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22776
22777 : add special variables
22778 $test -f $src/patchlevel.h && \
22779 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22780 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22781 echo "PERL_CONFIG_SH=true" >>config.sh
22782
22783 : propagate old symbols
22784 if $test -f UU/config.sh; then
22785         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22786         $sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' \
22787                 config.sh config.sh UU/oldconfig.sh |\
22788                 $sort | $uniq -u >UU/oldsyms
22789         set X `cat UU/oldsyms`
22790         shift
22791         case $# in
22792         0) ;;
22793         *)
22794                 cat <<EOM
22795 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22796 EOM
22797                 echo ": Variables propagated from previous config.sh file." >>config.sh
22798                 for sym in `cat UU/oldsyms`; do
22799                         echo "    Propagating $hint variable "'$'"$sym..."
22800                         eval 'tmp="$'"${sym}"'"'
22801                         echo "$tmp" | \
22802                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22803                 done
22804                 ;;
22805         esac
22806 fi
22807
22808 : Finish up by extracting the .SH files
22809 case "$alldone" in
22810 exit)
22811         $rm -rf UU
22812         echo "Extraction done."
22813         exit 0
22814         ;;
22815 cont)
22816         ;;
22817 '')
22818         dflt=''
22819         nostick=true
22820         $cat <<EOM
22821
22822 If you'd like to make any changes to the config.sh file before I begin
22823 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22824
22825 EOM
22826         rp="Press return or use a shell escape to edit config.sh:"
22827         . UU/myread
22828         nostick=''
22829         case "$ans" in
22830         '') ;;
22831         *) : in case they cannot read
22832                 sh 1>&4 -c "$ans";;
22833         esac
22834         ;;
22835 esac
22836
22837 : if this fails, just run all the .SH files by hand
22838 . ./config.sh
22839
22840 echo " "
22841 exec 1>&4
22842 pwd=`pwd`
22843 . ./UU/extract
22844 cd "$pwd"
22845
22846 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22847         dflt=y
22848         case "$silent" in
22849         true) ;;
22850         *)
22851                 $cat <<EOM
22852
22853 Now you need to generate make dependencies by running "$make depend".
22854 You might prefer to run it in background: "$make depend > makedepend.out &"
22855 It can take a while, so you might not want to run it right now.
22856
22857 EOM
22858                 ;;
22859         esac
22860         rp="Run $make depend now?"
22861         . UU/myread
22862         case "$ans" in
22863         y*)
22864                 $make depend && echo "Now you must run '$make'."
22865                 ;;
22866         *)
22867                 echo "You must run '$make depend' then '$make'."
22868                 ;;
22869         esac
22870 elif test -f [Mm]akefile; then
22871         echo " "
22872         echo "Now you must run a $make."
22873 else
22874         echo "Configure done."
22875 fi
22876
22877 if $test -f Policy.sh; then
22878     $cat <<EOM
22879
22880 If you compile $package on a different machine or from a different object
22881 directory, copy the Policy.sh file from this object directory to the
22882 new one before you run Configure -- this will help you with most of
22883 the policy defaults.
22884
22885 EOM
22886 fi
22887 if $test -f config.msg; then
22888     echo "Hmm.  I also noted the following information while running:"
22889     echo " "
22890     $cat config.msg >&4
22891     $rm -f config.msg
22892 fi
22893 $rm -f kit*isdone ark*isdone
22894 $rm -rf UU
22895
22896 : End of Configure
22897