This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
AIX might miss libm
[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 Mon Jun 16 16:07:02 CEST 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_mallocmalloc=''
873 i_math=''
874 i_memory=''
875 i_mntent=''
876 d_ndbm=''
877 i_gdbm_ndbm=''
878 i_gdbmndbm=''
879 i_ndbm=''
880 i_netdb=''
881 i_neterrno=''
882 i_netinettcp=''
883 i_niin=''
884 i_sysin=''
885 i_poll=''
886 i_prot=''
887 i_pthread=''
888 d_pwage=''
889 d_pwchange=''
890 d_pwclass=''
891 d_pwcomment=''
892 d_pwexpire=''
893 d_pwgecos=''
894 d_pwpasswd=''
895 d_pwquota=''
896 i_pwd=''
897 i_sfio=''
898 i_shadow=''
899 i_socks=''
900 i_stddef=''
901 i_stdlib=''
902 i_string=''
903 strings=''
904 i_sunmath=''
905 i_sysaccess=''
906 i_sysdir=''
907 i_sysfile=''
908 d_voidtty=''
909 i_bsdioctl=''
910 i_sysfilio=''
911 i_sysioctl=''
912 i_syssockio=''
913 i_syslog=''
914 i_sysmman=''
915 i_sysmode=''
916 i_sysmount=''
917 i_sysndir=''
918 i_sysparam=''
919 i_syspoll=''
920 i_sysresrc=''
921 i_syssecrt=''
922 i_sysselct=''
923 i_sysstat=''
924 i_sysstatfs=''
925 i_sysstatvfs=''
926 i_systimes=''
927 i_systypes=''
928 i_sysuio=''
929 i_sysun=''
930 i_sysutsname=''
931 i_sysvfs=''
932 i_syswait=''
933 i_sgtty=''
934 i_termio=''
935 i_termios=''
936 d_tm_tm_gmtoff=''
937 d_tm_tm_zone=''
938 i_systime=''
939 i_systimek=''
940 i_time=''
941 timeincl=''
942 i_unistd=''
943 i_ustat=''
944 i_utime=''
945 i_values=''
946 i_stdarg=''
947 i_varargs=''
948 i_varhdr=''
949 i_vfork=''
950 d_inc_version_list=''
951 inc_version_list=''
952 inc_version_list_init=''
953 installprefix=''
954 installprefixexp=''
955 installstyle=''
956 installusrbinperl=''
957 intsize=''
958 longsize=''
959 shortsize=''
960 issymlink=''
961 libc=''
962 ldlibpthname=''
963 libperl=''
964 shrpenv=''
965 useshrplib=''
966 glibpth=''
967 libpth=''
968 loclibpth=''
969 plibpth=''
970 xlibpth=''
971 ignore_versioned_solibs=''
972 libs=''
973 libsdirs=''
974 libsfiles=''
975 libsfound=''
976 libspath=''
977 lns=''
978 d_PRIEUldbl=''
979 d_PRIFUldbl=''
980 d_PRIGUldbl=''
981 d_PRIeldbl=''
982 d_PRIfldbl=''
983 d_PRIgldbl=''
984 d_SCNfldbl=''
985 sPRIEUldbl=''
986 sPRIFUldbl=''
987 sPRIGUldbl=''
988 sPRIeldbl=''
989 sPRIfldbl=''
990 sPRIgldbl=''
991 sSCNfldbl=''
992 lseeksize=''
993 lseektype=''
994 mad=''
995 madlyh=''
996 madlyobj=''
997 madlysrc=''
998 make_set_make=''
999 d_mymalloc=''
1000 freetype=''
1001 mallocobj=''
1002 mallocsrc=''
1003 malloctype=''
1004 usemallocwrap=''
1005 usemymalloc=''
1006 installman1dir=''
1007 man1dir=''
1008 man1direxp=''
1009 man1ext=''
1010 installman3dir=''
1011 man3dir=''
1012 man3direxp=''
1013 man3ext=''
1014 modetype=''
1015 multiarch=''
1016 mydomain=''
1017 myhostname=''
1018 phostname=''
1019 c=''
1020 n=''
1021 d_eofnblk=''
1022 eagain=''
1023 o_nonblock=''
1024 rd_nodata=''
1025 need_va_copy=''
1026 netdb_hlen_type=''
1027 netdb_host_type=''
1028 netdb_name_type=''
1029 netdb_net_type=''
1030 groupcat=''
1031 hostcat=''
1032 passcat=''
1033 orderlib=''
1034 ranlib=''
1035 d_perl_otherlibdirs=''
1036 otherlibdirs=''
1037 package=''
1038 spackage=''
1039 pager=''
1040 api_revision=''
1041 api_subversion=''
1042 api_version=''
1043 api_versionstring=''
1044 patchlevel=''
1045 perl_patchlevel=''
1046 revision=''
1047 subversion=''
1048 version=''
1049 version_patchlevel_string=''
1050 perl5=''
1051 perladmin=''
1052 perlpath=''
1053 d_nv_preserves_uv=''
1054 d_nv_zero_is_allbits_zero=''
1055 i16size=''
1056 i16type=''
1057 i32size=''
1058 i32type=''
1059 i64size=''
1060 i64type=''
1061 i8size=''
1062 i8type=''
1063 ivsize=''
1064 ivtype=''
1065 nv_overflows_integers_at=''
1066 nv_preserves_uv_bits=''
1067 nvsize=''
1068 nvtype=''
1069 u16size=''
1070 u16type=''
1071 u32size=''
1072 u32type=''
1073 u64size=''
1074 u64type=''
1075 u8size=''
1076 u8type=''
1077 uvsize=''
1078 uvtype=''
1079 ivdformat=''
1080 nvEUformat=''
1081 nvFUformat=''
1082 nvGUformat=''
1083 nveformat=''
1084 nvfformat=''
1085 nvgformat=''
1086 uvXUformat=''
1087 uvoformat=''
1088 uvuformat=''
1089 uvxformat=''
1090 pidtype=''
1091 prefix=''
1092 prefixexp=''
1093 installprivlib=''
1094 privlib=''
1095 privlibexp=''
1096 prototype=''
1097 ptrsize=''
1098 d_PRIXU64=''
1099 d_PRId64=''
1100 d_PRIi64=''
1101 d_PRIo64=''
1102 d_PRIu64=''
1103 d_PRIx64=''
1104 sPRIXU64=''
1105 sPRId64=''
1106 sPRIi64=''
1107 sPRIo64=''
1108 sPRIu64=''
1109 sPRIx64=''
1110 d_quad=''
1111 quadkind=''
1112 quadtype=''
1113 uquadtype=''
1114 drand01=''
1115 randbits=''
1116 randfunc=''
1117 randseedtype=''
1118 seedfunc=''
1119 installscript=''
1120 scriptdir=''
1121 scriptdirexp=''
1122 selectminbits=''
1123 selecttype=''
1124 sh=''
1125 sig_count=''
1126 sig_name=''
1127 sig_name_init=''
1128 sig_num=''
1129 sig_num_init=''
1130 sig_size=''
1131 d_sitearch=''
1132 installsitearch=''
1133 sitearch=''
1134 sitearchexp=''
1135 installsitebin=''
1136 sitebin=''
1137 sitebinexp=''
1138 installsitehtml1dir=''
1139 sitehtml1dir=''
1140 sitehtml1direxp=''
1141 installsitehtml3dir=''
1142 sitehtml3dir=''
1143 sitehtml3direxp=''
1144 installsitelib=''
1145 sitelib=''
1146 sitelib_stem=''
1147 sitelibexp=''
1148 installsiteman1dir=''
1149 siteman1dir=''
1150 siteman1direxp=''
1151 installsiteman3dir=''
1152 siteman3dir=''
1153 siteman3direxp=''
1154 siteprefix=''
1155 siteprefixexp=''
1156 installsitescript=''
1157 sitescript=''
1158 sitescriptexp=''
1159 sizesize=''
1160 sizetype=''
1161 so=''
1162 socksizetype=''
1163 sharpbang=''
1164 shsharp=''
1165 spitshell=''
1166 src=''
1167 ssizetype=''
1168 startperl=''
1169 startsh=''
1170 stdchar=''
1171 d_stdio_stream_array=''
1172 stdio_stream_array=''
1173 sysman=''
1174 trnl=''
1175 uidformat=''
1176 uidsign=''
1177 uidsize=''
1178 uidtype=''
1179 archname64=''
1180 use64bitall=''
1181 use64bitint=''
1182 dtrace=''
1183 usedtrace=''
1184 usefaststdio=''
1185 ccflags_uselargefiles=''
1186 ldflags_uselargefiles=''
1187 libswanted_uselargefiles=''
1188 uselargefiles=''
1189 uselongdouble=''
1190 usemorebits=''
1191 usemultiplicity=''
1192 nm_opt=''
1193 nm_so_opt=''
1194 runnm=''
1195 usenm=''
1196 useperlio=''
1197 usesocks=''
1198 d_oldpthreads=''
1199 use5005threads=''
1200 useithreads=''
1201 usereentrant=''
1202 usethreads=''
1203 incpath=''
1204 mips_type=''
1205 usrinc=''
1206 d_vendorarch=''
1207 installvendorarch=''
1208 vendorarch=''
1209 vendorarchexp=''
1210 d_vendorbin=''
1211 installvendorbin=''
1212 vendorbin=''
1213 vendorbinexp=''
1214 installvendorhtml1dir=''
1215 vendorhtml1dir=''
1216 vendorhtml1direxp=''
1217 installvendorhtml3dir=''
1218 vendorhtml3dir=''
1219 vendorhtml3direxp=''
1220 d_vendorlib=''
1221 installvendorlib=''
1222 vendorlib=''
1223 vendorlib_stem=''
1224 vendorlibexp=''
1225 installvendorman1dir=''
1226 vendorman1dir=''
1227 vendorman1direxp=''
1228 installvendorman3dir=''
1229 vendorman3dir=''
1230 vendorman3direxp=''
1231 usevendorprefix=''
1232 vendorprefix=''
1233 vendorprefixexp=''
1234 d_vendorscript=''
1235 installvendorscript=''
1236 vendorscript=''
1237 vendorscriptexp=''
1238 versiononly=''
1239 defvoidused=''
1240 voidflags=''
1241 yacc=''
1242 yaccflags=''
1243 CONFIG=''
1244
1245 : Detect odd OSs
1246 define='define'
1247 undef='undef'
1248 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1249 rmlist=''
1250
1251 : We must find out about Eunice early
1252 eunicefix=':'
1253 if test -f /etc/unixtovms; then
1254         eunicefix=/etc/unixtovms
1255 fi
1256 if test -f /etc/unixtovms.exe; then
1257         eunicefix=/etc/unixtovms.exe
1258 fi
1259
1260 : Set executable suffix now -- needed before hints available
1261 if test -f "/libs/version.library"; then
1262 : Amiga OS
1263     _exe=""
1264 elif test -f "/system/gnu_library/bin/ar.pm"; then
1265 : Stratus VOS
1266     _exe=".pm"
1267 elif test -n "$DJGPP"; then
1268 : DOS DJGPP
1269     _exe=".exe"
1270 elif test -d c:/. -o -n "$is_os2" ; then
1271 : OS/2 or cygwin
1272     _exe=".exe"
1273 fi
1274
1275 groupstype=''
1276 i_whoami=''
1277 : Trailing extension.  Override this in a hint file, if needed.
1278 : Extra object files, if any, needed on this platform.
1279 archobjs=''
1280 archname=''
1281 libnames=''
1282 : change the next line if compiling for Xenix/286 on Xenix/386
1283 xlibpth='/usr/lib/386 /lib/386'
1284 : Possible local library directories to search.
1285 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1286 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1287
1288 : general looking path for locating libraries
1289 glibpth="/lib /usr/lib $xlibpth"
1290 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1291 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1292 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1293 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1294
1295 : Private path used by Configure to find libraries.  Its value
1296 : is prepended to libpth. This variable takes care of special
1297 : machines, like the mips.  Usually, it should be empty.
1298 plibpth=''
1299
1300 : default library list
1301 libswanted=''
1302 : some systems want to use only the non-versioned libso:s
1303 ignore_versioned_solibs=''
1304 : set usethreads on the Configure command line to enable threads.
1305 usereentrant='undef'
1306 : full support for void wanted by default
1307 defvoidused=15
1308
1309 : Possible local include directories to search.
1310 : Set locincpth to "" in a hint file to defeat local include searches.
1311 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1312 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1313 :
1314 : no include file wanted by default
1315 inclwanted=''
1316
1317 : Enable -DEBUGGING and -DDEBUGGING from the command line
1318 EBUGGING=''
1319 DEBUGGING=old
1320
1321 ccname=''
1322 ccversion=''
1323 perllibs=''
1324 : set useposix=false in your hint file to disable the POSIX extension.
1325 useposix=true
1326 : set useopcode=false in your hint file to disable the Opcode extension.
1327 useopcode=true
1328 archname64=''
1329 ccflags_uselargefiles=''
1330 ldflags_uselargefiles=''
1331 libswanted_uselargefiles=''
1332 : set usemultiplicity on the Configure command line to enable multiplicity.
1333 : set usesocks on the Configure command line to enable socks.
1334 : List of libraries we want.
1335 : If anyone needs extra -lxxx, put those in a hint file.
1336 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1337 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1338 : We probably want to search /usr/shlib before most other libraries.
1339 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1340 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1341 glibpth="/usr/shlib $glibpth"
1342 : Do not use vfork unless overridden by a hint file.
1343 usevfork=false
1344
1345 : Find the basic shell for Bourne shell scripts
1346 case "$sh" in
1347 '')
1348         case "$SYSTYPE" in
1349         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1350         *) xxx='/bin/sh';;
1351         esac
1352         if test -f "$xxx"; then
1353                 sh="$xxx"
1354         else
1355                 : Build up a list and do a single loop so we can 'break' out.
1356                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1357                 for xxx in sh bash ksh pdksh ash; do
1358                         for p in $pth; do
1359                                 try="$try ${p}/${xxx}"
1360                         done
1361                 done
1362                 for xxx in $try; do
1363                         if test -f "$xxx"; then
1364                                 sh="$xxx";
1365                                 break
1366                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1367                                 sh="$xxx";
1368                                 break
1369                         elif test -f "$xxx.exe"; then
1370                                 sh="$xxx";
1371                                 break
1372                         fi
1373                 done
1374         fi
1375         ;;
1376 esac
1377
1378 case "$sh" in
1379 '')     cat >&2 <<EOM
1380 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1381
1382 Usually it's in /bin/sh.  How did you even get this far?
1383 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1384 we'll try to straighten this all out.
1385 EOM
1386         exit 1
1387         ;;
1388 esac
1389
1390 : see if sh knows # comments
1391 if `$sh -c '#' >/dev/null 2>&1`; then
1392         shsharp=true
1393         spitshell=cat
1394         xcat=/bin/cat
1395         test -f $xcat$_exe || xcat=/usr/bin/cat
1396         if test ! -f $xcat$_exe; then
1397                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1398                         if test -f $p/cat$_exe; then
1399                                 xcat=$p/cat
1400                                 break
1401                         fi
1402                 done
1403                 if test ! -f $xcat$_exe; then
1404                         echo "Can't find cat anywhere!"
1405                         exit 1
1406                 fi
1407         fi
1408         echo "#!$xcat" >sharp
1409         $eunicefix sharp
1410         chmod +x sharp
1411         ./sharp > today 2>/dev/null
1412         if test -s today; then
1413                 sharpbang='#!'
1414         else
1415                 echo "#! $xcat" > sharp
1416                 $eunicefix sharp
1417                 chmod +x sharp
1418                 ./sharp > today 2>/dev/null
1419                 if test -s today; then
1420                         sharpbang='#! '
1421                 else
1422                         sharpbang=': use '
1423                 fi
1424         fi
1425 else
1426         echo " "
1427         echo "Your $sh doesn't grok # comments--I will strip them later on."
1428         shsharp=false
1429         cd ..
1430         echo "exec grep -v '^[  ]*#'" >spitshell
1431         chmod +x spitshell
1432         $eunicefix spitshell
1433         spitshell=`pwd`/spitshell
1434         cd UU
1435         echo "I presume that if # doesn't work, #! won't work either!"
1436         sharpbang=': use '
1437 fi
1438 rm -f sharp today
1439
1440 : figure out how to guarantee sh startup
1441 case "$startsh" in
1442 '') startsh=${sharpbang}${sh} ;;
1443 *)
1444 esac
1445 cat >sharp <<EOSS
1446 $startsh
1447 set abc
1448 test "$?abc" != 1
1449 EOSS
1450
1451 chmod +x sharp
1452 $eunicefix sharp
1453 if ./sharp; then
1454         : echo "Yup, it does."
1455 else
1456         echo "Hmm... '$startsh' does not guarantee sh startup..."
1457         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1458 fi
1459 rm -f sharp
1460
1461 : Save command line options in file UU/cmdline.opt for later use in
1462 : generating config.sh.
1463 cat > cmdline.opt <<EOSH
1464 : Configure command line arguments.
1465 config_arg0='$0'
1466 config_args='$*'
1467 config_argc=$#
1468 EOSH
1469 argn=1
1470 args_exp=''
1471 args_sep=''
1472 for arg in "$@"; do
1473         cat >>cmdline.opt <<EOSH
1474 config_arg$argn='$arg'
1475 EOSH
1476         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1477 $arg
1478 EOC
1479         arg_exp=`cat cmdl.opt`
1480         args_exp="$args_exp$args_sep'$arg_exp'"
1481         argn=`expr $argn + 1`
1482         args_sep=' '
1483 done
1484 rm -f cmdl.opt
1485
1486 : produce awk script to parse command line options
1487 cat >options.awk <<'EOF'
1488 BEGIN {
1489         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1490
1491         len = length(optstr);
1492         for (i = 1; i <= len; i++) {
1493                 c = substr(optstr, i, 1);
1494                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1495                 if (a == ":") {
1496                         arg[c] = 1;
1497                         i++;
1498                 }
1499                 opt[c] = 1;
1500         }
1501 }
1502 {
1503         expect = 0;
1504         str = $0;
1505         if (substr(str, 1, 1) != "-") {
1506                 printf("'%s'\n", str);
1507                 next;
1508         }
1509         len = length($0);
1510         for (i = 2; i <= len; i++) {
1511                 c = substr(str, i, 1);
1512                 if (!opt[c]) {
1513                         printf("-%s\n", substr(str, i));
1514                         next;
1515                 }
1516                 printf("-%s\n", c);
1517                 if (arg[c]) {
1518                         if (i < len)
1519                                 printf("'%s'\n", substr(str, i + 1));
1520                         else
1521                                 expect = 1;
1522                         next;
1523                 }
1524         }
1525 }
1526 END {
1527         if (expect)
1528                 print "?";
1529 }
1530 EOF
1531
1532 : process the command line options
1533 set X `for arg in "$@"; do echo "X$arg"; done |
1534         sed -e s/X// | awk -f options.awk`
1535 eval "set $*"
1536 shift
1537 rm -f options.awk
1538
1539 : set up default values
1540 fastread=''
1541 reuseval=false
1542 config_sh=''
1543 alldone=''
1544 error=''
1545 silent=''
1546 extractsh=''
1547 override=''
1548 knowitall=''
1549 rm -f optdef.sh posthint.sh
1550 cat >optdef.sh <<EOS
1551 $startsh
1552 EOS
1553
1554
1555 : option parsing
1556 while test $# -gt 0; do
1557         case "$1" in
1558         -d) shift; fastread=yes;;
1559         -e) shift; alldone=cont;;
1560         -f)
1561                 shift
1562                 cd ..
1563                 if test -r "$1"; then
1564                         config_sh="$1"
1565                 else
1566                         echo "$me: cannot read config file $1." >&2
1567                         error=true
1568                 fi
1569                 cd UU
1570                 shift;;
1571         --help|\
1572         -h) shift; error=true;;
1573         -r) shift; reuseval=true;;
1574         -s) shift; silent=true; realsilent=true;;
1575         -E) shift; alldone=exit;;
1576         -K) shift; knowitall=true;;
1577         -O) shift; override=true;;
1578         -S) shift; silent=true; extractsh=true;;
1579         -D)
1580                 shift
1581                 case "$1" in
1582                 *=)
1583                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1584                         echo "$me: ignoring -D $1" >&2
1585                         ;;
1586                 *=*) echo "$1" | \
1587                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1588                 *) echo "$1='define'" >> optdef.sh;;
1589                 esac
1590                 shift
1591                 ;;
1592         -U)
1593                 shift
1594                 case "$1" in
1595                 *=) echo "$1" >> optdef.sh;;
1596                 *=*)
1597                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1598                         echo "$me: ignoring -U $1" >&2
1599                         ;;
1600                 *) echo "$1='undef'" >> optdef.sh;;
1601                 esac
1602                 shift
1603                 ;;
1604         -A)
1605             shift
1606             xxx=''
1607             yyy="$1"
1608             zzz=''
1609             uuu=undef
1610             case "$yyy" in
1611             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1612                  case "$zzz" in
1613                  *:*) zzz='' ;;
1614                  *)   xxx=append
1615                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1616                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1617                  esac
1618                  ;;
1619             esac
1620             case "$xxx" in
1621             '')  case "$yyy" in
1622                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1623                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1624                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1625                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1626                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1627                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1628                  esac
1629                  ;;
1630             esac
1631             case "$xxx" in
1632             append)
1633                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1634             clear)
1635                 echo "$yyy=''"                  >> posthint.sh ;;
1636             define)
1637                 case "$zzz" in
1638                 '') zzz=define ;;
1639                 esac
1640                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1641             eval)
1642                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1643             prepend)
1644                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1645             undef)
1646                 case "$zzz" in
1647                 '') zzz="$uuu" ;;
1648                 esac
1649                 echo "$yyy=$zzz"                >> posthint.sh ;;
1650             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1651             esac
1652             shift
1653             ;;
1654         -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1655             exit 0;;
1656         --) break;;
1657         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1658         *) break;;
1659         esac
1660 done
1661
1662 case "$error" in
1663 true)
1664         cat >&2 <<EOM
1665 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1666                  [-U symbol] [-U symbol=] [-A command:symbol...]
1667   -d : use defaults for all answers.
1668   -e : go on without questioning past the production of config.sh.
1669   -f : specify an alternate default configuration file.
1670   -h : print this help message and exit (with an error status).
1671   -r : reuse C symbols value if possible (skips costly nm extraction).
1672   -s : silent mode, only echoes questions and essential information.
1673   -D : define symbol to have some value:
1674          -D symbol         symbol gets the value 'define'
1675          -D symbol=value   symbol gets the value 'value'
1676        common used examples (see INSTALL for more info):
1677          -Duse64bitint            use 64bit integers
1678          -Duse64bitall            use 64bit integers and pointers
1679          -Dusethreads             use thread support
1680          -Dinc_version_list=none  do not include older perl trees in @INC
1681          -DEBUGGING=none          DEBUGGING options
1682          -Dcc=gcc                 choose your compiler
1683          -Dprefix=/opt/perl5      choose your destination
1684   -E : stop at the end of questions, after having produced config.sh.
1685   -K : do not use unless you know what you are doing.
1686   -O : let -D and -U override definitions from loaded configuration file.
1687   -S : perform variable substitutions on all .SH files (can mix with -f)
1688   -U : undefine symbol:
1689          -U symbol    symbol gets the value 'undef'
1690          -U symbol=   symbol gets completely empty
1691        e.g.:  -Uversiononly
1692   -A : manipulate symbol after the platform specific hints have been applied:
1693          -A append:symbol=value   append value to symbol
1694          -A symbol=value          like append:, but with a separating space
1695          -A define:symbol=value   define symbol to have value
1696          -A clear:symbol          define symbol to be ''
1697          -A define:symbol         define symbol to be 'define'
1698          -A eval:symbol=value     define symbol to be eval of value
1699          -A prepend:symbol=value  prepend value to symbol
1700          -A undef:symbol          define symbol to be 'undef'
1701          -A undef:symbol=         define symbol to be ''
1702        e.g.:  -A prepend:libswanted='cl pthread '
1703               -A ccflags=-DSOME_MACRO
1704   -V : print version number and exit (with a zero status).
1705 EOM
1706         exit 1
1707         ;;
1708 esac
1709
1710 : Sanity checks
1711 case "$fastread$alldone" in
1712 yescont|yesexit) ;;
1713 *)
1714         case "$extractsh" in
1715         true) ;;
1716         *)
1717                 if test ! -t 0; then
1718                         echo "Say 'sh Configure', not 'sh <Configure'"
1719                         exit 1
1720                 fi
1721                 ;;
1722         esac
1723         ;;
1724 esac
1725
1726 exec 4>&1
1727 case "$silent" in
1728 true) exec 1>/dev/null;;
1729 esac
1730
1731 : run the defines and the undefines, if any, but leave the file out there...
1732 touch optdef.sh
1733 . ./optdef.sh
1734 : create the posthint manipulation script and leave the file out there...
1735 touch posthint.sh
1736
1737 : set package name
1738 package='perl5'
1739 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1740 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1741 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1742 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1743 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1744 esac
1745
1746 : Some greps do not return status, grrr.
1747 echo "grimblepritz" >grimble
1748 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1749         contains=contains
1750 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1751         contains=grep
1752 else
1753         contains=contains
1754 fi
1755 rm -f grimble
1756 : the following should work in any shell
1757 case "$contains" in
1758 contains*)
1759         echo " "
1760         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1761         cat >contains <<'EOSS'
1762 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1763 EOSS
1764 chmod +x contains
1765 esac
1766
1767 : Find the path to the source tree
1768 case "$src" in
1769 '') case "$0" in
1770     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1771          case "$src" in
1772          /*)    ;;
1773          .)     ;;
1774          *)     src=`cd ../$src && pwd` ;;
1775          esac
1776          ;;
1777     *)   src='.';;
1778     esac;;
1779 esac
1780 case "$src" in
1781 '')     src=/
1782         rsrc=/
1783         ;;
1784 /*)     rsrc="$src";;
1785 *)      rsrc="../$src";;
1786 esac
1787 if test -f $rsrc/Configure && \
1788         $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1789 then
1790    : found it, so we are ok.
1791 else
1792         rsrc=''
1793         for src in . .. ../.. ../../.. ../../../..; do
1794                 if test -f ../$src/Configure && \
1795                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1796                 then
1797                         rsrc=../$src
1798                         break
1799                 fi
1800         done
1801 fi
1802 case "$rsrc" in
1803 '')
1804         cat <<EOM >&4
1805
1806 Sorry, I can't seem to locate the source dir for $package.  Please start
1807 Configure with an explicit path -- i.e. /some/path/Configure.
1808
1809 EOM
1810         exit 1
1811         ;;
1812 ../.)   rsrc='..';;
1813 *)
1814         echo " "
1815         echo "Sources for $package found in \"$src\"." >&4
1816         ;;
1817 esac
1818
1819 : script used to extract .SH files with variable substitutions
1820 cat >extract <<'EOS'
1821 PERL_CONFIG_SH=true
1822 echo "Doing variable substitutions on .SH files..."
1823 if test -f MANIFEST; then
1824         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1825 else
1826         echo "(Looking for .SH files under the source directory.)"
1827         set x `(cd "$src"; find . -name "*.SH" -print)`
1828 fi
1829 shift
1830 case $# in
1831 0) set x `(cd "$src"; echo *.SH)`; shift;;
1832 esac
1833 if test ! -f "$src/$1"; then
1834         shift
1835 fi
1836 mkdir_p='
1837 name=$1;
1838 create="";
1839 while test $name; do
1840         if test ! -d "$name"; then
1841                 create="$name $create";
1842                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1843                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1844         else
1845                 name="";
1846         fi;
1847 done;
1848 for file in $create; do
1849         mkdir $file;
1850 done
1851 '
1852 for file in $*; do
1853         case "$src" in
1854         ".")
1855                 case "$file" in
1856                 */*)
1857                         dir=`expr X$file : 'X\(.*\)/'`
1858                         file=`expr X$file : 'X.*/\(.*\)'`
1859                         (cd "$dir" && . ./$file)
1860                         ;;
1861                 *)
1862                         . ./$file
1863                         ;;
1864                 esac
1865                 ;;
1866         *)
1867                 case "$file" in
1868                 */*)
1869                         dir=`expr X$file : 'X\(.*\)/'`
1870                         file=`expr X$file : 'X.*/\(.*\)'`
1871                         (set x $dir; shift; eval $mkdir_p)
1872                         sh <"$src/$dir/$file"
1873                         ;;
1874                 *)
1875                         sh <"$src/$file"
1876                         ;;
1877                 esac
1878                 ;;
1879         esac
1880 done
1881 if test -f "$src/config_h.SH"; then
1882         if test ! -f config.h; then
1883         : oops, they left it out of MANIFEST, probably, so do it anyway.
1884         . "$src/config_h.SH"
1885         fi
1886 fi
1887 EOS
1888
1889 : extract files and exit if asked to do so
1890 case "$extractsh" in
1891 true)
1892         case "$realsilent" in
1893         true) ;;
1894         *) exec 1>&4;;
1895         esac
1896         case "$config_sh" in
1897         '') config_sh='config.sh';;
1898         esac
1899         echo " "
1900         echo "Fetching answers from $config_sh..."
1901         cd ..
1902         . $config_sh
1903         test "$override" && . ./optdef.sh
1904         echo " "
1905         . UU/extract
1906         rm -rf UU
1907         echo "Extraction done."
1908         exit 0
1909         ;;
1910 esac
1911
1912 : Eunice requires " " instead of "", can you believe it
1913 echo " "
1914 : Here we go...
1915 echo "Beginning of configuration questions for $package."
1916
1917 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1918
1919 : first determine how to suppress newline on echo command
1920 echo " "
1921 echo "Checking echo to see how to suppress newlines..."
1922 (echo "hi there\c" ; echo " ") >.echotmp
1923 if $contains c .echotmp >/dev/null 2>&1 ; then
1924         echo "...using -n."
1925         n='-n'
1926         c=''
1927 else
1928         cat <<'EOM'
1929 ...using \c
1930 EOM
1931         n=''
1932         c='\c'
1933 fi
1934 echo $n "The star should be here-->$c"
1935 echo '*'
1936 rm -f .echotmp
1937
1938 : Now test for existence of everything in MANIFEST
1939 echo " "
1940 if test -f "$rsrc/MANIFEST"; then
1941         echo "First let's make sure your kit is complete.  Checking..." >&4
1942         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
1943                 (split -l 50 2>/dev/null || split -50)
1944         rm -f missing
1945         tmppwd=`pwd`
1946         for filelist in x??; do
1947                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
1948                         >/dev/null 2>>"$tmppwd/missing")
1949         done
1950         if test -s missing; then
1951                 cat missing >&4
1952                 cat >&4 <<'EOM'
1953
1954 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1955
1956 You have the option of continuing the configuration process, despite the
1957 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1958 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1959 and contact the author (perlbug@perl.org).
1960
1961 EOM
1962                 echo $n "Continue? [n] $c" >&4
1963                 read ans
1964                 case "$ans" in
1965                 y*)
1966                         echo "Continuing..." >&4
1967                         rm -f missing
1968                         ;;
1969                 *)
1970                         echo "ABORTING..." >&4
1971                         kill $$
1972                         ;;
1973                 esac
1974         else
1975                 echo "Looks good..."
1976         fi
1977 else
1978         echo "There is no MANIFEST file.  I hope your kit is complete !"
1979 fi
1980 rm -f missing x??
1981
1982 : Find the appropriate value for a newline for tr
1983 echo " "
1984 if test -n "$DJGPP"; then
1985        trnl='\012'
1986 fi
1987 if test X"$trnl" = X; then
1988         case "`echo foo|tr '\n' x 2>/dev/null`" in
1989         foox) trnl='\n' ;;
1990         esac
1991 fi
1992 if test X"$trnl" = X; then
1993         case "`echo foo|tr '\012' x 2>/dev/null`" in
1994         foox) trnl='\012' ;;
1995         esac
1996 fi
1997 if test X"$trnl" = X; then
1998        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1999        fooxy) trnl='\n\r' ;;
2000        esac
2001 fi
2002 if test X"$trnl" = X; then
2003         cat <<EOM >&2
2004
2005 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2006
2007 EOM
2008         exit 1
2009 fi
2010
2011 : compute the number of columns on the terminal for proper question formatting
2012 case "$COLUMNS" in
2013 '') COLUMNS='80';;
2014 esac
2015
2016 : set up the echo used in my read
2017 myecho="case \"\$xxxm\" in
2018 '') echo $n \"\$rp $c\" >&4;;
2019 *) case \"\$rp\" in
2020         '') echo $n \"[\$xxxm] $c\";;
2021         *)
2022                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2023                         echo \"\$rp\" >&4
2024                         echo $n \"[\$xxxm] $c\" >&4
2025                 else
2026                         echo $n \"\$rp [\$xxxm] $c\" >&4
2027                 fi
2028                 ;;
2029         esac;;
2030 esac"
2031
2032 : now set up to do reads with possible shell escape and default assignment
2033 cat <<EOSC >myread
2034 $startsh
2035 xxxm=\$dflt
2036 $myecho
2037 ans='!'
2038 case "\$fastread" in
2039 yes) case "\$dflt" in
2040         '') ;;
2041         *) ans='';
2042                 case "\$silent-\$rp" in
2043                 true-) ;;
2044                 *) echo " " >&4;;
2045                 esac;;
2046         esac;;
2047 *) case "\$silent" in
2048         true) case "\$rp" in
2049                 '') ans='';;
2050                 esac;;
2051         esac;;
2052 esac
2053 while expr "X\$ans" : "X!" >/dev/null; do
2054         read answ
2055         set x \$xxxm
2056         shift
2057         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2058         case  "\$answ" in
2059         "!")
2060                 sh 1>&4
2061                 echo " "
2062                 $myecho
2063                 ;;
2064         !*)
2065                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2066                 shift
2067                 sh 1>&4 -c "\$*"
2068                 echo " "
2069                 $myecho
2070                 ;;
2071         "\$ans")
2072                 case "\$ans" in
2073                 \\&*)
2074                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2075                         shift
2076                         case "\$1" in
2077                         -d)
2078                                 fastread=yes
2079                                 echo "(OK, I'll run with -d after this question.)" >&4
2080                                 ;;
2081                         -*)
2082                                 echo "*** Sorry, \$1 not supported yet." >&4
2083                                 ;;
2084                         esac
2085                         $myecho
2086                         ans=!
2087                         ;;
2088                 esac;;
2089         *)
2090                 case "\$aok" in
2091                 y)
2092                         echo "*** Substitution done -- please confirm."
2093                         xxxm="\$ans"
2094                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2095                         xxxm="\$ans"
2096                         ans=!
2097                         ;;
2098                 *)
2099                         echo "*** Error -- try again."
2100                         ans=!
2101                         ;;
2102                 esac
2103                 $myecho
2104                 ;;
2105         esac
2106         case "\$ans\$xxxm\$nostick" in
2107         '')
2108                 ans=!
2109                 $myecho
2110                 ;;
2111         esac
2112 done
2113 case "\$ans" in
2114 '') ans="\$xxxm";;
2115 esac
2116 EOSC
2117
2118 : create .config dir to save info across Configure sessions
2119 test -d ../.config || mkdir ../.config
2120 cat >../.config/README <<EOF
2121 This directory created by Configure to save information that should
2122 persist across sessions for $package.
2123
2124 You may safely delete it if you wish.
2125 EOF
2126
2127 : See if we are using a devel version and want that
2128 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2129 case "$usedevel" in
2130 $define|true|[yY]*) ;;
2131 *) case "$xversion" in
2132    *[13579])
2133         cat >&4 <<EOH
2134 *** WHOA THERE!!! ***
2135
2136     This is an UNSTABLE DEVELOPMENT release.
2137     The version of this $package distribution is $xversion, that is, odd,
2138     (as opposed to even) and that signifies a development release.
2139     If you want a maintenance release, you want an even-numbered version.
2140
2141     Do ***NOT*** install this into production use.
2142     Data corruption and crashes are possible.
2143
2144     It is most seriously suggested that you do not continue any further
2145     unless you want to help in developing and debugging Perl.
2146
2147     If you *still* want to build perl, you can answer 'y' now,
2148     or pass -Dusedevel to Configure.
2149
2150 EOH
2151         rp='Do you really want to continue?'
2152         dflt='n'
2153         . ./myread
2154         case "$ans" in
2155         [yY]) echo >&4 "Okay, continuing."
2156               usedevel="$define" ;;
2157         *) echo >&4 "Okay, bye."
2158            exit 1
2159            ;;
2160         esac
2161         ;;
2162     esac
2163     ;;
2164 esac
2165 case "$usedevel" in
2166 $define|true|[yY]*)
2167         case "$versiononly" in
2168         '') versiononly="$define" ;;
2169         esac
2170         case "$installusrbinperl" in
2171         '') installusrbinperl="$undef" ;;
2172         esac
2173         ;;
2174 esac
2175
2176 : general instructions
2177 needman=true
2178 firsttime=true
2179 user=`(logname) 2>/dev/null`
2180 case "$user" in
2181 '') user=`whoami 2>&1`;;
2182 esac
2183 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2184         firsttime=false
2185         echo " "
2186         rp='Would you like to see the instructions?'
2187         dflt=n
2188         . ./myread
2189         case "$ans" in
2190         [yY]*) ;;
2191         *) needman=false;;
2192         esac
2193 fi
2194 if $needman; then
2195         cat <<EOH
2196
2197 This installation shell script will examine your system and ask you questions
2198 to determine how the perl5 package should be installed. If you get
2199 stuck on a question, you may use a ! shell escape to start a subshell or
2200 execute a command.  Many of the questions will have default answers in square
2201 brackets; typing carriage return will give you the default.
2202
2203 On some of the questions which ask for file or directory names you are allowed
2204 to use the ~name construct to specify the login directory belonging to "name",
2205 even if you don't have a shell which knows about that.  Questions where this is
2206 allowed will be marked "(~name ok)".
2207
2208 EOH
2209         rp=''
2210         dflt='Type carriage return to continue'
2211         . ./myread
2212         cat <<'EOH'
2213
2214 The prompter used in this script allows you to use shell variables and
2215 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2216 in the default answer, as if the default line was a set of arguments given to a
2217 script shell.  This means you may also use $* to repeat the whole default line,
2218 so you do not have to re-type everything to add something to the default.
2219
2220 Everytime there is a substitution, you will have to confirm.  If there is an
2221 error (e.g. an unmatched backtick), the default answer will remain unchanged
2222 and you will be prompted again.
2223
2224 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2225 the questions and use the computed defaults (or the previous answers if there
2226 was already a config.sh file). Type 'Configure -h' for a list of options.
2227 You may also start interactively and then answer '& -d' at any prompt to turn
2228 on the non-interactive behaviour for the remainder of the execution.
2229
2230 EOH
2231         . ./myread
2232         cat <<EOH
2233
2234 Much effort has been expended to ensure that this shell script will run on any
2235 Unix system.  If despite that it blows up on yours, your best bet is to edit
2236 Configure and run it again.  If you can't run Configure for some reason,
2237 you'll have to generate a config.sh file by hand.  Whatever problems you
2238 have, let me (perlbug@perl.org) know how I blew it.
2239
2240 This installation script affects things in two ways:
2241
2242 1) it may do direct variable substitutions on some of the files included
2243    in this kit.
2244 2) it builds a config.h file for inclusion in C programs.  You may edit
2245    any of these files as the need arises after running this script.
2246
2247 If you make a mistake on a question, there is no easy way to back up to it
2248 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2249 files.  Configure will offer to let you do this before it runs the SH files.
2250
2251 EOH
2252         dflt='Type carriage return to continue'
2253         . ./myread
2254         case "$firsttime" in
2255         true) echo $user >>../.config/instruct;;
2256         esac
2257 fi
2258
2259 : find out where common programs are
2260 echo " "
2261 echo "Locating common programs..." >&4
2262 cat <<EOSC >loc
2263 $startsh
2264 case \$# in
2265 0) exit 1;;
2266 esac
2267 thing=\$1
2268 shift
2269 dflt=\$1
2270 shift
2271 for dir in \$*; do
2272         case "\$thing" in
2273         .)
2274         if test -d \$dir/\$thing; then
2275                 echo \$dir
2276                 exit 0
2277         fi
2278         ;;
2279         *)
2280         for thisthing in \$dir/\$thing; do
2281                 : just loop through to pick last item
2282         done
2283         if test -f \$thisthing; then
2284                 echo \$thisthing
2285                 exit 0
2286         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2287                 echo \$thisthing
2288                 exit 0
2289         elif test -f \$dir/\$thing.exe; then
2290                 if test -n "$DJGPP"; then
2291                         echo \$dir/\$thing.exe
2292                 elif test "$eunicefix" != ":"; then
2293                         : on Eunice apparently
2294                         echo \$dir/\$thing
2295                 fi
2296                 exit 0
2297         fi
2298         ;;
2299         esac
2300 done
2301 echo \$dflt
2302 exit 1
2303 EOSC
2304 chmod +x loc
2305 $eunicefix loc
2306 loclist="
2307 awk
2308 cat
2309 chmod
2310 comm
2311 cp
2312 echo
2313 expr
2314 grep
2315 ls
2316 mkdir
2317 rm
2318 sed
2319 sort
2320 touch
2321 tr
2322 uniq
2323 "
2324 trylist="
2325 ar
2326 bison
2327 byacc
2328 cpp
2329 csh
2330 date
2331 egrep
2332 gmake
2333 gzip
2334 less
2335 ln
2336 make
2337 more
2338 nm
2339 nroff
2340 pg
2341 test
2342 uname
2343 zip
2344 "
2345 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2346 pth="$pth /lib /usr/lib"
2347 for file in $loclist; do
2348         eval xxx=\$$file
2349         case "$xxx" in
2350         /*|?:[\\/]*)
2351                 if test -f "$xxx"; then
2352                         : ok
2353                 else
2354                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2355                         xxx=`./loc $file $file $pth`
2356                 fi
2357                 ;;
2358         '') xxx=`./loc $file $file $pth`;;
2359         *) xxx=`./loc $xxx $xxx $pth`;;
2360         esac
2361         eval $file=$xxx$_exe
2362         eval _$file=$xxx
2363         case "$xxx" in
2364         /*)
2365                 echo $file is in $xxx.
2366                 ;;
2367         ?:[\\/]*)
2368                 echo $file is in $xxx.
2369                 ;;
2370         *)
2371                 echo "I don't know where '$file' is, and my life depends on it." >&4
2372                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2373                 exit 1
2374                 ;;
2375         esac
2376 done
2377 echo " "
2378 echo "Don't worry if any of the following aren't found..."
2379 say=offhand
2380 for file in $trylist; do
2381         eval xxx=\$$file
2382         case "$xxx" in
2383         /*|?:[\\/]*)
2384                 if test -f "$xxx"; then
2385                         : ok
2386                 else
2387                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2388                         xxx=`./loc $file $file $pth`
2389                 fi
2390                 ;;
2391         '') xxx=`./loc $file $file $pth`;;
2392         *) xxx=`./loc $xxx $xxx $pth`;;
2393         esac
2394         eval $file=$xxx$_exe
2395         eval _$file=$xxx
2396         case "$xxx" in
2397         /*)
2398                 echo $file is in $xxx.
2399                 ;;
2400         ?:[\\/]*)
2401                 echo $file is in $xxx.
2402                 ;;
2403         *)
2404                 echo "I don't see $file out there, $say."
2405                 say=either
2406                 ;;
2407         esac
2408 done
2409 case "$egrep" in
2410 egrep)
2411         echo "Substituting grep for egrep."
2412         egrep=$grep
2413         _egrep=$grep
2414         ;;
2415 esac
2416 case "$ln" in
2417 ln)
2418         echo "Substituting cp for ln."
2419         ln=$cp
2420         _ln=$cp
2421         ;;
2422 esac
2423 case "$make" in
2424 make)
2425         case "$gmake" in
2426         gmake)
2427         echo "I can't find make or gmake, and my life depends on it." >&4
2428         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2429         exit 1
2430         ;;
2431         esac
2432         ;;
2433 esac
2434 case "$gmake" in
2435 gmake)  ;;
2436 *)      # We can't have osname yet.
2437         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2438                 # Assume that gmake, if found, is definitely GNU make
2439                 # and prefer it over the system make.
2440                 echo "Substituting gmake for make."
2441                 make=$gmake
2442                 _make=$gmake
2443         fi
2444         ;;
2445 esac
2446 case "$test" in
2447 test)
2448         echo "Hopefully test is built into your sh."
2449         ;;
2450 *)
2451         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2452                 echo "Using the test built into your sh."
2453                 test=test
2454                 _test=test
2455         fi
2456         ;;
2457 esac
2458 case "$echo" in
2459 echo)
2460         echo "Hopefully echo is built into your sh."
2461         ;;
2462 '') ;;
2463 *)
2464         echo " "
2465 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2466         $echo $n "hi there$c" >foo1
2467         echo $n "hi there$c" >foo2
2468         if cmp foo1 foo2 >/dev/null 2>&1; then
2469                 echo "They are compatible.  In fact, they may be identical."
2470         else
2471                 case "$n" in
2472                 '-n') n='' c='\c';;
2473                 *) n='-n' c='';;
2474                 esac
2475                 cat <<FOO
2476 They are not compatible!  You are probably running ksh on a non-USG system.
2477 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2478 have echo built in and we may have to run some Bourne shell scripts.  That
2479 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2480
2481 FOO
2482                 $echo $n "The star should be here-->$c"
2483                 $echo "*"
2484         fi
2485         $rm -f foo1 foo2
2486         ;;
2487 esac
2488
2489 # This question was auctioned at YAPC::Europe-2007 in Vienna
2490 # I never promised you could answer it. I only auctioned the question.
2491 cat <<FOO
2492 The following message is sponsored by
2493
2494   Dresden.pm<--The stars should be here.
2495
2496 Dear Perl user, system administrator or package
2497 maintainer, the Perl community sends greetings to
2498 you. Do you (emblematical) greet back [Y/n]? n
2499
2500 FOO
2501
2502 : Check what type of C compiler we use
2503 cat <<EOS >trygcc
2504 $startsh
2505 EOS
2506 cat <<'EOSC' >>trygcc
2507 case "$cc" in
2508 '') ;;
2509 *)  $rm -f try try.*
2510     $cat >try.c <<EOM
2511 int main(int argc, char *argv[]) {
2512   return 0;
2513 }
2514 EOM
2515     if $cc -o try $ccflags $ldflags try.c; then
2516        :
2517     else
2518         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2519         despair=yes
2520         trygcc=yes
2521         case "$cc" in
2522         *gcc*) trygcc=no ;;
2523         esac
2524         # Skip this test because it gives a false match on output like:
2525         #    ./trygcc: line 23: cc: command not found
2526         # case "`$cc -v -c try.c 2>&1`" in
2527         # *gcc*) trygcc=no ;;
2528         # esac
2529         if $test X"$trygcc" = Xyes; then
2530             if gcc -o try -c try.c; then
2531                 echo " "
2532                 echo "You seem to have a working gcc, though." >&4
2533                 # Switching compilers may undo the work of hints files.
2534                 # The most common problem is -D_REENTRANT for threads.
2535                 # This heuristic catches that case, but gets false positives
2536                 # if -Dusethreads was not actually specified.  Better to
2537                 # bail out here with a useful message than fail 
2538                 # mysteriously later. Should we perhaps just try to
2539                 # re-invoke Configure -Dcc=gcc config_args ?
2540                 if $test -f usethreads.cbu; then
2541                         $cat >&4 <<EOM 
2542
2543 *** However, any setting of the C compiler flags (e.g. for thread support)
2544 *** will be lost.  It may be necessary for you to restart Configure and
2545 *** add -Dcc=gcc to your Configure command line.
2546
2547 EOM
2548                         rp="Would you like to go ahead and try gcc anyway?"
2549                         dflt=n
2550                 else
2551                         rp="Would you like to use it?"
2552                         dflt=y
2553                 fi
2554                 if $test -f myread; then
2555                     . ./myread
2556                 else
2557                     if $test -f UU/myread; then
2558                         . ./UU/myread
2559                     else
2560                         echo "Cannot find myread, sorry.  Aborting." >&2
2561                         exit 1
2562                     fi
2563                 fi  
2564                 case "$ans" in
2565                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2566                 esac
2567             fi
2568         fi
2569     fi
2570     $rm -f try try.*
2571     ;;
2572 esac
2573 EOSC
2574
2575 cat <<EOS >checkcc
2576 $startsh
2577 EOS
2578 cat <<'EOSC' >>checkcc
2579 case "$cc" in        
2580 '') ;;
2581 *)  $rm -f try try.*              
2582     $cat >try.c <<EOM
2583 int main(int argc, char *argv[]) {
2584   return 0;
2585 }
2586 EOM
2587     if $cc -o try $ccflags $ldflags try.c; then
2588        :
2589     else
2590         if $test X"$despair" = Xyes; then
2591            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2592         fi
2593         $cat >&4 <<EOM         
2594 You need to find a working C compiler.
2595 Either (purchase and) install the C compiler supplied by your OS vendor,
2596 or for a free C compiler try http://gcc.gnu.org/
2597 I cannot continue any further, aborting.
2598 EOM
2599         exit 1
2600     fi
2601     $rm -f try try.*
2602     ;;
2603 esac
2604 EOSC
2605
2606 : determine whether symbolic links are supported
2607 echo " "
2608 $touch blurfl
2609 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2610         echo "Symbolic links are supported." >&4
2611         lns="$ln -s"
2612 else
2613         echo "Symbolic links are NOT supported." >&4
2614         lns="$ln"
2615 fi
2616 $rm -f blurfl sym
2617
2618 : determine whether symbolic links are supported
2619 echo " "
2620 case "$lns" in
2621 *"ln"*" -s")
2622         echo "Checking how to test for symbolic links..." >&4
2623         $lns blurfl sym
2624         if $test "X$issymlink" = X; then
2625                 case "$newsh" in
2626                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2627                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2628                 esac
2629                 if test $? = 0; then
2630                         issymlink="test -h"
2631                 else
2632                         echo "Your builtin 'test -h' may be broken." >&4
2633                         case "$test" in
2634                         /*)     ;;
2635                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2636                                 for p in $pth
2637                                 do
2638                                         if test -f "$p/$test"; then
2639                                                 test="$p/$test"
2640                                                 break
2641                                         fi
2642                                 done
2643                                 ;;
2644                         esac
2645                         case "$test" in
2646                         /*)
2647                                 echo "Trying external '$test -h'." >&4
2648                                 issymlink="$test -h"
2649                                 if $test ! -h sym >/dev/null 2>&1; then
2650                                         echo "External '$test -h' is broken, too." >&4
2651                                         issymlink=''
2652                                 fi
2653                                 ;;
2654                         *)      issymlink='' ;;
2655                         esac
2656                 fi              
2657         fi
2658         if $test "X$issymlink" = X; then
2659                 if $test -L sym 2>/dev/null; then
2660                         issymlink="$test -L"
2661                         echo "The builtin '$test -L' worked." >&4
2662                 fi
2663         fi
2664         if $test "X$issymlink" != X; then
2665                 echo "You can test for symbolic links with '$issymlink'." >&4
2666         else
2667                 echo "I do not know how you can test for symbolic links." >&4
2668         fi
2669         $rm -f blurfl sym
2670         ;;
2671 *)      echo "No symbolic links, so not testing for their testing..." >&4
2672         ;;
2673 esac
2674 echo " "
2675
2676 : Make symlinks util
2677 case "$mksymlinks" in
2678 $define|true|[yY]*)
2679         case "$src" in
2680         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2681                 exit 1
2682                 ;;
2683         *)      case "$lns:$issymlink" in
2684                 *"ln"*" -s:"*"test -"?)
2685                         echo "Creating the symbolic links..." >&4
2686                         echo "(First creating the subdirectories...)" >&4
2687                         cd ..
2688                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2689                                 read directory
2690                                 test -z "$directory" && break
2691                                 mkdir -p $directory
2692                         done
2693                         # Sanity check 1.
2694                         if test ! -d t/base; then
2695                                 echo "Failed to create the subdirectories.  Aborting." >&4
2696                                 exit 1
2697                         fi
2698                         echo "(Then creating the symlinks...)" >&4
2699                         awk '{print $1}' $src/MANIFEST | while true; do
2700                                 read filename
2701                                 test -z "$filename" && break
2702                                 if test -f $filename; then
2703                                         if $issymlink $filename; then
2704                                                 rm -f $filename
2705                                         fi
2706                                 fi
2707                                 if test -f $filename; then
2708                                         echo "$filename already exists, not symlinking."
2709                                 else
2710                                         ln -s $src/$filename $filename
2711                                 fi
2712                         done
2713                         # Sanity check 2.
2714                         if test ! -f t/base/lex.t; then
2715                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2716                                 exit 1
2717                         fi
2718                         cd UU
2719                         ;;
2720                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2721                         ;;
2722                 esac
2723                 ;;
2724         esac
2725         ;;
2726 esac
2727
2728 : Check for Cross-Compilation
2729 case "$usecrosscompile" in
2730 $define|true|[yY]*)
2731         $echo "Cross-compiling..."
2732         croak=''
2733         case "$cc" in
2734         *-*-gcc) # A cross-compiling gcc, probably.
2735             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2736             ar=$targetarch-ar
2737             # leave out ld, choosing it is more complex
2738             nm=$targetarch-nm
2739             ranlib=$targetarch-ranlib
2740             $echo 'extern int foo;' > try.c
2741             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2742             shift
2743             if $test $# -gt 0; then
2744                 incpth="$incpth $*"
2745                 incpth="`$echo $incpth|$sed 's/^ //'`"
2746                 echo "Guessing incpth '$incpth'." >&4
2747                 for i in $*; do
2748                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2749                     if $test -d $j; then
2750                         libpth="$libpth $j"
2751                     fi
2752                 done   
2753                 libpth="`$echo $libpth|$sed 's/^ //'`"
2754                 echo "Guessing libpth '$libpth'." >&4
2755             fi
2756             $rm -f try.c
2757             ;;
2758         esac
2759         case "$targetarch" in
2760         '') echo "Targetarch not defined." >&4; croak=y ;;
2761         *)  echo "Using targetarch $targetarch." >&4 ;;
2762         esac
2763         case "$incpth" in
2764         '') echo "Incpth not defined." >&4; croak=y ;;
2765         *)  echo "Using incpth '$incpth'." >&4 ;;
2766         esac
2767         case "$libpth" in
2768         '') echo "Libpth not defined." >&4; croak=y ;;
2769         *)  echo "Using libpth '$libpth'." >&4 ;;
2770         esac
2771         case "$usrinc" in
2772         '') for i in $incpth; do
2773                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2774                     usrinc=$i
2775                     echo "Guessing usrinc $usrinc." >&4
2776                     break
2777                 fi
2778             done
2779             case "$usrinc" in
2780             '') echo "Usrinc not defined." >&4; croak=y ;;
2781             esac
2782             ;;
2783         *)  echo "Using usrinc $usrinc." >&4 ;;
2784         esac
2785         case "$targethost" in
2786         '') echo "Targethost not defined." >&4; croak=y ;;
2787         *)  echo "Using targethost $targethost." >&4
2788         esac
2789         locincpth=' '
2790         loclibpth=' '
2791         case "$croak" in
2792         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2793         esac
2794         case "$src" in
2795         /*) run=$src/Cross/run
2796             targetmkdir=$src/Cross/mkdir
2797             to=$src/Cross/to
2798             from=$src/Cross/from
2799             ;;
2800         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2801             run=$pwd/Cross/run
2802             targetmkdir=$pwd/Cross/mkdir
2803             to=$pwd/Cross/to
2804             from=$pwd/Cross/from
2805             ;;
2806         esac
2807         case "$targetrun" in
2808         '') targetrun=ssh ;;
2809         esac
2810         case "$targetto" in
2811         '') targetto=scp ;;
2812         esac
2813         case "$targetfrom" in
2814         '') targetfrom=scp ;;
2815         esac
2816         run=$run-$targetrun
2817         to=$to-$targetto
2818         from=$from-$targetfrom
2819         case "$targetdir" in
2820         '')  targetdir=/tmp
2821              echo "Guessing targetdir $targetdir." >&4
2822              ;;
2823         esac
2824         case "$targetuser" in
2825         '')  targetuser=root
2826              echo "Guessing targetuser $targetuser." >&4
2827              ;;
2828         esac
2829         case "$targetfrom" in
2830         scp)    q=-q ;;
2831         *)      q='' ;;
2832         esac
2833         case "$targetrun" in
2834         ssh|rsh)
2835             cat >$run <<EOF
2836 #!/bin/sh
2837 case "\$1" in
2838 -cwd)
2839   shift
2840   cwd=\$1
2841   shift
2842   ;;
2843 esac
2844 case "\$cwd" in
2845 '') cwd=$targetdir ;;
2846 esac
2847 exe=\$1
2848 shift
2849 if $test ! -f \$exe.xok; then
2850   $to \$exe
2851   $touch \$exe.xok
2852 fi
2853 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2854 EOF
2855             ;;
2856         *)  echo "Unknown targetrun '$targetrun'" >&4
2857             exit 1
2858             ;;
2859         esac
2860         case "$targetmkdir" in
2861         */Cross/mkdir)
2862             cat >$targetmkdir <<EOF
2863 #!/bin/sh
2864 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2865 EOF
2866             $chmod a+rx $targetmkdir
2867             ;;
2868         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2869             exit 1
2870             ;;
2871         esac
2872         case "$targetto" in
2873         scp|rcp)
2874             cat >$to <<EOF
2875 #!/bin/sh
2876 for f in \$@
2877 do
2878   case "\$f" in
2879   /*)
2880     $targetmkdir \`dirname \$f\`
2881     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2882     ;;
2883   *)
2884     $targetmkdir $targetdir/\`dirname \$f\`
2885     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2886     ;;
2887   esac
2888 done
2889 exit 0
2890 EOF
2891             ;;
2892         cp) cat >$to <<EOF
2893 #!/bin/sh
2894 for f in \$@
2895 do
2896   case "\$f" in
2897   /*)
2898     $mkdir -p $targetdir/\`dirname \$f\`
2899     $cp \$f $targetdir/\$f || exit 1
2900     ;;
2901   *)
2902     $targetmkdir $targetdir/\`dirname \$f\`
2903     $cp \$f $targetdir/\$f || exit 1
2904     ;;
2905   esac
2906 done
2907 exit 0
2908 EOF
2909             ;;
2910         *)  echo "Unknown targetto '$targetto'" >&4
2911             exit 1
2912             ;;
2913         esac
2914         case "$targetfrom" in
2915         scp|rcp)
2916           cat >$from <<EOF
2917 #!/bin/sh
2918 for f in \$@
2919 do
2920   $rm -f \$f
2921   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2922 done
2923 exit 0
2924 EOF
2925             ;;
2926         cp) cat >$from <<EOF
2927 #!/bin/sh
2928 for f in \$@
2929 do
2930   $rm -f \$f
2931   cp $targetdir/\$f . || exit 1
2932 done
2933 exit 0
2934 EOF
2935             ;;
2936         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2937             exit 1
2938             ;;
2939         esac
2940         if $test ! -f $run; then
2941             echo "Target 'run' script '$run' not found." >&4
2942         else
2943             $chmod a+rx $run
2944         fi
2945         if $test ! -f $to; then
2946             echo "Target 'to' script '$to' not found." >&4
2947         else
2948             $chmod a+rx $to
2949         fi
2950         if $test ! -f $from; then
2951             echo "Target 'from' script '$from' not found." >&4
2952         else
2953             $chmod a+rx $from
2954         fi
2955         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2956             exit 1
2957         fi
2958         cat >&4 <<EOF
2959 Using '$run' for remote execution,
2960 and '$from' and '$to'
2961 for remote file transfer.
2962 EOF
2963         ;;
2964 *)      run=''
2965         to=:
2966         from=:
2967         usecrosscompile='undef'
2968         targetarch=''
2969         ;;
2970 esac
2971
2972 : see whether [:lower:] and [:upper:] are supported character classes
2973 echo " "
2974 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2975 ABYZ)
2976         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2977         up='[:upper:]'
2978         low='[:lower:]'
2979         ;;
2980 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2981         # (0xd9 and 0xe2), therefore that is a nice testing point.
2982         if test "X$up" = X -o "X$low" = X; then
2983             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2984             rs) up='[A-Z]'
2985                 low='[a-z]'
2986                 ;;
2987             esac
2988         fi
2989         if test "X$up" = X -o "X$low" = X; then
2990             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2991             rs) up='A-Z'
2992                 low='a-z'
2993                 ;;
2994             esac
2995         fi
2996         if test "X$up" = X -o "X$low" = X; then
2997             case "`echo RS | od -x 2>/dev/null`" in
2998             *D9E2*|*d9e2*)
2999                 echo "Hey, this might be EBCDIC." >&4
3000                 if test "X$up" = X -o "X$low" = X; then
3001                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3002                     rs) up='[A-IJ-RS-Z]'
3003                         low='[a-ij-rs-z]'
3004                         ;;
3005                     esac
3006                 fi
3007                 if test "X$up" = X -o "X$low" = X; then
3008                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3009                     rs) up='A-IJ-RS-Z'
3010                         low='a-ij-rs-z'
3011                         ;;
3012                     esac
3013                 fi
3014                 ;;
3015             esac
3016         fi
3017 esac
3018 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3019 rs)
3020     echo "Using $up and $low to convert case." >&4
3021     ;;
3022 *)
3023     echo "I don't know how to translate letters from upper to lower case." >&4
3024     echo "Your tr is not acting any way I know of." >&4
3025     exit 1
3026     ;;
3027 esac
3028 : set up the translation script tr, must be called with ./tr of course
3029 cat >tr <<EOSC
3030 $startsh
3031 case "\$1\$2" in
3032 '[A-Z][a-z]') exec $tr '$up' '$low';;
3033 '[a-z][A-Z]') exec $tr '$low' '$up';;
3034 esac
3035 exec $tr "\$@"
3036 EOSC
3037 chmod +x tr
3038 $eunicefix tr
3039
3040 : Try to determine whether config.sh was made on this system
3041 case "$config_sh" in
3042 '')
3043 myuname=`$uname -a 2>/dev/null`
3044 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3045 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3046 # because the A-Z/a-z are not consecutive.
3047 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3048         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3049 newmyuname="$myuname"
3050 dflt=n
3051 case "$knowitall" in
3052 '')
3053         if test -f ../config.sh; then
3054                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3055                         eval "`grep myuname= ../config.sh`"
3056                 fi
3057                 if test "X$myuname" = "X$newmyuname"; then
3058                         dflt=y
3059                 fi
3060         fi
3061         ;;
3062 *) dflt=y;;
3063 esac
3064
3065 : Get old answers from old config file if Configure was run on the
3066 : same system, otherwise use the hints.
3067 hint=default
3068 cd ..
3069 if test -f config.sh; then
3070         echo " "
3071         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3072         . UU/myread
3073         case "$ans" in
3074         n*|N*) echo "OK, I'll ignore it."
3075                 mv config.sh config.sh.old
3076                 myuname="$newmyuname"
3077                 ;;
3078         *)  echo "Fetching default answers from your old config.sh file..." >&4
3079                 tmp_n="$n"
3080                 tmp_c="$c"
3081                 tmp_sh="$sh"
3082                 . ./config.sh
3083                 cp config.sh UU
3084                 n="$tmp_n"
3085                 c="$tmp_c"
3086                 : Older versions did not always set $sh.  Catch re-use of such
3087                 : an old config.sh.
3088                 case "$sh" in
3089                 '') sh="$tmp_sh" ;;
3090                 esac
3091                 hint=previous
3092                 ;;
3093         esac
3094 fi
3095 . ./UU/checkcc
3096 if test ! -f config.sh; then
3097         $cat <<EOM
3098
3099 First time through, eh?  I have some defaults handy for some systems
3100 that need some extra help getting the Configure answers right:
3101
3102 EOM
3103         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3104         dflt=''
3105         : Half the following guesses are probably wrong... If you have better
3106         : tests or hints, please send them to perlbug@perl.org
3107         : The metaconfig authors would also appreciate a copy...
3108         $test -f /irix && osname=irix
3109         $test -f /xenix && osname=sco_xenix
3110         $test -f /dynix && osname=dynix
3111         $test -f /dnix && osname=dnix
3112         $test -f /lynx.os && osname=lynxos
3113         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3114         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3115         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3116         $test -f /bin/mips && /bin/mips && osname=mips
3117         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3118                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3119         $test -d /usr/apollo/bin && osname=apollo
3120         $test -f /etc/saf/_sactab && osname=svr4
3121         $test -d /usr/include/minix && osname=minix
3122         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3123         if $test -d /MachTen -o -d /MachTen_Folder; then
3124                 osname=machten
3125                 if $test -x /sbin/version; then
3126                         osvers=`/sbin/version | $awk '{print $2}' |
3127                         $sed -e 's/[A-Za-z]$//'`
3128                 elif $test -x /usr/etc/version; then
3129                         osvers=`/usr/etc/version | $awk '{print $2}' |
3130                         $sed -e 's/[A-Za-z]$//'`
3131                 else
3132                         osvers="$2.$3"
3133                 fi
3134         fi
3135
3136         $test -f /sys/posix.dll &&
3137                 $test -f /usr/bin/what &&
3138                 set X `/usr/bin/what /sys/posix.dll` &&
3139                 $test "$3" = UWIN &&
3140                 osname=uwin &&
3141                 osvers="$5"
3142
3143         if $test -f $uname; then
3144                 set X $myuname
3145                 shift
3146
3147                 case "$5" in
3148                 fps*) osname=fps ;;
3149                 mips*)
3150                         case "$4" in
3151                         umips) osname=umips ;;
3152                         *) osname=mips ;;
3153                         esac;;
3154                 [23]100) osname=mips ;;
3155                 next*) osname=next ;;
3156                 i386*)
3157                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3158                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3159                                 osname='sco'
3160                                 osvers=$tmp
3161                         elif $test -f /etc/kconfig; then
3162                                 osname=isc
3163                                 if test "$lns" = "$ln -s"; then
3164                                         osvers=4
3165                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3166                                         osvers=3
3167                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3168                                         osvers=2
3169                                 fi
3170                         fi
3171                         tmp=''
3172                         ;;
3173                 pc*)
3174                         if test -n "$DJGPP"; then
3175                                 osname=dos
3176                                 osvers=djgpp
3177                         fi
3178                         ;;
3179                 esac
3180
3181                 case "$1" in
3182                 aix) osname=aix
3183                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3184                         case "$tmp" in
3185                         # oslevel can fail with:
3186                         # oslevel: Unable to acquire lock.
3187                         *not\ found) osvers="$4"."$3" ;;
3188                         '<3240'|'<>3240') osvers=3.2.0 ;;
3189                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3190                         '=3250'|'>3250') osvers=3.2.5 ;;
3191                         *) osvers=$tmp;;
3192                         esac
3193                         ;;
3194                 bsd386) osname=bsd386
3195                         osvers=`$uname -r`
3196                         ;;
3197                 cygwin*) osname=cygwin
3198                         osvers="$3"
3199                         ;;
3200                 *dc.osx) osname=dcosx
3201                         osvers="$3"
3202                         ;;
3203                 dnix) osname=dnix
3204                         osvers="$3"
3205                         ;;
3206                 domainos) osname=apollo
3207                         osvers="$3"
3208                         ;;
3209                 dgux)   osname=dgux
3210                         osvers="$3"
3211                         ;;
3212                 dragonfly) osname=dragonfly
3213                         osvers="$3"
3214                         ;;
3215                 dynixptx*) osname=dynixptx
3216                         osvers=`echo "$4"|sed 's/^v//'`
3217                         ;;
3218                 freebsd) osname=freebsd
3219                         osvers="$3" ;;
3220                 genix)  osname=genix ;;
3221                 gnu)    osname=gnu
3222                         osvers="$3" ;;
3223                 hp*)    osname=hpux
3224                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3225                         ;;
3226                 irix*)  osname=irix
3227                         case "$3" in
3228                         4*) osvers=4 ;;
3229                         5*) osvers=5 ;;
3230                         *)      osvers="$3" ;;
3231                         esac
3232                         ;;
3233                 linux)  osname=linux
3234                         case "$3" in
3235                         *)      osvers="$3" ;;
3236                         esac
3237                         ;;
3238                 MiNT)   osname=mint
3239                         ;;
3240                 netbsd*) osname=netbsd
3241                         osvers="$3"
3242                         ;;
3243                 news-os) osvers="$3"
3244                         case "$3" in
3245                         4*) osname=newsos4 ;;
3246                         *) osname=newsos ;;
3247                         esac
3248                         ;;
3249                 next*) osname=next ;;
3250                 nonstop-ux) osname=nonstopux ;;
3251                 openbsd) osname=openbsd
3252                         osvers="$3"
3253                         ;;
3254                 os2)    osname=os2
3255                         osvers="$4"
3256                         ;;
3257                 POSIX-BC | posix-bc ) osname=posix-bc
3258                         osvers="$3"
3259                         ;;
3260                 powerux | power_ux | powermax_os | powermaxos | \
3261                 powerunix | power_unix) osname=powerux
3262                         osvers="$3"
3263                         ;;
3264                 qnx) osname=qnx
3265                         osvers="$4"
3266                         ;;
3267                 solaris) osname=solaris
3268                         case "$3" in
3269                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3270                         *)      osvers="$3" ;;
3271                         esac
3272                         ;;
3273                 sunos) osname=sunos
3274                         case "$3" in
3275                         5*) osname=solaris
3276                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3277                         *)      osvers="$3" ;;
3278                         esac
3279                         ;;
3280                 titanos) osname=titanos
3281                         case "$3" in
3282                         1*) osvers=1 ;;
3283                         2*) osvers=2 ;;
3284                         3*) osvers=3 ;;
3285                         4*) osvers=4 ;;
3286                         *)      osvers="$3" ;;
3287                         esac
3288                         ;;
3289                 ultrix) osname=ultrix
3290                         osvers="$3"
3291                         ;;
3292                 osf1|mls+)      case "$5" in
3293                                 alpha)
3294                                         osname=dec_osf
3295                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3296                                         case "$osvers" in
3297                                         [1-9].[0-9]*) ;;
3298                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3299                                         esac
3300                                         ;;
3301                         hp*)    osname=hp_osf1  ;;
3302                         mips)   osname=mips_osf1 ;;
3303                         esac
3304                         ;;
3305                 # UnixWare 7.1.2 is known as Open UNIX 8
3306                 openunix|unixware) osname=svr5
3307                         osvers="$4"
3308                         ;;
3309                 uts)    osname=uts
3310                         osvers="$3"
3311                         ;;
3312                 vos) osvers="$3"
3313                         ;;
3314                 $2) case "$osname" in
3315                         *isc*) ;;
3316                         *freebsd*) ;;
3317                         svr*)
3318                                 : svr4.x or possibly later
3319                                 case "svr$3" in
3320                                 ${osname}*)
3321                                         osname=svr$3
3322                                         osvers=$4
3323                                         ;;
3324                                 esac
3325                                 case "$osname" in
3326                                 svr4.0)
3327                                         : Check for ESIX
3328                                         if test -f /stand/boot ; then
3329                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3330                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3331                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3332                                                         if test -n "$isesix"; then
3333                                                                 osname=esix4
3334                                                         fi
3335                                                 fi
3336                                         fi
3337                                         ;;
3338                                 esac
3339                                 ;;
3340                         *)      if test -f /etc/systemid; then
3341                                         osname=sco
3342                                         set `echo $3 | $sed 's/\./ /g'` $4
3343                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3344                                                 osvers=$1.$2.$3
3345                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3346                                                 osvers=$1.$2
3347                                         elif $test -f $src/hints/sco_$1.sh; then
3348                                                 osvers=$1
3349                                         fi
3350                                 else
3351                                         case "$osname" in
3352                                         '') : Still unknown.  Probably a generic Sys V.
3353                                                 osname="sysv"
3354                                                 osvers="$3"
3355                                                 ;;
3356                                         esac
3357                                 fi
3358                                 ;;
3359                         esac
3360                         ;;
3361                 *)      case "$osname" in
3362                         '') : Still unknown.  Probably a generic BSD.
3363                                 osname="$1"
3364                                 osvers="$3"
3365                                 ;;
3366                         esac
3367                         ;;
3368                 esac
3369         else
3370                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3371                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3372                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3373                                 osname=news_os
3374                         fi
3375                         $rm -f UU/kernel.what
3376                 elif test -d c:/. -o -n "$is_os2" ; then
3377                         set X $myuname
3378                         osname=os2
3379                         osvers="$5"
3380                 fi
3381         fi
3382
3383         case "$targetarch" in
3384         '') ;;
3385         *)  hostarch=$osname
3386             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3387             osvers=''
3388             ;;
3389         esac
3390
3391         : Now look for a hint file osname_osvers, unless one has been
3392         : specified already.
3393         case "$hintfile" in
3394         ''|' ')
3395                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3396                 : Also try without trailing minor version numbers.
3397                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3398                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3399                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3400                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3401                 case "$file" in
3402                 '') dflt=none ;;
3403                 *)  case "$osvers" in
3404                         '') dflt=$file
3405                                 ;;
3406                         *)  if $test -f $src/hints/$file.sh ; then
3407                                         dflt=$file
3408                                 elif $test -f $src/hints/$xfile.sh ; then
3409                                         dflt=$xfile
3410                                 elif $test -f $src/hints/$xxfile.sh ; then
3411                                         dflt=$xxfile
3412                                 elif $test -f $src/hints/$xxxfile.sh ; then
3413                                         dflt=$xxxfile
3414                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3415                                         dflt=$xxxxfile
3416                                 elif $test -f "$src/hints/${osname}.sh" ; then
3417                                         dflt="${osname}"
3418                                 else
3419                                         dflt=none
3420                                 fi
3421                                 ;;
3422                         esac
3423                         ;;
3424                 esac
3425                 if $test -f Policy.sh ; then
3426                         case "$dflt" in
3427                         *Policy*) ;;
3428                         none) dflt="Policy" ;;
3429                         *) dflt="Policy $dflt" ;;
3430                         esac
3431                 fi
3432                 ;;
3433         *)
3434                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3435                 ;;
3436         esac
3437
3438         if $test -f Policy.sh ; then
3439                 $cat <<EOM
3440
3441 There's also a Policy hint file available, which should make the
3442 site-specific (policy) questions easier to answer.
3443 EOM
3444
3445         fi
3446
3447         $cat <<EOM
3448
3449 You may give one or more space-separated answers, or "none" if appropriate.
3450 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3451 previous run of Configure, you may specify it as well as or instead of
3452 OS-specific hints.  If hints are provided for your OS, you should use them:
3453 although Perl can probably be built without hints on many platforms, using
3454 hints often improve performance and may enable features that Configure can't
3455 set up on its own. If there are no hints that match your OS, specify "none";
3456 DO NOT give a wrong version or a wrong OS.
3457
3458 EOM
3459
3460         rp="Which of these apply, if any?"
3461         . UU/myread
3462         tans=$ans
3463         for file in $tans; do
3464                 if $test X$file = XPolicy -a -f Policy.sh; then
3465                         . Policy.sh
3466                         $cat Policy.sh >> UU/config.sh
3467                 elif $test -f $src/hints/$file.sh; then
3468                         . $src/hints/$file.sh
3469                         $cat $src/hints/$file.sh >> UU/config.sh
3470                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3471                         : nothing
3472                 else
3473                         : Give one chance to correct a possible typo.
3474                         echo "$file.sh does not exist"
3475                         dflt=$file
3476                         rp="hint to use instead?"
3477                         . UU/myread
3478                         for file in $ans; do
3479                                 if $test -f "$src/hints/$file.sh"; then
3480                                         . $src/hints/$file.sh
3481                                         $cat $src/hints/$file.sh >> UU/config.sh
3482                                 elif $test X$ans = X -o X$ans = Xnone ; then
3483                                         : nothing
3484                                 else
3485                                         echo "$file.sh does not exist -- ignored."
3486                                 fi
3487                         done
3488                 fi
3489         done
3490
3491         hint=recommended
3492         : Remember our hint file for later.
3493         if $test -f "$src/hints/$file.sh" ; then
3494                 hintfile="$file"
3495         else
3496                 hintfile=''
3497         fi
3498 fi
3499 cd UU
3500 ;;
3501 *)
3502         echo " "
3503         echo "Fetching default answers from $config_sh..." >&4
3504         tmp_n="$n"
3505         tmp_c="$c"
3506         cd ..
3507         cp $config_sh config.sh 2>/dev/null
3508         chmod +w config.sh
3509         . ./config.sh
3510         cd UU
3511         cp ../config.sh .
3512         n="$tmp_n"
3513         c="$tmp_c"
3514         hint=previous
3515         ;;
3516 esac
3517 test "$override" && . ./optdef.sh
3518
3519 : Restore computed paths
3520 for file in $loclist $trylist; do
3521         eval $file="\$_$file"
3522 done
3523
3524 cat << EOM
3525
3526 Configure uses the operating system name and version to set some defaults.
3527 The default value is probably right if the name rings a bell. Otherwise,
3528 since spelling matters for me, either accept the default or answer "none"
3529 to leave it blank.
3530
3531 EOM
3532 case "$osname" in
3533         ''|' ')
3534                 case "$hintfile" in
3535                 ''|' '|none) dflt=none ;;
3536                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3537                 esac
3538                 ;;
3539         *) dflt="$osname" ;;
3540 esac
3541 rp="Operating system name?"
3542 . ./myread
3543 case "$ans" in
3544 none)  osname='' ;;
3545 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3546 esac
3547 echo " "
3548 case "$osvers" in
3549         ''|' ')
3550                 case "$hintfile" in
3551                 ''|' '|none) dflt=none ;;
3552                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3553                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3554                         case "$dflt" in
3555                         ''|' ') dflt=none ;;
3556                         esac
3557                         ;;
3558                 esac
3559                 ;;
3560         *) dflt="$osvers" ;;
3561 esac
3562 rp="Operating system version?"
3563 . ./myread
3564 case "$ans" in
3565 none)  osvers='' ;;
3566 *) osvers="$ans" ;;
3567 esac
3568
3569
3570 . ./posthint.sh
3571
3572 : who configured the system
3573 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3574 case "$cf_by" in
3575 "")
3576         cf_by=`(logname) 2>/dev/null`
3577         case "$cf_by" in
3578         "")
3579                 cf_by=`(whoami) 2>/dev/null`
3580                 case "$cf_by" in
3581                 "") cf_by=unknown ;;
3582                 esac ;;
3583         esac ;;
3584 esac
3585
3586 : decide how portable to be.  Allow command line overrides.
3587 case "$d_portable" in
3588 "$undef") ;;
3589 *)      d_portable="$define" ;;
3590 esac
3591
3592 : set up shell script to do ~ expansion
3593 cat >filexp <<EOSS
3594 $startsh
3595 : expand filename
3596 case "\$1" in
3597  \~/*|\~)
3598         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3599         ;;
3600  \~*)
3601         if $test -f /bin/csh; then
3602                 /bin/csh -f -c "glob \$1"
3603                 failed=\$?
3604                 echo ""
3605                 exit \$failed
3606         else
3607                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3608                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3609                 if $test ! -d "\$dir"; then
3610                         me=\`basename \$0\`
3611                         echo "\$me: can't locate home directory for: \$name" >&2
3612                         exit 1
3613                 fi
3614                 case "\$1" in
3615                 */*)
3616                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3617                         ;;
3618                 *)
3619                         echo \$dir
3620                         ;;
3621                 esac
3622         fi
3623         ;;
3624 *)
3625         echo \$1
3626         ;;
3627 esac
3628 EOSS
3629 chmod +x filexp
3630 $eunicefix filexp
3631
3632 : now set up to get a file name
3633 cat <<EOS >getfile
3634 $startsh
3635 EOS
3636 cat <<'EOSC' >>getfile
3637 tilde=''
3638 fullpath=''
3639 already=''
3640 skip=''
3641 none_ok=''
3642 exp_file=''
3643 nopath_ok=''
3644 orig_rp="$rp"
3645 orig_dflt="$dflt"
3646 case "$gfpth" in
3647 '') gfpth='.' ;;
3648 esac
3649
3650 case "$fn" in
3651 *\(*)
3652         : getfile will accept an answer from the comma-separated list
3653         : enclosed in parentheses even if it does not meet other criteria.
3654         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3655         fn=`echo $fn | sed 's/(.*)//'`
3656         ;;
3657 esac
3658
3659 case "$fn" in
3660 *:*)
3661         loc_file=`expr $fn : '.*:\(.*\)'`
3662         fn=`expr $fn : '\(.*\):.*'`
3663         ;;
3664 esac
3665
3666 case "$fn" in
3667 *~*) tilde=true;;
3668 esac
3669 case "$fn" in
3670 */*) fullpath=true;;
3671 esac
3672 case "$fn" in
3673 *+*) skip=true;;
3674 esac
3675 case "$fn" in
3676 *n*) none_ok=true;;
3677 esac
3678 case "$fn" in
3679 *e*) exp_file=true;;
3680 esac
3681 case "$fn" in
3682 *p*) nopath_ok=true;;
3683 esac
3684
3685 case "$fn" in
3686 *f*) type='File';;
3687 *d*) type='Directory';;
3688 *l*) type='Locate';;
3689 esac
3690
3691 what="$type"
3692 case "$what" in
3693 Locate) what='File';;
3694 esac
3695
3696 case "$exp_file" in
3697 '')
3698         case "$d_portable" in
3699         "$define") ;;
3700         *) exp_file=true;;
3701         esac
3702         ;;
3703 esac
3704
3705 cd ..
3706 while test "$type"; do
3707         redo=''
3708         rp="$orig_rp"
3709         dflt="$orig_dflt"
3710         case "$tilde" in
3711         true) rp="$rp (~name ok)";;
3712         esac
3713         . UU/myread
3714         if test -f UU/getfile.ok && \
3715                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3716         then
3717                 value="$ans"
3718                 ansexp="$ans"
3719                 break
3720         fi
3721         case "$ans" in
3722         none)
3723                 value=''
3724                 ansexp=''
3725                 case "$none_ok" in
3726                 true) type='';;
3727                 esac
3728                 ;;
3729         *)
3730                 case "$tilde" in
3731                 '') value="$ans"
3732                         ansexp="$ans";;
3733                 *)
3734                         value=`UU/filexp $ans`
3735                         case $? in
3736                         0)
3737                                 if test "$ans" != "$value"; then
3738                                         echo "(That expands to $value on this system.)"
3739                                 fi
3740                                 ;;
3741                         *) value="$ans";;
3742                         esac
3743                         ansexp="$value"
3744                         case "$exp_file" in
3745                         '') value="$ans";;
3746                         esac
3747                         ;;
3748                 esac
3749                 case "$fullpath" in
3750                 true)
3751                         case "$ansexp" in
3752                         /*) value="$ansexp" ;;
3753                         [a-zA-Z]:/*) value="$ansexp" ;;
3754                         *)
3755                                 redo=true
3756                                 case "$already" in
3757                                 true)
3758                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3759                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3760                                         ;;
3761                                 *)
3762                                 echo "Please give a full path name, starting with slash." >&4
3763                                         case "$tilde" in
3764                                         true)
3765                                 echo "Note that using ~name is ok provided it expands well." >&4
3766                                                 already=true
3767                                                 ;;
3768                                         esac
3769                                 esac
3770                                 ;;
3771                         esac
3772                         ;;
3773                 esac
3774                 case "$redo" in
3775                 '')
3776                         case "$type" in
3777                         File)
3778                                 for fp in $gfpth; do
3779                                         if test "X$fp" = X.; then
3780                                             pf="$ansexp"
3781                                         else    
3782                                             pf="$fp/$ansexp"
3783                                         fi
3784                                         if test -f "$pf"; then
3785                                                 type=''
3786                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3787                                         then
3788                                                 echo "($value is not a plain file, but that's ok.)"
3789                                                 type=''
3790                                         fi
3791                                         if test X"$type" = X; then
3792                                             value="$pf"
3793                                             break
3794                                         fi
3795                                 done
3796                                 ;;
3797                         Directory)
3798                                 for fp in $gfpth; do
3799                                         if test "X$fp" = X.; then
3800                                             dir="$ans"
3801                                             direxp="$ansexp"
3802                                         else    
3803                                             dir="$fp/$ansexp"
3804                                             direxp="$fp/$ansexp"
3805                                         fi
3806                                         if test -d "$direxp"; then
3807                                                 type=''
3808                                                 value="$dir"
3809                                                 break
3810                                         fi
3811                                 done
3812                                 ;;
3813                         Locate)
3814                                 if test -d "$ansexp"; then
3815                                         echo "(Looking for $loc_file in directory $value.)"
3816                                         value="$value/$loc_file"
3817                                         ansexp="$ansexp/$loc_file"
3818                                 fi
3819                                 if test -f "$ansexp"; then
3820                                         type=''
3821                                 fi
3822                                 case "$nopath_ok" in
3823                                 true)   case "$value" in
3824                                         */*) ;;
3825                                         *)      echo "Assuming $value will be in people's path."
3826                                                 type=''
3827                                                 ;;
3828                                         esac
3829                                         ;;
3830                                 esac
3831                                 ;;
3832                         esac
3833
3834                         case "$skip" in
3835                         true) type='';
3836                         esac
3837
3838                         case "$type" in
3839                         '') ;;
3840                         *)
3841                                 if test "$fastread" = yes; then
3842                                         dflt=y
3843                                 else
3844                                         dflt=n
3845                                 fi
3846                                 rp="$what $value doesn't exist.  Use that name anyway?"
3847                                 . UU/myread
3848                                 dflt=''
3849                                 case "$ans" in
3850                                 y*) type='';;
3851                                 *) echo " ";;
3852                                 esac
3853                                 ;;
3854                         esac
3855                         ;;
3856                 esac
3857                 ;;
3858         esac
3859 done
3860 cd UU
3861 ans="$value"
3862 rp="$orig_rp"
3863 dflt="$orig_dflt"
3864 rm -f getfile.ok
3865 test "X$gfpthkeep" != Xy && gfpth=""
3866 EOSC
3867
3868 : determine root of directory hierarchy where package will be installed.
3869 case "$prefix" in
3870 '')
3871         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3872         ;;
3873 *?/)
3874         dflt=`echo "$prefix" | sed 's/.$//'`
3875         ;;
3876 *)
3877         dflt="$prefix"
3878         ;;
3879 esac
3880 $cat <<EOM
3881
3882 By default, $package will be installed in $dflt/bin, manual pages
3883 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3884 installation directories. Typically this is something like /usr/local.
3885 If you wish to have binaries under /usr/bin but other parts of the
3886 installation under /usr/local, that's ok: you will be prompted
3887 separately for each of the installation directories, the prefix being
3888 only used to set the defaults.
3889
3890 EOM
3891 fn=d~
3892 rp='Installation prefix to use?'
3893 . ./getfile
3894 oldprefix=''
3895 case "$prefix" in
3896 '') ;;
3897 *)
3898         case "$ans" in
3899         "$prefix") ;;
3900         *) oldprefix="$prefix";;
3901         esac
3902         ;;
3903 esac
3904 prefix="$ans"
3905 prefixexp="$ansexp"
3906
3907 : allow them to override the AFS root
3908 case "$afsroot" in
3909 '')     afsroot=/afs ;;
3910 *)      afsroot=$afsroot ;;
3911 esac
3912
3913 : is AFS running?
3914 echo " "
3915 case "$afs" in
3916 $define|true)   afs=true ;;
3917 $undef|false)   afs=false ;;
3918 *)      if $test -d $afsroot; then
3919                 afs=true
3920         else
3921                 afs=false
3922         fi
3923         ;;
3924 esac
3925 if $afs; then
3926         echo "AFS may be running... I'll be extra cautious then..." >&4
3927 else
3928         echo "AFS does not seem to be running..." >&4
3929 fi
3930
3931 : determine installation prefix for where package is to be installed.
3932 if $afs; then 
3933 $cat <<EOM
3934
3935 Since you are running AFS, I need to distinguish the directory in which
3936 files will reside from the directory in which they are installed (and from
3937 which they are presumably copied to the former directory by occult means).
3938
3939 EOM
3940         case "$installprefix" in
3941         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3942         *) dflt="$installprefix";;
3943         esac
3944 else
3945 $cat <<EOM
3946
3947 In some special cases, particularly when building $package for distribution,
3948 it is convenient to distinguish the directory in which files should be
3949 installed from the directory ($prefix) in which they will
3950 eventually reside.  For most users, these two directories are the same.
3951
3952 EOM
3953         case "$installprefix" in
3954         '') dflt=$prefix ;;
3955         *) dflt=$installprefix;;
3956         esac
3957 fi
3958 fn=d~
3959 rp='What installation prefix should I use for installing files?'
3960 . ./getfile
3961 installprefix="$ans"
3962 installprefixexp="$ansexp"
3963
3964 : Perform the prefixexp/installprefixexp correction if necessary
3965 cat <<EOS >installprefix
3966 $startsh
3967 EOS
3968 cat <<'EOSC' >>installprefix
3969 : Change installation prefix, if necessary.
3970 if $test X"$prefix" != X"$installprefix"; then
3971     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3972 else
3973     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3974 fi
3975 EOSC
3976 chmod +x installprefix
3977 $eunicefix installprefix
3978
3979 : Set variables such as privlib and privlibexp from the output of ./getfile
3980 : performing the prefixexp/installprefixexp correction if necessary.
3981 cat <<EOS >setprefixvar
3982 $startsh
3983 EOS
3984 cat <<'EOSC' >>setprefixvar
3985 eval "${prefixvar}=\"\$ans\""
3986 eval "${prefixvar}exp=\"\$ansexp\""
3987 . ./installprefix
3988 EOSC
3989 chmod +x setprefixvar
3990 $eunicefix setprefixvar
3991
3992 : set up the script used to warn in case of inconsistency
3993 cat <<EOS >whoa
3994 $startsh
3995 EOS
3996 cat <<'EOSC' >>whoa
3997 dflt=y
3998 case "$hint" in
3999     recommended)
4000         case "$hintfile" in
4001         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4002                 ;;
4003         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4004                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4005                 ;;
4006         esac
4007         ;;
4008     *)  echo " "
4009         echo "*** WHOA THERE!!! ***" >&4
4010         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4011         ;;
4012 esac
4013 rp="    Keep the $hint value?"
4014 . ./myread
4015 case "$ans" in
4016 y) td=$was; tu=$was;;
4017 esac
4018 EOSC
4019
4020 : function used to set '$1' to '$val'
4021 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4022 case "$val$was" in
4023 $define$undef) . ./whoa; eval "$var=\$td";;
4024 $undef$define) . ./whoa; eval "$var=\$tu";;
4025 *) eval "$var=$val";;
4026 esac'
4027
4028 : Check is we will use socks
4029 case "$usesocks" in
4030 $define|true|[yY]*)     dflt='y';;
4031 *) dflt='n';;
4032 esac
4033 cat <<EOM
4034
4035 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4036 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4037 to use the PerlIO abstraction layer, this will be implicitly selected.
4038
4039 If this doesn't make any sense to you, just accept the default '$dflt'.
4040 EOM
4041 rp='Build Perl for SOCKS?'
4042 . ./myread
4043 case "$ans" in
4044 y|Y)    val="$define" ;;
4045 *)      val="$undef" ;;
4046 esac
4047 set usesocks
4048 eval $setvar
4049
4050 case "$usesocks" in
4051 $define|true|[yY]*) useperlio="$define";;
4052 esac
4053
4054 : Check if we want perlio
4055 case "$useperlio" in
4056 $define|true|[yY]*|'')  dflt='y';;
4057 *) dflt='n';;
4058 esac
4059 cat <<EOM
4060
4061 Previous version of $package used the standard IO mechanisms as
4062 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4063 alternate IO mechanisms via the PerlIO abstraction layer, but the
4064 stdio mechanism is still available if needed.  The abstraction layer
4065 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4066 Using PerlIO with sfio may cause problems with some extension modules.
4067
4068 If this doesn't make any sense to you, just accept the default '$dflt'.
4069 EOM
4070 rp='Use the PerlIO abstraction layer?'
4071 . ./myread
4072 case "$ans" in
4073 y|Y)
4074         val="$define"
4075         ;;
4076 *)
4077         echo "Ok, doing things the stdio way."
4078         val="$undef"
4079         ;;
4080 esac
4081 set useperlio
4082 eval $setvar
4083
4084 case "$usesocks" in
4085 $define|true|[yY]*)
4086         case "$useperlio" in
4087         $define|true|[yY]*) ;;
4088         *)      cat >&4 <<EOM
4089
4090 You are using the SOCKS proxy protocol library which means that you
4091 should also use the PerlIO layer.  You may be headed for trouble.
4092
4093 EOM
4094                 ;;
4095         esac
4096         ;;
4097 esac
4098
4099 : get the patchlevel
4100 echo " "
4101 echo "Getting the current patchlevel..." >&4
4102 if $test -r $rsrc/patchlevel.h;then
4103         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4104         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4105         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4106         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4107         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4108         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4109         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4110 else
4111         revision=0
4112         patchlevel=0
4113         subversion=0
4114         api_revision=0
4115         api_version=0
4116         api_subversion=0
4117         perl_patchlevel=0
4118         $echo "(You do not have patchlevel.h.  Eek.)"
4119 fi
4120 if $test -r $rsrc/.patch ; then
4121         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4122                 perl_patchlevel=`cat $rsrc/.patch`
4123         fi
4124 fi
4125 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4126 version_patchlevel_string="version $patchlevel subversion $subversion"
4127 case "$perl_patchlevel" in
4128 0|'') ;;
4129 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4130 esac
4131
4132 $echo "(You have $package $version_patchlevel_string.)"
4133
4134 case "$osname" in
4135 dos|vms)
4136         : XXX Should be a Configure test for double-dots in filenames.
4137         version=`echo $revision $patchlevel $subversion | \
4138                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4139         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4140                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4141         ;;
4142 *)
4143         version=`echo $revision $patchlevel $subversion | \
4144                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4145         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4146                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4147         ;;
4148 esac
4149 : Special case the 5.005_xx maintenance series, which used 5.005
4150 : without any subversion label as a subdirectory in $sitelib
4151 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4152         api_versionstring='5.005'
4153 fi
4154
4155 : Do we want threads support and if so, what type
4156 case "$usethreads" in
4157 $define|true|[yY]*)     dflt='y';;
4158 *)     # Catch case where user specified ithreads or 5005threads but
4159        # forgot -Dusethreads (A.D. 4/2002)
4160        case "$useithreads$use5005threads" in
4161        *$define*)
4162                 case "$useperlio" in
4163                 "$define")      dflt='y' ;;
4164                 *)              dflt='n' ;;
4165                 esac
4166                 ;;
4167        *)       dflt='n';;
4168        esac
4169        ;;
4170 esac
4171 cat <<EOM
4172
4173 Perl can be built to take advantage of threads on some systems.
4174 To do so, Configure can be run with -Dusethreads.
4175
4176 Note that Perl built with threading support runs slightly slower
4177 and uses more memory than plain Perl. The current implementation
4178 is believed to be stable, but it is fairly new, and so should be
4179 treated with caution.
4180
4181 If this doesn't make any sense to you, just accept the default '$dflt'.
4182 EOM
4183 rp='Build a threading Perl?'
4184 . ./myread
4185 case "$ans" in
4186 y|Y)    val="$define" ;;
4187 *)      val="$undef" ;;
4188 esac
4189 set usethreads
4190 eval $setvar
4191
4192 if $test $patchlevel -lt 9; then
4193     case "$usethreads" in
4194     $define)
4195         $cat <<EOM
4196
4197 Since release 5.6, Perl has had two different threading implementations,
4198 the newer interpreter-based version (ithreads) with one interpreter per
4199 thread, and the older 5.005 version (5005threads).
4200 The 5005threads version is effectively unmaintained and will probably be
4201 removed in Perl 5.10, so there should be no need to build a Perl using it
4202 unless needed for backwards compatibility with some existing 5.005threads
4203 code.
4204
4205 EOM
4206         : Default to ithreads unless overridden on command line or with
4207         : old config.sh
4208         dflt='y'
4209         case "$use5005threads" in
4210                 $define|true|[yY]*) dflt='n';;
4211         esac
4212         case "$useithreads" in
4213                 $undef|false|[nN]*) dflt='n';;
4214         esac
4215         rp='Use the newer interpreter-based ithreads?'
4216         . ./myread
4217         case "$ans" in
4218         y|Y)    val="$define" ;;
4219         *)      val="$undef" ;;
4220         esac
4221         set useithreads
4222         eval $setvar
4223         : Now set use5005threads to the opposite value.
4224         case "$useithreads" in
4225         $define) val="$undef" ;;
4226         *) val="$define" ;;
4227         esac
4228         set use5005threads
4229         eval $setvar
4230         ;;
4231     *)
4232         useithreads="$undef"
4233         use5005threads="$undef"
4234         ;;
4235     esac
4236
4237     case "$useithreads$use5005threads" in
4238     "$define$define")
4239         $cat >&4 <<EOM
4240
4241 You cannot have both the ithreads and the 5.005 threads enabled
4242 at the same time.  Disabling the 5.005 threads since they are
4243 much less stable than the ithreads.
4244
4245 EOM
4246         use5005threads="$undef"
4247         ;;
4248     esac
4249
4250 else
4251 : perl-5.9.x and later
4252
4253     if test X"$usethreads" = "X$define"; then
4254         case "$use5005threads" in
4255             $define|true|[yY]*)
4256                 $cat >&4 <<EOM
4257
4258 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4259
4260 EOM
4261             ;;
4262         esac
4263     fi
4264
4265     use5005threads="$undef"
4266     useithreads="$usethreads"
4267 fi
4268
4269 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4270         cat >&4 <<EOF
4271 ***
4272 *** To build with ithreads you must also use the PerlIO layer.
4273 *** Cannot continue, aborting.
4274 ***
4275 EOF
4276         exit 1
4277 fi
4278
4279 case "$d_oldpthreads" in
4280 '')     : Configure tests would be welcome here.  For now, assume undef.
4281         val="$undef" ;;
4282 *)      val="$d_oldpthreads" ;;
4283 esac
4284 set d_oldpthreads
4285 eval $setvar
4286
4287
4288 : Look for a hint-file generated 'call-back-unit'.  If the
4289 : user has specified that a threading perl is to be built,
4290 : we may need to set or change some other defaults.
4291 if $test -f usethreads.cbu; then
4292     echo "Your platform has some specific hints regarding threaded builds, using them..."
4293     . ./usethreads.cbu
4294 else
4295     case "$usethreads" in
4296         "$define"|true|[yY]*)
4297                 $cat <<EOM
4298 (Your platform does not have any specific hints for threaded builds.
4299  Assuming POSIX threads, then.)
4300 EOM
4301         ;;
4302     esac
4303 fi
4304
4305 : Check if multiplicity is required
4306 cat <<EOM
4307
4308 Perl can be built so that multiple Perl interpreters can coexist
4309 within the same Perl executable.
4310 EOM
4311
4312 case "$useithreads" in
4313 $define)
4314         cat <<EOM
4315 This multiple interpreter support is required for interpreter-based threads.
4316 EOM
4317         val="$define"
4318         ;;
4319 *)      case "$usemultiplicity" in
4320         $define|true|[yY]*)     dflt='y';;
4321         *) dflt='n';;
4322         esac
4323         echo " "
4324         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4325         rp='Build Perl for multiplicity?'
4326         . ./myread
4327         case "$ans" in
4328         y|Y)    val="$define" ;;
4329         *)      val="$undef" ;;
4330         esac
4331         ;;
4332 esac
4333 set usemultiplicity
4334 eval $setvar
4335
4336 : Check if morebits is requested
4337 case "$usemorebits" in
4338 "$define"|true|[yY]*)
4339         use64bitint="$define"
4340         uselongdouble="$define"
4341         usemorebits="$define"
4342         ;;
4343 *)      usemorebits="$undef"
4344         ;;
4345 esac
4346
4347 : Determine the C compiler to be used
4348 echo " "
4349 case "$cc" in
4350 '') dflt=cc;;
4351 *) dflt="$cc";;
4352 esac
4353 rp="Use which C compiler?"
4354 . ./myread
4355 cc="$ans"
4356
4357 : See whether they have no cc but they do have gcc
4358 . ./trygcc
4359 if $test -f cc.cbu; then
4360     . ./cc.cbu
4361 fi
4362 . ./checkcc
4363
4364 : make some quick guesses about what we are up against
4365 echo " "
4366 $echo $n "Hmm...  $c"
4367 echo exit 1 >bsd
4368 echo exit 1 >usg
4369 echo exit 1 >v7
4370 echo exit 1 >osf1
4371 echo exit 1 >eunice
4372 echo exit 1 >xenix
4373 echo exit 1 >venix
4374 echo exit 1 >os2
4375 d_bsd="$undef"
4376 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4377 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4378 then
4379         echo "Looks kind of like an OSF/1 system, but we'll see..."
4380         echo exit 0 >osf1
4381 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4382         xxx=`./loc addbib blurfl $pth`
4383         if $test -f $xxx; then
4384         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4385                 echo exit 0 >bsd
4386                 echo exit 0 >usg
4387         else
4388                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4389                         echo "Looks kind of like an extended USG system, but we'll see..."
4390                 else
4391                         echo "Looks kind of like a USG system, but we'll see..."
4392                 fi
4393                 echo exit 0 >usg
4394         fi
4395 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4396         echo "Looks kind of like a BSD system, but we'll see..."
4397         d_bsd="$define"
4398         echo exit 0 >bsd
4399 else
4400         echo "Looks kind of like a Version 7 system, but we'll see..."
4401         echo exit 0 >v7
4402 fi
4403 case "$eunicefix" in
4404 *unixtovms*)
4405         $cat <<'EOI'
4406 There is, however, a strange, musty smell in the air that reminds me of
4407 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4408 EOI
4409         echo exit 0 >eunice
4410         d_eunice="$define"
4411 : it so happens the Eunice I know will not run shell scripts in Unix format
4412         ;;
4413 *)
4414         echo " "
4415         echo "Congratulations.  You aren't running Eunice."
4416         d_eunice="$undef"
4417         ;;
4418 esac
4419 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4420 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4421 : semicolon as a patch separator
4422 case "$p_" in
4423 :) ;;
4424 *)
4425         $cat <<'EOI'
4426 I have the feeling something is not exactly right, however...don't tell me...
4427 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4428 (Or you may be running DOS with DJGPP.)
4429 EOI
4430         echo exit 0 >os2
4431         ;;
4432 esac
4433 if test -f /xenix; then
4434         echo "Actually, this looks more like a XENIX system..."
4435         echo exit 0 >xenix
4436         d_xenix="$define"
4437 else
4438         echo " "
4439         echo "It's not Xenix..."
4440         d_xenix="$undef"
4441 fi
4442 chmod +x xenix
4443 $eunicefix xenix
4444 if test -f /venix; then
4445         echo "Actually, this looks more like a VENIX system..."
4446         echo exit 0 >venix
4447 else
4448         echo " "
4449         if ./xenix; then
4450                 : null
4451         else
4452                 echo "Nor is it Venix..."
4453         fi
4454 fi
4455 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4456 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4457 $rm -f foo
4458
4459 : Check if we are using GNU gcc and what its version is
4460 echo " "
4461 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4462 $cat >try.c <<EOM
4463 #include <stdio.h>
4464 int main() {
4465 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4466 #ifdef __VERSION__
4467         printf("%s\n", __VERSION__);
4468 #else
4469         printf("%s\n", "1");
4470 #endif
4471 #endif
4472         return(0);
4473 }
4474 EOM
4475 if $cc -o try $ccflags $ldflags try.c; then
4476         gccversion=`$run ./try`
4477         case "$gccversion" in
4478         '') echo "You are not using GNU cc." ;;
4479         *)  echo "You are using GNU cc $gccversion."
4480             ccname=gcc
4481             ;;
4482         esac
4483 else
4484         echo " "
4485         echo "*** WHOA THERE!!! ***" >&4
4486         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4487         case "$knowitall" in
4488         '')
4489         echo "    You'd better start hunting for one and let me know about it." >&4
4490                 exit 1
4491                 ;;
4492         esac
4493 fi
4494 $rm -f try try.*
4495 case "$gccversion" in
4496 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4497 esac
4498 case "$gccversion" in
4499 '') gccosandvers='' ;;
4500 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4501    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4502    gccshortvers=''
4503    case "$gccosandvers" in
4504    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4505    $osname$osvers) ;; # looking good
4506    $osname*) cat <<EOM >&4
4507
4508 *** WHOA THERE!!! ***
4509
4510     Your gcc has not been compiled for the exact release of
4511     your operating system ($gccosandvers versus $osname$osvers).
4512
4513     In general it is a good idea to keep gcc synchronized with
4514     the operating system because otherwise serious problems
4515     may ensue when trying to compile software, like Perl.
4516
4517     I'm trying to be optimistic here, though, and will continue.
4518     If later during the configuration and build icky compilation
4519     problems appear (headerfile conflicts being the most common
4520     manifestation), I suggest reinstalling the gcc to match
4521     your operating system release.
4522
4523 EOM
4524       ;;
4525    *) gccosandvers='' ;; # failed to parse, better be silent
4526    esac
4527    ;;
4528 esac
4529 case "$ccname" in
4530 '') ccname="$cc" ;;
4531 esac
4532
4533 # gcc 3.* complain about adding -Idirectories that they already know about,
4534 # so we will take those off from locincpth.
4535 case "$gccversion" in
4536 3*)
4537     echo "main(){}">try.c
4538     for incdir in $locincpth; do
4539        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4540              grep '^c[cp]p*[01]: warning: changing search order '`
4541        if test "X$warn" != X; then
4542            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4543        fi
4544     done
4545     $rm -f try try.*
4546 esac
4547
4548 : What should the include directory be ?
4549 echo " "
4550 $echo $n "Hmm...  $c"
4551 dflt='/usr/include'
4552 incpath=''
4553 mips_type=''
4554 if $test -f /bin/mips && /bin/mips; then
4555         echo "Looks like a MIPS system..."
4556         $cat >usr.c <<'EOCP'
4557 #ifdef SYSTYPE_BSD43
4558 /bsd43
4559 #endif
4560 EOCP
4561         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4562                 dflt='/bsd43/usr/include'
4563                 incpath='/bsd43'
4564                 mips_type='BSD 4.3'
4565         else
4566                 mips_type='System V'
4567         fi
4568         $rm -f usr.c usr.out
4569         echo "and you're compiling with the $mips_type compiler and libraries."
4570         xxx_prompt=y
4571         echo "exit 0" >mips
4572 else
4573         echo "Doesn't look like a MIPS system."
4574         xxx_prompt=n
4575         echo "exit 1" >mips
4576 fi
4577 chmod +x mips
4578 $eunicefix mips
4579 case "$usrinc" in
4580 '') ;;
4581 *) dflt="$usrinc";;
4582 esac
4583 case "$xxx_prompt" in
4584 y)      fn=d/
4585         echo " "
4586         rp='Where are the include files you want to use?'
4587         . ./getfile
4588         usrinc="$ans"
4589         ;;
4590 *)      usrinc="$dflt"
4591         ;;
4592 esac
4593
4594 : see how we invoke the C preprocessor
4595 echo " "
4596 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4597 cat <<'EOT' >testcpp.c
4598 #define ABC abc
4599 #define XYZ xyz
4600 ABC.XYZ
4601 EOT
4602 cd ..
4603 if test ! -f cppstdin; then
4604         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4605                 # AIX cc -E doesn't show the absolute headerfile
4606                 # locations but we'll cheat by using the -M flag.
4607                 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
4608         else
4609                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4610         fi
4611 else
4612         echo "Keeping your $hint cppstdin wrapper."
4613 fi
4614 chmod 755 cppstdin
4615 wrapper=`pwd`/cppstdin
4616 ok='false'
4617 cd UU
4618
4619 if $test "X$cppstdin" != "X" && \
4620         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4621         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4622 then
4623         echo "You used to use $cppstdin $cppminus so we'll use that again."
4624         case "$cpprun" in
4625         '') echo "But let's see if we can live without a wrapper..." ;;
4626         *)
4627                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4628                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4629                 then
4630                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4631                         ok='true'
4632                 else
4633                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4634                 fi
4635                 ;;
4636         esac
4637 else
4638         case "$cppstdin" in
4639         '') ;;
4640         *)
4641                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4642                 ;;
4643         esac
4644 fi
4645
4646 if $ok; then
4647         : nothing
4648 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4649         $cc -E <testcpp.c >testcpp.out 2>&1; \
4650         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4651         echo "Yup, it does."
4652         x_cpp="$cc -E"
4653         x_minus='';
4654 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4655         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4656         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4657         echo "Yup, it does."
4658         x_cpp="$cc -E"
4659         x_minus='-';
4660 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4661         $cc -P <testcpp.c >testcpp.out 2>&1; \
4662         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4663         echo "Yipee, that works!"
4664         x_cpp="$cc -P"
4665         x_minus='';
4666 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4667         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4668         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4669         echo "At long last!"
4670         x_cpp="$cc -P"
4671         x_minus='-';
4672 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4673         $cpp <testcpp.c >testcpp.out 2>&1; \
4674         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4675         echo "It works!"
4676         x_cpp="$cpp"
4677         x_minus='';
4678 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4679         $cpp - <testcpp.c >testcpp.out 2>&1; \
4680         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4681         echo "Hooray, it works!  I was beginning to wonder."
4682         x_cpp="$cpp"
4683         x_minus='-';
4684 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4685         $wrapper <testcpp.c >testcpp.out 2>&1; \
4686         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4687         x_cpp="$wrapper"
4688         x_minus=''
4689         echo "Eureka!"
4690 else
4691         dflt=''
4692         rp="No dice.  I can't find a C preprocessor.  Name one:"
4693         . ./myread
4694         x_cpp="$ans"
4695         x_minus=''
4696         $x_cpp <testcpp.c >testcpp.out 2>&1
4697         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4698                 echo "OK, that will do." >&4
4699         else
4700 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4701                 exit 1
4702         fi
4703 fi
4704
4705 case "$ok" in
4706 false)
4707         cppstdin="$x_cpp"
4708         cppminus="$x_minus"
4709         cpprun="$x_cpp"
4710         cpplast="$x_minus"
4711         set X $x_cpp
4712         shift
4713         case "$1" in
4714         "$cpp")
4715                 echo "Perhaps can we force $cc -E using a wrapper..."
4716                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4717                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4718                 then
4719                         echo "Yup, we can."
4720                         cppstdin="$wrapper"
4721                         cppminus='';
4722                 else
4723                         echo "Nope, we'll have to live without it..."
4724                 fi
4725                 ;;
4726         esac
4727         case "$cpprun" in
4728         "$wrapper")
4729                 cpprun=''
4730                 cpplast=''
4731                 ;;
4732         esac
4733         ;;
4734 esac
4735
4736 case "$cppstdin" in
4737 "$wrapper"|'cppstdin') ;;
4738 *) $rm -f $wrapper;;
4739 esac
4740 $rm -f testcpp.c testcpp.out
4741
4742 : Set private lib path
4743 case "$plibpth" in
4744 '') if ./mips; then
4745                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4746         fi;;
4747 esac
4748 case "$libpth" in
4749 ' ') dlist='';;
4750 '') dlist="$loclibpth $plibpth $glibpth";;
4751 *) dlist="$libpth";;
4752 esac
4753
4754 : Now check and see which directories actually exist, avoiding duplicates
4755 libpth=''
4756 for xxx in $dlist
4757 do
4758     if $test -d $xxx; then
4759                 case " $libpth " in
4760                 *" $xxx "*) ;;
4761                 *) libpth="$libpth $xxx";;
4762                 esac
4763     fi
4764 done
4765 $cat <<'EOM'
4766
4767 Some systems have incompatible or broken versions of libraries.  Among
4768 the directories listed in the question below, please remove any you
4769 know not to be holding relevant libraries, and add any that are needed.
4770 Say "none" for none.
4771
4772 EOM
4773 case "$libpth" in
4774 '') dflt='none';;
4775 *)
4776         set X $libpth
4777         shift
4778         dflt=${1+"$@"}
4779         ;;
4780 esac
4781 rp="Directories to use for library searches?"
4782 . ./myread
4783 case "$ans" in
4784 none) libpth=' ';;
4785 *) libpth="$ans";;
4786 esac
4787
4788 : compute shared library extension
4789 case "$so" in
4790 '')
4791         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4792                 dflt='sl'
4793         else
4794                 dflt='so'
4795         fi
4796         ;;
4797 *) dflt="$so";;
4798 esac
4799 $cat <<EOM
4800
4801 On some systems, shared libraries may be available.  Answer 'none' if
4802 you want to suppress searching of shared libraries for the remainder
4803 of this configuration.
4804
4805 EOM
4806 rp='What is the file extension used for shared libraries?'
4807 . ./myread
4808 so="$ans"
4809
4810 : Define several unixisms.
4811 : Hints files or command line option can be used to override them.
4812 : The convoluted testing is in case hints files set either the old
4813 : or the new name.
4814 case "$_exe" in
4815 '')     case "$exe_ext" in
4816         '')     ;;
4817         *)      _exe="$exe_ext" ;;
4818         esac
4819         ;;
4820 esac
4821 case "$_a" in
4822 '')     case "$lib_ext" in
4823     '') _a='.a';;
4824         *)      _a="$lib_ext" ;;
4825         esac
4826         ;;
4827 esac
4828 case "$_o" in
4829 '') case "$obj_ext" in
4830         '')     _o='.o';;
4831         *)      _o="$obj_ext";;
4832         esac
4833         ;;
4834 esac
4835 case "$p_" in
4836 '') case "$path_sep" in
4837         '')     p_=':';;
4838         *)      p_="$path_sep";;
4839         esac
4840         ;;
4841 esac
4842 exe_ext=$_exe
4843 lib_ext=$_a
4844 obj_ext=$_o
4845 path_sep=$p_
4846
4847 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4848
4849 : Which makefile gets called first.  This is used by make depend.
4850 case "$firstmakefile" in
4851 '') firstmakefile='makefile';;
4852 esac
4853
4854 : Check for uselongdouble support
4855 case "$ccflags" in
4856 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4857 esac
4858
4859 case "$uselongdouble" in
4860 $define|true|[yY]*)     dflt='y';;
4861 *) dflt='n';;
4862 esac
4863 cat <<EOM
4864
4865 Perl can be built to take advantage of long doubles which
4866 (if available) may give more accuracy and range for floating point numbers.
4867
4868 If this doesn't make any sense to you, just accept the default '$dflt'.
4869 EOM
4870 rp='Try to use long doubles if available?'
4871 . ./myread
4872 case "$ans" in
4873 y|Y)    val="$define"   ;;
4874 *)      val="$undef"    ;;
4875 esac
4876 set uselongdouble
4877 eval $setvar
4878
4879 case "$uselongdouble" in
4880 true|[yY]*) uselongdouble="$define" ;;
4881 esac
4882
4883 : Look for a hint-file generated 'call-back-unit'.  If the
4884 : user has specified that long doubles should be used,
4885 : we may need to set or change some other defaults.
4886 if $test -f uselongdouble.cbu; then
4887     echo "Your platform has some specific hints regarding long doubles, using them..."
4888     . ./uselongdouble.cbu
4889 else
4890     case "$uselongdouble" in
4891         $define)
4892                 $cat <<EOM
4893 (Your platform does not have any specific hints for long doubles.)
4894 EOM
4895         ;;
4896     esac
4897 fi
4898
4899 : Looking for optional libraries
4900 echo " "
4901 echo "Checking for optional libraries..." >&4
4902 case "$libs" in
4903 ' '|'') dflt='';;
4904 *) dflt="$libs";;
4905 esac
4906 case "$libswanted" in
4907 '') libswanted='c_s';;
4908 esac
4909 case "$usesocks" in
4910 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4911 esac
4912 libsfound=''
4913 libsfiles=''
4914 libsdirs=''
4915 libspath=''
4916 for thisdir in $libpth $xlibpth; do
4917   test -d $thisdir && libspath="$libspath $thisdir"
4918 done
4919 for thislib in $libswanted; do
4920         for thisdir in $libspath; do
4921             xxx=''
4922             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4923                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4924                 $test -f "$xxx" && eval $libscheck
4925                 $test -f "$xxx" && libstyle=shared
4926             fi
4927             if test ! -f "$xxx"; then
4928                 xxx=$thisdir/lib$thislib.$so
4929                 $test -f "$xxx" && eval $libscheck
4930                 $test -f "$xxx" && libstyle=shared
4931             fi
4932             if test ! -f "$xxx"; then
4933                 xxx=$thisdir/lib$thislib$_a
4934                 $test -f "$xxx" && eval $libscheck
4935                 $test -f "$xxx" && libstyle=static
4936             fi
4937             if test ! -f "$xxx"; then
4938                 xxx=$thisdir/$thislib$_a
4939                 $test -f "$xxx" && eval $libscheck
4940                 $test -f "$xxx" && libstyle=static
4941             fi
4942             if test ! -f "$xxx"; then
4943                 xxx=$thisdir/lib${thislib}_s$_a
4944                 $test -f "$xxx" && eval $libscheck
4945                 $test -f "$xxx" && libstyle=static
4946                 $test -f "$xxx" && thislib=${thislib}_s
4947             fi
4948             if test ! -f "$xxx"; then
4949                 xxx=$thisdir/Slib$thislib$_a
4950                 $test -f "$xxx" && eval $libscheck
4951                 $test -f "$xxx" && libstyle=static
4952             fi
4953             if $test -f "$xxx"; then
4954                 case "$libstyle" in
4955                 shared) echo "Found -l$thislib (shared)." ;;
4956                 static) echo "Found -l$thislib." ;;
4957                 *)      echo "Found -l$thislib ($libstyle)." ;;
4958                 esac
4959                 case " $dflt " in
4960                 *"-l$thislib "*);;
4961                 *) dflt="$dflt -l$thislib"
4962                    libsfound="$libsfound $xxx"
4963                    yyy=`basename $xxx`
4964                    libsfiles="$libsfiles $yyy"
4965                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4966                    case " $libsdirs " in
4967                    *" $yyy "*) ;;
4968                    *) libsdirs="$libsdirs $yyy" ;;
4969                    esac
4970                    ;;
4971                 esac
4972                 break
4973             fi
4974         done
4975         if $test ! -f "$xxx"; then
4976             echo "No -l$thislib."
4977         fi
4978 done
4979 set X $dflt
4980 shift
4981 dflt="$*"
4982 case "$libs" in
4983 '') dflt="$dflt";;
4984 *) dflt="$libs";;
4985 esac
4986 case "$dflt" in
4987 ' '|'') dflt='none';;
4988 esac
4989
4990 $cat <<EOM
4991
4992 In order to compile $package on your machine, a number of libraries
4993 are usually needed.  Include any other special libraries here as well.
4994 Say "none" for none.  The default list is almost always right.
4995 EOM
4996
4997 echo " "
4998 rp="What libraries to use?"
4999 . ./myread
5000 case "$ans" in
5001 none) libs=' ';;
5002 *) libs="$ans";;
5003 esac
5004
5005 : determine optimization, if desired, or use for debug flag also
5006 case "$optimize" in
5007 ' '|$undef) dflt='none';;
5008 '') dflt='-O';;
5009 *) dflt="$optimize";;
5010 esac
5011 $cat <<EOH
5012
5013 By default, $package compiles with the -O flag to use the optimizer.
5014 Alternately, you might want to use the symbolic debugger, which uses
5015 the -g flag (on traditional Unix systems).  Either flag can be
5016 specified here.  To use neither flag, specify the word "none".
5017
5018 EOH
5019 rp="What optimizer/debugger flag should be used?"
5020 . ./myread
5021 optimize="$ans"
5022 case "$optimize" in
5023 'none') optimize=" ";;
5024 esac
5025
5026 : Check what DEBUGGING is required from the command line
5027 : -DEBUGGING      or -DDEBUGGING or
5028 : -DEBUGGING=both                       = -g + -DDEBUGGING
5029 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5030 : -DEBUGGING=none or -UDEBUGGING        =
5031 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5032 case "$EBUGGING" in
5033 '')     ;;
5034 *)      DEBUGGING=$EBUGGING ;;
5035 esac
5036
5037 case "$DEBUGGING" in
5038 -g|both|$define)
5039     case "$optimize" in
5040         *-g*) ;;
5041         *)    optimize="$optimize -g" ;;
5042     esac ;;
5043 none|$undef)
5044     case "$optimize" in
5045         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5046                 shift
5047                 optimize="$*"
5048                 ;;
5049     esac ;;
5050 esac
5051
5052 dflt=''
5053 case "$DEBUGGING" in
5054 both|$define) dflt='-DDEBUGGING'
5055 esac
5056
5057 : argument order is deliberate, as the flag will start with - which set could
5058 : think is an option
5059 checkccflag='check=$1; flag=$2; callback=$3;
5060 echo " ";
5061 echo "Checking if your compiler accepts $flag" 2>&1;
5062 echo "int main(void) { return 0; }" > gcctest.c;
5063 if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
5064     echo "Yes, it does." 2>&1;
5065     if $test -s gcctest.out ; then
5066         echo "But your platform does not like it:";
5067         cat gcctest.out;
5068     else
5069         case "$ccflags" in
5070         *$check*)
5071             echo "Leaving current flags $ccflags alone." 2>&1
5072             ;;
5073         *) dflt="$dflt $flag";
5074             eval $callback
5075             ;;
5076         esac
5077     fi
5078 else
5079     echo "Nope, it does not, but that is ok." 2>&1;
5080 fi
5081 '
5082
5083 : We will not override a previous value, but we might want to
5084 : augment a hint file
5085 case "$hint" in
5086 default|recommended)
5087         case "$gccversion" in
5088         1*) dflt="$dflt -fpcc-struct-return" ;;
5089         esac
5090         case "$optimize:$DEBUGGING" in
5091         *-g*:old) dflt="$dflt -DDEBUGGING";;
5092         esac
5093         case "$gccversion" in
5094         2*) if $test -d /etc/conf/kconfig.d &&
5095                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5096                 then
5097                         # Interactive Systems (ISC) POSIX mode.
5098                         dflt="$dflt -posix"
5099                 fi
5100                 ;;
5101         esac
5102         case "$gccversion" in
5103         1*) ;;
5104         2.[0-8]*) ;;
5105         ?*)     set strict-aliasing -fno-strict-aliasing
5106                 eval $checkccflag
5107                 ;;
5108         esac
5109         # For gcc, adding -pipe speeds up compilations for some, but apparently
5110         # some assemblers can't read from stdin.  (It also slows down compilations
5111         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5112         case "$gccversion" in
5113         ?*)     set pipe -pipe
5114                 eval $checkccflag
5115                 ;;
5116         esac
5117
5118         # on x86_64 (at least) we require an extra library (libssp) in the
5119         # link command line. This library is not named, so I infer that it is
5120         # an implementation detail that may change. Hence the safest approach
5121         # is to add the flag to the flags passed to the compiler at link time,
5122         # as that way the compiler can do the right implementation dependant
5123         # thing. (NWC)
5124         case "$gccversion" in
5125         ?*)     set stack-protector -fstack-protector
5126                 eval $checkccflag
5127                 ;;
5128         esac
5129         ;;
5130 esac
5131
5132 case "$mips_type" in
5133 *BSD*|'') inclwanted="$locincpth $usrinc";;
5134 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5135 esac
5136 for thisincl in $inclwanted; do
5137         if $test -d $thisincl; then
5138                 if $test x$thisincl != x$usrinc; then
5139                         case "$dflt" in
5140                         *" -I$thisincl "*);;
5141                         *) dflt="$dflt -I$thisincl ";;
5142                         esac
5143                 fi
5144         fi
5145 done
5146
5147 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5148         xxx=true;
5149 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5150         xxx=true;
5151 else
5152         xxx=false;
5153 fi;
5154 if $xxx; then
5155         case "$dflt" in
5156         *$2*);;
5157         *) dflt="$dflt -D$2";;
5158         esac;
5159 fi'
5160
5161 set signal.h LANGUAGE_C; eval $inctest
5162
5163 case "$usesocks" in
5164 $define)
5165         ccflags="$ccflags -DSOCKS"
5166         ;;
5167 esac
5168
5169 case "$hint" in
5170 default|recommended) dflt="$ccflags $dflt" ;;
5171 *) dflt="$ccflags";;
5172 esac
5173
5174 case "$dflt" in
5175 ''|' ') dflt=none;;
5176 esac
5177
5178 $cat <<EOH
5179
5180 Your C compiler may want other flags.  For this question you should include
5181 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5182 but you should NOT include libraries or ld flags like -lwhatever.  If you
5183 want $package to honor its debug switch, you should include -DDEBUGGING here.
5184 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5185
5186 To use no flags, specify the word "none".
5187
5188 EOH
5189 set X $dflt
5190 shift
5191 dflt=${1+"$@"}
5192 rp="Any additional cc flags?"
5193 . ./myread
5194 case "$ans" in
5195 none) ccflags='';;
5196 *) ccflags="$ans";;
5197 esac
5198
5199 : the following weeds options from ccflags that are of no interest to cpp
5200 case "$cppflags" in
5201 '') cppflags="$ccflags" ;;
5202 *)  cppflags="$cppflags $ccflags" ;;
5203 esac
5204 case "$gccversion" in
5205 1*) cppflags="$cppflags -D__GNUC__"
5206 esac
5207 case "$mips_type" in
5208 '');;
5209 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5210 esac
5211 case "$cppflags" in
5212 '');;
5213 *)
5214         echo " "
5215         echo "Let me guess what the preprocessor flags are..." >&4
5216         set X $cppflags
5217         shift
5218         cppflags=''
5219         $cat >cpp.c <<'EOM'
5220 #define BLURFL foo
5221
5222 BLURFL xx LFRULB
5223 EOM
5224         previous=''
5225         for flag in $*
5226         do
5227                 case "$flag" in
5228                 -*) ftry="$flag";;
5229                 *) ftry="$previous $flag";;
5230                 esac
5231                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5232                         >cpp1.out 2>/dev/null && \
5233                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5234                         >cpp2.out 2>/dev/null && \
5235                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5236                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5237                 then
5238                         cppflags="$cppflags $ftry"
5239                         previous=''
5240                 else
5241                         previous="$flag"
5242                 fi
5243         done
5244         set X $cppflags
5245         shift
5246         cppflags=${1+"$@"}
5247         case "$cppflags" in
5248         *-*)  echo "They appear to be: $cppflags";;
5249         esac
5250         $rm -f cpp.c cpp?.out
5251         ;;
5252 esac
5253
5254 : flags used in final linking phase
5255 case "$ldflags" in
5256 '') if ./venix; then
5257                 dflt='-i -z'
5258         else
5259                 dflt=''
5260         fi
5261         case "$ccflags" in
5262         *-posix*) dflt="$dflt -posix" ;;
5263         esac
5264         ;;
5265 *) dflt="$ldflags";;
5266 esac
5267 # See note above about -fstack-protector
5268 case "$ccflags" in
5269 *-fstack-protector*) 
5270         case "$dflt" in
5271         *-fstack-protector*) ;; # Don't add it again
5272         *) dflt="$dflt -fstack-protector" ;; 
5273         esac
5274         ;;
5275 esac
5276
5277 : Try to guess additional flags to pick up local libraries.
5278 for thislibdir in $libpth; do
5279         case " $loclibpth " in
5280         *" $thislibdir "*)
5281                 case "$dflt " in
5282                 *"-L$thislibdir "*) ;;
5283                 *)  dflt="$dflt -L$thislibdir" ;;
5284                 esac
5285                 ;;
5286         esac
5287 done
5288
5289 case "$dflt" in
5290 '') dflt='none' ;;
5291 esac
5292
5293 $cat <<EOH
5294
5295 Your C linker may need flags.  For this question you should
5296 include -L/whatever and any other flags used by the C linker, but you
5297 should NOT include libraries like -lwhatever.
5298
5299 Make sure you include the appropriate -L/path flags if your C linker
5300 does not normally search all of the directories you specified above,
5301 namely
5302         $libpth
5303 To use no flags, specify the word "none".
5304
5305 EOH
5306
5307 rp="Any additional ld flags (NOT including libraries)?"
5308 . ./myread
5309 case "$ans" in
5310 none) ldflags='';;
5311 *) ldflags="$ans";;
5312 esac
5313 rmlist="$rmlist pdp11"
5314
5315 : coherency check
5316 echo " "
5317 echo "Checking your choice of C compiler and flags for coherency..." >&4
5318 $cat > try.c <<'EOF'
5319 #include <stdio.h>
5320 int main() { printf("Ok\n"); return(0); }
5321 EOF
5322 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5323 shift
5324 $cat >try.msg <<'EOM'
5325 I've tried to compile and run the following simple program:
5326
5327 EOM
5328 $cat try.c >> try.msg
5329
5330 $cat >> try.msg <<EOM
5331
5332 I used the command:
5333
5334         $*
5335         $run ./try
5336
5337 and I got the following output:
5338
5339 EOM
5340 dflt=y
5341 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5342         if $sh -c "$run ./try " >>try.msg 2>&1; then
5343                 xxx=`$run ./try`
5344                 case "$xxx" in
5345                 "Ok") dflt=n ;;
5346                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
5347                         case " $libs " in
5348                         *" -lsfio "*)
5349                                 cat >> try.msg <<'EOQS'
5350 If $libs contains -lsfio, and sfio is mis-configured, then it
5351 sometimes (apparently) runs and exits with a 0 status, but with no
5352 output!  It may have to do with sfio's use of _exit vs. exit.
5353
5354 EOQS
5355                                 rp="You have a big problem.  Shall I abort Configure"
5356                                 dflt=y
5357                                 ;;
5358                         esac
5359                         ;;
5360                 esac
5361         else
5362                 echo "The program compiled OK, but exited with status $?." >>try.msg
5363                 rp="You have a problem.  Shall I abort Configure"
5364                 dflt=y
5365         fi
5366 else
5367         echo "I can't compile the test program." >>try.msg
5368         rp="You have a BIG problem.  Shall I abort Configure"
5369         dflt=y
5370 fi
5371 case "$dflt" in
5372 y)
5373         $cat try.msg >&4
5374         case "$knowitall" in
5375         '')
5376                 echo "(The supplied flags or libraries might be incorrect.)"
5377                 ;;
5378         *) dflt=n;;
5379         esac
5380         echo " "
5381         . ./myread
5382         case "$ans" in
5383         n*|N*) ;;
5384         *)      echo "Ok.  Stopping Configure." >&4
5385                 exit 1
5386                 ;;
5387         esac
5388         ;;
5389 n) echo "OK, that should do.";;
5390 esac
5391 $rm_try gcctest gcctest.out
5392
5393 : define a shorthand compile call
5394 compile='
5395 mc_file=$1;
5396 shift;
5397 case "$usedevel" in $define|true|[yY]*) if $test ! -f "${mc_file}.c"; then
5398 echo "Internal Configure script bug - compiler test file ${mc_file}.c is missing. Please report this to perlbug@perl.org" >&4;
5399 exit 1;
5400 fi;
5401 esac;
5402 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5403 : define a shorthand compile call for compilations that should be ok.
5404 compile_ok='
5405 mc_file=$1;
5406 shift;
5407 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5408
5409 : determine filename position in cpp output
5410 echo " "
5411 echo "Computing filename position in cpp output for #include directives..." >&4
5412 case "$osname" in
5413 vos) testaccess=-e ;;
5414 *)   testaccess=-r ;;
5415 esac
5416 echo '#include <stdio.h>' > foo.c
5417 $cat >fieldn <<EOF
5418 $startsh
5419 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5420 $grep '^[       ]*#.*stdio\.h' | \
5421 while read cline; do
5422         pos=1
5423         set \$cline
5424         while $test \$# -gt 0; do
5425                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5426                         echo "\$pos"
5427                         exit 0
5428                 fi
5429                 shift
5430                 pos=\`expr \$pos + 1\`
5431         done
5432 done
5433 EOF
5434 chmod +x fieldn
5435 fieldn=`./fieldn`
5436 $rm -f foo.c fieldn
5437 case $fieldn in
5438 '') pos='???';;
5439 1) pos=first;;
5440 2) pos=second;;
5441 3) pos=third;;
5442 *) pos="${fieldn}th";;
5443 esac
5444 echo "Your cpp writes the filename in the $pos field of the line."
5445
5446 case "$osname" in
5447 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5448 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5449 *)   cppfilter='' ;;
5450 esac
5451 : locate header file
5452 $cat >findhdr <<EOF
5453 $startsh
5454 wanted=\$1
5455 name=''
5456 for usrincdir in $usrinc
5457 do
5458         if test -f \$usrincdir/\$wanted; then
5459                 echo "\$usrincdir/\$wanted"
5460                 exit 0
5461         fi
5462 done
5463 awkprg='{ print \$$fieldn }'
5464 echo "#include <\$wanted>" > foo\$\$.c
5465 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5466 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5467 while read cline; do
5468         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5469         case "\$name" in
5470         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5471         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5472         *) exit 2;;
5473         esac;
5474 done;
5475 #
5476 # status = 0: grep returned 0 lines, case statement not executed
5477 # status = 1: headerfile found
5478 # status = 2: while loop executed, no headerfile found
5479 #
5480 status=\$?
5481 $rm -f foo\$\$.c;
5482 if test \$status -eq 1; then
5483         exit 0;
5484 fi
5485 exit 1
5486 EOF
5487 chmod +x findhdr
5488
5489 : define an alternate in-header-list? function
5490 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5491 cont=true; xxf="echo \"<\$1> found.\" >&4";
5492 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5493 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5494 esac;
5495 case $# in 4) instead=instead;; *) instead="at last";; esac;
5496 while $test "$cont"; do
5497         xxx=`./findhdr $1`
5498         var=$2; eval "was=\$$2";
5499         if $test "$xxx" && $test -r "$xxx";
5500         then eval $xxf;
5501         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5502                 cont="";
5503         else eval $xxnf;
5504         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5505         set $yyy; shift; shift; yyy=$@;
5506         case $# in 0) cont="";;
5507         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5508                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5509         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5510                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5511         esac;
5512 done;
5513 while $test "$yyy";
5514 do set $yyy; var=$2; eval "was=\$$2";
5515         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5516         set $yyy; shift; shift; yyy=$@;
5517 done'
5518
5519 : see if stdlib is available
5520 set stdlib.h i_stdlib
5521 eval $inhdr
5522
5523 : check for lengths of integral types
5524 echo " "
5525 case "$intsize" in
5526 '')
5527         echo "Checking to see how big your integers are..." >&4
5528         $cat >try.c <<EOCP
5529 #include <stdio.h>
5530 #$i_stdlib I_STDLIB
5531 #ifdef I_STDLIB
5532 #include <stdlib.h>
5533 #endif
5534 int main()
5535 {
5536         printf("intsize=%d;\n", (int)sizeof(int));
5537         printf("longsize=%d;\n", (int)sizeof(long));
5538         printf("shortsize=%d;\n", (int)sizeof(short));
5539         exit(0);
5540 }
5541 EOCP
5542         set try
5543         if eval $compile_ok && $run ./try > /dev/null; then
5544                 eval `$run ./try`
5545                 echo "Your integers are $intsize bytes long."
5546                 echo "Your long integers are $longsize bytes long."
5547                 echo "Your short integers are $shortsize bytes long."
5548         else
5549                 $cat >&4 <<EOM
5550 !
5551 Help! I can't compile and run the intsize test program: please enlighten me!
5552 (This is probably a misconfiguration in your system or libraries, and
5553 you really ought to fix it.  Still, I'll try anyway.)
5554 !
5555 EOM
5556                 dflt=4
5557                 rp="What is the size of an integer (in bytes)?"
5558                 . ./myread
5559                 intsize="$ans"
5560                 dflt=$intsize
5561                 rp="What is the size of a long integer (in bytes)?"
5562                 . ./myread
5563                 longsize="$ans"
5564                 dflt=2
5565                 rp="What is the size of a short integer (in bytes)?"
5566                 . ./myread
5567                 shortsize="$ans"
5568         fi
5569         ;;
5570 esac
5571 $rm_try
5572
5573 : check for long long
5574 echo " "
5575 echo "Checking to see if you have long long..." >&4
5576 echo 'int main() { long long x = 7; return 0; }' > try.c
5577 set try
5578 if eval $compile; then
5579         val="$define"
5580         echo "You have long long."
5581 else
5582         val="$undef"
5583         echo "You do not have long long."
5584 fi
5585 $rm_try
5586 set d_longlong
5587 eval $setvar
5588
5589 : check for length of long long
5590 case "${d_longlong}${longlongsize}" in
5591 $define)
5592         echo " "
5593         echo "Checking to see how big your long longs are..." >&4
5594         $cat >try.c <<'EOCP'
5595 #include <stdio.h>
5596 int main()
5597 {
5598     printf("%d\n", (int)sizeof(long long));
5599     return(0);
5600 }
5601 EOCP
5602         set try
5603         if eval $compile_ok; then
5604                 longlongsize=`$run ./try`
5605                 echo "Your long longs are $longlongsize bytes long."
5606         else
5607                 dflt='8'
5608                 echo " "
5609                 echo "(I can't seem to compile the test program.  Guessing...)"
5610                 rp="What is the size of a long long (in bytes)?"
5611                 . ./myread
5612                 longlongsize="$ans"
5613         fi
5614         if $test "X$longsize" = "X$longlongsize"; then
5615                 echo "(That isn't any different from an ordinary long.)"
5616         fi
5617         ;;
5618 esac
5619 $rm_try
5620
5621 : see if inttypes.h is available
5622 : we want a real compile instead of Inhdr because some systems
5623 : have an inttypes.h which includes non-existent headers
5624 echo " "
5625 $cat >try.c <<EOCP
5626 #include <inttypes.h>
5627 int main() {
5628         static int32_t foo32 = 0x12345678;
5629 }
5630 EOCP
5631 set try
5632 if eval $compile; then
5633         echo "<inttypes.h> found." >&4
5634         val="$define"
5635 else
5636         echo "<inttypes.h> NOT found." >&4
5637         val="$undef"
5638 fi
5639 $rm_try
5640 set i_inttypes
5641 eval $setvar
5642
5643 : check for int64_t
5644 echo " "
5645 echo "Checking to see if you have int64_t..." >&4
5646 $cat >try.c <<EOCP
5647 #include <sys/types.h>
5648 #$i_inttypes I_INTTYPES
5649 #ifdef I_INTTYPES
5650 #include <inttypes.h>
5651 #endif
5652 int main() { int64_t x = 7; }
5653 EOCP
5654 set try
5655 if eval $compile; then
5656         val="$define"
5657         echo "You have int64_t."
5658 else
5659         val="$undef"
5660         echo "You do not have int64_t."
5661 fi
5662 $rm_try
5663 set d_int64_t
5664 eval $setvar
5665
5666 : Check if 64bit ints have a quad type
5667 echo " "
5668 echo "Checking which 64-bit integer type we could use..." >&4
5669
5670 case "$intsize" in
5671 8) val=int
5672    set quadtype
5673    eval $setvar
5674    val='"unsigned int"'
5675    set uquadtype
5676    eval $setvar
5677    quadkind=1
5678    ;;
5679 *) case "$longsize" in
5680    8) val=long
5681       set quadtype
5682       eval $setvar
5683       val='"unsigned long"'
5684       set uquadtype
5685       eval $setvar
5686       quadkind=2
5687       ;;
5688    *) case "$d_longlong:$longlongsize" in
5689       define:8)
5690         val='"long long"'
5691         set quadtype
5692         eval $setvar
5693         val='"unsigned long long"'
5694         set uquadtype
5695         eval $setvar
5696         quadkind=3
5697         ;;
5698       *) case "$d_int64_t" in
5699          define)
5700            val=int64_t
5701            set quadtype
5702            eval $setvar
5703            val=uint64_t
5704            set uquadtype
5705            eval $setvar
5706            quadkind=4
5707            ;;
5708          esac
5709          ;;
5710       esac
5711       ;;
5712    esac
5713    ;;
5714 esac
5715
5716 case "$quadtype" in
5717 '')     echo "Alas, no 64-bit integer types in sight." >&4
5718         d_quad="$undef"
5719         ;;
5720 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5721         d_quad="$define"
5722         ;;
5723 esac
5724
5725 : Do we want 64bit support
5726 case "$uselonglong" in
5727 "$define"|true|[yY]*)
5728         cat <<EOM >&4
5729
5730 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5731 EOM
5732         use64bitint="$define"
5733         ;;
5734 esac
5735 case "$use64bits" in
5736 "$define"|true|[yY]*)
5737         cat <<EOM >&4
5738
5739 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5740 EOM
5741         use64bitint="$define"
5742         ;;
5743 esac
5744 case "$use64bitints" in
5745 "$define"|true|[yY]*)
5746         cat <<EOM >&4
5747
5748 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5749 EOM
5750         use64bitint="$define"
5751         ;;
5752 esac
5753 case "$use64bitsint" in
5754 "$define"|true|[yY]*)
5755         cat <<EOM >&4
5756
5757 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5758 EOM
5759         use64bitint="$define"
5760         ;;
5761 esac
5762 case "$uselonglongs" in
5763 "$define"|true|[yY]*)
5764         cat <<EOM >&4
5765
5766 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5767 EOM
5768         use64bitint="$define"
5769         ;;
5770 esac
5771 case "$use64bitsall" in
5772 "$define"|true|[yY]*)
5773         cat <<EOM >&4
5774
5775 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5776 EOM
5777         use64bitall="$define"
5778         ;;
5779 esac
5780
5781 case "$ccflags" in
5782 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5783 esac
5784 case "$use64bitall" in
5785 "$define"|true|[yY]*) use64bitint="$define" ;;
5786 esac
5787
5788 case "$longsize" in
5789 8) cat <<EOM
5790
5791 You have natively 64-bit long integers.
5792 EOM
5793    val="$define"
5794    ;;
5795 *) case "$use64bitint" in
5796    "$define"|true|[yY]*) dflt='y';;
5797    *) dflt='n';;
5798    esac
5799    case "$d_quad" in
5800    "$define") ;;
5801    *) dflt='n' ;;
5802    esac
5803    cat <<EOM
5804
5805 Perl can be built to take advantage of 64-bit integer types
5806 on some systems.  To do so, Configure can be run with -Duse64bitint.
5807 Choosing this option will most probably introduce binary incompatibilities.
5808
5809 If this doesn't make any sense to you, just accept the default '$dflt'.
5810 (The default has been chosen based on your configuration.)
5811 EOM
5812    rp='Try to use 64-bit integers, if available?'
5813    . ./myread
5814    case "$ans" in
5815    [yY]*) val="$define" ;;
5816    *)     val="$undef"  ;;
5817    esac
5818    ;;
5819 esac
5820 set use64bitint
5821 eval $setvar
5822
5823 case "$use64bitall" in
5824 "$define"|true|[yY]*) dflt='y' ;;
5825 *) case "$longsize" in
5826    8) dflt='y' ;;
5827    *) dflt='n' ;;
5828    esac
5829    ;;
5830 esac
5831 cat <<EOM
5832
5833 You may also choose to try maximal 64-bitness.  It means using as much
5834 64-bitness as possible on the platform.  This in turn means even more
5835 binary incompatibilities.  On the other hand, your platform may not
5836 have any more 64-bitness available than what you already have chosen.
5837
5838 If this doesn't make any sense to you, just accept the default '$dflt'.
5839 (The default has been chosen based on your configuration.)
5840 EOM
5841 rp='Try to use maximal 64-bit support, if available?'
5842 . ./myread
5843 case "$ans" in
5844 [yY]*) val="$define" ;;
5845 *)     val="$undef"  ;;
5846 esac
5847 set use64bitall
5848 eval $setvar
5849 case "$use64bitall" in
5850 "$define")
5851         case "$use64bitint" in
5852         "$undef")
5853                 cat <<EOM
5854
5855 Since you have chosen a maximally 64-bit build, I'm also turning on
5856 the use of 64-bit integers.
5857 EOM
5858                 use64bitint="$define" ;;
5859         esac
5860         ;;
5861 esac
5862
5863 : Look for a hint-file generated 'call-back-unit'.  If the
5864 : user has specified that a 64-bit perl is to be built,
5865 : we may need to set or change some other defaults.
5866 if $test -f use64bitint.cbu; then
5867         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5868         . ./use64bitint.cbu
5869 fi
5870 case "$use64bitint" in
5871 "$define"|true|[yY]*)
5872         case "$longsize" in
5873         4) case "$archname64" in
5874            '') archname64=64int ;;
5875            esac
5876            ;;
5877         esac
5878         ;;
5879 esac
5880
5881 : Look for a hint-file generated 'call-back-unit'.  If the
5882 : user has specified that a maximally 64-bit perl is to be built,
5883 : we may need to set or change some other defaults.
5884 if $test -f use64bitall.cbu; then
5885         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5886         . ./use64bitall.cbu
5887 fi
5888 case "$use64bitall" in
5889 "$define"|true|[yY]*)
5890         case "$longsize" in
5891         4) case "$archname64" in
5892            ''|64int) archname64=64all ;;
5893            esac
5894            ;;
5895         esac
5896         ;;
5897 esac
5898
5899 case "$d_quad:$use64bitint" in
5900 $undef:$define)
5901         cat >&4 <<EOF
5902
5903 *** You have chosen to use 64-bit integers,
5904 *** but none can be found.
5905 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5906 *** Cannot continue, aborting.
5907
5908 EOF
5909         exit 1
5910         ;;
5911 esac
5912
5913 : check for length of double
5914 echo " "
5915 case "$doublesize" in
5916 '')
5917         echo "Checking to see how big your double precision numbers are..." >&4
5918         $cat >try.c <<EOCP
5919 #include <stdio.h>
5920 #$i_stdlib I_STDLIB
5921 #ifdef I_STDLIB
5922 #include <stdlib.h>
5923 #endif
5924 int main()
5925 {
5926     printf("%d\n", (int)sizeof(double));
5927     exit(0);
5928 }
5929 EOCP
5930         set try
5931         if eval $compile_ok; then
5932                 doublesize=`$run ./try`
5933                 echo "Your double is $doublesize bytes long."
5934         else
5935                 dflt='8'
5936                 echo "(I can't seem to compile the test program.  Guessing...)"
5937                 rp="What is the size of a double precision number (in bytes)?"
5938                 . ./myread
5939                 doublesize="$ans"
5940         fi
5941         ;;
5942 esac
5943 $rm_try
5944
5945 : check for long doubles
5946 echo " "
5947 echo "Checking to see if you have long double..." >&4
5948 echo 'int main() { long double x = 7.0; }' > try.c
5949 set try
5950 if eval $compile; then
5951         val="$define"
5952         echo "You have long double."
5953 else
5954         val="$undef"
5955         echo "You do not have long double."
5956 fi
5957 $rm_try
5958 set d_longdbl
5959 eval $setvar
5960
5961 : check for length of long double
5962 case "${d_longdbl}${longdblsize}" in
5963 $define)
5964         echo " "
5965         echo "Checking to see how big your long doubles are..." >&4
5966         $cat >try.c <<'EOCP'
5967 #include <stdio.h>
5968 int main()
5969 {
5970         printf("%d\n", sizeof(long double));
5971 }
5972 EOCP
5973         set try
5974         set try
5975         if eval $compile; then
5976                 longdblsize=`$run ./try`
5977                 echo "Your long doubles are $longdblsize bytes long."
5978         else
5979                 dflt='8'
5980                 echo " "
5981                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5982                 rp="What is the size of a long double (in bytes)?"
5983                 . ./myread
5984                 longdblsize="$ans"
5985         fi
5986         if $test "X$doublesize" = "X$longdblsize"; then
5987                 echo "That isn't any different from an ordinary double."
5988                 echo "I'll keep your setting anyway, but you may see some"
5989                 echo "harmless compilation warnings."
5990         fi
5991         ;;
5992 esac
5993 $rm_try
5994
5995 : determine the architecture name
5996 echo " "
5997 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5998         tarch=`arch`"-$osname"
5999 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6000         if uname -m > tmparch 2>&1 ; then
6001                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6002                         -e 's/$/'"-$osname/" tmparch`
6003         else
6004                 tarch="$osname"
6005         fi
6006         $rm -f tmparch
6007 else
6008         tarch="$osname"
6009 fi
6010 case "$myarchname" in
6011 ''|"$tarch") ;;
6012 *)
6013         echo "(Your architecture name used to be $myarchname.)"
6014         archname=''
6015         ;;
6016 esac
6017 case "$targetarch" in
6018 '') ;;
6019 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6020 esac
6021 myarchname="$tarch"
6022 case "$archname" in
6023 '') dflt="$tarch";;
6024 *) dflt="$archname";;
6025 esac
6026 rp='What is your architecture name'
6027 . ./myread
6028 archname="$ans"
6029 case "$usethreads" in
6030 $define)
6031         echo "Threads selected." >&4
6032         case "$archname" in
6033         *-thread*) echo "...and architecture name already has -thread." >&4
6034                 ;;
6035         *)      archname="$archname-thread"
6036                 echo "...setting architecture name to $archname." >&4
6037                 ;;
6038         esac
6039         ;;
6040 esac
6041 case "$usemultiplicity" in
6042 $define)
6043         echo "Multiplicity selected." >&4
6044         case "$archname" in
6045         *-multi*) echo "...and architecture name already has -multi." >&4
6046                 ;;
6047         *)      archname="$archname-multi"
6048                 echo "...setting architecture name to $archname." >&4
6049                 ;;
6050         esac
6051         ;;
6052 esac
6053 case "$use64bitint$use64bitall" in
6054 *"$define"*)
6055         case "$archname64" in
6056         '')
6057                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6058                 ;;
6059         *)
6060                 case "$use64bitint" in
6061                 "$define") echo "64 bit integers selected." >&4 ;;
6062                 esac
6063                 case "$use64bitall" in
6064                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6065                 esac
6066                 case "$archname" in
6067                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6068                         ;;
6069                 *)      archname="$archname-$archname64"
6070                         echo "...setting architecture name to $archname." >&4
6071                         ;;
6072                 esac
6073                 ;;
6074         esac
6075 esac
6076 case "$uselongdouble" in
6077 $define)
6078         echo "Long doubles selected." >&4
6079         case "$longdblsize" in
6080         $doublesize)
6081                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6082                 ;;
6083         *)
6084                 case "$archname" in
6085                 *-ld*) echo "...and architecture name already has -ld." >&4
6086                         ;;
6087                 *)      archname="$archname-ld"
6088                         echo "...setting architecture name to $archname." >&4
6089                         ;;
6090                 esac
6091                 ;;
6092         esac
6093         ;;
6094 esac
6095 case "$useperlio" in
6096 $define)
6097         echo "Perlio selected." >&4
6098         ;;
6099 *)
6100         echo "Perlio not selected, using stdio." >&4
6101         case "$archname" in
6102         *-stdio*) echo "...and architecture name already has -stdio." >&4
6103                 ;;
6104         *)      archname="$archname-stdio"
6105                 echo "...setting architecture name to $archname." >&4
6106                 ;;
6107         esac
6108         ;;
6109 esac
6110 if $test -f archname.cbu; then
6111         echo "Your platform has some specific hints for architecture name, using them..."
6112         . ./archname.cbu
6113 fi
6114
6115 : set the prefixit variable, to compute a suitable default value
6116 prefixit='case "$3" in
6117 ""|none)
6118         case "$oldprefix" in
6119         "") eval "$1=\"\$$2\"";;
6120         *)
6121                 case "$3" in
6122                 "") eval "$1=";;
6123                 none)
6124                         eval "tp=\"\$$2\"";
6125                         case "$tp" in
6126                         ""|" ") eval "$1=\"\$$2\"";;
6127                         *) eval "$1=";;
6128                         esac;;
6129                 esac;;
6130         esac;;
6131 *)
6132         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6133         case "$tp" in
6134         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6135         /*-$oldprefix/*|\~*-$oldprefix/*)
6136                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6137         *) eval "$1=\"\$$2\"";;
6138         esac;;
6139 esac'
6140
6141 : determine installation style
6142 : For now, try to deduce it from prefix unless it is already set.
6143 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6144 case "$installstyle" in
6145 '')     case "$prefix" in
6146                 *perl*) dflt='lib';;
6147                 *) dflt='lib/perl5' ;;
6148         esac
6149         ;;
6150 *)      dflt="$installstyle" ;;
6151 esac
6152 : Probably not worth prompting for this since we prompt for all
6153 : the directories individually, and the prompt would be too long and
6154 : confusing anyway.
6155 installstyle=$dflt
6156
6157 : determine where public executables go
6158 echo " "
6159 set dflt bin bin
6160 eval $prefixit
6161 fn=d~
6162 rp='Pathname where the public executables will reside?'
6163 . ./getfile
6164 if $test "X$ansexp" != "X$binexp"; then
6165         installbin=''
6166 fi
6167 prefixvar=bin
6168 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6169 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6170 :     this via initialinstalllocation
6171 . ./setprefixvar
6172
6173 case "$userelocatableinc" in
6174 $define|true|[yY]*)     dflt='y' ;;
6175 *)                      dflt='n' ;;
6176 esac
6177 cat <<EOM
6178
6179 Would you like to build Perl so that the installation is relocatable, so that
6180 library paths in @INC are determined relative to the path of the perl binary?
6181 This is not advised for system Perl installs, or if you need to run setid
6182 scripts or scripts under taint mode.
6183
6184 If this doesn't make any sense to you, just accept the default '$dflt'.
6185 EOM
6186 rp='Use relocatable @INC?'
6187 . ./myread
6188 case "$ans" in
6189 y|Y)    val="$define" ;;
6190 *)      val="$undef"  ;;
6191 esac
6192 set userelocatableinc
6193 eval $setvar
6194
6195 initialinstalllocation="$binexp"
6196 : Default prefix is now "up one level from where the binaries are"
6197 case "$userelocatableinc" in
6198 $define|true|[yY]*)
6199     bin=".../"
6200     binexp=".../"
6201     prefix=".../.."
6202     prefixexp=".../.."
6203     installprefixexp=".../.."
6204     ;;
6205 esac
6206
6207 : determine where private library files go
6208 : Usual default is /usr/local/lib/perl5/$version.
6209 : Also allow things like /opt/perl/lib/$version, since
6210 : /opt/perl/lib/perl5... would be redundant.
6211 : The default "style" setting is made in installstyle.U
6212 case "$installstyle" in
6213 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6214 *)       set dflt privlib lib/$version ;;
6215 esac
6216 eval $prefixit
6217 $cat <<EOM
6218
6219 There are some auxiliary files for $package that need to be put into a
6220 private library directory that is accessible by everyone.
6221
6222 EOM
6223 fn=$binexp
6224 fn=d~+
6225 rp='Pathname where the private library files will reside?'
6226 . ./getfile
6227 prefixvar=privlib
6228 . ./setprefixvar
6229
6230 : set the prefixup variable, to restore leading tilda escape
6231 prefixup='case "$prefixexp" in
6232 "$prefix") ;;
6233 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6234 esac'
6235
6236 : determine where public architecture dependent libraries go
6237 set archlib archlib
6238 eval $prefixit
6239 : privlib default is /usr/local/lib/$package/$version
6240 : archlib default is /usr/local/lib/$package/$version/$archname
6241 : privlib may have an optional trailing /share.
6242 tdflt=`echo $privlib | $sed 's,/share$,,'`
6243 tdflt=$tdflt/$archname
6244 case "$archlib" in
6245 '')     dflt=$tdflt
6246         ;;
6247 *)      dflt="$archlib"
6248     ;;
6249 esac
6250 $cat <<EOM
6251
6252 $spackage contains architecture-dependent library files.  If you are
6253 sharing libraries in a heterogeneous environment, you might store
6254 these files in a separate location.  Otherwise, you can just include
6255 them with the rest of the public library files.
6256
6257 EOM
6258 fn=$binexp
6259 fn=d+~
6260 rp='Where do you want to put the public architecture-dependent libraries?'
6261 . ./getfile
6262 prefixvar=archlib
6263 . ./setprefixvar
6264 if $test X"$archlib" = X"$privlib"; then
6265         d_archlib="$undef"
6266 else
6267         d_archlib="$define"
6268 fi
6269
6270 : see if setuid scripts can be secure
6271 $cat <<EOM
6272
6273 Some kernels have a bug that prevents setuid #! scripts from being
6274 secure.  Some sites have disabled setuid #! scripts because of this.
6275
6276 First let's decide if your kernel supports secure setuid #! scripts.
6277 (If setuid #! scripts would be secure but have been disabled anyway,
6278 don't say that they are secure if asked.)
6279
6280 EOM
6281
6282 val="$undef"
6283 if $test -d /dev/fd; then
6284         echo "#!$ls" >reflect
6285         chmod +x,u+s reflect
6286         ./reflect >flect 2>&1
6287         if $contains "/dev/fd" flect >/dev/null; then
6288                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6289                 val="$define"
6290         else
6291                 $cat <<EOM
6292 If you are not sure if they are secure, I can check but I'll need a
6293 username and password different from the one you are using right now.
6294 If you don't have such a username or don't want me to test, simply
6295 enter 'none'.
6296
6297 EOM
6298                 rp='Other username to test security of setuid scripts with?'
6299                 dflt='none'
6300                 . ./myread
6301                 case "$ans" in
6302                 n|none)
6303                         case "$d_suidsafe" in
6304                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6305                                 dflt=n;;
6306                         "$undef")
6307                                 echo "Well, the $hint value is *not* secure." >&4
6308                                 dflt=n;;
6309                         *)      echo "Well, the $hint value *is* secure." >&4
6310                                 dflt=y;;
6311                         esac
6312                         ;;
6313                 *)
6314                         $rm -f reflect flect
6315                         echo "#!$ls" >reflect
6316                         chmod +x,u+s reflect
6317                         echo >flect
6318                         chmod a+w flect
6319                         echo '"su" will (probably) prompt you for '"$ans's password."
6320                         su $ans -c './reflect >flect'
6321                         if $contains "/dev/fd" flect >/dev/null; then
6322                                 echo "Okay, it looks like setuid scripts are secure." >&4
6323                                 dflt=y
6324                         else
6325                                 echo "I don't think setuid scripts are secure." >&4
6326                                 dflt=n
6327                         fi
6328                         ;;
6329                 esac
6330                 rp='Does your kernel have *secure* setuid scripts?'
6331                 . ./myread
6332                 case "$ans" in
6333                 [yY]*)  val="$define";;
6334                 *)      val="$undef";;
6335                 esac
6336         fi
6337 else
6338         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6339         echo "(That's for file descriptors, not floppy disks.)"
6340         val="$undef"
6341 fi
6342 set d_suidsafe
6343 eval $setvar
6344
6345 $rm -f reflect flect
6346
6347 : now see if they want to do setuid emulation
6348 echo " "
6349 val="$undef"
6350 case "$d_suidsafe" in
6351 "$define")
6352         val="$undef"
6353         echo "No need to emulate SUID scripts since they are secure here." >&4
6354         ;;
6355 *)
6356         $cat <<EOM
6357 Some systems have disabled setuid scripts, especially systems where
6358 setuid scripts cannot be secure.  On systems where setuid scripts have
6359 been disabled, the setuid/setgid bits on scripts are currently
6360 useless.  It is possible for $package to detect those bits and emulate
6361 setuid/setgid in a secure fashion.  This emulation will only work if
6362 setuid scripts have been disabled in your kernel.
6363
6364 EOM
6365         case "$d_dosuid" in
6366         "$define") dflt=y ;;
6367         *) dflt=n ;;
6368         esac
6369         rp="Do you want to do setuid/setgid emulation?"
6370         . ./myread
6371         case "$ans" in
6372         [yY]*)  val="$define";;
6373         *)      val="$undef";;
6374         esac
6375         ;;
6376 esac
6377 set d_dosuid
6378 eval $setvar
6379
6380 : Find perl5.005 or later.
6381 echo "Looking for a previously installed perl5.005 or later... "
6382 case "$perl5" in
6383 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6384                 : Check if this perl is recent and can load a simple module
6385                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6386                         perl5=$tdir/perl
6387                         break;
6388                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6389                         perl5=$tdir/perl5
6390                         break;
6391                 fi
6392         done
6393         ;;
6394 *)      perl5="$perl5"
6395         ;;
6396 esac
6397 case "$perl5" in
6398 '')     echo "None found.  That's ok.";;
6399 *)      echo "Using $perl5." ;;
6400 esac
6401
6402 : Set the siteprefix variables
6403 $cat <<EOM
6404
6405 After $package is installed, you may wish to install various
6406 add-on modules and utilities.  Typically, these add-ons will
6407 be installed under $prefix with the rest
6408 of this package.  However, you may wish to install such add-ons
6409 elsewhere under a different prefix.
6410
6411 If you do not wish to put everything under a single prefix, that's
6412 ok.  You will be prompted for the individual locations; this siteprefix
6413 is only used to suggest the defaults.
6414
6415 The default should be fine for most people.
6416
6417 EOM
6418 fn=d~+
6419 rp='Installation prefix to use for add-on modules and utilities?'
6420 : XXX Here might be another good place for an installstyle setting.
6421 case "$siteprefix" in
6422 '') dflt=$prefix ;;
6423 *)  dflt=$siteprefix ;;
6424 esac
6425 . ./getfile
6426 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6427 oldsiteprefix=''
6428 case "$siteprefix" in
6429 '') ;;
6430 *)      case "$ans" in
6431         "$prefix") ;;
6432         *) oldsiteprefix="$prefix";;
6433         esac
6434         ;;
6435 esac
6436 siteprefix="$ans"
6437 siteprefixexp="$ansexp"
6438
6439 : determine where site specific libraries go.
6440 : Usual default is /usr/local/lib/perl5/site_perl/$version
6441 : The default "style" setting is made in installstyle.U
6442 : XXX No longer works with Prefixit stuff.
6443 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6444 case "$sitelib" in
6445 '') case "$installstyle" in
6446         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6447         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6448         esac
6449         ;;
6450 *)      dflt="$sitelib"
6451         ;;
6452 esac
6453 $cat <<EOM
6454
6455 The installation process will create a directory for
6456 site-specific extensions and modules.  Most users find it convenient
6457 to place all site-specific files in this directory rather than in the
6458 main distribution directory.
6459
6460 EOM
6461 fn=d~+
6462 rp='Pathname for the site-specific library files?'
6463 . ./getfile
6464 prefixvar=sitelib
6465 . ./setprefixvar
6466 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6467
6468 : Determine list of previous versions to include in @INC
6469 $cat > getverlist <<EOPL
6470 #!$perl5 -w
6471 use File::Basename;
6472 \$api_versionstring = "$api_versionstring";
6473 \$version = "$version";
6474 \$stem = "$sitelib_stem";
6475 \$archname = "$archname";
6476 EOPL
6477         $cat >> getverlist <<'EOPL'
6478 # The list found is store twice for each entry: the original name, and
6479 # the binary broken down version as pack "sss", so sorting is easy and
6480 # unambiguous. This will work for all versions that have a maximum of
6481 # three digit groups, separate by '.'s or '_'s. Names are extended with
6482 # ".0.0" to ensure at least three elements for the pack.
6483 #                                       -- H.Merijn Brand (m)'06 23-10-2006
6484
6485 # Can't have leading @ because metaconfig interprets it as a command!
6486 ;@inc_version_list=();
6487 # XXX Redo to do opendir/readdir?
6488 if (-d $stem) {
6489     chdir($stem);
6490     ;@candidates = map {
6491         [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6492 }
6493 else {
6494     ;@candidates = ();
6495 }
6496
6497 ($pversion, $aversion, $vsn5005) = map {
6498     pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6499 foreach $d (@candidates) {
6500     if ($d->[1] lt $pversion) {
6501         if ($d->[1] ge $aversion) {
6502             unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6503         }
6504         elsif ($d->[1] ge $vsn5005) {
6505             unshift(@inc_version_list, grep { -d } $d->[0]);
6506         }
6507     }
6508     else {
6509         # Skip newer version.  I.e. don't look in
6510         # 5.7.0 if we're installing 5.6.1.
6511     }
6512 }
6513
6514 if (@inc_version_list) {
6515     print join(' ', @inc_version_list);
6516 }
6517 else {
6518     # Blank space to preserve value for next Configure run.
6519     print " ";
6520 }
6521 EOPL
6522 chmod +x getverlist
6523 case "$inc_version_list" in
6524 '')     if test -x "$perl5$exe_ext"; then
6525                 dflt=`$perl5 getverlist`
6526         else
6527                 dflt='none'
6528         fi
6529         ;;
6530 $undef) dflt='none' ;;
6531 *)  eval dflt=\"$inc_version_list\" ;;
6532 esac
6533 case "$dflt" in
6534 ''|' ') dflt=none ;;
6535 esac
6536 case "$dflt" in
6537 5.005) dflt=none ;;
6538 esac
6539 $cat <<EOM
6540
6541 In order to ease the process of upgrading, this version of perl
6542 can be configured to use modules built and installed with earlier
6543 versions of perl that were installed under $prefix.  Specify here
6544 the list of earlier versions that this version of perl should check.
6545 If Configure detected no earlier versions of perl installed under
6546 $prefix, then the list will be empty.  Answer 'none' to tell perl
6547 to not search earlier versions.
6548
6549 The default should almost always be sensible, so if you're not sure,
6550 just accept the default.
6551 EOM
6552
6553 rp='List of earlier versions to include in @INC?'
6554 . ./myread
6555 case "$ans" in
6556 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6557 *) inc_version_list="$ans" ;;
6558 esac
6559 case "$inc_version_list" in
6560 ''|' ')
6561         inc_version_list_init='0'
6562         d_inc_version_list="$undef"
6563         ;;
6564 *)      inc_version_list_init=`echo $inc_version_list |
6565                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6566         d_inc_version_list="$define"
6567         ;;
6568 esac
6569 $rm -f getverlist
6570
6571 : see if malloc/malloc.h has to be included
6572 set malloc/malloc.h i_mallocmalloc
6573 eval $inhdr
6574
6575 : see if this is a malloc.h system
6576 : we want a real compile instead of Inhdr because some systems have a
6577 : malloc.h that just gives a compile error saying to use stdlib.h instead
6578 echo " "
6579 $cat >try.c <<EOCP
6580 #include <stdlib.h>
6581 #include <malloc.h>
6582 #$i_mallocmalloc I_MALLOCMALLOC
6583 #ifdef I_MALLOCMALLOC
6584 # include <malloc/malloc.h>
6585 #endif
6586
6587 int main () { return 0; }
6588 EOCP
6589 set try
6590 if eval $compile; then
6591     echo "<malloc.h> found." >&4
6592     val="$define"
6593 else
6594     echo "<malloc.h> NOT found." >&4
6595     val="$undef"
6596 fi
6597 $rm_try
6598 set i_malloc
6599 eval $setvar
6600
6601 : check for void type
6602 echo " "
6603 echo "Checking to see how well your C compiler groks the void type..." >&4
6604 case "$voidflags" in
6605 '')
6606         $cat >try.c <<EOCP
6607 #$i_stdlib I_STDLIB
6608 #ifdef I_STDLIB
6609 #include <stdlib.h>
6610 #endif
6611 #if TRY & 1
6612 void sub() {
6613 #else
6614 sub() {
6615 #endif
6616         extern void moo();      /* function returning void */
6617         void (*goo)();          /* ptr to func returning void */
6618 #if TRY & 8
6619         void *hue;              /* generic ptr */
6620 #endif
6621 #if TRY & 2
6622         void (*foo[10])();
6623 #endif
6624
6625 #if TRY & 4
6626         if(goo == moo) {
6627                 exit(0);
6628         }
6629 #endif
6630         exit(0);
6631 }
6632 int main() { sub(); }
6633 EOCP
6634         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6635                 voidflags=$defvoidused
6636         echo "Good.  It appears to support void to the level $package wants.">&4
6637                 if $contains warning .out >/dev/null 2>&1; then
6638                         echo "However, you might get some warnings that look like this:"
6639                         $cat .out
6640                 fi
6641         else
6642 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6643                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6644                         echo "It supports 1..."
6645                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6646                                 echo "It also supports 2..."
6647                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6648                                         voidflags=7
6649                                         echo "And it supports 4 but not 8 definitely."
6650                                 else
6651                                         echo "It doesn't support 4..."
6652                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6653                                                 voidflags=11
6654                                                 echo "But it supports 8."
6655                                         else
6656                                                 voidflags=3
6657                                                 echo "Neither does it support 8."
6658                                         fi
6659                                 fi
6660                         else
6661                                 echo "It does not support 2..."
6662                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6663                                         voidflags=13
6664                                         echo "But it supports 4 and 8."
6665                                 else
6666                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6667                                                 voidflags=5
6668                                                 echo "And it supports 4 but has not heard about 8."
6669                                         else
6670                                                 echo "However it supports 8 but not 4."
6671                                         fi
6672                                 fi
6673                         fi
6674                 else
6675                         echo "There is no support at all for void."
6676                         voidflags=0
6677                 fi
6678         fi
6679 esac
6680 case "$voidflags" in
6681 "$defvoidused") ;;
6682 *)      $cat >&4 <<'EOM'
6683   Support flag bits are:
6684     1: basic void declarations.
6685     2: arrays of pointers to functions returning void.
6686     4: operations between pointers to and addresses of void functions.
6687     8: generic void pointers.
6688 EOM
6689         dflt="$voidflags";
6690         rp="Your void support flags add up to what?"
6691         . ./myread
6692         voidflags="$ans"
6693         ;;
6694 esac
6695 $rm_try
6696
6697 : check for length of pointer
6698 echo " "
6699 case "$ptrsize" in
6700 '')
6701         echo "Checking to see how big your pointers are..." >&4
6702         if test "$voidflags" -gt 7; then
6703                 echo '#define VOID_PTR char *' > try.c
6704         else
6705                 echo '#define VOID_PTR void *' > try.c
6706         fi
6707         $cat >>try.c <<EOCP
6708 #include <stdio.h>
6709 #$i_stdlib I_STDLIB
6710 #ifdef I_STDLIB
6711 #include <stdlib.h>
6712 #endif
6713 int main()
6714 {
6715     printf("%d\n", (int)sizeof(VOID_PTR));
6716     exit(0);
6717 }
6718 EOCP
6719         set try
6720         if eval $compile_ok; then
6721                 ptrsize=`$run ./try`
6722                 echo "Your pointers are $ptrsize bytes long."
6723         else
6724                 dflt='4'
6725                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6726                 rp="What is the size of a pointer (in bytes)?"
6727                 . ./myread
6728                 ptrsize="$ans"
6729         fi
6730         ;;
6731 esac
6732 $rm_try
6733 case "$use64bitall" in
6734 "$define"|true|[yY]*)
6735         case "$ptrsize" in
6736         4)      cat <<EOM >&4
6737
6738 *** You have chosen a maximally 64-bit build,
6739 *** but your pointers are only 4 bytes wide.
6740 *** Please rerun Configure without -Duse64bitall.
6741 EOM
6742                 case "$d_quad" in
6743                 define)
6744                         cat <<EOM >&4
6745 *** Since you have quads, you could possibly try with -Duse64bitint.
6746 EOM
6747                         ;;
6748                 esac
6749                 cat <<EOM >&4
6750 *** Cannot continue, aborting.
6751
6752 EOM
6753
6754                 exit 1
6755                 ;;
6756         esac
6757         ;;
6758 esac
6759
6760
6761 : determine whether to use malloc wrapping
6762 echo " "
6763 case "$usemallocwrap" in
6764 [yY]*|true|$define)     dflt='y' ;;
6765 [nN]*|false|$undef)     dflt='n' ;;
6766 *)      case "$usedevel" in
6767         [yY]*|true|$define)     dflt='y' ;;
6768         *) dflt='n' ;;
6769         esac
6770         ;;
6771 esac
6772 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6773 . ./myread
6774 usemallocwrap="$ans"
6775 case "$ans" in
6776 y*|true)
6777         usemallocwrap="$define" ;;
6778 *)
6779         usemallocwrap="$undef" ;;
6780 esac
6781
6782 : determine which malloc to compile in
6783 echo " "
6784 case "$usemymalloc" in
6785 [yY]*|true|$define)     dflt='y' ;;
6786 [nN]*|false|$undef)     dflt='n' ;;
6787 *)      case "$ptrsize" in
6788         4) dflt='y' ;;
6789         *) dflt='n' ;;
6790         esac
6791         ;;
6792 esac
6793 rp="Do you wish to attempt to use the malloc that comes with $package?"
6794 . ./myread
6795 usemymalloc="$ans"
6796 case "$ans" in
6797 y*|true)
6798         usemymalloc='y'
6799         mallocsrc='malloc.c'
6800         mallocobj="malloc$_o"
6801         d_mymalloc="$define"
6802         case "$libs" in
6803         *-lmalloc*)
6804                 : Remove malloc from list of libraries to use
6805                 echo "Removing unneeded -lmalloc from library list" >&4
6806                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6807                 shift
6808                 libs="$*"
6809                 echo "libs = $libs" >&4
6810                 ;;
6811         esac
6812         ;;
6813 *)
6814         usemymalloc='n'
6815         mallocsrc=''
6816         mallocobj=''
6817         d_mymalloc="$undef"
6818         ;;
6819 esac
6820
6821 : compute the return types of malloc and free
6822 echo " "
6823 $cat >malloc.c <<END
6824 #$i_malloc I_MALLOC
6825 #$i_stdlib I_STDLIB
6826 #include <stdio.h>
6827 #include <sys/types.h>
6828 #ifdef I_MALLOC
6829 #include <malloc.h>
6830 #endif
6831 #ifdef I_STDLIB
6832 #include <stdlib.h>
6833 #endif
6834 #ifdef TRY_MALLOC
6835 void *malloc();
6836 #endif
6837 #ifdef TRY_FREE
6838 void free();
6839 #endif
6840 END
6841 case "$malloctype" in
6842 '')
6843         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6844                 malloctype='void *'
6845         else
6846                 malloctype='char *'
6847         fi
6848         ;;
6849 esac
6850 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6851
6852 case "$freetype" in
6853 '')
6854         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6855                 freetype='void'
6856         else
6857                 freetype='int'
6858         fi
6859         ;;
6860 esac
6861 echo "Your system uses $freetype free(), it would seem." >&4
6862 $rm -f malloc.[co]
6863 : determine where site specific architecture-dependent libraries go.
6864 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6865 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6866 : sitelib may have an optional trailing /share.
6867 case "$sitearch" in
6868 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6869         dflt="$dflt/$archname"
6870         ;;
6871 *)      dflt="$sitearch"
6872         ;;
6873 esac
6874 set sitearch sitearch none
6875 eval $prefixit
6876 $cat <<EOM
6877
6878 The installation process will also create a directory for
6879 architecture-dependent site-specific extensions and modules.
6880
6881 EOM
6882 fn=d~+
6883 rp='Pathname for the site-specific architecture-dependent library files?'
6884 . ./getfile
6885 prefixvar=sitearch
6886 . ./setprefixvar
6887 if $test X"$sitearch" = X"$sitelib"; then
6888         d_sitearch="$undef"
6889 else
6890         d_sitearch="$define"
6891 fi
6892
6893 : Set the vendorprefix variables
6894 $cat <<EOM
6895
6896 The installation process will also create a directory for
6897 vendor-supplied add-ons.  Vendors who supply perl with their system
6898 may find it convenient to place all vendor-supplied files in this
6899 directory rather than in the main distribution directory.  This will
6900 ease upgrades between binary-compatible maintenance versions of perl.
6901
6902 Of course you may also use these directories in whatever way you see
6903 fit.  For example, you might use them to access modules shared over a
6904 company-wide network.
6905
6906 The default answer should be fine for most people.
6907 This causes further questions about vendor add-ons to be skipped
6908 and no vendor-specific directories will be configured for perl.
6909
6910 EOM
6911 rp='Do you want to configure vendor-specific add-on directories?'
6912 case "$usevendorprefix" in
6913 define|true|[yY]*) dflt=y ;;
6914 *)      : User may have set vendorprefix directly on Configure command line.
6915         case "$vendorprefix" in
6916         ''|' ') dflt=n ;;
6917         *)      dflt=y ;;
6918         esac
6919         ;;
6920 esac
6921 . ./myread
6922 case "$ans" in
6923 [yY]*)  fn=d~+
6924         rp='Installation prefix to use for vendor-supplied add-ons?'
6925         case "$vendorprefix" in
6926         '') dflt='' ;;
6927         *)  dflt=$vendorprefix ;;
6928         esac
6929         . ./getfile
6930         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6931         oldvendorprefix=''
6932         case "$vendorprefix" in
6933         '') ;;
6934         *)      case "$ans" in
6935                 "$prefix") ;;
6936                 *) oldvendorprefix="$prefix";;
6937                 esac
6938                 ;;
6939         esac
6940         usevendorprefix="$define"
6941         vendorprefix="$ans"
6942         vendorprefixexp="$ansexp"
6943         ;;
6944 *)      usevendorprefix="$undef"
6945         vendorprefix=''
6946         vendorprefixexp=''
6947         ;;
6948 esac
6949
6950 : Set the vendorlib variables
6951 case "$vendorprefix" in
6952 '')     d_vendorlib="$undef"
6953         vendorlib=''
6954         vendorlibexp=''
6955         ;;
6956 *)      d_vendorlib="$define"
6957         : determine where vendor-supplied modules go.
6958         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6959         case "$vendorlib" in
6960         '')
6961                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6962                 case "$installstyle" in
6963                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6964                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6965                 esac
6966                 ;;
6967         *)      dflt="$vendorlib"
6968                 ;;
6969         esac
6970         fn=d~+
6971         rp='Pathname for the vendor-supplied library files?'
6972         . ./getfile
6973         vendorlib="$ans"
6974         vendorlibexp="$ansexp"
6975         ;;
6976 esac
6977 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6978 prefixvar=vendorlib
6979 . ./installprefix
6980
6981 : Set the vendorarch variables
6982 case "$vendorprefix" in
6983 '')     d_vendorarch="$undef"
6984         vendorarch=''
6985         vendorarchexp=''
6986         ;;
6987 *)      d_vendorarch="$define"
6988         : determine where vendor-supplied architecture-dependent libraries go.
6989         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6990         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6991         : vendorlib may have an optional trailing /share.
6992         case "$vendorarch" in
6993         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6994                 dflt="$dflt/$archname"
6995                 ;;
6996         *)      dflt="$vendorarch" ;;
6997         esac
6998         fn=d~+
6999         rp='Pathname for vendor-supplied architecture-dependent files?'
7000         . ./getfile
7001         vendorarch="$ans"
7002         vendorarchexp="$ansexp"
7003         ;;
7004 esac
7005 prefixvar=vendorarch
7006 . ./installprefix
7007
7008 : Final catch-all directories to search
7009 $cat <<EOM
7010
7011 Lastly, you can have perl look in other directories for extensions and
7012 modules in addition to those already specified.
7013 These directories will be searched after 
7014         $sitearch 
7015         $sitelib 
7016 EOM
7017 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7018 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7019 echo ' '
7020 case "$otherlibdirs" in
7021 ''|' ') dflt='none' ;;
7022 *)      dflt="$otherlibdirs" ;;
7023 esac
7024 $cat <<EOM
7025 Enter a colon-separated set of extra paths to include in perl's @INC
7026 search path, or enter 'none' for no extra paths.
7027
7028 EOM
7029
7030 rp='Colon-separated list of additional directories for perl to search?'
7031 . ./myread
7032 case "$ans" in
7033 ' '|''|none)    otherlibdirs=' ' ;;     
7034 *)      otherlibdirs="$ans" ;;
7035 esac
7036 case "$otherlibdirs" in
7037 ' ') val=$undef ;;
7038 *)      val=$define ;;
7039 esac
7040 set d_perl_otherlibdirs
7041 eval $setvar
7042
7043 : Cruising for prototypes
7044 echo " "
7045 echo "Checking out function prototypes..." >&4
7046 $cat >prototype.c <<EOCP
7047 #$i_stdlib I_STDLIB
7048 #ifdef I_STDLIB
7049 #include <stdlib.h>
7050 #endif
7051 int main(int argc, char *argv[]) {
7052         exit(0);}
7053 EOCP
7054 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7055         echo "Your C compiler appears to support function prototypes."
7056         val="$define"
7057 else
7058         echo "Your C compiler doesn't seem to understand function prototypes."
7059         val="$undef"
7060 fi
7061 set prototype
7062 eval $setvar
7063 $rm -f prototype*
7064
7065 : Check if ansi2knr is required
7066 case "$prototype" in
7067 "$define") ;;
7068 *)      ansi2knr='ansi2knr'
7069         echo " "
7070         cat <<EOM >&4
7071
7072 $me:  FATAL ERROR:
7073 This version of $package can only be compiled by a compiler that 
7074 understands function prototypes.  Unfortunately, your C compiler 
7075         $cc $ccflags
7076 doesn't seem to understand them.  Sorry about that.
7077
7078 If GNU cc is available for your system, perhaps you could try that instead.  
7079
7080 Eventually, we hope to support building Perl with pre-ANSI compilers.
7081 If you would like to help in that effort, please contact <perlbug@perl.org>.
7082
7083 Aborting Configure now.
7084 EOM
7085         exit 2
7086         ;;
7087 esac
7088
7089 : DTrace support
7090 dflt_dtrace='/usr/sbin/dtrace'
7091 cat <<EOM
7092
7093 Perl can be built to support DTrace on platforms that support it.
7094 DTrace is a diagnosis and performance analysis tool from Sun.
7095
7096 If this doesn't make any sense to you, just accept the default '$dflt'.
7097 EOM
7098
7099 while $test 1 ; do
7100         case "$usedtrace" in
7101         $define|true|[yY]*)
7102                 dflt='y'
7103                 ;;
7104         ?*)
7105                 dflt='y'
7106                 dflt_dtrace=$usedtrace
7107                 ;;
7108         *)
7109                 dflt='n'
7110                 ;;
7111         esac
7112
7113         rp='Support DTrace if available?'
7114         . ./myread
7115         case "$ans" in
7116         y|Y)    val="$define" ;;
7117         *)      val="$undef" ;;
7118         esac
7119         set usedtrace
7120         eval $setvar
7121
7122         test "X$usedtrace" != "X$define" && break
7123
7124         echo " "
7125         rp='Where is the dtrace executable?'
7126         dflt=$dflt_dtrace
7127         . ./getfile
7128         val="$ans"
7129         set dtrace
7130         eval $setvar
7131
7132         if $test -f $dtrace
7133         then
7134                 if $dtrace -h -s ../perldtrace.d \
7135                         -o perldtrace.tmp >/dev/null 2>&1 \
7136                         && rm -f perldtrace.tmp
7137                 then
7138                         echo " "
7139                         echo "Good: your $dtrace knows about the -h flag."
7140                 else
7141                         cat >&2 <<EOM
7142
7143 *** $me:  Fatal Error:  $dtrace doesn't support -h flag
7144 ***
7145 *** Your installed dtrace doesn't support the -h switch to compile a D
7146 *** program into a C header. Can't continue.
7147
7148 EOM
7149                         exit 1
7150                 fi
7151                 break;
7152         fi
7153
7154         case "$fastread" in
7155         yes)
7156                 cat >&2 <<EOM
7157
7158 *** $me:  Fatal Error:  $dtrace not found.
7159 *** Can't continue.
7160
7161 EOM
7162                 exit 1
7163                 ;;
7164         *)
7165                 echo "*** $dtrace was not found."
7166                 echo " "
7167                 ;;
7168         esac
7169 done
7170
7171 : See if we want extra modules installed
7172 echo " "
7173 case "$extras" in
7174 '') dflt='n';;
7175 *) dflt='y';;
7176 esac
7177 cat <<EOM
7178 Perl can be built with extra modules or bundles of modules which
7179 will be fetched from the CPAN and installed alongside Perl.
7180
7181 Notice that you will need access to the CPAN; either via the Internet,
7182 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7183 be asked later to configure the CPAN.pm module which will in turn do
7184 the installation of the rest of the extra modules or bundles.)
7185
7186 Notice also that if the modules require any external software such as
7187 libraries and headers (the libz library and the zlib.h header for the
7188 Compress::Zlib module, for example) you MUST have any such software
7189 already installed, this configuration process will NOT install such
7190 things for you.
7191
7192 If this doesn't make any sense to you, just accept the default '$dflt'.
7193 EOM
7194 rp='Install any extra modules (y or n)?'
7195 . ./myread
7196 case "$ans" in
7197 y|Y)
7198         cat <<EOM
7199
7200 Please list any extra modules or bundles to be installed from CPAN,
7201 with spaces between the names.  The names can be in any format the
7202 'install' command of CPAN.pm will understand.  (Answer 'none',
7203 without the quotes, to install no extra modules or bundles.)
7204 EOM
7205         rp='Extras?'
7206         dflt="$extras"
7207         . ./myread
7208         extras="$ans"
7209 esac
7210 case "$extras" in
7211 ''|'none')
7212         val=''
7213         $rm -f ../extras.lst
7214         ;;
7215 *)      echo "(Saving the list of extras for later...)"
7216         echo "$extras" > ../extras.lst
7217         val="'$extras'"
7218         ;;
7219 esac
7220 set extras
7221 eval $setvar
7222 echo " "
7223
7224 : determine where html pages for programs go
7225 set html1dir html1dir none
7226 eval $prefixit
7227 $cat <<EOM
7228
7229 If you wish to install html files for programs in $spackage, indicate
7230 the appropriate directory here.  To skip installing html files,
7231 answer "none".
7232 EOM
7233 case "$html1dir" in
7234 ''|none|$undef|' ') dflt=none ;;
7235 *) dflt=$html1dir ;;
7236 esac
7237 fn=dn+~
7238 rp="Directory for the main $spackage html pages?"
7239 . ./getfile
7240 prefixvar=html1dir
7241 . ./setprefixvar
7242 : Use ' ' for none so value is preserved next time through Configure
7243 $test X"$html1dir" = "X" && html1dir=' '
7244
7245 : determine where html pages for libraries and modules go
7246 set html3dir html3dir none
7247 eval $prefixit
7248 $cat <<EOM
7249
7250 If you wish to install html files for modules associated with $spackage,
7251 indicate the appropriate directory here.  To skip installing html files,
7252 answer "none".
7253 EOM
7254 : There is no obvious default.  If they have specified html1dir, then
7255 : try to key off that, possibly changing .../html1 into .../html3.
7256 case "$html3dir" in
7257 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7258 *) dflt=$html3dir ;;
7259 esac
7260 fn=dn+~
7261 rp="Directory for the $spackage module html pages?"
7262 . ./getfile
7263 prefixvar=html3dir
7264 . ./setprefixvar
7265 : Use ' ' for none so value is preserved next time through Configure
7266 $test X"$html3dir" = "X" && html3dir=' '
7267
7268 : determine whether to install perl also as /usr/bin/perl
7269
7270 echo " "
7271 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7272         $cat <<EOM
7273 Many scripts expect perl to be installed as /usr/bin/perl.
7274
7275 If you want to, I can install the perl you are about to compile
7276 as /usr/bin/perl (in addition to $bin/perl).
7277 EOM
7278         if test -f /usr/bin/perl; then
7279             $cat <<EOM
7280
7281 However, please note that because you already have a /usr/bin/perl,
7282 overwriting that with a new Perl would very probably cause problems.
7283 Therefore I'm assuming you don't want to do that (unless you insist).
7284
7285 EOM
7286             case "$installusrbinperl" in
7287             "$define"|[yY]*)    dflt='y';;
7288             *)                  dflt='n';;
7289             esac
7290         else
7291             $cat <<EOM
7292
7293 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7294
7295 EOM
7296             case "$installusrbinperl" in
7297             "$undef"|[nN]*)     dflt='n';;
7298             *)                  dflt='y';;
7299             esac
7300         fi
7301         rp="Do you want to install perl as /usr/bin/perl?"
7302         . ./myread
7303         case "$ans" in
7304         [yY]*)  val="$define";;
7305         *)      val="$undef" ;;
7306         esac
7307 else
7308         val="$undef"
7309 fi
7310 set installusrbinperl
7311 eval $setvar
7312
7313 : Check if we are using the GNU C library
7314 echo " "
7315 echo "Checking for GNU C Library..." >&4
7316 cat >try.c <<'EOCP'
7317 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
7318    alone are insufficient to distinguish different versions, such as
7319    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
7320    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
7321 */
7322 #include <stdio.h>
7323 int main(void)
7324 {
7325 #ifdef __GLIBC__
7326 #   ifdef __GLIBC_MINOR__
7327 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7328 #           include <gnu/libc-version.h>
7329             printf("%s\n",  gnu_get_libc_version());
7330 #       else
7331             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
7332 #       endif
7333 #   else
7334         printf("%d\n",  __GLIBC__);
7335 #   endif
7336     return 0;
7337 #else
7338     return 1;
7339 #endif
7340 }
7341 EOCP
7342 set try
7343 if eval $compile_ok && $run ./try > glibc.ver; then
7344         val="$define"
7345         gnulibc_version=`$cat glibc.ver`
7346         echo "You are using the GNU C Library version $gnulibc_version"
7347 else
7348         val="$undef"
7349         gnulibc_version=''
7350         echo "You are not using the GNU C Library"
7351 fi
7352 $rm_try glibc.ver
7353 set d_gnulibc
7354 eval $setvar
7355
7356 : see if nm is to be used to determine whether a symbol is defined or not
7357 case "$usenm" in
7358 '')
7359         dflt=''
7360         case "$d_gnulibc" in
7361         "$define")
7362                 echo " "
7363                 echo "nm probably won't work on the GNU C Library." >&4
7364                 dflt=n
7365                 ;;
7366         esac
7367         case "$dflt" in
7368         '') 
7369                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7370                         echo " "
7371                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7372                         echo "'nm' won't be sufficient on this sytem." >&4
7373                         dflt=n
7374                 fi
7375                 ;;
7376         esac
7377         case "$dflt" in
7378         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7379                 if $test $dflt -gt 20; then
7380                         dflt=y
7381                 else
7382                         dflt=n
7383                 fi
7384                 ;;
7385         esac
7386         ;;
7387 *)
7388         case "$usenm" in
7389         true|$define) dflt=y;;
7390         *) dflt=n;;
7391         esac
7392         ;;
7393 esac
7394 $cat <<EOM
7395
7396 I can use $nm to extract the symbols from your C libraries. This
7397 is a time consuming task which may generate huge output on the disk (up
7398 to 3 megabytes) but that should make the symbols extraction faster. The
7399 alternative is to skip the 'nm' extraction part and to compile a small
7400 test program instead to determine whether each symbol is present. If
7401 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7402 this may be the best solution.
7403
7404 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7405
7406 EOM
7407 rp="Shall I use $nm to extract C symbols from the libraries?"
7408 . ./myread
7409 case "$ans" in
7410 [Nn]*) usenm=false;;
7411 *) usenm=true;;
7412 esac
7413
7414 runnm=$usenm
7415 case "$reuseval" in
7416 true) runnm=false;;
7417 esac
7418
7419 : nm options which may be necessary
7420 case "$nm_opt" in
7421 '') if $test -f /mach_boot; then
7422                 nm_opt=''       # Mach
7423         elif $test -d /usr/ccs/lib; then
7424                 nm_opt='-p'     # Solaris (and SunOS?)
7425         elif $test -f /dgux; then
7426                 nm_opt='-p'     # DG-UX
7427         elif $test -f /lib64/rld; then
7428                 nm_opt='-p'     # 64-bit Irix
7429         else
7430                 nm_opt=''
7431         fi;;
7432 esac
7433
7434 : nm options which may be necessary for shared libraries but illegal
7435 : for archive libraries.  Thank you, Linux.
7436 case "$nm_so_opt" in
7437 '')     case "$myuname" in
7438         *linux*|gnu*)
7439                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7440                         nm_so_opt='--dynamic'
7441                 fi
7442                 ;;
7443         esac
7444         ;;
7445 esac
7446
7447 : Figure out where the libc is located
7448 case "$runnm" in
7449 true)
7450 : get list of predefined functions in a handy place
7451 echo " "
7452 case "$libc" in
7453 '') libc=unknown
7454         case "$libs" in
7455         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7456         esac
7457         ;;
7458 esac
7459 case "$libs" in
7460 '') ;;
7461 *)  for thislib in $libs; do
7462         case "$thislib" in
7463         -lc|-lc_s)
7464                 : Handle C library specially below.
7465                 ;;
7466         -l*)
7467                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7468                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7469                         :
7470                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7471                         :
7472                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7473                         :
7474                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7475                         :
7476                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7477                         :
7478                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7479                         :
7480                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7481                         :
7482                 else
7483                         try=''
7484                 fi
7485                 libnames="$libnames $try"
7486                 ;;
7487         *) libnames="$libnames $thislib" ;;
7488         esac
7489         done
7490         ;;
7491 esac
7492 xxx=normal
7493 case "$libc" in
7494 unknown)
7495         set /lib/libc.$so
7496         for xxx in $libpth; do
7497                 $test -r $1 || set $xxx/libc.$so
7498                 : The messy sed command sorts on library version numbers.
7499                 $test -r $1 || \
7500                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7501                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7502                                 h
7503                                 s/[0-9][0-9]*/0000&/g
7504                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7505                                 G
7506                                 s/\n/ /' | \
7507                          $sort | $sed -e 's/^.* //'`
7508                 eval set \$$#
7509         done
7510         $test -r $1 || set /usr/ccs/lib/libc.$so
7511         $test -r $1 || set /lib/libsys_s$_a
7512         ;;
7513 *)
7514         set blurfl
7515         ;;
7516 esac
7517 if $test -r "$1"; then
7518         echo "Your (shared) C library seems to be in $1."
7519         libc="$1"
7520 elif $test -r /lib/libc && $test -r /lib/clib; then
7521         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7522         xxx=apollo
7523         libc='/lib/clib /lib/libc'
7524         if $test -r /lib/syslib; then
7525                 echo "(Your math library is in /lib/syslib.)"
7526                 libc="$libc /lib/syslib"
7527         fi
7528 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7529         echo "Your C library seems to be in $libc, as you said before."
7530 elif $test -r $incpath/usr/lib/libc$_a; then
7531         libc=$incpath/usr/lib/libc$_a;
7532         echo "Your C library seems to be in $libc.  That's fine."
7533 elif $test -r /lib/libc$_a; then
7534         libc=/lib/libc$_a;
7535         echo "Your C library seems to be in $libc.  You're normal."
7536 else
7537         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7538                 :
7539         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7540                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7541         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7542                 :
7543         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7544                 :
7545         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7546                 :
7547         else
7548                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7549         fi
7550         if $test -r "$tans"; then
7551                 echo "Your C library seems to be in $tans, of all places."
7552                 libc=$tans
7553         else
7554                 libc='blurfl'
7555         fi
7556 fi
7557 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7558         dflt="$libc"
7559         cat <<EOM
7560
7561 If the guess above is wrong (which it might be if you're using a strange
7562 compiler, or your machine supports multiple models), you can override it here.
7563
7564 EOM
7565 else
7566         dflt=''
7567         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7568         cat >&4 <<EOM
7569 I can't seem to find your C library.  I've looked in the following places:
7570
7571 EOM
7572         $sed 's/^/      /' libpath
7573         cat <<EOM
7574
7575 None of these seems to contain your C library. I need to get its name...
7576
7577 EOM
7578 fi
7579 fn=f
7580 rp='Where is your C library?'
7581 . ./getfile
7582 libc="$ans"
7583
7584 echo " "
7585 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7586 set X `cat libnames`
7587 shift
7588 xxx=files
7589 case $# in 1) xxx=file; esac
7590 echo "Extracting names from the following $xxx for later perusal:" >&4
7591 echo " "
7592 $sed 's/^/      /' libnames >&4
7593 echo " "
7594 $echo $n "This may take a while...$c" >&4
7595
7596 for file in $*; do
7597         case $file in
7598         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7599         *) $nm $nm_opt $file 2>/dev/null;;
7600         esac
7601 done >libc.tmp
7602
7603 $echo $n ".$c"
7604 $grep fprintf libc.tmp > libc.ptf
7605 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7606 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7607 xxx='[ADTSIW]'
7608 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7609         eval $xscan;\
7610         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7611                 eval $xrun
7612 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7613         eval $xscan;\
7614         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7615                 eval $xrun
7616 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7617         eval $xscan;\
7618         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7619                 eval $xrun
7620 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7621         eval $xscan;\
7622         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7623                 eval $xrun
7624 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7625         eval $xscan;\
7626         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7627                 eval $xrun
7628 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7629         eval $xscan;\
7630         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7631                 eval $xrun
7632 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7633                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7634         eval $xscan;\
7635         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7636                 eval $xrun
7637 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7638         eval $xscan;\
7639         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7640                 eval $xrun
7641 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7642         eval $xscan;\
7643         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7644                 eval $xrun
7645 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7646         eval $xscan;\
7647         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7648                 eval $xrun
7649 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7650         eval $xscan;\
7651         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7652                 eval $xrun
7653 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7654         eval $xscan;\
7655         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7656                 eval $xrun
7657 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7658         eval $xscan;\
7659         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7660                 eval $xrun
7661 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7662         eval $xscan;\
7663         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7664                 eval $xrun
7665 else
7666         $nm -p $* 2>/dev/null >libc.tmp
7667         $grep fprintf libc.tmp > libc.ptf
7668         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7669                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7670         then
7671                 nm_opt='-p'
7672                 eval $xrun
7673         else
7674                 echo " "
7675                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7676                 com=''
7677                 if $ar t $libc > libc.tmp && \
7678                         $contains '^fprintf$' libc.tmp >/dev/null 2>&1
7679                 then
7680                         for thisname in $libnames $libc; do
7681                                 $ar t $thisname >>libc.tmp
7682                         done
7683                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7684                         echo "Ok." >&4
7685                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7686                         for thisname in $libnames $libc; do
7687                                 $ar tv $thisname >>libc.tmp
7688                                 emximp -o tmp.imp $thisname \
7689                                     2>/dev/null && \
7690                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7691                                     < tmp.imp >>libc.tmp
7692                                 $rm -f tmp.imp
7693                         done
7694                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7695                         echo "Ok." >&4
7696                 else
7697                         echo "$ar didn't seem to work right." >&4
7698                         echo "Maybe this is a Cray...trying bld instead..." >&4
7699                         if  bld t $libc | \
7700                                 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list &&
7701                                 $test -s libc.list
7702                         then
7703                                 for thisname in $libnames; do
7704                                         bld t $libnames | \
7705                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7706                                         $ar t $thisname >>libc.tmp
7707                                 done
7708                                 echo "Ok." >&4
7709                         else
7710                                 echo "That didn't work either.  Giving up." >&4
7711                                 exit 1
7712                         fi
7713                 fi
7714         fi
7715 fi
7716 nm_extract="$com"
7717 case "$PASE" in
7718 define)
7719     echo " "
7720     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7721     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7722     ;;
7723 *)  if $test -f /lib/syscalls.exp; then
7724         echo " "
7725         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7726         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' \
7727                 /lib/syscalls.exp >>libc.list
7728     fi
7729     ;;
7730 esac
7731 ;;
7732 esac
7733 $rm -f libnames libpath
7734
7735 : see if dld is available
7736 set dld.h i_dld
7737 eval $inhdr
7738
7739 : Check if we are using C++
7740 echo " "
7741 echo "Checking for C++..." >&4
7742 $cat >try.c <<'EOCP'
7743 #include <stdio.h>
7744 int main(void)
7745 {
7746 #ifdef __cplusplus
7747     return 0;
7748 #else
7749     return 1;
7750 #endif
7751 }
7752 EOCP
7753 set try
7754 if eval $compile_ok && $run ./try; then
7755         val="$define"
7756         echo "You are using a C++ compiler."
7757 else
7758         val="$undef"
7759         echo "You are not using a C++ compiler."
7760 fi
7761 $rm_try cplusplus$$
7762 set d_cplusplus
7763 eval $setvar
7764
7765 : is a C symbol defined?
7766 csym='tlook=$1;
7767 case "$3" in
7768 -v) tf=libc.tmp; tdc="";;
7769 -a) tf=libc.tmp; tdc="[]";;
7770 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7771 esac;
7772 tx=yes;
7773 case "$reuseval-$4" in
7774 true-) ;;
7775 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7776 esac;
7777 case "$tx" in
7778 yes)
7779         tval=false;
7780         case "$d_cplusplus" in
7781                 $define) extern_C=\"C\";;
7782         esac;
7783         if $test "$runnm" = true; then
7784                 if $contains $tlook $tf >/dev/null 2>&1; then
7785                         tval=true;
7786                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7787                         echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7788                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7789                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7790                         $rm_try;
7791                 fi;
7792         else
7793                 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7794                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7795                 $rm_try;
7796         fi;
7797         ;;
7798 *)
7799         case "$tval" in
7800         $define) tval=true;;
7801         *) tval=false;;
7802         esac;
7803         ;;
7804 esac;
7805 eval "$2=$tval"'
7806
7807 : define an is-in-libc? function
7808 inlibc='echo " "; td=$define; tu=$undef;
7809 sym=$1; var=$2; eval "was=\$$2";
7810 tx=yes;
7811 case "$reuseval$was" in
7812 true) ;;
7813 true*) tx=no;;
7814 esac;
7815 case "$tx" in
7816 yes)
7817         set $sym tres -f;
7818         eval $csym;
7819         case "$tres" in
7820         true)
7821                 echo "$sym() found." >&4;
7822                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7823         *)
7824                 echo "$sym() NOT found." >&4;
7825                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7826         esac;;
7827 *)
7828         case "$was" in
7829         $define) echo "$sym() found." >&4;;
7830         *) echo "$sym() NOT found." >&4;;
7831         esac;;
7832 esac'
7833
7834 : see if dlopen exists
7835 xxx_runnm="$runnm"
7836 xxx_ccflags="$ccflags"
7837 runnm=false
7838 : with g++ one needs -shared to get is-in-libc to work for dlopen
7839 case "$gccversion" in
7840 '')     ;;
7841 *)      case "$d_cplusplus" in
7842         "$define") ccflags="$ccflags -shared" ;;
7843         esac
7844         ;;
7845 esac
7846 set dlopen d_dlopen
7847 eval $inlibc
7848 runnm="$xxx_runnm"
7849 ccflags="$xxx_ccflags"
7850
7851 : see if this is a unistd.h system
7852 set unistd.h i_unistd
7853 eval $inhdr
7854
7855 : determine which dynamic loading, if any, to compile in
7856 echo " "
7857 dldir="ext/DynaLoader"
7858 case "$usedl" in
7859 $define|y|true)
7860         dflt='y'
7861         usedl="$define"
7862         ;;
7863 $undef|n|false)
7864         dflt='n'
7865         usedl="$undef"
7866         ;;
7867 *)
7868         dflt='n'
7869         case "$d_dlopen" in
7870             $define) dflt='y' ;;
7871         esac
7872         case "$i_dld" in
7873             $define) dflt='y' ;;
7874         esac
7875         : Does a dl_xxx.xs file exist for this operating system
7876         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7877         ;;
7878 esac
7879 rp="Do you wish to use dynamic loading?"
7880 . ./myread
7881 usedl="$ans"
7882 case "$ans" in
7883 y*) usedl="$define"
7884         case "$dlsrc" in
7885         '')
7886                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7887                         dflt="$dldir/dl_${osname}.xs"
7888                 elif $test "$d_dlopen" = "$define" ; then
7889                         dflt="$dldir/dl_dlopen.xs"
7890                 elif $test "$i_dld" = "$define" ; then
7891                         dflt="$dldir/dl_dld.xs"
7892                 else
7893                         dflt=''
7894                 fi
7895                 ;;
7896         *)      dflt="$dldir/$dlsrc"
7897                 ;;
7898         esac
7899     echo "The following dynamic loading files are available:"
7900         : Can not go over to $dldir because getfile has path hard-coded in.
7901         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7902         rp="Source file to use for dynamic loading"
7903         fn="fne"
7904         gfpth="$src"
7905         . ./getfile
7906         usedl="$define"
7907         : emulate basename
7908         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7909
7910         $cat << EOM
7911
7912 Some systems may require passing special flags to $cc -c to
7913 compile modules that will be used to create a shared library.
7914 To use no flags, say "none".
7915
7916 EOM
7917     case "$cccdlflags" in
7918     '') case "$gccversion" in
7919                 '') case "$osname" in
7920                         hpux)   dflt='+z' ;;
7921                         next)   dflt='none' ;;
7922                         irix*)  dflt='-KPIC' ;;
7923                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7924                         sunos)  dflt='-pic' ;;
7925                         *)      dflt='none' ;;
7926                     esac
7927                         ;;
7928                 *)  case "$osname" in
7929                         darwin) dflt='none' ;;
7930                         linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7931                         *)      dflt='-fpic' ;;
7932                     esac ;;
7933             esac ;;
7934         ' ') dflt='none' ;;
7935     *)  dflt="$cccdlflags" ;;
7936     esac
7937     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7938     . ./myread
7939     case "$ans" in
7940     none) cccdlflags=' ' ;;
7941     *) cccdlflags="$ans" ;;
7942     esac
7943
7944     cat << EOM
7945
7946 Some systems use ld to create libraries that can be dynamically loaded,
7947 while other systems (such as those using ELF) use $cc.
7948
7949 EOM
7950         case "$ld" in
7951         '')     $cat >try.c <<EOM
7952 /* Test for whether ELF binaries are produced */
7953 #include <fcntl.h>
7954 #$i_stdlib I_STDLIB
7955 #ifdef I_STDLIB
7956 #include <stdlib.h>
7957 #endif
7958 #$i_unistd I_UNISTD
7959 #ifdef I_UNISTD
7960 #include <unistd.h>
7961 #endif
7962 int main() {
7963         char b[4];
7964         int i = open("a.out",O_RDONLY);
7965         if(i == -1)
7966                 exit(1); /* fail */
7967         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7968                 exit(0); /* succeed (yes, it's ELF) */
7969         else
7970                 exit(1); /* fail */
7971 }
7972 EOM
7973                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7974                         cat <<EOM
7975 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7976 EOM
7977                         dflt="$cc"
7978                 else
7979                         echo "I'll use ld to build dynamic libraries."
7980                         dflt='ld'
7981                 fi
7982                 $rm_try
7983                 ;;
7984         *)      dflt="$ld"
7985                 ;;
7986         esac
7987
7988     rp="What command should be used to create dynamic libraries?"
7989     . ./myread
7990         ld="$ans"
7991
7992     cat << EOM
7993
7994 Some systems may require passing special flags to $ld to create a
7995 library that can be dynamically loaded.  If your ld flags include
7996 -L/other/path options to locate libraries outside your loader's normal
7997 search path, you may need to specify those -L options here as well.  To
7998 use no flags, say "none".
7999
8000 EOM
8001     case "$lddlflags" in
8002     '') case "$osname" in
8003                         beos) dflt='-nostart' ;;
8004                         hpux) dflt='-b';
8005                               case "$gccversion" in
8006                               '') dflt="$dflt +vnocompatwarnings" ;;
8007                               esac
8008                               ;;
8009                         linux|irix*|gnu*)  dflt="-shared $optimize" ;;
8010                         next)  dflt='none' ;;
8011                         solaris) dflt='-G' ;;
8012                         sunos) dflt='-assert nodefinitions' ;;
8013                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
8014                 *)     dflt='none' ;;
8015                         esac
8016                         ;;
8017     *) dflt="$lddlflags" ;;
8018     esac
8019
8020         : Try to guess additional flags to pick up local libraries.
8021         : Be careful not to append to a plain 'none'
8022         case "$dflt" in
8023         none) dflt='' ;;
8024         esac
8025         for thisflag in $ldflags; do
8026                 case "$thisflag" in
8027                 -L*|-R*|-Wl,-R*)
8028                         case " $dflt " in
8029                         *" $thisflag "*) ;;
8030                         *) dflt="$dflt $thisflag" ;;
8031                         esac
8032                         ;;
8033                 esac
8034         done
8035
8036         case "$dflt" in
8037         ''|' ') dflt='none' ;;
8038         esac
8039
8040         case "$ldflags" in
8041         *-fstack-protector*)
8042             case "$dflt" in
8043                         *-fstack-protector*) ;; # Don't add it again
8044                         *) dflt="$dflt -fstack-protector" ;; 
8045                 esac
8046                 ;;
8047         esac
8048
8049
8050     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
8051     . ./myread
8052     case "$ans" in
8053     none) lddlflags=' ' ;;
8054     *) lddlflags="$ans" ;;
8055     esac
8056
8057         cat <<EOM
8058
8059 Some systems may require passing special flags to $cc to indicate that
8060 the resulting executable will use dynamic linking.  To use no flags,
8061 say "none".
8062
8063 EOM
8064     case "$ccdlflags" in
8065     '') case "$osname" in
8066             linux|hpux|gnu*)    dflt='-Wl,-E' ;;
8067             next|sunos) dflt='none' ;;
8068             *)          dflt='none' ;;
8069             esac ;;
8070     ' ')  dflt='none' ;;
8071     *)  dflt="$ccdlflags" ;;
8072     esac
8073     rp="Any special flags to pass to $cc to use dynamic linking?"
8074     . ./myread
8075     case "$ans" in
8076     none) ccdlflags=' ' ;;
8077     *) ccdlflags="$ans" ;;
8078     esac
8079     ;;
8080 *)  usedl="$undef"
8081         ld='ld'
8082     dlsrc='dl_none.xs'
8083     lddlflags=''
8084     ccdlflags=''
8085     ;;
8086 esac
8087
8088 : Do we want a shared libperl?
8089 also=''
8090 case "$usedl" in
8091 $undef)
8092         # No dynamic loading being used, so don't bother even to prompt.
8093         useshrplib='false'
8094         ;;
8095 *)      case "$useshrplib" in
8096         '')     case "$osname" in
8097                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
8098                         dflt=y
8099                         also='Building a shared libperl is required for dynamic loading to work on your system.'
8100                         ;;
8101                 next*)
8102                         case "$osvers" in
8103                         4*)     dflt=y
8104                                 also='Building a shared libperl is needed for MAB support.'
8105                                 ;;
8106                         *)      dflt=n
8107                                 ;;
8108                         esac
8109                         ;;
8110                 *)      dflt=n
8111                         ;;
8112                 esac
8113                 ;;
8114         $define|true|[Yy]*)
8115                 dflt=y
8116                 ;;
8117         *)      dflt=n
8118                 ;;
8119         esac
8120         $cat << EOM
8121
8122 The perl executable is normally obtained by linking perlmain.c with
8123 libperl${_a}, any static extensions (usually just DynaLoader), and
8124 any other libraries needed on this system (such as -lm, etc.).  Since
8125 your system supports dynamic loading, it is probably possible to build
8126 a shared libperl.$so.  If you will have more than one executable linked
8127 to libperl.$so, this will significantly reduce the size of each
8128 executable, but it may have a noticeable effect on performance.  The
8129 default is probably sensible for your system.
8130 $also
8131
8132 EOM
8133         rp="Build a shared libperl.$so (y/n)"
8134         . ./myread
8135         case "$ans" in
8136         true|$define|[Yy]*)
8137                 useshrplib='true'  ;;
8138         *)      useshrplib='false' ;;
8139         esac
8140         ;;
8141 esac
8142
8143 case "$useshrplib" in
8144 true)
8145         case "$libperl" in
8146         '')
8147                 # Figure out a good name for libperl.so.  Since it gets stored in
8148                 # a version-specific architecture-dependent library, the version
8149                 # number isn't really that important, except for making cc/ld happy.
8150                 #
8151                 # A name such as libperl.so.3.1
8152                 majmin="libperl.$so.$patchlevel.$subversion"
8153                 # A name such as libperl.so.301
8154                 majonly=`echo $patchlevel $subversion |
8155                         $awk '{printf "%d%02d", $1, $2}'`
8156                 majonly=libperl.$so.$majonly
8157                 # I'd prefer to keep the os-specific stuff here to a minimum, and
8158                 # rely on figuring it out from the naming of libc.
8159                 case "${osname}${osvers}" in
8160                 next4*)
8161                         dflt=libperl.5.$so
8162                         # XXX How handle the --version stuff for MAB?
8163                         ;;
8164                 linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
8165                         dflt=libperl.$so
8166                         ;;
8167                 cygwin*) # ld links against an importlib
8168                         dflt=libperl$lib_ext
8169                         ;;
8170                 *)      # Try to guess based on whether libc has major.minor.
8171                         case "$libc" in
8172                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8173                         *libc.$so.[0-9]*) dflt=$majonly ;;
8174                         *)      dflt=libperl.$so ;;
8175                         esac
8176                         ;;
8177                 esac
8178                 ;;
8179         *)      dflt=$libperl
8180                 ;;
8181         esac
8182         cat << EOM
8183
8184 I need to select a good name for the shared libperl.  If your system uses
8185 library names with major and minor numbers, then you might want something
8186 like $majmin.  Alternatively, if your system uses a single version
8187 number for shared libraries, then you might want to use $majonly.
8188 Or, your system might be quite happy with a simple libperl.$so.
8189
8190 Since the shared libperl will get installed into a version-specific
8191 architecture-dependent directory, the version number of the shared perl
8192 library probably isn't important, so the default should be o.k.
8193
8194 EOM
8195         rp='What name do you want to give to the shared libperl?'
8196         . ./myread
8197         libperl=$ans
8198         echo "Ok, I'll use $libperl"
8199         ;;
8200 *)
8201         libperl="libperl${_a}"
8202         ;;
8203 esac
8204
8205 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8206 case "$shrpdir" in
8207 '') ;;
8208 *)      $cat >&4 <<EOM
8209 WARNING:  Use of the shrpdir variable for the installation location of
8210 the shared $libperl is not supported.  It was never documented and
8211 will not work in this version.  Let me (perlbug@perl.org)
8212 know of any problems this may cause.
8213
8214 EOM
8215         case "$shrpdir" in
8216         "$archlibexp/CORE")
8217                 $cat >&4 <<EOM
8218 But your current setting of $shrpdir is
8219 the default anyway, so it's harmless.
8220 EOM
8221                 ;;
8222         *)
8223                 $cat >&4 <<EOM
8224 Further, your current attempted setting of $shrpdir
8225 conflicts with the value of $archlibexp/CORE
8226 that installperl will use.
8227 EOM
8228                 ;;
8229         esac
8230         ;;
8231 esac
8232
8233 # How will the perl executable find the installed shared $libperl?
8234 # Add $xxx to ccdlflags.
8235 # If we can't figure out a command-line option, use $shrpenv to
8236 # set env LD_RUN_PATH.  The main perl makefile uses this.
8237 shrpdir=$archlibexp/CORE
8238 xxx=''
8239 tmp_shrpenv=''
8240 if "$useshrplib"; then
8241     case "$osname" in
8242         aix)
8243                 # We'll set it in Makefile.SH...
8244                 ;;
8245         solaris)
8246                 xxx="-R $shrpdir"
8247                 ;;
8248         freebsd|netbsd|openbsd|interix|dragonfly)
8249                 xxx="-Wl,-R$shrpdir"
8250                 ;;
8251         bsdos|linux|irix*|dec_osf|gnu*)
8252                 xxx="-Wl,-rpath,$shrpdir"
8253                 ;;
8254         next)
8255                 # next doesn't like the default...
8256                 ;;
8257         beos)
8258                 # beos doesn't like the default, either.
8259                 ;;
8260         hpux*)
8261                 # hpux doesn't like the default, either.
8262                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8263                 ;;
8264         *)
8265                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8266                 ;;
8267         esac
8268         case "$xxx" in
8269         '') ;;
8270         *)
8271                 # Only add $xxx if it isn't already in ccdlflags.
8272                 case " $ccdlflags " in
8273                 *" $xxx "*)     ;;
8274                 *)      ccdlflags="$ccdlflags $xxx"
8275                         cat <<EOM >&4
8276
8277 Adding $xxx to the flags
8278 passed to $ld so that the perl executable will find the
8279 installed shared $libperl.
8280
8281 EOM
8282                         ;;
8283                 esac
8284                 ;;
8285         esac
8286 fi
8287 # Fix ccdlflags in AIX for building external extensions.
8288 # (For building Perl itself bare -bE:perl.exp is needed,
8289 #  Makefile.SH takes care of this.)
8290 case "$osname" in
8291 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8292 esac
8293 # Respect a hint or command-line value.
8294 case "$shrpenv" in
8295 '') shrpenv="$tmp_shrpenv" ;;
8296 esac
8297 case "$ldlibpthname" in
8298 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8299 none)   ldlibpthname='' ;;
8300 esac
8301
8302 : determine where manual pages are on this system
8303 echo " "
8304 case "$sysman" in
8305 '') 
8306         syspath='/usr/share/man/man1 /usr/man/man1'
8307         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8308         syspath="$syspath /usr/man/u_man/man1"
8309         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8310         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8311         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8312         sysman=`./loc . /usr/man/man1 $syspath`
8313         ;;
8314 esac
8315 if $test -d "$sysman"; then
8316         echo "System manual is in $sysman." >&4
8317 else
8318         echo "Could not find manual pages in source form." >&4
8319 fi
8320
8321 : determine where manual pages go
8322 set man1dir man1dir none
8323 eval $prefixit
8324 $cat <<EOM
8325
8326 $spackage has manual pages available in source form.
8327 EOM
8328 case "$nroff" in
8329 nroff)
8330         echo "However, you don't have nroff, so they're probably useless to you."
8331         case "$man1dir" in
8332         '') man1dir="none";;
8333         esac;;
8334 esac
8335 echo "If you don't want the manual sources installed, answer 'none'."
8336 case "$man1dir" in
8337 ' ') dflt=none
8338         ;;
8339 '')
8340         lookpath="$prefixexp/share/man/man1"
8341         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8342         lookpath="$lookpath $prefixexp/man/p_man/man1"
8343         lookpath="$lookpath $prefixexp/man/u_man/man1"
8344         lookpath="$lookpath $prefixexp/man/man.1"
8345         case "$sysman" in
8346         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8347         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8348         esac
8349         set dflt
8350         eval $prefixup
8351         ;;
8352 *)  dflt="$man1dir"
8353         ;;
8354 esac
8355 echo " "
8356 fn=dn+~
8357 rp="Where do the main $spackage manual pages (source) go?"
8358 . ./getfile
8359 if $test "X$man1direxp" != "X$ansexp"; then
8360         installman1dir=''
8361 fi
8362 prefixvar=man1dir
8363 . ./setprefixvar
8364
8365 case "$man1dir" in
8366 '')     man1dir=' '
8367         installman1dir='';;
8368 esac
8369
8370 : What suffix to use on installed man pages
8371
8372 case "$man1dir" in
8373 ' ')
8374         man1ext='0'
8375         ;;
8376 *)
8377         rp="What suffix should be used for the main $spackage man pages?"
8378         case "$man1ext" in
8379         '')     case "$man1dir" in
8380                 *1)  dflt=1 ;;
8381                 *1p) dflt=1p ;;
8382                 *1pm) dflt=1pm ;;
8383                 *l) dflt=l;;
8384                 *n) dflt=n;;
8385                 *o) dflt=o;;
8386                 *p) dflt=p;;
8387                 *C) dflt=C;;
8388                 *L) dflt=L;;
8389                 *L1) dflt=L1;;
8390                 *) dflt=1;;
8391                 esac
8392                 ;;
8393         *)      dflt="$man1ext";;
8394         esac
8395         . ./myread
8396         man1ext="$ans"
8397         ;;
8398 esac
8399
8400 : see if we can have long filenames
8401 echo " "
8402 first=123456789abcdef
8403 $rm -f $first
8404 if (echo hi >$first) 2>/dev/null; then
8405         if $test -f 123456789abcde; then
8406                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8407                 val="$undef"
8408         else
8409                 echo 'You can have filenames longer than 14 characters.'>&4
8410                 val="$define"
8411         fi
8412 else
8413         $cat <<'EOM'
8414 You can't have filenames longer than 14 chars.
8415 You can't even think about them!
8416 EOM
8417         val="$undef"
8418 fi
8419 set d_flexfnam
8420 eval $setvar
8421 $rm -rf 123456789abcde*
8422
8423 : determine where library module manual pages go
8424 set man3dir man3dir none
8425 eval $prefixit
8426 $cat <<EOM
8427
8428 $spackage has manual pages for many of the library modules.
8429 EOM
8430
8431 case "$nroff" in
8432 nroff)
8433         $cat <<'EOM'
8434 However, you don't have nroff, so they're probably useless to you.
8435 EOM
8436         case "$man3dir" in
8437         '') man3dir="none";;
8438         esac;;
8439 esac
8440
8441 case "$d_flexfnam" in
8442 undef)
8443         $cat <<'EOM'
8444 However, your system can't handle the long file names like File::Basename.3.
8445 EOM
8446         case "$man3dir" in
8447         '') man3dir="none";;
8448         esac;;
8449 esac
8450
8451 echo "If you don't want the manual sources installed, answer 'none'."
8452 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8453 case "$man3dir" in
8454 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8455         if $test -d "$privlib/man/man3"; then
8456                 cat <<EOM >&4
8457
8458 WARNING:  Previous versions of perl installed man3 pages into
8459 $privlib/man/man3.  This version will suggest a
8460 new default of $dflt.
8461 EOM
8462                 tdflt=$dflt
8463                 dflt='n'
8464                 rp='Do you wish to preserve the old behavior?(y/n)'
8465                 . ./myread
8466                 case "$ans" in
8467                 y*) dflt="$privlib/man/man3" ;;
8468                 *)  dflt=$tdflt ;;
8469                 esac
8470     fi
8471         ;;
8472 *)      dflt="$man3dir" ;;
8473 esac
8474 case "$dflt" in
8475 ' ') dflt=none ;;
8476 esac
8477 echo " "
8478 fn=dn+~
8479 rp="Where do the $package library man pages (source) go?"
8480 . ./getfile
8481 prefixvar=man3dir
8482 . ./setprefixvar
8483
8484 case "$man3dir" in
8485 '')     man3dir=' '
8486         installman3dir='';;
8487 esac
8488
8489 : What suffix to use on installed man pages
8490 case "$man3dir" in
8491 ' ')
8492         man3ext='0'
8493         ;;
8494 *)
8495         rp="What suffix should be used for the $package library man pages?"
8496         case "$man3ext" in
8497         '')     case "$man3dir" in
8498                 *3)  dflt=3 ;;
8499                 *3p) dflt=3p ;;
8500                 *3pm) dflt=3pm ;;
8501                 *l) dflt=l;;
8502                 *n) dflt=n;;
8503                 *o) dflt=o;;
8504                 *p) dflt=p;;
8505                 *C) dflt=C;;
8506                 *L) dflt=L;;
8507                 *L3) dflt=L3;;
8508                 *) dflt=3;;
8509                 esac
8510                 ;;
8511         *)      dflt="$man3ext";;
8512         esac
8513         . ./myread
8514         man3ext="$ans"
8515         ;;
8516 esac
8517
8518 : see if we have to deal with yellow pages, now NIS.
8519 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8520         if $test -f /usr/etc/nibindd; then
8521                 echo " "
8522                 echo "I'm fairly confident you're on a NeXT."
8523                 echo " "
8524                 rp='Do you get the hosts file via NetInfo?'
8525                 dflt=y
8526                 case "$hostcat" in
8527                 nidump*) ;;
8528                 '') ;;
8529                 *) dflt=n;;
8530                 esac
8531                 . ./myread
8532                 case "$ans" in
8533                 y*) hostcat='nidump hosts .';;
8534                 *)      case "$hostcat" in
8535                         nidump*) hostcat='';;
8536                         esac
8537                         ;;
8538                 esac
8539         fi
8540         case "$hostcat" in
8541         nidump*) ;;
8542         *)
8543                 case "$hostcat" in
8544                 *ypcat*) dflt=y;;
8545                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8546                                 dflt=y
8547                         else
8548                                 dflt=n
8549                         fi;;
8550                 *) dflt=n;;
8551                 esac
8552                 echo " "
8553                 rp='Are you getting the hosts file via yellow pages?'
8554                 . ./myread
8555                 case "$ans" in
8556                 y*) hostcat='ypcat hosts';;
8557                 *) hostcat='cat /etc/hosts';;
8558                 esac
8559                 ;;
8560         esac
8561 fi
8562 case "$hostcat" in
8563 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8564 esac
8565 case "$groupcat" in
8566 '') test -f /etc/group && groupcat='cat /etc/group';;
8567 esac
8568 case "$passcat" in
8569 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8570 esac
8571
8572 : now get the host name
8573 echo " "
8574 echo "Figuring out host name..." >&4
8575 case "$myhostname" in
8576 '') cont=true
8577         echo 'Maybe "hostname" will work...'
8578         if tans=`sh -c hostname 2>&1` ; then
8579                 myhostname=$tans
8580                 phostname=hostname
8581                 cont=''
8582         fi
8583         ;;
8584 *) cont='';;
8585 esac
8586 if $test "$cont"; then
8587         if ./xenix; then
8588                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8589                 if tans=`cat /etc/systemid 2>&1` ; then
8590                         myhostname=$tans
8591                         phostname='cat /etc/systemid'
8592                         echo "Whadyaknow.  Xenix always was a bit strange..."
8593                         cont=''
8594                 fi
8595         elif $test -r /etc/systemid; then
8596                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8597         fi
8598 fi
8599 if $test "$cont"; then
8600         echo 'No, maybe "uuname -l" will work...'
8601         if tans=`sh -c 'uuname -l' 2>&1` ; then
8602                 myhostname=$tans
8603                 phostname='uuname -l'
8604         else
8605                 echo 'Strange.  Maybe "uname -n" will work...'
8606                 if tans=`sh -c 'uname -n' 2>&1` ; then
8607                         myhostname=$tans
8608                         phostname='uname -n'
8609                 else
8610                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8611                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8612                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8613                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8614                         else
8615                                 case "$myhostname" in
8616                                 '') echo "Does this machine have an identity crisis or something?"
8617                                         phostname='';;
8618                                 *)
8619                                         echo "Well, you said $myhostname before..."
8620                                         phostname='echo $myhostname';;
8621                                 esac
8622                         fi
8623                 fi
8624         fi
8625 fi
8626 case "$myhostname" in
8627 '') myhostname=noname ;;
8628 esac
8629 : you do not want to know about this
8630 set $myhostname
8631 myhostname=$1
8632
8633 : verify guess
8634 if $test "$myhostname" ; then
8635         dflt=y
8636         rp='Your host name appears to be "'$myhostname'".'" Right?"
8637         . ./myread
8638         case "$ans" in
8639         y*) ;;
8640         *) myhostname='';;
8641         esac
8642 fi
8643
8644 : bad guess or no guess
8645 while $test "X$myhostname" = X ; do
8646         dflt=''
8647         rp="Please type the (one word) name of your host:"
8648         . ./myread
8649         myhostname="$ans"
8650 done
8651
8652 : translate upper to lower if necessary
8653 case "$myhostname" in
8654 *[A-Z]*)
8655         echo "(Normalizing case in your host name)"
8656         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8657         ;;
8658 esac
8659
8660 case "$myhostname" in
8661 *.*)
8662         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8663         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8664         echo "(Trimming domain name from host name--host name is now $myhostname)"
8665         ;;
8666 *) case "$mydomain" in
8667         '')
8668                 {
8669                         test "X$hostcat" = "Xypcat hosts" &&
8670                         ypmatch "$myhostname" hosts 2>/dev/null |\
8671                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8672                         $test -s hosts
8673                 } || {
8674                         test "X$hostcat" != "X" &&
8675                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8676                                         /[       ]$myhostname[  . ]/p" > hosts
8677                 }
8678                 tmp_re="[       . ]"
8679                 if $test -f hosts; then
8680                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8681                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8682                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8683                                 hosts | $sort | $uniq | \
8684                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8685                         case `$echo X$dflt` in
8686                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8687                                 dflt=.
8688                                 ;;
8689                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8690                                 ;;
8691                         esac
8692                 else
8693                         echo "(I cannot locate a hosts database anywhere)"
8694                         dflt=.
8695                 fi
8696                 case "$dflt" in
8697                 .)
8698                         tans=`./loc resolv.conf X /etc /usr/etc`
8699                         if $test -f "$tans"; then
8700                                 echo "(Attempting domain name extraction from $tans)"
8701                                 dflt=.`$sed -n -e 's/   / /g' \
8702                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8703                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8704                                 case "$dflt" in
8705                                 .) dflt=.`$sed -n -e 's/        / /g' \
8706                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8707                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8708                                         ;;
8709                                 esac
8710                         fi
8711                         ;;
8712                 esac
8713                 case "$dflt" in
8714                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8715                         dflt=.`sh -c domainname 2>/dev/null`
8716                         case "$dflt" in
8717                         '') dflt='.';;
8718                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8719                         esac
8720                         ;;
8721                 esac
8722                 case "$dflt$osname" in
8723                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8724                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8725                         ;;
8726                 esac
8727                 case "$dflt" in
8728                 .) echo "(Lost all hope -- silly guess then)"
8729                         dflt='.nonet'
8730                         ;;
8731                 esac
8732                 $rm -f hosts
8733                 ;;
8734         *) dflt="$mydomain";;
8735         esac;;
8736 esac
8737 echo " "
8738 rp="What is your domain name?"
8739 . ./myread
8740 tans="$ans"
8741 case "$ans" in
8742 '') ;;
8743 .*) ;;
8744 *) tans=".$tans";;
8745 esac
8746 mydomain="$tans"
8747
8748 : translate upper to lower if necessary
8749 case "$mydomain" in
8750 *[A-Z]*)
8751         echo "(Normalizing case in your domain name)"
8752         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8753         ;;
8754 esac
8755
8756 : a little sanity check here
8757 case "$phostname" in
8758 '') ;;
8759 *)
8760         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8761         $myhostname$mydomain|$myhostname) ;;
8762         *)
8763                 case "$phostname" in
8764                 sed*)
8765                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8766                         ;;
8767                 *)
8768                         echo "(That doesn't agree with your $phostname command, by the way.)"
8769                         ;;
8770                 esac
8771         ;;
8772         esac
8773         ;;
8774 esac
8775
8776 : determine the e-mail address of the user who is running us
8777 $cat <<EOM
8778
8779 I need to get your e-mail address in Internet format if possible, i.e.
8780 something like user@host.domain. Please answer accurately since I have
8781 no easy means to double check it. The default value provided below
8782 is most probably close to reality but may not be valid from outside
8783 your organization...
8784
8785 EOM
8786 cont=x
8787 while test "$cont"; do
8788         case "$cf_email" in
8789         '') dflt="$cf_by@$myhostname$mydomain";;
8790         *) dflt="$cf_email";;
8791         esac
8792         rp='What is your e-mail address?'
8793         . ./myread
8794         cf_email="$ans"
8795         case "$cf_email" in
8796         *@*.*) cont='' ;;
8797         *)
8798                 rp='Address does not look like an Internet one.  Use it anyway?'
8799                 case "$fastread" in
8800                 yes) dflt=y ;;
8801                 *) dflt=n ;;
8802                 esac
8803                 . ./myread
8804                 case "$ans" in
8805                 y*) cont='' ;;
8806                 *) echo " " ;;
8807                 esac
8808                 ;;
8809         esac
8810 done
8811
8812 : Ask e-mail of administrator
8813 $cat <<EOM
8814
8815 If you or somebody else will be maintaining perl at your site, please
8816 fill in the correct e-mail address here so that they may be contacted
8817 if necessary. Currently, the "perlbug" program included with perl
8818 will send mail to this address in addition to perlbug@perl.org. You may
8819 enter "none" for no administrator.
8820
8821 EOM
8822 case "$perladmin" in
8823 '') dflt="$cf_email";;
8824 *) dflt="$perladmin";;
8825 esac
8826 rp='Perl administrator e-mail address'
8827 . ./myread
8828 perladmin="$ans"
8829
8830 : determine whether to only install version-specific parts.
8831 echo " "
8832 $cat <<EOM
8833 Do you want to install only the version-specific parts of the perl
8834 distribution?  Usually you do *not* want to do this.
8835 EOM
8836 case "$versiononly" in
8837 "$define"|[Yy]*|true) dflt='y' ;;
8838 *) dflt='n';
8839 esac
8840 rp="Do you want to install only the version-specific parts of perl?"
8841 . ./myread
8842 case "$ans" in
8843 [yY]*)  val="$define";;
8844 *)      val="$undef" ;;
8845 esac
8846 set versiononly
8847 eval $setvar
8848
8849 case "$versiononly" in
8850 "$define") inc_version_list=''
8851            inc_version_list_init=0
8852            ;;
8853 esac
8854
8855 : figure out how to guarantee perl startup
8856 : XXX Note that this currently takes advantage of the bug that binexp ignores
8857 :     the Configure -Dinstallprefix setting, which in turn means that under
8858 :     relocatable @INC, initialinstalllocation is what binexp started as.
8859 case "$startperl" in
8860 '')
8861         case "$sharpbang" in
8862         *!)
8863                 $cat <<EOH
8864
8865 I can use the #! construct to start perl on your system. This will
8866 make startup of perl scripts faster, but may cause problems if you
8867 want to share those scripts and perl is not in a standard place
8868 ($initialinstalllocation/perl) on all your platforms. The alternative
8869 is to force a shell by starting the script with a single ':' character.
8870
8871 EOH
8872                 case "$versiononly" in
8873                 "$define")      dflt="$initialinstalllocation/perl$version";;
8874                 *)              dflt="$initialinstalllocation/perl";;
8875                 esac
8876                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8877                 . ./myread
8878                 case "$ans" in
8879                 none)   startperl=": # use perl";;
8880                 *)      startperl="#!$ans"
8881                         if $test 30 -lt `echo "$ans" | wc -c`; then
8882                                 $cat >&4 <<EOM
8883
8884 WARNING:  Some systems limit the #! command to 32 characters.
8885 If you experience difficulty running Perl scripts with #!, try
8886 installing Perl in a directory with a shorter pathname.
8887
8888 EOM
8889                         fi ;;
8890                 esac
8891                 ;;
8892         *) startperl=": # use perl"
8893                 ;;
8894         esac
8895         ;;
8896 esac
8897 echo "I'll use $startperl to start perl scripts."
8898
8899 : figure best path for perl in scripts
8900 case "$perlpath" in
8901 '')
8902         case "$versiononly" in
8903         "$define")      perlpath="$initialinstalllocation/perl$version";;
8904         *)              perlpath="$initialinstalllocation/perl";;
8905         esac
8906         case "$startperl" in
8907         *!*) ;;
8908         *)
8909                 $cat <<EOH
8910
8911 I will use the "eval 'exec'" idiom to start Perl on your system.
8912 I can use the full path of your Perl binary for this purpose, but
8913 doing so may cause problems if you want to share those scripts and
8914 Perl is not always in a standard place ($initialinstalllocation/perl).
8915
8916 EOH
8917                 dflt="$initialinstalllocation/perl"
8918                 rp="What path shall I use in \"eval 'exec'\"?"
8919                 . ./myread
8920                 perlpath="$ans"
8921                 ;;
8922         esac
8923         ;;
8924 esac
8925 case "$startperl" in
8926 *!*)    ;;
8927 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8928 esac
8929
8930 : determine where public executable scripts go
8931 set scriptdir scriptdir
8932 eval $prefixit
8933 case "$scriptdir" in
8934 '')
8935         dflt="$bin"
8936         : guess some guesses
8937         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8938         $test -d /usr/share/bin     && dflt=/usr/share/bin
8939         $test -d /usr/local/script  && dflt=/usr/local/script
8940         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8941         $test -d $prefixexp/script  && dflt=$prefixexp/script
8942         set dflt
8943         eval $prefixup
8944         ;;
8945 *)  dflt="$scriptdir"
8946         ;;
8947 esac
8948 $cat <<EOM
8949
8950 Some installations have a separate directory just for executable scripts so
8951 that they can mount it across multiple architectures but keep the scripts in
8952 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8953 Or you might just lump your scripts in with all your other executables.
8954
8955 EOM
8956 fn=d~
8957 rp='Where do you keep publicly executable scripts?'
8958 . ./getfile
8959 if $test "X$ansexp" != "X$scriptdirexp"; then
8960         installscript=''
8961 fi
8962 installscriptdir=''
8963 prefixvar=scriptdir
8964 . ./setprefixvar
8965 : A little fix up for an irregularly named variable.
8966 installscript="$installscriptdir"
8967
8968 : determine where add-on public executables go
8969 case "$sitebin" in
8970 '')     dflt=$siteprefix/bin ;;
8971 *)      dflt=$sitebin ;;
8972 esac
8973 fn=d~
8974 rp='Pathname where the add-on public executables should be installed?'
8975 . ./getfile
8976 prefixvar=sitebin
8977 . ./setprefixvar
8978
8979 : determine where add-on html pages go
8980 : There is no standard location, so try to copy the previously-selected
8981 : directory structure for the core html pages.
8982 case "$sitehtml1dir" in
8983 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8984 *)     dflt=$sitehtml1dir ;;
8985 esac
8986 case "$dflt" in
8987 ''|' ') dflt=none ;;
8988 esac
8989 fn=dn+~
8990 rp='Pathname where the site-specific html pages should be installed?'
8991 . ./getfile
8992 prefixvar=sitehtml1dir
8993 . ./setprefixvar
8994
8995 : determine where add-on library html pages go
8996 : There is no standard location, so try to copy the previously-selected
8997 : directory structure for the core html pages.
8998 case "$sitehtml3dir" in
8999 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
9000 *)     dflt=$sitehtml3dir ;;
9001 esac
9002 case "$dflt" in
9003 ''|' ') dflt=none ;;
9004 esac
9005 fn=dn+~
9006 rp='Pathname where the site-specific library html pages should be installed?'
9007 . ./getfile
9008 prefixvar=sitehtml3dir
9009 . ./setprefixvar
9010
9011 : determine where add-on manual pages go
9012 case "$siteman1dir" in
9013 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
9014 *)      dflt=$siteman1dir ;;
9015 esac
9016 case "$dflt" in
9017 ''|' ') dflt=none ;;
9018 esac
9019 fn=dn+~
9020 rp='Pathname where the site-specific manual pages should be installed?'
9021 . ./getfile
9022 prefixvar=siteman1dir
9023 . ./setprefixvar
9024
9025 : determine where add-on library man pages go
9026 case "$siteman3dir" in
9027 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
9028 *)      dflt=$siteman3dir ;;
9029 esac
9030 case "$dflt" in
9031 ''|' ') dflt=none ;;
9032 esac
9033 fn=dn+~
9034 rp='Pathname where the site-specific library manual pages should be installed?'
9035 . ./getfile
9036 prefixvar=siteman3dir
9037 . ./setprefixvar
9038
9039 : determine where add-on public executable scripts go
9040 case "$sitescript" in
9041 '')     dflt=$siteprefix/script
9042         $test -d $dflt || dflt=$sitebin ;;
9043 *)  dflt="$sitescript" ;;
9044 esac
9045 fn=d~+
9046 rp='Pathname where add-on public executable scripts should be installed?'
9047 . ./getfile
9048 prefixvar=sitescript
9049 . ./setprefixvar
9050
9051 : Check if faststdio is requested and available
9052 case "$usefaststdio" in
9053 $define|true|[yY]*|'')
9054         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
9055         case "$xversion" in
9056         [68])   dflt='y' ;;
9057         *)      dflt='n' ;;
9058         esac
9059         ;;
9060 *) dflt='n';;
9061 esac
9062 cat <<EOM
9063
9064 Perl can be built to use 'fast stdio', which means using the stdio
9065 library but also directly manipulating the stdio buffers to enable
9066 faster I/O.  Using stdio is better for backward compatibility (especially
9067 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
9068 interface has been preferred instead of stdio.
9069
9070 If this doesn't make any sense to you, just accept the default '$dflt'.
9071 EOM
9072 rp='Use the "fast stdio" if available?'
9073 . ./myread
9074 case "$ans" in
9075 y|Y)    val="$define" ;;
9076 *)      val="$undef" ;;
9077 esac
9078 set usefaststdio
9079 eval $setvar
9080
9081
9082 : define an is-a-typedef? function
9083 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9084 case "$inclist" in
9085 "") inclist="sys/types.h";;
9086 esac;
9087 eval "varval=\$$var";
9088 case "$varval" in
9089 "")
9090         $rm -f temp.c;
9091         for inc in $inclist; do
9092                 echo "#include <$inc>" >>temp.c;
9093         done;
9094         echo "#ifdef $type" >> temp.c;
9095         echo "printf(\"We have $type\");" >> temp.c;
9096         echo "#endif" >> temp.c;
9097         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9098         if $contains $type temp.E >/dev/null 2>&1; then
9099                 eval "$var=\$type";
9100         else
9101                 eval "$var=\$def";
9102         fi;
9103         $rm -f temp.?;;
9104 *) eval "$var=\$varval";;
9105 esac'
9106
9107 : define an is-a-typedef? function that prompts if the type is not available.
9108 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9109 case "$inclist" in
9110 "") inclist="sys/types.h";;
9111 esac;
9112 eval "varval=\$$var";
9113 case "$varval" in
9114 "")
9115         $rm -f temp.c;
9116         for inc in $inclist; do
9117                 echo "#include <$inc>" >>temp.c;
9118         done;
9119         echo "#ifdef $type" >> temp.c;
9120         echo "printf(\"We have $type\");" >> temp.c;
9121         echo "#endif" >> temp.c;
9122         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9123         echo " " ;
9124         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9125         if $contains $type temp.E >/dev/null 2>&1; then
9126                 echo "$type found." >&4;
9127                 eval "$var=\$type";
9128         else
9129                 echo "$type NOT found." >&4;
9130                 dflt="$def";
9131                 . ./myread ;
9132                 eval "$var=\$ans";
9133         fi;
9134         $rm -f temp.?;;
9135 *) eval "$var=\$varval";;
9136 esac'
9137
9138 : see what type lseek is declared as in the kernel
9139 rp="What is the type used for lseek's offset on this system?"
9140 set off_t lseektype long stdio.h sys/types.h
9141 eval $typedef_ask
9142
9143 echo " "
9144 echo "Checking to see how big your file offsets are..." >&4
9145 $cat >try.c <<EOCP
9146 #include <sys/types.h>
9147 #include <stdio.h>
9148 int main()
9149 {
9150     printf("%d\n", (int)sizeof($lseektype));
9151     return(0);
9152 }
9153 EOCP
9154 set try
9155 if eval $compile_ok; then
9156         lseeksize=`$run ./try`
9157         echo "Your file offsets are $lseeksize bytes long."
9158 else
9159         dflt=$longsize
9160         echo " "
9161         echo "(I can't seem to compile the test program.  Guessing...)"
9162         rp="What is the size of your file offsets (in bytes)?"
9163         . ./myread
9164         lseeksize="$ans"
9165 fi
9166 $rm_try
9167
9168 : see what type file positions are declared as in the library
9169 rp="What is the type for file position used by fsetpos()?"
9170 set fpos_t fpostype long stdio.h sys/types.h
9171 eval $typedef_ask
9172
9173 : Check size for Fpos_t
9174 echo " "
9175 case "$fpostype" in
9176 *_t) zzz="$fpostype"    ;;
9177 *)   zzz="fpos_t"       ;;
9178 esac
9179 echo "Checking the size of $zzz..." >&4
9180 cat > try.c <<EOCP
9181 #include <sys/types.h>
9182 #include <stdio.h>
9183 #$i_stdlib I_STDLIB
9184 #ifdef I_STDLIB
9185 #include <stdlib.h>
9186 #endif
9187 int main() {
9188     printf("%d\n", (int)sizeof($fpostype));
9189     exit(0);
9190 }
9191 EOCP
9192 set try
9193 if eval $compile_ok; then
9194         yyy=`$run ./try`
9195         case "$yyy" in
9196         '')     fpossize=4
9197                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9198                 ;;
9199         *)      fpossize=$yyy
9200                 echo "Your $zzz is $fpossize bytes long."
9201                 ;;
9202         esac
9203 else
9204         dflt="$longsize"
9205         echo " " >&4
9206         echo "(I can't compile the test program.  Guessing...)" >&4
9207         rp="What is the size of your file positions (in bytes)?"
9208         . ./myread
9209         fpossize="$ans"
9210 fi
9211
9212 : Check for large file support
9213 # Backward compatibility (uselfs is deprecated).
9214 case "$uselfs" in
9215 "$define"|true|[yY]*)
9216         cat <<EOM >&4
9217
9218 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9219 EOM
9220         uselargefiles="$define"
9221         ;;
9222 esac
9223
9224 case "$lseeksize:$fpossize" in
9225 8:8) cat <<EOM
9226
9227 You can have files larger than 2 gigabytes.
9228 EOM
9229    val="$define" ;;
9230 *)    case "$uselargefiles" in
9231    "$undef"|false|[nN]*) dflt='n' ;;
9232    *)   dflt='y' ;;
9233    esac
9234    cat <<EOM
9235
9236 Perl can be built to understand large files (files larger than 2 gigabytes)
9237 on some systems.  To do so, Configure can be run with -Duselargefiles.
9238
9239 If this doesn't make any sense to you, just accept the default '$dflt'.
9240 EOM
9241    rp='Try to understand large files, if available?'
9242    . ./myread
9243    case "$ans" in
9244    y|Y)         val="$define" ;;
9245    *)           val="$undef"  ;;
9246    esac
9247    ;;
9248 esac
9249 set uselargefiles
9250 eval $setvar
9251 : Look for a hint-file generated 'call-back-unit'.  If the
9252 : user has specified that a large files perl is to be built,
9253 : we may need to set or change some other defaults.
9254 if $test -f uselargefiles.cbu; then
9255         echo "Your platform has some specific hints regarding large file builds, using them..."
9256         . ./uselargefiles.cbu
9257 fi
9258 case "$uselargefiles" in
9259 "$define")
9260         if $test -f uselargefiles.cbu; then
9261                 echo " "
9262                 echo "Rechecking to see how big your file offsets are..." >&4
9263                 $cat >try.c <<EOCP
9264 #include <sys/types.h>
9265 #include <stdio.h>
9266 int main()
9267 {
9268     printf("%d\n", (int)sizeof($lseektype));
9269     return(0);
9270 }
9271 EOCP
9272                 set try
9273                 if eval $compile_ok; then
9274                         lseeksize=`$run ./try`
9275                         $echo "Your file offsets are now $lseeksize bytes long."
9276                 else
9277                         dflt="$lseeksize"
9278                         echo " "
9279                         echo "(I can't seem to compile the test program.  Guessing...)"
9280                         rp="What is the size of your file offsets (in bytes)?"
9281                         . ./myread
9282                         lseeksize="$ans"
9283                 fi
9284                 case "$fpostype" in
9285                 *_t) zzz="$fpostype"    ;;
9286                 *)   zzz="fpos_t"       ;;
9287                 esac
9288                 $echo $n "Rechecking the size of $zzz...$c" >&4
9289                 $cat > try.c <<EOCP
9290 #include <sys/types.h>
9291 #include <stdio.h>
9292 #$i_stdlib I_STDLIB
9293 #ifdef I_STDLIB
9294 #include <stdlib.h>
9295 #endif
9296 int main() {
9297     printf("%d\n", (int)sizeof($fpostype));
9298     return(0);
9299 }
9300 EOCP
9301                 set try
9302                 if eval $compile_ok; then
9303                         yyy=`$run ./try`
9304                         dflt="$lseeksize"
9305                         case "$yyy" in
9306                         '')     echo " "
9307                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9308                                 ;;
9309                         *)      fpossize=$yyy
9310                                 echo " $fpossize bytes." >&4
9311                                 ;;
9312                         esac
9313                 else
9314                         dflt="$fpossize"
9315                         echo " "
9316                         echo "(I can't compile the test program.  Guessing...)" >&4
9317                         rp="What is the size of your file positions (in bytes)?"
9318                         . ./myread
9319                         fpossize="$ans"
9320                 fi
9321                 $rm_try
9322         fi
9323         ;;
9324 esac
9325
9326 : Set the vendorbin variables
9327 case "$vendorprefix" in
9328 '')     d_vendorbin="$undef"
9329         vendorbin=''
9330         vendorbinexp=''
9331         ;;
9332 *)      d_vendorbin="$define"
9333         : determine where vendor-supplied executables go.
9334         case "$vendorbin" in
9335         '') dflt=$vendorprefix/bin ;;
9336         *)      dflt="$vendorbin" ;;
9337         esac
9338         fn=d~+
9339         rp='Pathname for the vendor-supplied executables directory?'
9340         . ./getfile
9341         vendorbin="$ans"
9342         vendorbinexp="$ansexp"
9343         ;;
9344 esac
9345 prefixvar=vendorbin
9346 . ./installprefix
9347
9348 : Set the vendorhtml1dir variables
9349 case "$vendorprefix" in
9350 '')     vendorhtml1dir=''
9351         vendorhtml1direxp=''
9352         ;;
9353 *)      : determine where vendor-supplied html pages go.
9354         : There is no standard location, so try to copy the previously-selected
9355         : directory structure for the core html pages.
9356         : XXX Better default suggestions would be welcome.
9357         case "$vendorhtml1dir" in
9358         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9359         *)      dflt=$vendorhtml1dir ;;
9360         esac
9361         case "$dflt" in
9362         ''|' ') dflt=none ;;
9363         esac
9364         fn=dn+~
9365         rp='Pathname for the vendor-supplied html pages?'
9366         . ./getfile
9367         vendorhtml1dir="$ans"
9368         vendorhtml1direxp="$ansexp"
9369         ;;
9370 esac
9371 : Use ' ' for none so value is preserved next time through Configure
9372 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9373 prefixvar=vendorhtml1dir
9374 . ./installprefix
9375
9376 : Set the vendorhtml3dir variables
9377 case "$vendorprefix" in
9378 '')     vendorhtml3dir=''
9379         vendorhtml3direxp=''
9380         ;;
9381 *)      : determine where vendor-supplied module html pages go.
9382         : There is no standard location, so try to copy the previously-selected
9383         : directory structure for the core html pages.
9384         : XXX Better default suggestions would be welcome.
9385         case "$vendorhtml3dir" in
9386         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9387         *)      dflt=$vendorhtml3dir ;;
9388         esac
9389         case "$dflt" in
9390         ''|' ') dflt=none ;;
9391         esac
9392         fn=dn+~
9393         rp='Pathname for the vendor-supplied html pages?'
9394         . ./getfile
9395         vendorhtml3dir="$ans"
9396         vendorhtml3direxp="$ansexp"
9397         ;;
9398 esac
9399 : Use ' ' for none so value is preserved next time through Configure
9400 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9401 prefixvar=vendorhtml3dir
9402 . ./installprefix
9403
9404 : Set the vendorman1dir variables
9405 case "$vendorprefix" in
9406 '')     vendorman1dir=''
9407         vendorman1direxp=''
9408         ;;
9409 *)      : determine where vendor-supplied manual pages go.
9410         case "$vendorman1dir" in
9411         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9412         *)      dflt=$vendorman1dir ;;
9413         esac
9414         case "$dflt" in
9415         ''|' ') dflt=none ;;
9416         esac
9417         fn=nd~+
9418         rp='Pathname for the vendor-supplied manual section 1 pages?'
9419         . ./getfile
9420         vendorman1dir="$ans"
9421         vendorman1direxp="$ansexp"
9422         ;;
9423 esac
9424 : Use ' ' for none so value is preserved next time through Configure
9425 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9426 prefixvar=vendorman1dir
9427 . ./installprefix
9428
9429 : Set the vendorman3dir variables
9430 case "$vendorprefix" in
9431 '')     vendorman3dir=''
9432         vendorman3direxp=''
9433         ;;
9434 *)      : determine where vendor-supplied module manual pages go.
9435         case "$vendorman3dir" in
9436         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9437         *)      dflt=$vendorman3dir ;;
9438         esac
9439         case "$dflt" in
9440         ''|' ') dflt=none ;;
9441         esac
9442         fn=nd~+
9443         rp='Pathname for the vendor-supplied manual section 3 pages?'
9444         . ./getfile
9445         vendorman3dir="$ans"
9446         vendorman3direxp="$ansexp"
9447         ;;
9448 esac
9449 : Use ' ' for none so value is preserved next time through Configure
9450 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9451 prefixvar=vendorman3dir
9452 . ./installprefix
9453
9454 : Set the vendorscript variables
9455 case "$vendorprefix" in
9456 '')     d_vendorscript="$undef"
9457         vendorscript=''
9458         vendorscriptexp=''
9459         ;;
9460 *)      d_vendorscript="$define"
9461         : determine where vendor-supplied scripts go.
9462         case "$vendorscript" in
9463         '')     dflt=$vendorprefix/script
9464                 $test -d $dflt || dflt=$vendorbin ;;
9465         *)  dflt="$vendorscript" ;;
9466         esac
9467         $cat <<EOM
9468
9469 The installation process will create a directory for
9470 vendor-supplied scripts.
9471
9472 EOM
9473         fn=d~+
9474         rp='Pathname for the vendor-supplied scripts directory?'
9475         . ./getfile
9476         vendorscript="$ans"
9477         vendorscriptexp="$ansexp"
9478         ;;
9479 esac
9480 prefixvar=vendorscript
9481 . ./installprefix
9482
9483 : see if qgcvt exists
9484 set qgcvt d_qgcvt
9485 eval $inlibc
9486
9487 : Check print/scan long double stuff
9488 echo " "
9489
9490 if $test X"$d_longdbl" = X"$define"; then
9491
9492 echo "Checking how to print long doubles..." >&4
9493
9494 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9495         $cat >try.c <<'EOCP'
9496 #include <sys/types.h>
9497 #include <stdio.h>
9498 int main() {
9499   double d = 123.456;
9500   printf("%.3f\n", d);
9501 }
9502 EOCP
9503         set try
9504         if eval $compile; then
9505                 yyy=`$run ./try`
9506                 case "$yyy" in
9507                 123.456)
9508                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9509                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9510                         echo "We will use %f."
9511                         ;;
9512                 esac
9513         fi
9514 fi
9515
9516 if $test X"$sPRIfldbl" = X; then
9517         $cat >try.c <<'EOCP'
9518 #include <sys/types.h>
9519 #include <stdio.h>
9520 int main() {
9521   long double d = 123.456;
9522   printf("%.3Lf\n", d);
9523 }
9524 EOCP
9525         set try
9526         if eval $compile; then
9527                 yyy=`$run ./try`
9528                 case "$yyy" in
9529                 123.456)
9530                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9531                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9532                         echo "We will use %Lf."
9533                         ;;
9534                 esac
9535         fi
9536 fi
9537
9538 if $test X"$sPRIfldbl" = X; then
9539         $cat >try.c <<'EOCP'
9540 #include <sys/types.h>
9541 #include <stdio.h>
9542 int main() {
9543   long double d = 123.456;
9544   printf("%.3llf\n", d);
9545 }
9546 EOCP
9547         set try
9548         if eval $compile; then
9549                 yyy=`$run ./try`
9550                 case "$yyy" in
9551                 123.456)
9552                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9553                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9554                         echo "We will use %llf."
9555                         ;;
9556                 esac
9557         fi
9558 fi
9559
9560 if $test X"$sPRIfldbl" = X; then
9561         $cat >try.c <<'EOCP'
9562 #include <sys/types.h>
9563 #include <stdio.h>
9564 int main() {
9565   long double d = 123.456;
9566   printf("%.3lf\n", d);
9567 }
9568 EOCP
9569         set try
9570         if eval $compile; then
9571                 yyy=`$run ./try`
9572                 case "$yyy" in
9573                 123.456)
9574                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9575                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9576                         echo "We will use %lf."
9577                         ;;
9578                 esac
9579         fi
9580 fi
9581
9582 if $test X"$sPRIfldbl" = X; then
9583         echo "Cannot figure out how to print long doubles." >&4
9584 else
9585         sSCNfldbl=$sPRIfldbl    # expect consistency
9586 fi
9587
9588 $rm_try
9589
9590 fi # d_longdbl
9591
9592 case "$sPRIfldbl" in
9593 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9594         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9595         d_SCNfldbl="$undef";
9596         ;;
9597 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9598         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9599         d_SCNfldbl="$define";
9600         ;;
9601 esac
9602
9603 : Check how to convert floats to strings.
9604
9605 if test "X$d_Gconvert" = X; then
9606
9607 echo " "
9608 echo "Checking for an efficient way to convert floats to strings."
9609 echo " " > try.c
9610 case "$uselongdouble" in
9611 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9612 esac
9613 case "$d_longdbl" in
9614 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9615 esac
9616 case "$d_PRIgldbl" in
9617 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9618 esac
9619 $cat >>try.c <<EOP
9620 #ifdef TRY_gconvert
9621 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9622 char *myname = "gconvert";
9623 #endif
9624 #ifdef TRY_gcvt
9625 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9626 char *myname = "gcvt";
9627 #endif
9628 #ifdef TRY_qgcvt
9629 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9630 char *myname = "qgcvt";
9631 #define DOUBLETYPE long double
9632 #endif
9633 #ifdef TRY_sprintf
9634 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9635 #ifdef HAS_PRIgldbl
9636 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9637 #else
9638 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9639 #endif
9640 #else
9641 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9642 #endif
9643 char *myname = "sprintf";
9644 #endif
9645
9646 #ifndef DOUBLETYPE
9647 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9648 #define DOUBLETYPE long double
9649 #else
9650 #define DOUBLETYPE double
9651 #endif
9652 #endif
9653
9654 #include <stdio.h>
9655
9656 #define I_STDLIB $i_stdlib
9657 #ifdef I_STDLIB
9658 #include <stdlib.h>
9659 #endif
9660
9661 int
9662 checkit(expect, got)
9663 char *expect;
9664 char *got;
9665 {
9666     if (strcmp(expect, got)) {
9667                 printf("%s oddity:  Expected %s, got %s\n",
9668                         myname, expect, got);
9669                 exit(1);
9670         }
9671 }
9672
9673 int main()
9674 {
9675         char buf[64];
9676         buf[63] = '\0';
9677
9678         /* This must be 1st test on (which?) platform */
9679         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9680         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9681         checkit("0.1", buf);
9682
9683         Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9684         checkit("0.01", buf);
9685
9686         Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9687         checkit("0.001", buf);
9688
9689         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9690         checkit("0.0001", buf);
9691
9692         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9693         if (strlen(buf) > 5)
9694             checkit("9e-005", buf); /* for Microsoft ?? */
9695         else
9696             checkit("9e-05", buf);
9697
9698         Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9699         checkit("1", buf);
9700
9701         Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9702         checkit("1.1", buf);
9703
9704         Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9705         checkit("1.01", buf);
9706
9707         Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9708         checkit("1.001", buf);
9709
9710         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9711         checkit("1.0001", buf);
9712
9713         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9714         checkit("1.00001", buf);
9715
9716         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9717         checkit("1.000001", buf);
9718
9719         Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9720         checkit("0", buf);
9721
9722         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9723         checkit("-1", buf);
9724
9725         /* Some Linux gcvt's give 1.e+5 here. */
9726         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9727         checkit("100000", buf);
9728
9729         /* Some Linux gcvt's give -1.e+5 here. */
9730         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9731         checkit("-100000", buf);
9732
9733         Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9734         checkit("123.456", buf);
9735
9736         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9737         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9738         /* 34 should be enough to scare even long double
9739          * places into using the e notation. */
9740         if (strlen(buf) > 5)
9741             checkit("1e+034", buf); /* for Microsoft */
9742         else
9743             checkit("1e+34", buf);
9744
9745         /* For Perl, if you add additional tests here, also add them to
9746          * t/base/num.t for benefit of platforms not using Configure or
9747          * overriding d_Gconvert */
9748
9749         exit(0);
9750 }
9751 EOP
9752 : first add preferred functions to our list
9753 xxx_list=""
9754 for xxx_convert in $gconvert_preference; do
9755     case $xxx_convert in
9756     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9757     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9758     esac
9759 done
9760 : then add any others
9761 for xxx_convert in gconvert gcvt sprintf; do
9762     case "$xxx_list" in
9763     *$xxx_convert*) ;;
9764     *) xxx_list="$xxx_list $xxx_convert" ;;
9765     esac
9766 done
9767
9768 case "$d_longdbl$uselongdouble" in
9769 "$define$define")
9770     : again, add prefered functions to our list first
9771     xxx_ld_list=""
9772     for xxx_convert in $gconvert_ld_preference; do
9773         case $xxx_convert in
9774         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9775         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9776         esac
9777     done
9778     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9779     for xxx_convert in qgcvt sprintf $xxx_list; do
9780         case "$xxx_ld_list" in
9781         $xxx_convert*|*" $xxx_convert"*) ;;
9782         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9783         esac
9784     done
9785     : if sprintf cannot do long doubles, move it to the end
9786     if test "$d_PRIgldbl" != "$define"; then
9787         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9788     fi
9789     : if no qgcvt, remove it
9790     if test "$d_qgcvt" != "$define"; then
9791         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9792     fi
9793     : use the ld_list
9794     xxx_list="$xxx_ld_list"
9795     ;;
9796 esac
9797
9798 for xxx_convert in $xxx_list; do
9799         echo "Trying $xxx_convert..."
9800         $rm -f try try$_o core
9801         set try -DTRY_$xxx_convert
9802         if eval $compile; then
9803                 echo "$xxx_convert() found." >&4
9804                 if $run ./try; then
9805                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9806                         break;
9807                 else
9808                         echo "...But $xxx_convert didn't work as I expected."
9809                         xxx_convert=''
9810                 fi
9811         else
9812                 echo "$xxx_convert NOT found." >&4
9813         fi
9814 done
9815
9816 if test X$xxx_convert = X; then
9817     echo "*** WHOA THERE!!! ***" >&4
9818     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9819     xxx_convert=sprintf
9820 fi
9821
9822 case "$xxx_convert" in
9823 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9824 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9825 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9826 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9827    "$define$define$define")
9828       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9829    "$define$define$undef")
9830       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9831    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9832    esac
9833    ;;
9834 esac
9835
9836 fi
9837 $rm_try
9838
9839 : see if _fwalk exists
9840 set fwalk d__fwalk
9841 eval $inlibc
9842
9843 : Initialize h_fcntl
9844 h_fcntl=false
9845
9846 : Initialize h_sysfile
9847 h_sysfile=false
9848
9849 : access call always available on UNIX
9850 set access d_access
9851 eval $inlibc
9852
9853 : locate the flags for 'access()'
9854 case "$d_access" in
9855 "$define")
9856         echo " "
9857         $cat >access.c <<EOCP
9858 #include <sys/types.h>
9859 #ifdef I_FCNTL
9860 #include <fcntl.h>
9861 #endif
9862 #ifdef I_SYS_FILE
9863 #include <sys/file.h>
9864 #endif
9865 #ifdef I_UNISTD
9866 #include <unistd.h>
9867 #endif
9868 #$i_stdlib I_STDLIB
9869 #ifdef I_STDLIB
9870 #include <stdlib.h>
9871 #endif
9872 int main() {
9873         exit(R_OK);
9874 }
9875 EOCP
9876         : check sys/file.h first, no particular reason here
9877         if $test `./findhdr sys/file.h` && \
9878                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9879                 h_sysfile=true;
9880                 echo "<sys/file.h> defines the *_OK access constants." >&4
9881         elif $test `./findhdr fcntl.h` && \
9882                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9883                 h_fcntl=true;
9884                 echo "<fcntl.h> defines the *_OK access constants." >&4
9885         elif $test `./findhdr unistd.h` && \
9886                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9887                 echo "<unistd.h> defines the *_OK access constants." >&4
9888         else
9889                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9890         fi
9891         ;;
9892 esac
9893 $rm -f access*
9894
9895 : see if accessx exists
9896 set accessx d_accessx
9897 eval $inlibc
9898
9899 : see if aintl exists
9900 set aintl d_aintl
9901 eval $inlibc
9902
9903 : see if alarm exists
9904 set alarm d_alarm
9905 eval $inlibc
9906
9907 : see if POSIX threads are available
9908 set pthread.h i_pthread
9909 eval $inhdr
9910
9911 : define a fucntion to check prototypes
9912 $cat > protochk <<EOSH
9913 $startsh
9914 cc="$cc"
9915 optimize="$optimize"
9916 ccflags="$ccflags"
9917 prototype="$prototype"
9918 define="$define"
9919 rm_try="$rm_try"
9920 usethreads=$usethreads
9921 i_pthread=$i_pthread
9922 pthread_h_first=$pthread_h_first
9923 EOSH
9924
9925 $cat >> protochk <<'EOSH'
9926
9927 $rm_try
9928 foo="$1"
9929 shift
9930 while test $# -ge 2; do
9931         case "$1" in
9932                 $define) echo "#include <$2>" >> try.c ;;
9933                 literal) echo "$2" >> try.c ;;
9934         esac
9935     # Extra magic for the benefit of systems that need pthread.h
9936     # to be included early to correctly detect threadsafe functions.
9937     # Such functions must guarantee themselves, though, that the usethreads
9938     # and i_pthread have been defined, before calling protochk.
9939     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9940         echo "#include <pthread.h>" >> try.c
9941         pthread_h_done=yes
9942     fi
9943     shift 2
9944 done
9945 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9946 cat >> try.c <<'EOCP'
9947 #ifdef CAN_PROTOTYPE
9948 #define _(args) args
9949 #else
9950 #define _(args) ()
9951 #endif
9952 EOCP
9953 echo "$foo" >> try.c
9954 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9955 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9956 status=$?
9957 $rm_try
9958 exit $status
9959 EOSH
9960 chmod +x protochk
9961 $eunicefix protochk
9962
9963 : Define hasproto macro for Configure internal use
9964 hasproto='varname=$1; func=$2; shift; shift;
9965 while $test $# -ge 2; do
9966         case "$1" in
9967         $define) echo "#include <$2>";;
9968         esac ;
9969     shift 2;
9970 done > try.c;
9971 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9972 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9973         echo "$func() prototype found.";
9974         val="$define";
9975 else
9976         echo "$func() prototype NOT found.";
9977         val="$undef";
9978 fi;
9979 set $varname;
9980 eval $setvar;
9981 $rm_try tryout.c'
9982
9983 : see if sys/types.h has to be included
9984 set sys/types.h i_systypes
9985 eval $inhdr
9986
9987 : see if sys/select.h has to be included
9988 set sys/select.h i_sysselct
9989 eval $inhdr
9990
9991 : Define hasfield macro for Configure internal use
9992 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9993 while $test $# -ge 2; do
9994         case "$1" in
9995         $define) echo "#include <$2>";;
9996         esac ;
9997     shift 2;
9998 done > try.c;
9999 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
10000 set try;
10001 if eval $compile; then
10002         val="$define";
10003 else
10004         val="$undef";
10005 fi;
10006 set $varname;
10007 eval $setvar;
10008 $rm_try'
10009
10010 : see if we should include time.h, sys/time.h, or both
10011 echo " "
10012 if test "X$timeincl" = X; then
10013         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10014         $echo $n "I'm now running the test program...$c"
10015         $cat >try.c <<EOCP
10016 #include <sys/types.h>
10017 #ifdef I_TIME
10018 #include <time.h>
10019 #endif
10020 #ifdef I_SYSTIME
10021 #ifdef SYSTIMEKERNEL
10022 #define KERNEL
10023 #endif
10024 #include <sys/time.h>
10025 #endif
10026 #ifdef I_SYSSELECT
10027 #include <sys/select.h>
10028 #endif
10029 #$i_stdlib I_STDLIB
10030 #ifdef I_STDLIB
10031 #include <stdlib.h>
10032 #endif
10033 int main()
10034 {
10035         struct tm foo;
10036 #ifdef S_TIMEVAL
10037         struct timeval bar;
10038 #endif
10039 #ifdef S_TIMEZONE
10040         struct timezone tzp;
10041 #endif
10042         if (foo.tm_sec == foo.tm_sec)
10043                 exit(0);
10044 #ifdef S_TIMEVAL
10045         if (bar.tv_sec == bar.tv_sec)
10046                 exit(0);
10047 #endif
10048         exit(1);
10049 }
10050 EOCP
10051         flags=''
10052         for s_timezone in '-DS_TIMEZONE' ''; do
10053         sysselect=''
10054         for s_timeval in '-DS_TIMEVAL' ''; do
10055         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10056         for i_time in '' '-DI_TIME'; do
10057         for i_systime in '-DI_SYSTIME' ''; do
10058                 case "$flags" in
10059                 '') $echo $n ".$c"
10060                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10061                         if eval $compile; then
10062                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10063                                 shift
10064                                 flags="$*"
10065                                 echo " "
10066                                 $echo $n "Succeeded with $flags$c"
10067                         fi
10068                         ;;
10069                 esac
10070         done
10071         done
10072         done
10073         done
10074         done
10075         timeincl=''
10076         echo " "
10077         case "$flags" in
10078         *SYSTIMEKERNEL*) i_systimek="$define"
10079                 timeincl=`./findhdr sys/time.h`
10080                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10081         *) i_systimek="$undef";;
10082         esac
10083         case "$flags" in
10084         *I_TIME*) i_time="$define"
10085                 timeincl=`./findhdr time.h`" $timeincl"
10086                 echo "We'll include <time.h>." >&4;;
10087         *) i_time="$undef";;
10088         esac
10089         case "$flags" in
10090         *I_SYSTIME*) i_systime="$define"
10091                 timeincl=`./findhdr sys/time.h`" $timeincl"
10092                 echo "We'll include <sys/time.h>." >&4;;
10093         *) i_systime="$undef";;
10094         esac
10095         $rm_try
10096 fi
10097 : see if struct tm knows about tm_zone
10098 case "$i_systime$i_time" in
10099 *$define*)
10100         echo " "
10101         echo "Checking to see if your struct tm has tm_zone field..." >&4
10102         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10103         eval $hasfield
10104         ;;
10105 *)      val="$undef"
10106         set d_tm_tm_zone
10107         eval $setvar
10108         ;;
10109 esac
10110 case "$d_tm_tm_zone" in
10111 "$define")      echo "Yes, it does."   ;;
10112 *)              echo "No, it doesn't." ;;
10113 esac
10114 : see if struct tm knows about tm_gmtoff
10115 case "$i_systime$i_time" in
10116 *$define*)
10117         echo " "
10118         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10119         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10120         eval $hasfield
10121         ;;
10122 *)      val="$undef"
10123         set d_tm_tm_gmtoff
10124         eval $setvar
10125         ;;
10126 esac
10127 case "$d_tm_tm_gmtoff" in
10128 "$define")      echo "Yes, it does."   ;;
10129 *)              echo "No, it doesn't." ;;
10130 esac
10131
10132 : see if asctime_r exists
10133 set asctime_r d_asctime_r
10134 eval $inlibc
10135 case "$d_asctime_r" in
10136 "$define")
10137         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10138         case "$d_asctime_r_proto:$usethreads" in
10139         ":define")      d_asctime_r_proto=define
10140                 set d_asctime_r_proto asctime_r $hdrs
10141                 eval $hasproto ;;
10142         *)      ;;
10143         esac
10144         case "$d_asctime_r_proto" in
10145         define)
10146         case "$asctime_r_proto" in
10147         ''|0) try='char* asctime_r(const struct tm*, char*);'
10148         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
10149         esac
10150         case "$asctime_r_proto" in
10151         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
10152         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
10153         esac
10154         case "$asctime_r_proto" in
10155         ''|0) try='int asctime_r(const struct tm*, char*);'
10156         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
10157         esac
10158         case "$asctime_r_proto" in
10159         ''|0) try='int asctime_r(const struct tm*, char*, int);'
10160         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
10161         esac
10162         case "$asctime_r_proto" in
10163         ''|0)   d_asctime_r=undef
10164                 asctime_r_proto=0
10165                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10166         * )     case "$asctime_r_proto" in
10167                 REENTRANT_PROTO*) ;;
10168                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
10169                 esac
10170                 echo "Prototype: $try" ;;
10171         esac
10172         ;;
10173         *)      case "$usethreads" in
10174                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
10175                 esac
10176                 d_asctime_r=undef
10177                 asctime_r_proto=0
10178                 ;;
10179         esac
10180         ;;
10181 *)      asctime_r_proto=0
10182         ;;
10183 esac
10184
10185 : see if atolf exists
10186 set atolf d_atolf
10187 eval $inlibc
10188
10189 : see if atoll exists
10190 set atoll d_atoll
10191 eval $inlibc
10192
10193 : Look for GCC-style attribute format
10194 case "$d_attribute_format" in
10195 '')
10196 echo " "
10197 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10198 $cat >attrib.c <<'EOCP'
10199 #include <stdio.h>
10200 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10201 EOCP
10202 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10203         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10204                 echo "Your C compiler doesn't support __attribute__((format))."
10205                 val="$undef"
10206         else
10207                 echo "Your C compiler supports __attribute__((format))."
10208                 val="$define"
10209         fi
10210 else
10211         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10212         val="$undef"
10213 fi
10214 ;;
10215 *) val="$d_attribute_format" ;;
10216 esac
10217 set d_attribute_format
10218 eval $setvar
10219 $rm -f attrib*
10220
10221 : Look for GCC-style attribute format with null format allowed
10222 case "$d_printf_format_null" in
10223 '') case "$d_attribute_format" in
10224     $define)
10225         echo " "
10226         echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10227 $cat >attrib.c <<EOCP
10228 #include <stdio.h>
10229 #$i_stdlib I_STDLIB
10230 #ifdef I_STDLIB
10231 #include <stdlib.h>
10232 #endif
10233 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10234 int null_printf (char* pat,...) { return (int)pat; }
10235 int main () { exit(null_printf(NULL)); }
10236 EOCP
10237         if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10238             : run the executable in case it produces a run-time warning
10239             if $run ./attrib >>attrib.out 2>&1; then
10240                 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10241                     echo "Your C compiler doesn't allow __printf__ format to be null."
10242                     val="$undef"
10243                 else
10244                     echo "Your C compiler allows __printf__ format to be null."
10245                     val="$define"
10246                 fi
10247             else
10248             echo "Your C compiler executable failed with __printf__ format null."
10249             val="$undef"
10250         fi
10251     else
10252         echo "Your C compiler fails with __printf__ format null."
10253         val="$undef"
10254     fi
10255     ;;
10256     *)  val="$undef" ;;
10257     esac
10258 ;;
10259 *)  val="$d_printf_format_null" ;;
10260 esac
10261 set d_printf_format_null
10262 eval $setvar
10263 $rm -f attrib*
10264
10265 : Look for GCC-style attribute malloc
10266 case "$d_attribute_malloc" in
10267 '')
10268 echo " "
10269 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10270 $cat >attrib.c <<'EOCP'
10271 #include <stdio.h>
10272 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10273 EOCP
10274 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10275         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10276                 echo "Your C compiler doesn't support __attribute__((malloc))."
10277                 val="$undef"
10278         else
10279                 echo "Your C compiler supports __attribute__((malloc))."
10280                 val="$define"
10281         fi
10282 else
10283         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10284         val="$undef"
10285 fi
10286 ;;
10287 *) val="$d_attribute_malloc" ;;
10288 esac
10289 set d_attribute_malloc
10290 eval $setvar
10291 $rm -f attrib*
10292
10293 : Look for GCC-style attribute nonnull
10294 case "$d_attribute_nonnull" in
10295 '')
10296 echo " "
10297 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10298 $cat >attrib.c <<'EOCP'
10299 #include <stdio.h>
10300 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10301 EOCP
10302 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10303         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10304                 echo "Your C compiler doesn't support __attribute__((nonnull))."
10305                 val="$undef"
10306         else
10307                 echo "Your C compiler supports __attribute__((nonnull))."
10308                 val="$define"
10309         fi
10310 else
10311         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10312         val="$undef"
10313 fi
10314 ;;
10315 *) val="$d_attribute_nonnull" ;;
10316 esac
10317 set d_attribute_nonnull
10318 eval $setvar
10319 $rm -f attrib*
10320
10321 : Look for GCC-style attribute noreturn
10322 case "$d_attribute_noreturn" in
10323 '')
10324 echo " "
10325 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10326 $cat >attrib.c <<'EOCP'
10327 #include <stdio.h>
10328 void fall_over_dead( void ) __attribute__((noreturn));
10329 EOCP
10330 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10331         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10332                 echo "Your C compiler doesn't support __attribute__((noreturn))."
10333                 val="$undef"
10334         else
10335                 echo "Your C compiler supports __attribute__((noreturn))."
10336                 val="$define"
10337         fi
10338 else
10339         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10340         val="$undef"
10341 fi
10342 ;;
10343 *) val="$d_attribute_noreturn" ;;
10344 esac
10345 set d_attribute_noreturn
10346 eval $setvar
10347 $rm -f attrib*
10348
10349 : Look for GCC-style attribute pure
10350 case "$d_attribute_pure" in
10351 '')
10352 echo " "
10353 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10354 $cat >attrib.c <<'EOCP'
10355 #include <stdio.h>
10356 int square( int n ) __attribute__((pure));
10357 EOCP
10358 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10359         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10360                 echo "Your C compiler doesn't support __attribute__((pure))."
10361                 val="$undef"
10362         else
10363                 echo "Your C compiler supports __attribute__((pure))."
10364                 val="$define"
10365         fi
10366 else
10367         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10368         val="$undef"
10369 fi
10370 ;;
10371 *) val="$d_attribute_pure" ;;
10372 esac
10373 set d_attribute_pure
10374 eval $setvar
10375 $rm -f attrib*
10376
10377 : Look for GCC-style attribute unused
10378 case "$d_attribute_unused" in
10379 '')
10380 echo " "
10381 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10382 $cat >attrib.c <<'EOCP'
10383 #include <stdio.h>
10384 int do_something( int dummy __attribute__((unused)), int n );
10385 EOCP
10386 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10387         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10388                 echo "Your C compiler doesn't support __attribute__((unused))."
10389                 val="$undef"
10390         else
10391                 echo "Your C compiler supports __attribute__((unused))."
10392                 val="$define"
10393         fi
10394 else
10395         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10396         val="$undef"
10397 fi
10398 ;;
10399 *) val="$d_attribute_unused" ;;
10400 esac
10401 set d_attribute_unused
10402 eval $setvar
10403 $rm -f attrib*
10404
10405 : Look for GCC-style attribute warn_unused_result
10406 case "$d_attribute_warn_unused_result" in
10407 '')
10408 echo " "
10409 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10410 $cat >attrib.c <<'EOCP'
10411 #include <stdio.h>
10412 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10413 EOCP
10414 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10415         if $contains 'warning' attrib.out >/dev/null 2>&1; then
10416                 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10417                 val="$undef"
10418         else
10419                 echo "Your C compiler supports __attribute__((warn_unused_result))."
10420                 val="$define"
10421         fi
10422 else
10423         echo "Your C compiler doesn't seem to understand __attribute__ at all."
10424         val="$undef"
10425 fi
10426 ;;
10427 *) val="$d_attribute_warn_unused_result" ;;
10428 esac
10429 set d_attribute_warn_unused_result
10430 eval $setvar
10431 $rm -f attrib*
10432
10433 : see if bcmp exists
10434 set bcmp d_bcmp
10435 eval $inlibc
10436
10437 : see if bcopy exists
10438 set bcopy d_bcopy
10439 eval $inlibc
10440
10441 : see if getpgrp exists
10442 set getpgrp d_getpgrp
10443 eval $inlibc
10444
10445 case "$d_getpgrp" in
10446 "$define")
10447         echo " "
10448         echo "Checking to see which flavor of getpgrp is in use..."
10449         $cat >try.c <<EOP
10450 #$i_unistd I_UNISTD
10451 #include <sys/types.h>
10452 #ifdef I_UNISTD
10453 #  include <unistd.h>
10454 #endif
10455 #$i_stdlib I_STDLIB
10456 #ifdef I_STDLIB
10457 #include <stdlib.h>
10458 #endif
10459 int main()
10460 {
10461         if (getuid() == 0) {
10462                 printf("(I see you are running Configure as super-user...)\n");
10463                 setuid(1);
10464         }
10465 #ifdef TRY_BSD_PGRP
10466         if (getpgrp(1) == 0)
10467                 exit(0);
10468 #else
10469         if (getpgrp() > 0)
10470                 exit(0);
10471 #endif
10472         exit(1);
10473 }
10474 EOP
10475         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10476                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10477                 val="$define"
10478         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10479                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10480                 val="$undef"
10481         else
10482                 echo "I can't seem to compile and run the test program."
10483                 if ./usg; then
10484                         xxx="a USG one, i.e. you use getpgrp()."
10485                 else
10486                         # SVR4 systems can appear rather BSD-ish.
10487                         case "$i_unistd" in
10488                         $undef)
10489                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
10490                                 val="$define"
10491                                 ;;
10492                         $define)
10493                                 xxx="probably a USG one, i.e. you use getpgrp()."
10494                                 val="$undef"
10495                                 ;;
10496                         esac
10497                 fi
10498                 echo "Assuming your getpgrp is $xxx" >&4
10499         fi
10500         ;;
10501 *) val="$undef";;
10502 esac
10503 set d_bsdgetpgrp
10504 eval $setvar
10505 $rm_try
10506
10507 : see if setpgrp exists
10508 set setpgrp d_setpgrp
10509 eval $inlibc
10510
10511 case "$d_setpgrp" in
10512 "$define")
10513         echo " "
10514         echo "Checking to see which flavor of setpgrp is in use..."
10515         $cat >try.c <<EOP
10516 #$i_unistd I_UNISTD
10517 #include <sys/types.h>
10518 #ifdef I_UNISTD
10519 #  include <unistd.h>
10520 #endif
10521 #$i_stdlib I_STDLIB
10522 #ifdef I_STDLIB
10523 #include <stdlib.h>
10524 #endif
10525 int main()
10526 {
10527         if (getuid() == 0) {
10528                 printf("(I see you are running Configure as super-user...)\n");
10529                 setuid(1);
10530         }
10531 #ifdef TRY_BSD_PGRP
10532         if (-1 == setpgrp(1, 1))
10533                 exit(0);
10534 #else
10535         if (setpgrp() != -1)
10536                 exit(0);
10537 #endif
10538         exit(1);
10539 }
10540 EOP
10541         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10542                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10543                 val="$define"
10544         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10545                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10546                 val="$undef"
10547         else
10548                 echo "(I can't seem to compile and run the test program.)"
10549                 if ./usg; then
10550                         xxx="a USG one, i.e. you use setpgrp()."
10551                 else
10552                         # SVR4 systems can appear rather BSD-ish.
10553                         case "$i_unistd" in
10554                         $undef)
10555                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10556                                 val="$define"
10557                                 ;;
10558                         $define)
10559                                 xxx="probably a USG one, i.e. you use setpgrp()."
10560                                 val="$undef"
10561                                 ;;
10562                         esac
10563                 fi
10564                 echo "Assuming your setpgrp is $xxx" >&4
10565         fi
10566         ;;
10567 *) val="$undef";;
10568 esac
10569 set d_bsdsetpgrp
10570 eval $setvar
10571 $rm_try
10572
10573 : Look for GCC-style __builtin_choose_expr
10574 case "$d_builtin_choose_expr" in
10575 '')
10576     echo " "
10577     echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10578     $cat >try.c <<'EOCP'
10579 #include <assert.h>
10580 #include <stdlib.h>
10581 #include <stdio.h>
10582
10583 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10584
10585 int main(void) {
10586     assert( SYRINX(1) == 2112 );
10587     assert( SYRINX(1) != 5150 );
10588     assert( SYRINX(0) == 5150 );
10589     assert( SYRINX(0) != 2112 );
10590     puts( "All good!" );
10591     exit(0);
10592 }
10593
10594 EOCP
10595     set try
10596     if eval $compile && $run ./try; then
10597         echo "Your C compiler supports __builtin_choose_expr."
10598         val="$define"
10599     else
10600         echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10601         val="$undef"
10602     fi
10603 ;;
10604 *) val="$d_builtin_choose_expr" ;;
10605 esac
10606
10607 set d_builtin_choose_expr
10608 eval $setvar
10609 $rm_try
10610
10611 : Look for GCC-style __builtin_expect
10612 case "$d_builtin_expect" in
10613 '')
10614     echo " "
10615     echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10616     $cat >try.c <<'EOCP'
10617 int main(void) {
10618     int n = 50;
10619     if ( __builtin_expect(n, 0) ) n = 1;
10620     /* Remember shell exit code truth is 0, C truth is non-zero */
10621     return !(n == 1);
10622 }
10623 EOCP
10624     set try
10625     if eval $compile && $run ./try; then
10626         echo "Your C compiler supports __builtin_expect."
10627         val="$define"
10628     else
10629         echo "Your C compiler doesn't seem to understand __builtin_expect."
10630         val="$undef"
10631     fi
10632     ;;
10633 *) val="$d_builtin_expect" ;;
10634 esac
10635
10636 set d_builtin_expect
10637 eval $setvar
10638 $rm_try
10639
10640 : see if bzero exists
10641 set bzero d_bzero
10642 eval $inlibc
10643
10644 : see if stdarg is available
10645 echo " "
10646 if $test `./findhdr stdarg.h`; then
10647         echo "<stdarg.h> found." >&4
10648         valstd="$define"
10649 else
10650         echo "<stdarg.h> NOT found." >&4
10651         valstd="$undef"
10652 fi
10653
10654 : see if varags is available
10655 echo " "
10656 if $test `./findhdr varargs.h`; then
10657         echo "<varargs.h> found." >&4
10658 else
10659         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10660 fi
10661
10662 : set up the varargs testing programs
10663 $cat > varargs.c <<EOP
10664 #ifdef I_STDARG
10665 #include <stdarg.h>
10666 #endif
10667 #ifdef I_VARARGS
10668 #include <varargs.h>
10669 #endif
10670
10671 #ifdef I_STDARG
10672 int f(char *p, ...)
10673 #else
10674 int f(va_alist)
10675 va_dcl
10676 #endif
10677 {
10678         va_list ap;
10679 #ifndef I_STDARG
10680         char *p;
10681 #endif
10682 #ifdef I_STDARG
10683         va_start(ap,p);
10684 #else
10685         va_start(ap);
10686         p = va_arg(ap, char *);
10687 #endif
10688         va_end(ap);
10689         return 0;
10690 }
10691 EOP
10692 $cat > varargs <<EOP
10693 $startsh
10694 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10695         echo "true"
10696 else
10697         echo "false"
10698 fi
10699 $rm -f varargs$_o
10700 EOP
10701 chmod +x varargs
10702
10703 : now check which varargs header should be included
10704 echo " "
10705 i_varhdr=''
10706 case "$valstd" in
10707 "$define")
10708         if `./varargs I_STDARG`; then
10709                 val='stdarg.h'
10710         elif `./varargs I_VARARGS`; then
10711                 val='varargs.h'
10712         fi
10713         ;;
10714 *)
10715         if `./varargs I_VARARGS`; then
10716                 val='varargs.h'
10717         fi
10718         ;;
10719 esac
10720 case "$val" in
10721 '')
10722 echo "I could not find the definition for va_dcl... You have problems..." >&4
10723         val="$undef"; set i_stdarg; eval $setvar
10724         val="$undef"; set i_varargs; eval $setvar
10725         ;;
10726 *)
10727         set i_varhdr
10728         eval $setvar
10729         case "$i_varhdr" in
10730         stdarg.h)
10731                 val="$define"; set i_stdarg; eval $setvar
10732                 val="$undef"; set i_varargs; eval $setvar
10733                 ;;
10734         varargs.h)
10735                 val="$undef"; set i_stdarg; eval $setvar
10736                 val="$define"; set i_varargs; eval $setvar
10737                 ;;
10738         esac
10739         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10740 esac
10741 $rm -f varargs*
10742
10743 : see if the Compiler supports C99 variadic macros
10744 case "$i_stdarg$i_stdlib" in
10745     "$define$define")
10746     echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10747     $cat >try.c <<EOCP
10748 #include <stdio.h>
10749 #include <stdarg.h>
10750
10751 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10752
10753 int main() {
10754   char buf[20];
10755   foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10756   puts(buf);
10757   return 0;
10758 }
10759 EOCP
10760     set try
10761     if eval $compile && $run ./try 2>&1 >/dev/null; then
10762         case "`$run ./try`" in
10763             "123 456 789")
10764             echo "You have C99 variadic macros." >&4
10765             d_c99_variadic_macros="$define"
10766             ;;
10767             *)
10768             echo "You don't have functional C99 variadic macros." >&4
10769             d_c99_variadic_macros="$undef"
10770             ;;
10771         esac
10772     else
10773         echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10774         d_c99_variadic_macros="$undef"
10775     fi
10776     $rm_try
10777     ;;
10778     *)
10779     echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10780     d_c99_variadic_macros="$undef"
10781     ;;
10782 esac
10783
10784 : see if signal is declared as pointer to function returning int or void
10785 echo " "
10786 xxx=`./findhdr signal.h`
10787 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10788 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10789         echo "You have int (*signal())() instead of void." >&4
10790         val="$undef"
10791 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10792         echo "You have void (*signal())()." >&4
10793         val="$define"
10794 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10795         echo "You have int (*signal())() instead of void." >&4
10796         val="$undef"
10797 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10798         echo "You have void (*signal())()." >&4
10799         val="$define"
10800 else
10801         case "$d_voidsig" in
10802         '')
10803         echo "I can't determine whether signal handler returns void or int..." >&4
10804                 dflt=void
10805                 rp="What type does your signal handler return?"
10806                 . ./myread
10807                 case "$ans" in
10808                 v*) val="$define";;
10809                 *) val="$undef";;
10810                 esac;;
10811         "$define")
10812                 echo "As you already told me, signal handler returns void." >&4
10813                 val="$define"
10814                 ;;
10815         *)      echo "As you already told me, signal handler returns int." >&4
10816                 val="$undef"
10817                 ;;
10818         esac
10819 fi
10820 set d_voidsig
10821 eval $setvar
10822 case "$d_voidsig" in
10823 "$define") signal_t="void";;
10824 *) signal_t="int";;
10825 esac
10826 $rm -f $$.tmp
10827
10828 : check for ability to cast large floats to 32-bit ints.
10829 echo " "
10830 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10831 if $test "$intsize" -ge 4; then
10832         xxx=int
10833 else
10834         xxx=long
10835 fi
10836 $cat >try.c <<EOCP
10837 #include <stdio.h>
10838 #$i_stdlib I_STDLIB
10839 #ifdef I_STDLIB
10840 #include <stdlib.h>
10841 #endif
10842 #include <sys/types.h>
10843 #include <signal.h>
10844 $signal_t blech(int s) { exit(3); }
10845 int main()
10846 {
10847         $xxx i32;
10848         double f, g;
10849         int result = 0;
10850         char str[16];
10851         signal(SIGFPE, blech);
10852
10853         /* Don't let compiler optimize the test away.  Store the number
10854            in a writable string for gcc to pass to sscanf under HP/UX.
10855         */
10856         sprintf(str, "2147483647");
10857         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10858         g = 10 * f;
10859         i32  = ($xxx) g;
10860
10861         /* x86 processors will probably give 0x8000 0000, which is a
10862            sign change.  We don't want that.  We want to mimic SPARC
10863            behavior here, which is to preserve the sign and give
10864            back 0x7fff ffff.
10865         */
10866         if (i32 != ($xxx) f)
10867                 result |= 1;
10868         exit(result);
10869 }
10870 EOCP
10871 set try
10872 if eval $compile_ok; then
10873         $run ./try
10874         yyy=$?
10875 else
10876         echo "(I can't seem to compile the test program--assuming it can't)"
10877         yyy=1
10878 fi
10879 case "$yyy" in
10880 0)      val="$define"
10881         echo "Yup, it can."
10882         ;;
10883 *)      val="$undef"
10884         echo "Nope, it can't."
10885         ;;
10886 esac
10887 set d_casti32
10888 eval $setvar
10889 $rm_try
10890
10891 : check for ability to cast negative floats to unsigned
10892 echo " "
10893 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10894 $cat >try.c <<EOCP
10895 #include <stdio.h>
10896 #$i_stdlib I_STDLIB
10897 #ifdef I_STDLIB
10898 #include <stdlib.h>
10899 #endif
10900 #include <sys/types.h>
10901 #include <signal.h>
10902 $signal_t blech(int s) { exit(7); }
10903 $signal_t blech_in_list(int s) { exit(4); }
10904 unsigned long dummy_long(unsigned long p) { return p; }
10905 unsigned int dummy_int(unsigned int p) { return p; }
10906 unsigned short dummy_short(unsigned short p) { return p; }
10907 int main()
10908 {
10909         double f;
10910         unsigned long along;
10911         unsigned int aint;
10912         unsigned short ashort;
10913         int result = 0;
10914         char str[16];
10915
10916         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10917            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10918            optimized the whole file away
10919         */
10920         /* Store the number in a writable string for gcc to pass to
10921            sscanf under HP/UX.
10922         */
10923         sprintf(str, "-123");
10924         sscanf(str, "%lf", &f);  /* f = -123.; */
10925
10926         signal(SIGFPE, blech);
10927         along = (unsigned long)f;
10928         aint = (unsigned int)f;
10929         ashort = (unsigned short)f;
10930         if (along != (unsigned long)-123)
10931                 result |= 1;
10932         if (aint != (unsigned int)-123)
10933                 result |= 1;
10934         if (ashort != (unsigned short)-123)
10935                 result |= 1;
10936         sprintf(str, "1073741824.");
10937         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10938         f = f + f;
10939         along = 0;
10940         along = (unsigned long)f;
10941         if (along != 0x80000000)
10942                 result |= 2;
10943         f -= 1.;
10944         along = 0;
10945         along = (unsigned long)f;
10946         if (along != 0x7fffffff)
10947                 result |= 1;
10948         f += 2.;
10949         along = 0;
10950         along = (unsigned long)f;
10951         if (along != 0x80000001)
10952                 result |= 2;
10953         if (result)
10954                 exit(result);
10955         signal(SIGFPE, blech_in_list);
10956         sprintf(str, "123.");
10957         sscanf(str, "%lf", &f);  /* f = 123.; */
10958         along = dummy_long((unsigned long)f);
10959         aint = dummy_int((unsigned int)f);
10960         ashort = dummy_short((unsigned short)f);
10961         if (along != (unsigned long)123)
10962                 result |= 4;
10963         if (aint != (unsigned int)123)
10964                 result |= 4;
10965         if (ashort != (unsigned short)123)
10966                 result |= 4;
10967         exit(result);
10968
10969 }
10970 EOCP
10971 set try
10972 if eval $compile_ok; then
10973         $run ./try
10974         castflags=$?
10975 else
10976         echo "(I can't seem to compile the test program--assuming it can't)"
10977         castflags=7
10978 fi
10979 case "$castflags" in
10980 0)      val="$define"
10981         echo "Yup, it can."
10982         ;;
10983 *)      val="$undef"
10984         echo "Nope, it can't."
10985         ;;
10986 esac
10987 set d_castneg
10988 eval $setvar
10989 $rm_try
10990
10991 : see if vprintf exists
10992 echo " "
10993 if set vprintf val -f d_vprintf; eval $csym; $val; then
10994         echo 'vprintf() found.' >&4
10995         val="$define"
10996         $cat >try.c <<EOF
10997 #$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
10998 #$i_varargs I_VARARGS
10999
11000 #$i_stdlib I_STDLIB
11001 #$i_unistd I_UNISTD
11002
11003 #ifdef I_STDARG
11004 #  include <stdarg.h>
11005 #else /* I_VARARGS */
11006 #  include <varargs.h>
11007 #endif
11008
11009 #ifdef I_UNISTD
11010 #  include <unistd.h>
11011 #endif
11012
11013 #ifdef I_STDLIB
11014 #  include <stdlib.h>
11015 #endif
11016
11017 #include <stdio.h> /* vsprintf prototype */
11018
11019 #ifdef I_STDARG
11020 void xxx(int n, ...)
11021 {
11022     va_list args;
11023     char buf[10];
11024     va_start(args, n);
11025     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
11026 }
11027 int main() { xxx(1, "foo"); }
11028
11029 #else /* I_VARARGS */
11030
11031 xxx(va_alist)
11032 va_dcl
11033 {
11034     va_list args;
11035     char buf[10];
11036     va_start(args);
11037     exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
11038 }
11039 int main() { xxx("foo"); }
11040
11041 #endif
11042
11043 EOF
11044         set try
11045         if eval $compile_ok; then
11046                 if $run ./try; then
11047                         echo "Your vsprintf() returns (int)." >&4
11048                         val2="$undef"
11049                 else
11050                         echo "Your vsprintf() returns (char*)." >&4
11051                         val2="$define"
11052                 fi
11053         else
11054                 echo 'I am unable to compile the vsprintf() test program.' >&4
11055                 # We shouldn't get here.  If we do, assume the standard signature,
11056                 # not the old BSD one.
11057                 echo 'Guessing that vsprintf() returns (int).' >&4
11058                 val2="$undef"
11059         fi
11060 else
11061         echo 'vprintf() NOT found.' >&4
11062         val="$undef"
11063         val2="$undef"
11064 fi
11065 $rm_try
11066 set d_vprintf
11067 eval $setvar
11068 val=$val2
11069 set d_charvspr
11070 eval $setvar
11071
11072 : see if chown exists
11073 set chown d_chown
11074 eval $inlibc
11075
11076 : see if chroot exists
11077 set chroot d_chroot
11078 eval $inlibc
11079
11080 : see if chsize exists
11081 set chsize d_chsize
11082 eval $inlibc
11083
11084 : see if class exists
11085 set class d_class
11086 eval $inlibc
11087
11088 : see if clearenv exists
11089 set clearenv d_clearenv
11090 eval $inlibc
11091
11092 : Define hasstruct macro for Configure internal use
11093 hasstruct='varname=$1; struct=$2; shift; shift;
11094 while $test $# -ge 2; do
11095         case "$1" in
11096         $define) echo "#include <$2>";;
11097         esac ;
11098     shift 2;
11099 done > try.c;
11100 echo "int main () { struct $struct foo; }" >> try.c;
11101 set try;
11102 if eval $compile; then
11103         val="$define";
11104 else
11105         val="$undef";
11106 fi;
11107 set $varname;
11108 eval $setvar;
11109 $rm_try'
11110
11111 : see whether socket exists
11112 socketlib=''
11113 sockethdr=''
11114 echo " "
11115 $echo $n "Hmm... $c" >&4
11116 if set socket val -f d_socket; eval $csym; $val; then
11117         echo "Looks like you have Berkeley networking support." >&4
11118         d_socket="$define"
11119         if set setsockopt val -f; eval $csym; $val; then
11120                 d_oldsock="$undef"
11121         else
11122                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
11123                 d_oldsock="$define"
11124         fi
11125 else
11126         if $contains socklib libc.list >/dev/null 2>&1; then
11127                 echo "Looks like you have Berkeley networking support." >&4
11128                 d_socket="$define"
11129                 : we will have to assume that it supports the 4.2 BSD interface
11130                 d_oldsock="$undef"
11131         else
11132                 echo "You don't have Berkeley networking in libc$_a..." >&4
11133                 if test "X$d_socket" = "X$define"; then
11134                    echo "...but you seem to believe that you have sockets." >&4
11135                 else
11136                         for net in net socket
11137                         do
11138                                 if test -f /usr/lib/lib$net$_a; then
11139                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
11140                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
11141                                         if $contains socket libc.list >/dev/null 2>&1; then
11142                                                 d_socket="$define"
11143                                                 socketlib="-l$net"
11144                                                 case "$net" in
11145                                                 net)
11146                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
11147                                                         sockethdr="-I/usr/netinclude"
11148                                                         ;;
11149                                                 esac
11150                                                 echo "Found Berkeley sockets interface in lib$net." >&4
11151                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
11152                                                         d_oldsock="$undef"
11153                                                 else
11154                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
11155                                                         d_oldsock="$define"
11156                                                 fi
11157                                                 break
11158                                         fi
11159                                 fi
11160                         done
11161                         if test "X$d_socket" != "X$define"; then
11162                            echo "or anywhere else I see." >&4
11163                            d_socket="$undef"
11164                            d_oldsock="$undef"
11165                         fi
11166                 fi
11167         fi
11168 fi
11169
11170 : see if socketpair exists
11171 set socketpair d_sockpair
11172 eval $inlibc
11173
11174
11175 echo " "
11176 echo "Checking the availability of certain socket constants..." >&4
11177 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
11178         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
11179         $cat >try.c <<EOF
11180 #include <sys/types.h>
11181 #include <sys/socket.h>
11182 int main() {
11183     int i = $ENUM;
11184 }
11185 EOF
11186         val="$undef"
11187         set try; if eval $compile; then
11188                 val="$define"
11189         fi
11190         set d_${enum}; eval $setvar
11191         $rm_try
11192 done
11193
11194 : see if this is a sys/uio.h system
11195 set sys/uio.h i_sysuio
11196 eval $inhdr
11197
11198 : Check for cmsghdr support
11199 echo " "
11200 echo "Checking to see if your system supports struct cmsghdr..." >&4
11201 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11202 eval $hasstruct
11203 case "$d_cmsghdr_s" in
11204 "$define")      echo "Yes, it does."   ;;
11205 *)              echo "No, it doesn't." ;;
11206 esac
11207
11208
11209 : check for const keyword
11210 echo " "
11211 echo 'Checking to see if your C compiler knows about "const"...' >&4
11212 $cat >const.c <<'EOCP'
11213 typedef struct spug { int drokk; } spug;
11214 int main()
11215 {
11216         const char *foo;
11217         const spug y = { 0 };
11218 }
11219 EOCP
11220 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11221         val="$define"
11222         echo "Yup, it does."
11223 else
11224         val="$undef"
11225         echo "Nope, it doesn't."
11226 fi
11227 set d_const
11228 eval $setvar
11229
11230 : see if copysignl exists
11231 set copysignl d_copysignl
11232 eval $inlibc
11233
11234 : see if crypt exists
11235 echo " "
11236 set crypt d_crypt
11237 eval $inlibc
11238 case "$d_crypt" in
11239 $define) cryptlib='' ;;
11240 *)      if set crypt val -f d_crypt; eval $csym; $val; then
11241                 echo 'crypt() found.' >&4
11242                 val="$define"
11243                 cryptlib=''
11244         else
11245                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11246                 if $test -z "$cryptlib"; then
11247                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11248                 else
11249                         cryptlib=-lcrypt
11250                 fi
11251                 if $test -z "$cryptlib"; then
11252                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11253                 else
11254                         cryptlib=-lcrypt
11255                 fi
11256                 if $test -z "$cryptlib"; then
11257                         cryptlib=`./loc libcrypt$_a "" $libpth`
11258                 else
11259                         cryptlib=-lcrypt
11260                 fi
11261                 if $test -z "$cryptlib"; then
11262                         echo 'crypt() NOT found.' >&4
11263                         val="$undef"
11264                 else
11265                         val="$define"
11266                 fi
11267         fi
11268         set d_crypt
11269         eval $setvar
11270         ;;
11271 esac
11272
11273 : see if this is a crypt.h system
11274 set crypt.h i_crypt
11275 eval $inhdr
11276
11277 : see if crypt_r exists
11278 set crypt_r d_crypt_r
11279 eval $inlibc
11280 case "$d_crypt_r" in
11281 "$define")
11282         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11283         case "$d_crypt_r_proto:$usethreads" in
11284         ":define")      d_crypt_r_proto=define
11285                 set d_crypt_r_proto crypt_r $hdrs
11286                 eval $hasproto ;;
11287         *)      ;;
11288         esac
11289         case "$d_crypt_r_proto" in
11290         define)
11291         case "$crypt_r_proto" in
11292         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11293         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11294         esac
11295         case "$crypt_r_proto" in
11296         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11297         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11298         esac
11299         case "$crypt_r_proto" in
11300         ''|0)   d_crypt_r=undef
11301                 crypt_r_proto=0
11302                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11303         * )     case "$crypt_r_proto" in
11304                 REENTRANT_PROTO*) ;;
11305                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11306                 esac
11307                 echo "Prototype: $try" ;;
11308         esac
11309         ;;
11310         *)      case "$usethreads" in
11311                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11312                 esac
11313                 d_crypt_r=undef
11314                 crypt_r_proto=0
11315                 ;;
11316         esac
11317         ;;
11318 *)      crypt_r_proto=0
11319         ;;
11320 esac
11321
11322 : get csh whereabouts
11323 case "$csh" in
11324 'csh') val="$undef" ;;
11325 *) val="$define" ;;
11326 esac
11327 set d_csh
11328 eval $setvar
11329 : Respect a hint or command line value for full_csh.
11330 case "$full_csh" in
11331 '') full_csh=$csh ;;
11332 esac
11333
11334 : see if ctermid exists
11335 set ctermid d_ctermid
11336 eval $inlibc
11337
11338 : see if ctermid_r exists
11339 set ctermid_r d_ctermid_r
11340 eval $inlibc
11341 case "$d_ctermid_r" in
11342 "$define")
11343         hdrs="$i_systypes sys/types.h define stdio.h "
11344         case "$d_ctermid_r_proto:$usethreads" in
11345         ":define")      d_ctermid_r_proto=define
11346                 set d_ctermid_r_proto ctermid_r $hdrs
11347                 eval $hasproto ;;
11348         *)      ;;
11349         esac
11350         case "$d_ctermid_r_proto" in
11351         define)
11352         case "$ctermid_r_proto" in
11353         ''|0) try='char* ctermid_r(char*);'
11354         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11355         esac
11356         case "$ctermid_r_proto" in
11357         ''|0)   d_ctermid_r=undef
11358                 ctermid_r_proto=0
11359                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11360         * )     case "$ctermid_r_proto" in
11361                 REENTRANT_PROTO*) ;;
11362                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11363                 esac
11364                 echo "Prototype: $try" ;;
11365         esac
11366         ;;
11367         *)      case "$usethreads" in
11368                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11369                 esac
11370                 d_ctermid_r=undef
11371                 ctermid_r_proto=0
11372                 ;;
11373         esac
11374         ;;
11375 *)      ctermid_r_proto=0
11376         ;;
11377 esac
11378
11379 : see if ctime_r exists
11380 set ctime_r d_ctime_r
11381 eval $inlibc
11382 case "$d_ctime_r" in
11383 "$define")
11384         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11385         case "$d_ctime_r_proto:$usethreads" in
11386         ":define")      d_ctime_r_proto=define
11387                 set d_ctime_r_proto ctime_r $hdrs
11388                 eval $hasproto ;;
11389         *)      ;;
11390         esac
11391         case "$d_ctime_r_proto" in
11392         define)
11393         case "$ctime_r_proto" in
11394         ''|0) try='char* ctime_r(const time_t*, char*);'
11395         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11396         esac
11397         case "$ctime_r_proto" in
11398         ''|0) try='char* ctime_r(const time_t*, char*, int);'
11399         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11400         esac
11401         case "$ctime_r_proto" in
11402         ''|0) try='int ctime_r(const time_t*, char*);'
11403         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11404         esac
11405         case "$ctime_r_proto" in
11406         ''|0) try='int ctime_r(const time_t*, char*, int);'
11407         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11408         esac
11409         case "$ctime_r_proto" in
11410         ''|0)   d_ctime_r=undef
11411                 ctime_r_proto=0
11412                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11413         * )     case "$ctime_r_proto" in
11414                 REENTRANT_PROTO*) ;;
11415                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11416                 esac
11417                 echo "Prototype: $try" ;;
11418         esac
11419         ;;
11420         *)      case "$usethreads" in
11421                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11422                 esac
11423                 d_ctime_r=undef
11424                 ctime_r_proto=0
11425                 ;;
11426         esac
11427         ;;
11428 *)      ctime_r_proto=0
11429         ;;
11430 esac
11431
11432 : see if cuserid exists
11433 set cuserid d_cuserid
11434 eval $inlibc
11435
11436 : see if this is a limits.h system
11437 set limits.h i_limits
11438 eval $inhdr
11439
11440 : see if this is a float.h system
11441 set float.h i_float
11442 eval $inhdr
11443
11444 : See if number of significant digits in a double precision number is known
11445 echo " "
11446 $cat >dbl_dig.c <<EOM
11447 #$i_limits I_LIMITS
11448 #$i_float I_FLOAT
11449 #ifdef I_LIMITS
11450 #include <limits.h>
11451 #endif
11452 #ifdef I_FLOAT
11453 #include <float.h>
11454 #endif
11455 #ifdef DBL_DIG
11456 printf("Contains DBL_DIG");
11457 #endif
11458 EOM
11459 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11460 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11461         echo "DBL_DIG found." >&4
11462         val="$define"
11463 else
11464         echo "DBL_DIG NOT found." >&4
11465         val="$undef"
11466 fi
11467 $rm -f dbl_dig.?
11468 set d_dbl_dig
11469 eval $setvar
11470
11471 : see if dbm.h is available
11472 : see if dbmclose exists
11473 set dbmclose d_dbmclose
11474 eval $inlibc
11475
11476 case "$d_dbmclose" in
11477 $define)
11478         set dbm.h i_dbm
11479         eval $inhdr
11480         case "$i_dbm" in
11481         $define)
11482                 val="$undef"
11483                 set i_rpcsvcdbm
11484                 eval $setvar
11485                 ;;
11486         *)      set rpcsvc/dbm.h i_rpcsvcdbm
11487                 eval $inhdr
11488                 ;;
11489         esac
11490         ;;
11491 *)      echo "We won't be including <dbm.h>"
11492         val="$undef"
11493         set i_dbm
11494         eval $setvar
11495         val="$undef"
11496         set i_rpcsvcdbm
11497         eval $setvar
11498         ;;
11499 esac
11500
11501 : see if prototype for dbminit is available
11502 echo " "
11503 set d_dbminitproto dbminit $i_dbm dbm.h
11504 eval $hasproto
11505
11506 : see if difftime exists
11507 set difftime d_difftime
11508 eval $inlibc
11509
11510 : see if this is a dirent system
11511 echo " "
11512 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11513         val="$define"
11514         echo "<dirent.h> found." >&4
11515 else
11516         val="$undef"
11517         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11518                 echo "<sys/dir.h> found." >&4
11519                 echo " "
11520         else
11521                 xinc=`./findhdr sys/ndir.h`
11522         fi
11523         echo "<dirent.h> NOT found." >&4
11524 fi
11525 set i_dirent
11526 eval $setvar
11527
11528 : Look for type of directory structure.
11529 echo " "
11530 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11531
11532 case "$direntrytype" in
11533 ''|' ')
11534         case "$i_dirent" in
11535         $define) guess1='struct dirent' ;;
11536         *) guess1='struct direct'  ;;
11537         esac
11538         ;;
11539 *)      guess1="$direntrytype"
11540         ;;
11541 esac
11542
11543 case "$guess1" in
11544 'struct dirent') guess2='struct direct' ;;
11545 *) guess2='struct dirent' ;;
11546 esac
11547
11548 if $contains "$guess1" try.c >/dev/null 2>&1; then
11549         direntrytype="$guess1"
11550         echo "Your directory entries are $direntrytype." >&4
11551 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11552         direntrytype="$guess2"
11553         echo "Your directory entries seem to be $direntrytype." >&4
11554 else
11555         echo "I don't recognize your system's directory entries." >&4
11556         rp="What type is used for directory entries on this system?"
11557         dflt="$guess1"
11558         . ./myread
11559         direntrytype="$ans"
11560 fi
11561 $rm_try
11562
11563 : see if the directory entry stores field length
11564 echo " "
11565 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11566 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11567         echo "Good, your directory entry keeps length information in d_namlen." >&4
11568         val="$define"
11569 else
11570         echo "Your directory entry does not know about the d_namlen field." >&4
11571         val="$undef"
11572 fi
11573 set d_dirnamlen
11574 eval $setvar
11575 $rm_try
11576
11577 : Look for DIR.dd_fd
11578 case "$i_dirent" in
11579 "$define")
11580     echo "Checking to see if DIR has a dd_fd member variable" >&4
11581     $cat >try.c <<EOCP
11582 #$i_stdlib I_STDLIB
11583 #ifdef I_STDLIB
11584 #include <stdlib.h>
11585 #endif
11586 #include <dirent.h>
11587
11588 int main() {
11589     DIR dir;
11590     dir.dd_fd = 1;
11591     return 0;
11592 }
11593 EOCP
11594     val=$undef
11595     set try
11596     if eval $compile; then
11597         echo "Yes, it does."
11598         val="$define"
11599     else
11600         echo "No, it does not."
11601         val="$undef"
11602     fi
11603     ;;
11604 *)
11605     echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11606     val="$undef"
11607     ;;
11608 esac
11609 set d_dir_dd_fd
11610 eval $setvar
11611 $rm_try
11612
11613 : see if this is an sysdir system
11614 set sys/dir.h i_sysdir
11615 eval $inhdr
11616
11617 : see if this is an sysndir system
11618 set sys/ndir.h i_sysndir
11619 eval $inhdr
11620
11621 : Look for dirfd
11622 echo " "
11623 $cat >dirfd.c <<EOM
11624 #include <stdio.h>
11625 #$i_stdlib I_STDLIB
11626 #ifdef I_STDLIB
11627 #include <stdlib.h>
11628 #endif
11629 #$i_dirent I_DIRENT             /**/
11630 #$i_sysdir I_SYS_DIR            /**/
11631 #$i_sysndir I_SYS_NDIR          /**/
11632 #$i_systypes I_SYS_TYPES        /**/
11633 #if defined(I_SYS_TYPES)
11634 #include <sys/types.h>
11635 #endif
11636 #if defined(I_DIRENT)
11637 #include <dirent.h>
11638 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11639 #include <sys/dir.h>
11640 #endif
11641 #else
11642 #ifdef I_SYS_NDIR
11643 #include <sys/ndir.h>
11644 #else
11645 #ifdef I_SYS_DIR
11646 #ifdef hp9000s500
11647 #include <ndir.h>       /* may be wrong in the future */
11648 #else
11649 #include <sys/dir.h>
11650 #endif
11651 #endif
11652 #endif
11653 #endif 
11654 int main() {
11655         DIR *dirp = opendir(".");
11656         if (dirfd(dirp) >= 0)
11657                 exit(0);
11658         else
11659                 exit(1);
11660 }
11661 EOM
11662 val=$undef
11663 set dirfd
11664 if eval $compile; then
11665         val="$define"
11666 fi
11667 case "$val" in
11668 $define)        echo "dirfd() found." >&4       ;;
11669 *)              echo "dirfd() NOT found." >&4   ;;
11670 esac
11671 set d_dirfd
11672 eval $setvar
11673 $rm -f dirfd*
11674
11675 : see if dlerror exists
11676 xxx_runnm="$runnm"
11677 runnm=false
11678 set dlerror d_dlerror
11679 eval $inlibc
11680 runnm="$xxx_runnm"
11681
11682 : see if dlfcn is available
11683 set dlfcn.h i_dlfcn
11684 eval $inhdr
11685
11686 : Check what extension to use for shared libs
11687 case "$usedl" in
11688 $define|y|true)
11689         $cat << EOM
11690
11691 On a few systems, the dynamically loaded modules that perl generates and uses
11692 will need a different extension than shared libs. The default will probably
11693 be appropriate.
11694
11695 EOM
11696         case "$dlext" in
11697         '')     dflt="$so" ;;
11698         *)      dflt="$dlext" ;;
11699         esac
11700         rp='What is the extension of dynamically loaded modules'
11701         . ./myread
11702         dlext="$ans"
11703         ;;
11704 *)
11705         dlext="none"
11706         ;;
11707 esac
11708
11709 : Check if dlsym need a leading underscore
11710 echo " "
11711 val="$undef"
11712
11713 case "$dlsrc" in
11714 dl_dlopen.xs)
11715         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11716         $cat >dyna.c <<'EOM'
11717 fred () { }
11718 EOM
11719
11720 $cat >fred.c<<EOM
11721
11722 #include <stdio.h>
11723 #$i_stdlib I_STDLIB
11724 #ifdef I_STDLIB
11725 #include <stdlib.h>
11726 #endif
11727 #$i_dlfcn I_DLFCN
11728 #ifdef I_DLFCN
11729 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
11730 #else
11731 #include <sys/types.h>
11732 #include <nlist.h>
11733 #include <link.h>
11734 #endif
11735
11736 extern int fred() ;
11737
11738 int main()
11739 {
11740     void * handle ;
11741     void * symbol ;
11742 #ifndef RTLD_LAZY
11743     int mode = 1 ;
11744 #else
11745     int mode = RTLD_LAZY ;
11746 #endif
11747     handle = dlopen("./dyna.$dlext", mode) ;
11748     if (handle == NULL) {
11749         printf ("1\n") ;
11750         fflush (stdout) ;
11751         exit(0);
11752     }
11753     symbol = dlsym(handle, "fred") ;
11754     if (symbol == NULL) {
11755         /* try putting a leading underscore */
11756         symbol = dlsym(handle, "_fred") ;
11757         if (symbol == NULL) {
11758             printf ("2\n") ;
11759             fflush (stdout) ;
11760             exit(0);
11761         }
11762         printf ("3\n") ;
11763     }
11764     else
11765         printf ("4\n") ;
11766     fflush (stdout) ;
11767     exit(0);
11768 }
11769 EOM
11770         : Call the object file tmp-dyna.o in case dlext=o.
11771         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11772                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11773                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11774                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11775                 xxx=`$run ./fred`
11776                 case $xxx in
11777                 1)      echo "Test program failed using dlopen." >&4
11778                         echo "Perhaps you should not use dynamic loading." >&4;;
11779                 2)      echo "Test program failed using dlsym." >&4
11780                         echo "Perhaps you should not use dynamic loading." >&4;;
11781                 3)      echo "dlsym needs a leading underscore" >&4
11782                         val="$define" ;;
11783                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
11784                 esac
11785         else
11786                 echo "I can't compile and run the test program." >&4
11787                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11788         fi
11789         ;;
11790 esac
11791
11792 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11793
11794 set d_dlsymun
11795 eval $setvar
11796
11797 : see if drand48_r exists
11798 set drand48_r d_drand48_r
11799 eval $inlibc
11800 case "$d_drand48_r" in
11801 "$define")
11802         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11803         case "$d_drand48_r_proto:$usethreads" in
11804         ":define")      d_drand48_r_proto=define
11805                 set d_drand48_r_proto drand48_r $hdrs
11806                 eval $hasproto ;;
11807         *)      ;;
11808         esac
11809         case "$d_drand48_r_proto" in
11810         define)
11811         case "$drand48_r_proto" in
11812         ''|0) try='int drand48_r(struct drand48_data*, double*);'
11813         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11814         esac
11815         case "$drand48_r_proto" in
11816         ''|0)   d_drand48_r=undef
11817                 drand48_r_proto=0
11818                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11819         * )     case "$drand48_r_proto" in
11820                 REENTRANT_PROTO*) ;;
11821                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11822                 esac
11823                 echo "Prototype: $try" ;;
11824         esac
11825         ;;
11826         *)      case "$usethreads" in
11827                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11828                 esac
11829                 d_drand48_r=undef
11830                 drand48_r_proto=0
11831                 ;;
11832         esac
11833         ;;
11834 *)      drand48_r_proto=0
11835         ;;
11836 esac
11837
11838 : see if prototype for drand48 is available
11839 echo " "
11840 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11841 eval $hasproto
11842
11843 : see if dup2 exists
11844 set dup2 d_dup2
11845 eval $inlibc
11846
11847 : see if eaccess exists
11848 set eaccess d_eaccess
11849 eval $inlibc
11850
11851 : see if endgrent exists
11852 set endgrent d_endgrent
11853 eval $inlibc
11854
11855 : see if this is an grp system
11856 set grp.h i_grp
11857 eval $inhdr
11858
11859 case "$i_grp" in
11860 $define)
11861         xxx=`./findhdr grp.h`
11862         $cppstdin $cppflags $cppminus < $xxx >$$.h
11863
11864         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11865                 val="$define"
11866         else
11867                 val="$undef"
11868         fi
11869         set d_grpasswd
11870         eval $setvar
11871
11872         $rm -f $$.h
11873         ;;
11874 *)
11875         val="$undef";
11876         set d_grpasswd; eval $setvar
11877         ;;
11878 esac
11879
11880 : see if endgrent_r exists
11881 set endgrent_r d_endgrent_r
11882 eval $inlibc
11883 case "$d_endgrent_r" in
11884 "$define")
11885         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11886         case "$d_endgrent_r_proto:$usethreads" in
11887         ":define")      d_endgrent_r_proto=define
11888                 set d_endgrent_r_proto endgrent_r $hdrs
11889                 eval $hasproto ;;
11890         *)      ;;
11891         esac
11892         case "$d_endgrent_r_proto" in
11893         define)
11894         case "$endgrent_r_proto" in
11895         ''|0) try='int endgrent_r(FILE**);'
11896         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11897         esac
11898         case "$endgrent_r_proto" in
11899         ''|0) try='void endgrent_r(FILE**);'
11900         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11901         esac
11902         case "$endgrent_r_proto" in
11903         ''|0)   d_endgrent_r=undef
11904                 endgrent_r_proto=0
11905                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11906         * )     case "$endgrent_r_proto" in
11907                 REENTRANT_PROTO*) ;;
11908                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11909                 esac
11910                 echo "Prototype: $try" ;;
11911         esac
11912         ;;
11913         *)      case "$usethreads" in
11914                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11915                 esac
11916                 d_endgrent_r=undef
11917                 endgrent_r_proto=0
11918                 ;;
11919         esac
11920         ;;
11921 *)      endgrent_r_proto=0
11922         ;;
11923 esac
11924
11925 : see if endhostent exists
11926 set endhostent d_endhent
11927 eval $inlibc
11928
11929 : see if this is a netdb.h system
11930 set netdb.h i_netdb
11931 eval $inhdr
11932
11933 : see if endhostent_r exists
11934 set endhostent_r d_endhostent_r
11935 eval $inlibc
11936 case "$d_endhostent_r" in
11937 "$define")
11938         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11939         case "$d_endhostent_r_proto:$usethreads" in
11940         ":define")      d_endhostent_r_proto=define
11941                 set d_endhostent_r_proto endhostent_r $hdrs
11942                 eval $hasproto ;;
11943         *)      ;;
11944         esac
11945         case "$d_endhostent_r_proto" in
11946         define)
11947         case "$endhostent_r_proto" in
11948         ''|0) try='int endhostent_r(struct hostent_data*);'
11949         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11950         esac
11951         case "$endhostent_r_proto" in
11952         ''|0) try='void endhostent_r(struct hostent_data*);'
11953         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11954         esac
11955         case "$endhostent_r_proto" in
11956         ''|0)   d_endhostent_r=undef
11957                 endhostent_r_proto=0
11958                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11959         * )     case "$endhostent_r_proto" in
11960                 REENTRANT_PROTO*) ;;
11961                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11962                 esac
11963                 echo "Prototype: $try" ;;
11964         esac
11965         ;;
11966         *)      case "$usethreads" in
11967                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11968                 esac
11969                 d_endhostent_r=undef
11970                 endhostent_r_proto=0
11971                 ;;
11972         esac
11973         ;;
11974 *)      endhostent_r_proto=0
11975         ;;
11976 esac
11977
11978 : see if endnetent exists
11979 set endnetent d_endnent
11980 eval $inlibc
11981
11982 : see if endnetent_r exists
11983 set endnetent_r d_endnetent_r
11984 eval $inlibc
11985 case "$d_endnetent_r" in
11986 "$define")
11987         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11988         case "$d_endnetent_r_proto:$usethreads" in
11989         ":define")      d_endnetent_r_proto=define
11990                 set d_endnetent_r_proto endnetent_r $hdrs
11991                 eval $hasproto ;;
11992         *)      ;;
11993         esac
11994         case "$d_endnetent_r_proto" in
11995         define)
11996         case "$endnetent_r_proto" in
11997         ''|0) try='int endnetent_r(struct netent_data*);'
11998         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11999         esac
12000         case "$endnetent_r_proto" in
12001         ''|0) try='void endnetent_r(struct netent_data*);'
12002         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
12003         esac
12004         case "$endnetent_r_proto" in
12005         ''|0)   d_endnetent_r=undef
12006                 endnetent_r_proto=0
12007                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
12008         * )     case "$endnetent_r_proto" in
12009                 REENTRANT_PROTO*) ;;
12010                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
12011                 esac
12012                 echo "Prototype: $try" ;;
12013         esac
12014         ;;
12015         *)      case "$usethreads" in
12016                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
12017                 esac
12018                 d_endnetent_r=undef
12019                 endnetent_r_proto=0
12020                 ;;
12021         esac
12022         ;;
12023 *)      endnetent_r_proto=0
12024         ;;
12025 esac
12026
12027 : see if endprotoent exists
12028 set endprotoent d_endpent
12029 eval $inlibc
12030
12031 : see if endprotoent_r exists
12032 set endprotoent_r d_endprotoent_r
12033 eval $inlibc
12034 case "$d_endprotoent_r" in
12035 "$define")
12036         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12037         case "$d_endprotoent_r_proto:$usethreads" in
12038         ":define")      d_endprotoent_r_proto=define
12039                 set d_endprotoent_r_proto endprotoent_r $hdrs
12040                 eval $hasproto ;;
12041         *)      ;;
12042         esac
12043         case "$d_endprotoent_r_proto" in
12044         define)
12045         case "$endprotoent_r_proto" in
12046         ''|0) try='int endprotoent_r(struct protoent_data*);'
12047         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
12048         esac
12049         case "$endprotoent_r_proto" in
12050         ''|0) try='void endprotoent_r(struct protoent_data*);'
12051         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
12052         esac
12053         case "$endprotoent_r_proto" in
12054         ''|0)   d_endprotoent_r=undef
12055                 endprotoent_r_proto=0
12056                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
12057         * )     case "$endprotoent_r_proto" in
12058                 REENTRANT_PROTO*) ;;
12059                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
12060                 esac
12061                 echo "Prototype: $try" ;;
12062         esac
12063         ;;
12064         *)      case "$usethreads" in
12065                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
12066                 esac
12067                 d_endprotoent_r=undef
12068                 endprotoent_r_proto=0
12069                 ;;
12070         esac
12071         ;;
12072 *)      endprotoent_r_proto=0
12073         ;;
12074 esac
12075
12076 : see if endpwent exists
12077 set endpwent d_endpwent
12078 eval $inlibc
12079
12080 : see if this is a pwd.h system
12081 set pwd.h i_pwd
12082 eval $inhdr
12083
12084 case "$i_pwd" in
12085 $define)
12086         xxx=`./findhdr pwd.h`
12087         $cppstdin $cppflags $cppminus < $xxx >$$.h
12088
12089         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
12090                 val="$define"
12091         else
12092                 val="$undef"
12093         fi
12094         set d_pwquota
12095         eval $setvar
12096
12097         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
12098                 val="$define"
12099         else
12100                 val="$undef"
12101         fi
12102         set d_pwage
12103         eval $setvar
12104
12105         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
12106                 val="$define"
12107         else
12108                 val="$undef"
12109         fi
12110         set d_pwchange
12111         eval $setvar
12112
12113         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
12114                 val="$define"
12115         else
12116                 val="$undef"
12117         fi
12118         set d_pwclass
12119         eval $setvar
12120
12121         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
12122                 val="$define"
12123         else
12124                 val="$undef"
12125         fi
12126         set d_pwexpire
12127         eval $setvar
12128
12129         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
12130                 val="$define"
12131         else
12132                 val="$undef"
12133         fi
12134         set d_pwcomment
12135         eval $setvar
12136
12137         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
12138                 val="$define"
12139         else
12140                 val="$undef"
12141         fi
12142         set d_pwgecos
12143         eval $setvar
12144
12145         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
12146                 val="$define"
12147         else
12148                 val="$undef"
12149         fi
12150         set d_pwpasswd
12151         eval $setvar
12152
12153         $rm -f $$.h
12154         ;;
12155 *)
12156         val="$undef"; 
12157         set d_pwquota; eval $setvar
12158         set d_pwage; eval $setvar
12159         set d_pwchange; eval $setvar
12160         set d_pwclass; eval $setvar
12161         set d_pwexpire; eval $setvar
12162         set d_pwcomment; eval $setvar
12163         set d_pwgecos; eval $setvar
12164         set d_pwpasswd; eval $setvar
12165         ;;
12166 esac
12167
12168 : see if endpwent_r exists
12169 set endpwent_r d_endpwent_r
12170 eval $inlibc
12171 case "$d_endpwent_r" in
12172 "$define")
12173         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12174         case "$d_endpwent_r_proto:$usethreads" in
12175         ":define")      d_endpwent_r_proto=define
12176                 set d_endpwent_r_proto endpwent_r $hdrs
12177                 eval $hasproto ;;
12178         *)      ;;
12179         esac
12180         case "$d_endpwent_r_proto" in
12181         define)
12182         case "$endpwent_r_proto" in
12183         ''|0) try='int endpwent_r(FILE**);'
12184         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
12185         esac
12186         case "$endpwent_r_proto" in
12187         ''|0) try='void endpwent_r(FILE**);'
12188         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
12189         esac
12190         case "$endpwent_r_proto" in
12191         ''|0)   d_endpwent_r=undef
12192                 endpwent_r_proto=0
12193                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12194         * )     case "$endpwent_r_proto" in
12195                 REENTRANT_PROTO*) ;;
12196                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12197                 esac
12198                 echo "Prototype: $try" ;;
12199         esac
12200         ;;
12201         *)      case "$usethreads" in
12202                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12203                 esac
12204                 d_endpwent_r=undef
12205                 endpwent_r_proto=0
12206                 ;;
12207         esac
12208         ;;
12209 *)      endpwent_r_proto=0
12210         ;;
12211 esac
12212
12213 : see if endservent exists
12214 set endservent d_endsent
12215 eval $inlibc
12216
12217 : see if endservent_r exists
12218 set endservent_r d_endservent_r
12219 eval $inlibc
12220 case "$d_endservent_r" in
12221 "$define")
12222         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12223         case "$d_endservent_r_proto:$usethreads" in
12224         ":define")      d_endservent_r_proto=define
12225                 set d_endservent_r_proto endservent_r $hdrs
12226                 eval $hasproto ;;
12227         *)      ;;
12228         esac
12229         case "$d_endservent_r_proto" in
12230         define)
12231         case "$endservent_r_proto" in
12232         ''|0) try='int endservent_r(struct servent_data*);'
12233         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12234         esac
12235         case "$endservent_r_proto" in
12236         ''|0) try='void endservent_r(struct servent_data*);'
12237         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12238         esac
12239         case "$endservent_r_proto" in
12240         ''|0)   d_endservent_r=undef
12241                 endservent_r_proto=0
12242                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12243         * )     case "$endservent_r_proto" in
12244                 REENTRANT_PROTO*) ;;
12245                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12246                 esac
12247                 echo "Prototype: $try" ;;
12248         esac
12249         ;;
12250         *)      case "$usethreads" in
12251                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12252                 esac
12253                 d_endservent_r=undef
12254                 endservent_r_proto=0
12255                 ;;
12256         esac
12257         ;;
12258 *)      endservent_r_proto=0
12259         ;;
12260 esac
12261
12262 : Locate the flags for 'open()'
12263 echo " "
12264 $cat >try.c <<EOCP
12265 #include <sys/types.h>
12266 #ifdef I_FCNTL
12267 #include <fcntl.h>
12268 #endif
12269 #ifdef I_SYS_FILE
12270 #include <sys/file.h>
12271 #endif
12272 #$i_stdlib I_STDLIB
12273 #ifdef I_STDLIB
12274 #include <stdlib.h>
12275 #endif
12276 int main() {
12277         if(O_RDONLY);
12278 #ifdef O_TRUNC
12279         exit(0);
12280 #else
12281         exit(1);
12282 #endif
12283 }
12284 EOCP
12285 : check sys/file.h first to get FREAD on Sun
12286 if $test `./findhdr sys/file.h` && \
12287                 set try -DI_SYS_FILE && eval $compile; then
12288         h_sysfile=true;
12289         echo "<sys/file.h> defines the O_* constants..." >&4
12290         if $run ./try; then
12291                 echo "and you have the 3 argument form of open()." >&4
12292                 val="$define"
12293         else
12294                 echo "but not the 3 argument form of open().  Oh, well." >&4
12295                 val="$undef"
12296         fi
12297 elif $test `./findhdr fcntl.h` && \
12298                 set try -DI_FCNTL && eval $compile; then
12299         h_fcntl=true;
12300         echo "<fcntl.h> defines the O_* constants..." >&4
12301         if $run ./try; then
12302                 echo "and you have the 3 argument form of open()." >&4
12303                 val="$define"
12304         else
12305                 echo "but not the 3 argument form of open().  Oh, well." >&4
12306                 val="$undef"
12307         fi
12308 else
12309         val="$undef"
12310         echo "I can't find the O_* constant definitions!  You got problems." >&4
12311 fi
12312 set d_open3
12313 eval $setvar
12314 $rm_try
12315
12316 : script used to emit important warnings
12317 cat >warn <<EOS
12318 $startsh
12319 if test \$# -gt 0; then
12320         echo "\$@" >msg
12321 else
12322         cat >msg
12323 fi
12324 echo "*** WARNING:" >&4
12325 sed -e 's/^/*** /' <msg >&4
12326 echo "*** " >&4
12327 cat msg >>config.msg
12328 echo " " >>config.msg
12329 rm -f msg
12330 EOS
12331 chmod +x warn
12332 $eunicefix warn
12333
12334 : see which of string.h or strings.h is needed
12335 echo " "
12336 strings=`./findhdr string.h`
12337 if $test "$strings" && $test -r "$strings"; then
12338         echo "Using <string.h> instead of <strings.h>." >&4
12339         val="$define"
12340 else
12341         val="$undef"
12342         strings=`./findhdr strings.h`
12343         if $test "$strings" && $test -r "$strings"; then
12344                 echo "Using <strings.h> instead of <string.h>." >&4
12345         else
12346                 ./warn "No string header found -- You'll surely have problems."
12347         fi
12348 fi
12349 set i_string
12350 eval $setvar
12351 case "$i_string" in
12352 "$undef") strings=`./findhdr strings.h`;;
12353 *)        strings=`./findhdr string.h`;;
12354 esac
12355
12356 : see if this is a sys/file.h system
12357 val=''
12358 set sys/file.h val
12359 eval $inhdr
12360
12361 : do we need to include sys/file.h ?
12362 case "$val" in
12363 "$define")
12364         echo " "
12365         if $h_sysfile; then
12366                 val="$define"
12367                 echo "We'll be including <sys/file.h>." >&4
12368         else
12369                 val="$undef"
12370                 echo "We won't be including <sys/file.h>." >&4
12371         fi
12372         ;;
12373 *)
12374         h_sysfile=false
12375         ;;
12376 esac
12377 set i_sysfile
12378 eval $setvar
12379
12380 : see if fcntl.h is there
12381 val=''
12382 set fcntl.h val
12383 eval $inhdr
12384
12385 : see if we can include fcntl.h
12386 case "$val" in
12387 "$define")
12388         echo " "
12389         if $h_fcntl; then
12390                 val="$define"
12391                 echo "We'll be including <fcntl.h>." >&4
12392         else
12393                 val="$undef"
12394                 if $h_sysfile; then
12395         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12396                 else
12397                         echo "We won't be including <fcntl.h>." >&4
12398                 fi
12399         fi
12400         ;;
12401 *)
12402         h_fcntl=false
12403         val="$undef"
12404         ;;
12405 esac
12406 set i_fcntl
12407 eval $setvar
12408
12409 : see if fork exists
12410 set fork d_fork
12411 eval $inlibc
12412
12413 : see if pipe exists
12414 set pipe d_pipe
12415 eval $inlibc
12416
12417 : check for non-blocking I/O stuff
12418 case "$h_sysfile" in
12419 true) echo "#include <sys/file.h>" > head.c;;
12420 *)
12421        case "$h_fcntl" in
12422        true) echo "#include <fcntl.h>" > head.c;;
12423        *) echo "#include <sys/fcntl.h>" > head.c;;
12424        esac
12425        ;;
12426 esac
12427 echo " "
12428 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12429 case "$o_nonblock" in
12430 '')
12431         $cat head.c > try.c
12432         $cat >>try.c <<EOCP
12433 #include <stdio.h>
12434 #$i_stdlib I_STDLIB
12435 #ifdef I_STDLIB
12436 #include <stdlib.h>
12437 #endif
12438 #$i_fcntl I_FCNTL
12439 #ifdef I_FCNTL
12440 #include <fcntl.h>
12441 #endif
12442 int main() {
12443 #ifdef O_NONBLOCK
12444         printf("O_NONBLOCK\n");
12445         exit(0);
12446 #endif
12447 #ifdef O_NDELAY
12448         printf("O_NDELAY\n");
12449         exit(0);
12450 #endif
12451 #ifdef FNDELAY
12452         printf("FNDELAY\n");
12453         exit(0);
12454 #endif
12455         exit(0);
12456 }
12457 EOCP
12458         set try
12459         if eval $compile_ok; then
12460                 o_nonblock=`$run ./try`
12461                 case "$o_nonblock" in
12462                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12463                 *) echo "Seems like we can use $o_nonblock.";;
12464                 esac
12465         else
12466                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12467         fi
12468         ;;
12469 *) echo "Using $hint value $o_nonblock.";;
12470 esac
12471 $rm_try
12472
12473 echo " "
12474 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12475 case "$eagain" in
12476 '')
12477         case "$d_fork:$d_pipe" in
12478         define:define)
12479         $cat head.c > try.c
12480         $cat >>try.c <<EOCP
12481 #include <errno.h>
12482 #include <sys/types.h>
12483 #include <signal.h>
12484 #include <stdio.h>
12485 #$i_stdlib I_STDLIB
12486 #ifdef I_STDLIB
12487 #include <stdlib.h>
12488 #endif
12489 #$i_fcntl I_FCNTL
12490 #ifdef I_FCNTL
12491 #include <fcntl.h>
12492 #endif
12493 #define MY_O_NONBLOCK $o_nonblock
12494 #ifndef errno  /* XXX need better Configure test */
12495 extern int errno;
12496 #endif
12497 #$i_unistd I_UNISTD
12498 #ifdef I_UNISTD
12499 #include <unistd.h>
12500 #endif
12501 #$i_string I_STRING
12502 #ifdef I_STRING
12503 #include <string.h>
12504 #else
12505 #include <strings.h>
12506 #endif
12507 $signal_t blech(int x) { exit(3); }
12508 EOCP
12509         $cat >> try.c <<'EOCP'
12510 int main()
12511 {
12512         int pd[2];
12513         int pu[2];
12514         char buf[1];
12515         char string[100];
12516
12517         pipe(pd);       /* Down: child -> parent */
12518         pipe(pu);       /* Up: parent -> child */
12519         if (0 != fork()) {
12520                 int ret;
12521                 close(pd[1]);   /* Parent reads from pd[0] */
12522                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
12523 #ifdef F_SETFL
12524                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12525                         exit(1);
12526 #else
12527                 exit(4);
12528 #endif
12529                 signal(SIGALRM, blech);
12530                 alarm(5);
12531                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
12532                         exit(2);
12533                 sprintf(string, "%d\n", ret);
12534                 write(2, string, strlen(string));
12535                 alarm(0);
12536 #ifdef EAGAIN
12537                 if (errno == EAGAIN) {
12538                         printf("EAGAIN\n");
12539                         goto ok;
12540                 }
12541 #endif
12542 #ifdef EWOULDBLOCK
12543                 if (errno == EWOULDBLOCK)
12544                         printf("EWOULDBLOCK\n");
12545 #endif
12546         ok:
12547                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
12548                 sleep(2);                               /* Give it time to close our pipe */
12549                 alarm(5);
12550                 ret = read(pd[0], buf, 1);      /* Should read EOF */
12551                 alarm(0);
12552                 sprintf(string, "%d\n", ret);
12553                 write(4, string, strlen(string));
12554                 exit(0);
12555         }
12556
12557         close(pd[0]);                   /* We write to pd[1] */
12558         close(pu[1]);                   /* We read from pu[0] */
12559         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
12560         close(pd[1]);                   /* Pipe pd is now fully closed! */
12561         exit(0);                                /* Bye bye, thank you for playing! */
12562 }
12563 EOCP
12564         set try
12565         if eval $compile_ok; then
12566                 echo "$startsh" >mtry
12567                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12568                 chmod +x mtry
12569                 ./mtry >/dev/null 2>&1
12570                 case $? in
12571                 0) eagain=`$cat try.out`;;
12572                 1) echo "Could not perform non-blocking setting!";;
12573                 2) echo "I did a successful read() for something that was not there!";;
12574                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12575                 4) echo "Could not find F_SETFL!";;
12576                 *) echo "Something terribly wrong happened during testing.";;
12577                 esac
12578                 rd_nodata=`$cat try.ret`
12579                 echo "A read() system call with no data present returns $rd_nodata."
12580                 case "$rd_nodata" in
12581                 0|-1) ;;
12582                 *)
12583                         echo "(That's peculiar, fixing that to be -1.)"
12584                         rd_nodata=-1
12585                         ;;
12586                 esac
12587                 case "$eagain" in
12588                 '')
12589                         echo "Forcing errno EAGAIN on read() with no data available."
12590                         eagain=EAGAIN
12591                         ;;
12592                 *)
12593                         echo "Your read() sets errno to $eagain when no data is available."
12594                         ;;
12595                 esac
12596                 status=`$cat try.err`
12597                 case "$status" in
12598                 0) echo "And it correctly returns 0 to signal EOF.";;
12599                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12600                 *) echo "However, your read() returns '$status' on EOF??";;
12601                 esac
12602                 val="$define"
12603                 if test "$status" = "$rd_nodata"; then
12604                         echo "WARNING: you can't distinguish between EOF and no data!"
12605                         val="$undef"
12606                 fi
12607         else
12608                 echo "I can't compile the test program--assuming errno EAGAIN will do."
12609                 eagain=EAGAIN
12610         fi
12611         ;;
12612         *)      echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12613                 eagain=EAGAIN
12614                 val="$define"
12615                 ;;
12616         esac
12617         set d_eofnblk
12618         eval $setvar
12619         ;;
12620 *)
12621         echo "Using $hint value $eagain."
12622         echo "Your read() returns $rd_nodata when no data is present."
12623         case "$d_eofnblk" in
12624         "$define") echo "And you can see EOF because read() returns 0.";;
12625         "$undef") echo "But you can't see EOF status from read() returned value.";;
12626         *)
12627                 echo "(Assuming you can't see EOF status from read anyway.)"
12628                 d_eofnblk=$undef
12629                 ;;
12630         esac
12631         ;;
12632 esac
12633 $rm_try head.c mtry
12634
12635 : see if _ptr and _cnt from stdio act std
12636 echo " "
12637
12638 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12639         echo "(Looks like you have stdio.h from BSD.)"
12640         case "$stdio_ptr" in
12641         '') stdio_ptr='((fp)->_p)'
12642                 ptr_lval=$define
12643                 ;;
12644         *)      ptr_lval=$d_stdio_ptr_lval;;
12645         esac
12646         case "$stdio_cnt" in
12647         '') stdio_cnt='((fp)->_r)'
12648                 cnt_lval=$define
12649                 ;;
12650         *)      cnt_lval=$d_stdio_cnt_lval;;
12651         esac
12652         case "$stdio_base" in
12653         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12654         esac
12655         case "$stdio_bufsiz" in
12656         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12657         esac
12658 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12659         echo "(Looks like you have stdio.h from Linux.)"
12660         case "$stdio_ptr" in
12661         '') stdio_ptr='((fp)->_IO_read_ptr)'
12662                 ptr_lval=$define
12663                 ;;
12664         *)      ptr_lval=$d_stdio_ptr_lval;;
12665         esac
12666         case "$stdio_cnt" in
12667         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12668                 cnt_lval=$undef
12669                 ;;
12670         *)      cnt_lval=$d_stdio_cnt_lval;;
12671         esac
12672         case "$stdio_base" in
12673         '') stdio_base='((fp)->_IO_read_base)';;
12674         esac
12675         case "$stdio_bufsiz" in
12676         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12677         esac
12678 else
12679         case "$stdio_ptr" in
12680         '') stdio_ptr='((fp)->_ptr)'
12681                 ptr_lval=$define
12682                 ;;
12683         *)      ptr_lval=$d_stdio_ptr_lval;;
12684         esac
12685         case "$stdio_cnt" in
12686         '') stdio_cnt='((fp)->_cnt)'
12687                 cnt_lval=$define
12688                 ;;
12689         *)      cnt_lval=$d_stdio_cnt_lval;;
12690         esac
12691         case "$stdio_base" in
12692         '') stdio_base='((fp)->_base)';;
12693         esac
12694         case "$stdio_bufsiz" in
12695         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12696         esac
12697 fi
12698
12699 : test whether _ptr and _cnt really work
12700 echo "Checking how std your stdio is..." >&4
12701 $cat >try.c <<EOP
12702 #include <stdio.h>
12703 #$i_stdlib I_STDLIB
12704 #ifdef I_STDLIB
12705 #include <stdlib.h>
12706 #endif
12707 #define FILE_ptr(fp)    $stdio_ptr
12708 #define FILE_cnt(fp)    $stdio_cnt
12709 int main() {
12710         FILE *fp = fopen("try.c", "r");
12711         char c = getc(fp);
12712         if (
12713                 18 <= FILE_cnt(fp) &&
12714                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12715         )
12716                 exit(0);
12717         exit(1);
12718 }
12719 EOP
12720 val="$undef"
12721 set try
12722 if eval $compile && $to try.c; then
12723         if $run ./try; then
12724                 echo "Your stdio acts pretty std."
12725                 val="$define"
12726         else
12727                 echo "Your stdio isn't very std."
12728         fi
12729 else
12730         echo "Your stdio doesn't appear very std."
12731 fi
12732 $rm_try
12733
12734 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12735 # direct buffer manipulation no longer works.  The Configure tests
12736 # should be changed to correctly detect this, but until then,
12737 # the following check should at least let perl compile and run.
12738 # (This quick fix should be updated before 5.8.1.)
12739 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
12740 # A. Dougherty, June 3, 2002.
12741 case "$d_gnulibc" in
12742 $define)
12743         case "$gnulibc_version" in
12744         2.[01]*)  ;;
12745         2.2) ;;
12746         2.2.[0-9]) ;;
12747         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12748                 val="$undef"
12749                 ;;
12750         esac
12751         ;;
12752 esac
12753 set d_stdstdio
12754 eval $setvar
12755
12756 : Can _ptr be used as an lvalue?
12757 case "$d_stdstdio$ptr_lval" in
12758 $define$define) val=$define ;;
12759 *) val=$undef ;;
12760 esac
12761 set d_stdio_ptr_lval
12762 eval $setvar
12763
12764 : Can _cnt be used as an lvalue?
12765 case "$d_stdstdio$cnt_lval" in
12766 $define$define) val=$define ;;
12767 *) val=$undef ;;
12768 esac
12769 set d_stdio_cnt_lval
12770 eval $setvar
12771
12772
12773 : test whether setting _ptr sets _cnt as a side effect
12774 d_stdio_ptr_lval_sets_cnt="$undef"
12775 d_stdio_ptr_lval_nochange_cnt="$undef"
12776 case "$d_stdio_ptr_lval$d_stdstdio" in
12777 $define$define)
12778         echo "Checking to see what happens if we set the stdio ptr..." >&4
12779 $cat >try.c <<EOP
12780 #include <stdio.h>
12781 /* Can we scream? */
12782 /* Eat dust sed :-) */
12783 /* In the buffer space, no one can hear you scream. */
12784 #$i_stdlib I_STDLIB
12785 #ifdef I_STDLIB
12786 #include <stdlib.h>
12787 #endif
12788 #define FILE_ptr(fp)    $stdio_ptr
12789 #define FILE_cnt(fp)    $stdio_cnt
12790 #include <sys/types.h>
12791 int main() {
12792         FILE *fp = fopen("try.c", "r");
12793         int c;
12794         char *ptr;
12795         size_t cnt;
12796         if (!fp) {
12797             puts("Fail even to read");
12798             exit(1);
12799         }
12800         c = getc(fp); /* Read away the first # */
12801         if (c == EOF) {
12802             puts("Fail even to read");
12803             exit(1);
12804         }
12805         if (!(
12806                 18 <= FILE_cnt(fp) &&
12807                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12808         )) {
12809                 puts("Fail even to read");
12810                 exit (1);
12811         }
12812         ptr = (char*) FILE_ptr(fp);
12813         cnt = (size_t)FILE_cnt(fp);
12814
12815         FILE_ptr(fp) += 42;
12816
12817         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12818                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12819                 exit (1);
12820         }
12821         if (FILE_cnt(fp) <= 20) {
12822                 printf ("Fail (<20 chars to test)");
12823                 exit (1);
12824         }
12825         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12826                 puts("Fail compare");
12827                 exit (1);
12828         }
12829         if (cnt == FILE_cnt(fp)) {
12830                 puts("Pass_unchanged");
12831                 exit (0);
12832         }
12833         if (FILE_cnt(fp) == (cnt - 42)) {
12834                 puts("Pass_changed");
12835                 exit (0);
12836         }
12837         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12838         return 1;
12839
12840 }
12841 EOP
12842         set try
12843         if eval $compile && $to try.c; then
12844                 case `$run ./try` in
12845                 Pass_changed)
12846                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12847                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12848                 Pass_unchanged)
12849                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12850                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12851                 Fail*)
12852                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12853                 *)
12854                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12855         esac
12856         else
12857                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12858         fi
12859         $rm_try
12860         ;;
12861 esac
12862
12863 : see if _base is also standard
12864 val="$undef"
12865 case "$d_stdstdio" in
12866 $define)
12867         $cat >try.c <<EOP
12868 #include <stdio.h>
12869 #$i_stdlib I_STDLIB
12870 #ifdef I_STDLIB
12871 #include <stdlib.h>
12872 #endif
12873 #define FILE_base(fp)   $stdio_base
12874 #define FILE_bufsiz(fp) $stdio_bufsiz
12875 int main() {
12876         FILE *fp = fopen("try.c", "r");
12877         char c = getc(fp);
12878         if (
12879                 19 <= FILE_bufsiz(fp) &&
12880                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12881         )
12882                 exit(0);
12883         exit(1);
12884 }
12885 EOP
12886         set try
12887         if eval $compile && $to try.c; then
12888                 if $run ./try; then
12889                         echo "And its _base field acts std."
12890                         val="$define"
12891                 else
12892                         echo "But its _base field isn't std."
12893                 fi
12894         else
12895                 echo "However, it seems to be lacking the _base field."
12896         fi
12897         $rm_try
12898         ;;
12899 esac
12900 set d_stdiobase
12901 eval $setvar
12902
12903 : see if fast_stdio exists
12904 val="$undef"
12905 case "$d_stdstdio:$d_stdio_ptr_lval" in
12906 "$define:$define")
12907         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12908         *$define*)
12909                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12910                 val="$define"
12911                 ;;
12912         esac
12913         ;;
12914 esac
12915 set d_faststdio
12916 eval $setvar
12917
12918
12919
12920 : see if fchdir exists
12921 set fchdir d_fchdir
12922 eval $inlibc
12923
12924 : see if fchmod exists
12925 set fchmod d_fchmod
12926 eval $inlibc
12927
12928 : see if fchown exists
12929 set fchown d_fchown
12930 eval $inlibc
12931
12932 : see if this is an fcntl system
12933 set fcntl d_fcntl
12934 eval $inlibc
12935
12936 : See if fcntl-based locking works.
12937 echo " "
12938 $cat >try.c <<EOCP
12939 #$i_stdlib I_STDLIB
12940 #ifdef I_STDLIB
12941 #include <stdlib.h>
12942 #endif
12943 #include <unistd.h>
12944 #include <fcntl.h>
12945 #include <signal.h>
12946 $signal_t blech(int x) { exit(3); }
12947 int main() {
12948 #if defined(F_SETLK) && defined(F_SETLKW)
12949      struct flock flock;
12950      int retval, fd;
12951      fd = open("try.c", O_RDONLY);
12952      flock.l_type = F_RDLCK;
12953      flock.l_whence = SEEK_SET;
12954      flock.l_start = flock.l_len = 0;
12955      signal(SIGALRM, blech);
12956      alarm(10);
12957      retval = fcntl(fd, F_SETLK, &flock);
12958      close(fd);
12959      (retval < 0 ? exit(2) : exit(0));
12960 #else
12961      exit(2);
12962 #endif
12963 }
12964 EOCP
12965 echo "Checking if fcntl-based file locking works... "
12966 case "$d_fcntl" in
12967 "$define")
12968         set try
12969         if eval $compile_ok; then
12970                 if $run ./try; then
12971                         echo "Yes, it seems to work."
12972                         val="$define"
12973                 else
12974                         echo "Nope, it didn't work."
12975                         val="$undef"
12976                         case "$?" in
12977                         3) $cat >&4 <<EOM
12978 ***
12979 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12980 *** This is (almost) impossible.
12981 *** If your NFS lock daemons are not feeling well, something like
12982 *** this may happen, please investigate.  Cannot continue, aborting.
12983 ***
12984 EOM
12985                                 exit 1
12986                                 ;;
12987                         esac
12988                 fi
12989         else
12990                 echo "I'm unable to compile the test program, so I'll assume not."
12991                 val="$undef"
12992         fi
12993         ;;
12994 *) val="$undef";
12995         echo "Nope, since you don't even have fcntl()."
12996         ;;
12997 esac
12998 set d_fcntl_can_lock
12999 eval $setvar
13000 $rm_try
13001
13002 : check for fd_set items
13003 $cat <<EOM
13004
13005 Checking to see how well your C compiler handles fd_set and friends ...
13006 EOM
13007 $cat >try.c <<EOCP
13008 #$i_stdlib I_STDLIB
13009 #ifdef I_STDLIB
13010 #include <stdlib.h>
13011 #endif
13012 #$i_systime I_SYS_TIME
13013 #$i_sysselct I_SYS_SELECT
13014 #$d_socket HAS_SOCKET
13015 #include <sys/types.h>
13016 #ifdef HAS_SOCKET
13017 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13018 #endif
13019 #ifdef I_SYS_TIME
13020 #include <sys/time.h>
13021 #endif
13022 #ifdef I_SYS_SELECT
13023 #include <sys/select.h>
13024 #endif
13025 int main() {
13026         fd_set fds;
13027
13028 #ifdef TRYBITS
13029         if(fds.fds_bits);
13030 #endif
13031
13032 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
13033         exit(0);
13034 #else
13035         exit(1);
13036 #endif
13037 }
13038 EOCP
13039 set try -DTRYBITS
13040 if eval $compile; then
13041         d_fds_bits="$define"
13042         d_fd_set="$define"
13043         echo "Well, your system knows about the normal fd_set typedef..." >&4
13044         if $run ./try; then
13045                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
13046                 d_fd_macros="$define"
13047         else
13048                 $cat >&4 <<'EOM'
13049 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
13050 EOM
13051                 d_fd_macros="$undef"
13052         fi
13053 else
13054         $cat <<'EOM'
13055 Hmm, your compiler has some difficulty with fd_set.  Checking further...
13056 EOM
13057         set try
13058         if eval $compile; then
13059                 d_fds_bits="$undef"
13060                 d_fd_set="$define"
13061                 echo "Well, your system has some sort of fd_set available..." >&4
13062                 if $run ./try; then
13063                         echo "and you have the normal fd_set macros." >&4
13064                         d_fd_macros="$define"
13065                 else
13066                         $cat <<'EOM'
13067 but not the normal fd_set macros!  Gross!  More work for me...
13068 EOM
13069                         d_fd_macros="$undef"
13070                 fi
13071         else
13072         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
13073                 d_fd_set="$undef"
13074                 d_fds_bits="$undef"
13075                 d_fd_macros="$undef"
13076         fi
13077 fi
13078 $rm_try
13079
13080 : see if fgetpos exists
13081 set fgetpos d_fgetpos
13082 eval $inlibc
13083
13084 : see if finite exists
13085 set finite d_finite
13086 eval $inlibc
13087
13088 : see if finitel exists
13089 set finitel d_finitel
13090 eval $inlibc
13091
13092 : see if flock exists
13093 set flock d_flock
13094 eval $inlibc
13095
13096 : see if prototype for flock is available
13097 echo " "
13098 set d_flockproto flock $i_sysfile sys/file.h
13099 eval $hasproto
13100
13101 : see if fp_class exists
13102 set fp_class d_fp_class
13103 eval $inlibc
13104
13105 : see if pathconf exists
13106 set pathconf d_pathconf
13107 eval $inlibc
13108
13109 : see if fpathconf exists
13110 set fpathconf d_fpathconf
13111 eval $inlibc
13112
13113 : see if fpclass exists
13114 set fpclass d_fpclass
13115 eval $inlibc
13116
13117 : see if fpclassify exists
13118 set fpclassify d_fpclassify
13119 eval $inlibc
13120
13121 : see if fpclassl exists
13122 set fpclassl d_fpclassl
13123 eval $inlibc
13124
13125 : check for fpos64_t
13126 echo " "
13127 echo "Checking to see if you have fpos64_t..." >&4
13128 $cat >try.c <<EOCP
13129 #include <stdio.h>
13130 int main() { fpos64_t x = 7; }
13131 EOCP
13132 set try
13133 if eval $compile; then
13134         val="$define"
13135         echo "You have fpos64_t."
13136 else
13137         val="$undef"
13138         echo "You do not have fpos64_t."
13139         case "$fpossize" in
13140         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
13141         esac
13142 fi
13143 $rm_try
13144 set d_fpos64_t
13145 eval $setvar
13146
13147 : see if frexpl exists
13148 set frexpl d_frexpl
13149 eval $inlibc
13150
13151 : see if this is a sys/param system
13152 set sys/param.h i_sysparam
13153 eval $inhdr
13154
13155 : see if this is a sys/mount.h system
13156 set sys/mount.h i_sysmount
13157 eval $inhdr
13158
13159 : Check for fs_data_s
13160 echo " "
13161 echo "Checking to see if your system supports struct fs_data..." >&4
13162 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
13163 eval $hasstruct
13164 case "$d_fs_data_s" in
13165 "$define")      echo "Yes, it does."   ;;
13166 *)              echo "No, it doesn't." ;;
13167 esac
13168
13169 : see if fseeko exists
13170 set fseeko d_fseeko
13171 eval $inlibc
13172 case "$longsize" in
13173 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
13174 esac
13175
13176 : see if fsetpos exists
13177 set fsetpos d_fsetpos
13178 eval $inlibc
13179
13180 : see if fstatfs exists
13181 set fstatfs d_fstatfs
13182 eval $inlibc
13183
13184 : see if statvfs exists
13185 set statvfs d_statvfs
13186 eval $inlibc
13187
13188 : see if fstatvfs exists
13189 set fstatvfs d_fstatvfs
13190 eval $inlibc
13191
13192
13193 : see if fsync exists
13194 set fsync d_fsync
13195 eval $inlibc
13196
13197 : see if ftello exists
13198 set ftello d_ftello
13199 eval $inlibc
13200 case "$longsize" in
13201 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
13202 esac
13203
13204 : check for a working futimes
13205 d_futimes="$undef"
13206 echo " "
13207 echo "Checking if you have a working futimes()" >&4
13208 $cat >try.c <<EOCP
13209 #include <stdio.h>
13210 #include <sys/time.h>
13211 #include <errno.h>
13212 #include <fcntl.h>
13213
13214 int main ()
13215 {
13216     int fd, rv;
13217     fd = open ("try.c", O_RDWR);
13218     if (-1 == fd) exit (1);
13219     rv = futimes (fd, NULL);
13220     exit (rv == -1 ? errno : 0);
13221 }
13222 EOCP
13223 set try
13224 if eval $compile; then
13225     `$run ./try`
13226     rc=$?
13227     case "$rc" in
13228         0)  echo "Yes, you have" >&4
13229             d_futimes="$define"
13230             ;;
13231         *)  echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13232             ;;
13233     esac
13234 else
13235     echo "No, it does not (probably harmless)" >&4
13236 fi
13237 $rm_try
13238
13239 : see if getcwd exists
13240 set getcwd d_getcwd
13241 eval $inlibc
13242
13243 : see if getespwnam exists
13244 set getespwnam d_getespwnam
13245 eval $inlibc
13246
13247 : see if getfsstat exists
13248 set getfsstat d_getfsstat
13249 eval $inlibc
13250
13251 : see if getgrent exists
13252 set getgrent d_getgrent
13253 eval $inlibc
13254
13255 : see if getgrent_r exists
13256 set getgrent_r d_getgrent_r
13257 eval $inlibc
13258 case "$d_getgrent_r" in
13259 "$define")
13260         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13261         case "$d_getgrent_r_proto:$usethreads" in
13262         ":define")      d_getgrent_r_proto=define
13263                 set d_getgrent_r_proto getgrent_r $hdrs
13264                 eval $hasproto ;;
13265         *)      ;;
13266         esac
13267         case "$d_getgrent_r_proto" in
13268         define)
13269         case "$getgrent_r_proto" in
13270         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13271         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13272         esac
13273         case "$getgrent_r_proto" in
13274         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13275         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13276         esac
13277         case "$getgrent_r_proto" in
13278         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13279         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13280         esac
13281         case "$getgrent_r_proto" in
13282         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13283         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13284         esac
13285         case "$getgrent_r_proto" in
13286         ''|0) try='int getgrent_r(struct group*, char*, int);'
13287         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13288         esac
13289         case "$getgrent_r_proto" in
13290         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13291         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13292         esac
13293         case "$getgrent_r_proto" in
13294         ''|0)   d_getgrent_r=undef
13295                 getgrent_r_proto=0
13296                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13297         * )     case "$getgrent_r_proto" in
13298                 REENTRANT_PROTO*) ;;
13299                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13300                 esac
13301                 echo "Prototype: $try" ;;
13302         esac
13303         ;;
13304         *)      case "$usethreads" in
13305                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13306                 esac
13307                 d_getgrent_r=undef
13308                 getgrent_r_proto=0
13309                 ;;
13310         esac
13311         ;;
13312 *)      getgrent_r_proto=0
13313         ;;
13314 esac
13315
13316 : see if getgrgid_r exists
13317 set getgrgid_r d_getgrgid_r
13318 eval $inlibc
13319 case "$d_getgrgid_r" in
13320 "$define")
13321         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13322         case "$d_getgrgid_r_proto:$usethreads" in
13323         ":define")      d_getgrgid_r_proto=define
13324                 set d_getgrgid_r_proto getgrgid_r $hdrs
13325                 eval $hasproto ;;
13326         *)      ;;
13327         esac
13328         case "$d_getgrgid_r_proto" in
13329         define)
13330         case "$getgrgid_r_proto" in
13331         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13332         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13333         esac
13334         case "$getgrgid_r_proto" in
13335         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13336         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13337         esac
13338         case "$getgrgid_r_proto" in
13339         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13340         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13341         esac
13342         case "$getgrgid_r_proto" in
13343         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13344         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13345         esac
13346         case "$getgrgid_r_proto" in
13347         ''|0)   d_getgrgid_r=undef
13348                 getgrgid_r_proto=0
13349                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13350         * )     case "$getgrgid_r_proto" in
13351                 REENTRANT_PROTO*) ;;
13352                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13353                 esac
13354                 echo "Prototype: $try" ;;
13355         esac
13356         ;;
13357         *)      case "$usethreads" in
13358                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13359                 esac
13360                 d_getgrgid_r=undef
13361                 getgrgid_r_proto=0
13362                 ;;
13363         esac
13364         ;;
13365 *)      getgrgid_r_proto=0
13366         ;;
13367 esac
13368
13369 : see if getgrnam_r exists
13370 set getgrnam_r d_getgrnam_r
13371 eval $inlibc
13372 case "$d_getgrnam_r" in
13373 "$define")
13374         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13375         case "$d_getgrnam_r_proto:$usethreads" in
13376         ":define")      d_getgrnam_r_proto=define
13377                 set d_getgrnam_r_proto getgrnam_r $hdrs
13378                 eval $hasproto ;;
13379         *)      ;;
13380         esac
13381         case "$d_getgrnam_r_proto" in
13382         define)
13383         case "$getgrnam_r_proto" in
13384         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13385         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13386         esac
13387         case "$getgrnam_r_proto" in
13388         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13389         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13390         esac
13391         case "$getgrnam_r_proto" in
13392         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13393         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13394         esac
13395         case "$getgrnam_r_proto" in
13396         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13397         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13398         esac
13399         case "$getgrnam_r_proto" in
13400         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13401         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13402         esac
13403         case "$getgrnam_r_proto" in
13404         ''|0)   d_getgrnam_r=undef
13405                 getgrnam_r_proto=0
13406                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13407         * )     case "$getgrnam_r_proto" in
13408                 REENTRANT_PROTO*) ;;
13409                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13410                 esac
13411                 echo "Prototype: $try" ;;
13412         esac
13413         ;;
13414         *)      case "$usethreads" in
13415                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13416                 esac
13417                 d_getgrnam_r=undef
13418                 getgrnam_r_proto=0
13419                 ;;
13420         esac
13421         ;;
13422 *)      getgrnam_r_proto=0
13423         ;;
13424 esac
13425
13426 : see if gethostbyaddr exists
13427 set gethostbyaddr d_gethbyaddr
13428 eval $inlibc
13429
13430 : see if gethostbyname exists
13431 set gethostbyname d_gethbyname
13432 eval $inlibc
13433
13434 : see if gethostent exists
13435 set gethostent d_gethent
13436 eval $inlibc
13437
13438 : see how we will look up host name
13439 echo " "
13440 call=''
13441 if set gethostname val -f d_gethname; eval $csym; $val; then
13442         echo 'gethostname() found.' >&4
13443         d_gethname="$define"
13444         call=gethostname
13445 fi
13446 if set uname val -f d_uname; eval $csym; $val; then
13447         if ./xenix; then
13448                 $cat <<'EOM'
13449 uname() was found, but you're running xenix, and older versions of xenix
13450 have a broken uname(). If you don't really know whether your xenix is old
13451 enough to have a broken system call, use the default answer.
13452
13453 EOM
13454                 dflt=y
13455                 case "$d_uname" in
13456                 "$define") dflt=n;;
13457                 esac
13458                 rp='Is your uname() broken?'
13459                 . ./myread
13460                 case "$ans" in
13461                 n*) d_uname="$define"; call=uname;;
13462                 esac
13463         else
13464                 echo 'uname() found.' >&4
13465                 d_uname="$define"
13466                 case "$call" in
13467                 '') call=uname ;;
13468                 esac
13469         fi
13470 fi
13471 case "$d_gethname" in
13472 '') d_gethname="$undef";;
13473 esac
13474 case "$d_uname" in
13475 '') d_uname="$undef";;
13476 esac
13477 case "$d_uname$d_gethname" in
13478 *define*)
13479         dflt=n
13480         cat <<EOM
13481
13482 Every now and then someone has a $call() that lies about the hostname
13483 but can't be fixed for political or economic reasons.  If you wish, I can
13484 pretend $call() isn't there and maybe compute hostname at run-time
13485 thanks to the '$phostname' command.
13486
13487 EOM
13488         rp="Shall I ignore $call() from now on?"
13489         . ./myread
13490         case "$ans" in
13491         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13492         esac;;
13493 esac
13494 case "$phostname" in
13495 '') aphostname='';;
13496 *) case "$aphostname" in
13497         /*) ;;
13498         *) set X $phostname
13499                 shift
13500                 file=$1
13501                 shift
13502                 file=`./loc $file $file $pth`
13503                 aphostname=`echo $file $*`
13504                 ;;
13505         esac
13506         ;;
13507 esac
13508 case "$d_uname$d_gethname" in
13509 *define*) ;;
13510 *)
13511         case "$phostname" in
13512         '')
13513                 echo "There will be no way for $package to get your hostname." >&4;;
13514         *)
13515         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13516                 ;;
13517         esac;;
13518 esac
13519 case "$d_phostname" in
13520 '') d_phostname="$undef";;
13521 esac
13522
13523 : see if gethostbyaddr_r exists
13524 set gethostbyaddr_r d_gethostbyaddr_r
13525 eval $inlibc
13526 case "$d_gethostbyaddr_r" in
13527 "$define")
13528         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13529         case "$d_gethostbyaddr_r_proto:$usethreads" in
13530         ":define")      d_gethostbyaddr_r_proto=define
13531                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13532                 eval $hasproto ;;
13533         *)      ;;
13534         esac
13535         case "$d_gethostbyaddr_r_proto" in
13536         define)
13537         case "$gethostbyaddr_r_proto" in
13538         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13539         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13540         esac
13541         case "$gethostbyaddr_r_proto" in
13542         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13543         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13544         esac
13545         case "$gethostbyaddr_r_proto" in
13546         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13547         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13548         esac
13549         case "$gethostbyaddr_r_proto" in
13550         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13551         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13552         esac
13553         case "$gethostbyaddr_r_proto" in
13554         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13555         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13556         esac
13557         case "$gethostbyaddr_r_proto" in
13558         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13559         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13560         esac
13561         case "$gethostbyaddr_r_proto" in
13562         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13563         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13564         esac
13565         case "$gethostbyaddr_r_proto" in
13566         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13567         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13568         esac
13569         case "$gethostbyaddr_r_proto" in
13570         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13571         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13572         esac
13573         case "$gethostbyaddr_r_proto" in
13574         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13575         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13576         esac
13577         case "$gethostbyaddr_r_proto" in
13578         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13579         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13580         esac
13581         case "$gethostbyaddr_r_proto" in
13582         ''|0)   d_gethostbyaddr_r=undef
13583                 gethostbyaddr_r_proto=0
13584                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13585         * )     case "$gethostbyaddr_r_proto" in
13586                 REENTRANT_PROTO*) ;;
13587                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13588                 esac
13589                 echo "Prototype: $try" ;;
13590         esac
13591         ;;
13592         *)      case "$usethreads" in
13593                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13594                 esac
13595                 d_gethostbyaddr_r=undef
13596                 gethostbyaddr_r_proto=0
13597                 ;;
13598         esac
13599         ;;
13600 *)      gethostbyaddr_r_proto=0
13601         ;;
13602 esac
13603
13604 : see if gethostbyname_r exists
13605 set gethostbyname_r d_gethostbyname_r
13606 eval $inlibc
13607 case "$d_gethostbyname_r" in
13608 "$define")
13609         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13610         case "$d_gethostbyname_r_proto:$usethreads" in
13611         ":define")      d_gethostbyname_r_proto=define
13612                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13613                 eval $hasproto ;;
13614         *)      ;;
13615         esac
13616         case "$d_gethostbyname_r_proto" in
13617         define)
13618         case "$gethostbyname_r_proto" in
13619         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13620         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13621         esac
13622         case "$gethostbyname_r_proto" in
13623         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13624         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13625         esac
13626         case "$gethostbyname_r_proto" in
13627         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13628         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13629         esac
13630         case "$gethostbyname_r_proto" in
13631         ''|0)   d_gethostbyname_r=undef
13632                 gethostbyname_r_proto=0
13633                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13634         * )     case "$gethostbyname_r_proto" in
13635                 REENTRANT_PROTO*) ;;
13636                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13637                 esac
13638                 echo "Prototype: $try" ;;
13639         esac
13640         ;;
13641         *)      case "$usethreads" in
13642                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13643                 esac
13644                 d_gethostbyname_r=undef
13645                 gethostbyname_r_proto=0
13646                 ;;
13647         esac
13648         ;;
13649 *)      gethostbyname_r_proto=0
13650         ;;
13651 esac
13652
13653 : see if gethostent_r exists
13654 set gethostent_r d_gethostent_r
13655 eval $inlibc
13656 case "$d_gethostent_r" in
13657 "$define")
13658         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13659         case "$d_gethostent_r_proto:$usethreads" in
13660         ":define")      d_gethostent_r_proto=define
13661                 set d_gethostent_r_proto gethostent_r $hdrs
13662                 eval $hasproto ;;
13663         *)      ;;
13664         esac
13665         case "$d_gethostent_r_proto" in
13666         define)
13667         case "$gethostent_r_proto" in
13668         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13669         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13670         esac
13671         case "$gethostent_r_proto" in
13672         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13673         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13674         esac
13675         case "$gethostent_r_proto" in
13676         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13677         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13678         esac
13679         case "$gethostent_r_proto" in
13680         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13681         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13682         esac
13683         case "$gethostent_r_proto" in
13684         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13685         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13686         esac
13687         case "$gethostent_r_proto" in
13688         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13689         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13690         esac
13691         case "$gethostent_r_proto" in
13692         ''|0)   d_gethostent_r=undef
13693                 gethostent_r_proto=0
13694                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13695         * )     case "$gethostent_r_proto" in
13696                 REENTRANT_PROTO*) ;;
13697                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13698                 esac
13699                 echo "Prototype: $try" ;;
13700         esac
13701         ;;
13702         *)      case "$usethreads" in
13703                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13704                 esac
13705                 d_gethostent_r=undef
13706                 gethostent_r_proto=0
13707                 ;;
13708         esac
13709         ;;
13710 *)      gethostent_r_proto=0
13711         ;;
13712 esac
13713
13714 : see if prototypes for various gethostxxx netdb.h functions are available
13715 echo " "
13716 set d_gethostprotos gethostent $i_netdb netdb.h
13717 eval $hasproto
13718
13719 : see if getitimer exists
13720 set getitimer d_getitimer
13721 eval $inlibc
13722
13723 : see if getlogin exists
13724 set getlogin d_getlogin
13725 eval $inlibc
13726
13727 : see if getlogin_r exists
13728 set getlogin_r d_getlogin_r
13729 eval $inlibc
13730 case "$d_getlogin_r" in
13731 "$define")
13732         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13733         case "$d_getlogin_r_proto:$usethreads" in
13734         ":define")      d_getlogin_r_proto=define
13735                 set d_getlogin_r_proto getlogin_r $hdrs
13736                 eval $hasproto ;;
13737         *)      ;;
13738         esac
13739         case "$d_getlogin_r_proto" in
13740         define)
13741         case "$getlogin_r_proto" in
13742         ''|0) try='int getlogin_r(char*, size_t);'
13743         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13744         esac
13745         case "$getlogin_r_proto" in
13746         ''|0) try='int getlogin_r(char*, int);'
13747         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13748         esac
13749         case "$getlogin_r_proto" in
13750         ''|0) try='char* getlogin_r(char*, size_t);'
13751         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13752         esac
13753         case "$getlogin_r_proto" in
13754         ''|0) try='char* getlogin_r(char*, int);'
13755         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13756         esac
13757         case "$getlogin_r_proto" in
13758         ''|0)   d_getlogin_r=undef
13759                 getlogin_r_proto=0
13760                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13761         * )     case "$getlogin_r_proto" in
13762                 REENTRANT_PROTO*) ;;
13763                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13764                 esac
13765                 echo "Prototype: $try" ;;
13766         esac
13767         ;;
13768         *)      case "$usethreads" in
13769                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13770                 esac
13771                 d_getlogin_r=undef
13772                 getlogin_r_proto=0
13773                 ;;
13774         esac
13775         ;;
13776 *)      getlogin_r_proto=0
13777         ;;
13778 esac
13779
13780 : see if getmnt exists
13781 set getmnt d_getmnt
13782 eval $inlibc
13783
13784 : see if getmntent exists
13785 set getmntent d_getmntent
13786 eval $inlibc
13787
13788 : see if getnetbyaddr exists
13789 set getnetbyaddr d_getnbyaddr
13790 eval $inlibc
13791
13792 : see if getnetbyname exists
13793 set getnetbyname d_getnbyname
13794 eval $inlibc
13795
13796 : see if getnetent exists
13797 set getnetent d_getnent
13798 eval $inlibc
13799
13800 : see if getnetbyaddr_r exists
13801 set getnetbyaddr_r d_getnetbyaddr_r
13802 eval $inlibc
13803 case "$d_getnetbyaddr_r" in
13804 "$define")
13805         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13806         case "$d_getnetbyaddr_r_proto:$usethreads" in
13807         ":define")      d_getnetbyaddr_r_proto=define
13808                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13809                 eval $hasproto ;;
13810         *)      ;;
13811         esac
13812         case "$d_getnetbyaddr_r_proto" in
13813         define)
13814         case "$getnetbyaddr_r_proto" in
13815         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13816         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13817         esac
13818         case "$getnetbyaddr_r_proto" in
13819         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13820         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13821         esac
13822         case "$getnetbyaddr_r_proto" in
13823         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13824         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13825         esac
13826         case "$getnetbyaddr_r_proto" in
13827         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13828         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13829         esac
13830         case "$getnetbyaddr_r_proto" in
13831         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13832         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13833         esac
13834         case "$getnetbyaddr_r_proto" in
13835         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13836         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13837         esac
13838         case "$getnetbyaddr_r_proto" in
13839         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13840         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13841         esac
13842         case "$getnetbyaddr_r_proto" in
13843         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13844         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13845         esac
13846         case "$getnetbyaddr_r_proto" in
13847         ''|0)   d_getnetbyaddr_r=undef
13848                 getnetbyaddr_r_proto=0
13849                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13850         * )     case "$getnetbyaddr_r_proto" in
13851                 REENTRANT_PROTO*) ;;
13852                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13853                 esac
13854                 echo "Prototype: $try" ;;
13855         esac
13856         ;;
13857         *)      case "$usethreads" in
13858                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13859                 esac
13860                 d_getnetbyaddr_r=undef
13861                 getnetbyaddr_r_proto=0
13862                 ;;
13863         esac
13864         ;;
13865 *)      getnetbyaddr_r_proto=0
13866         ;;
13867 esac
13868
13869 : see if getnetbyname_r exists
13870 set getnetbyname_r d_getnetbyname_r
13871 eval $inlibc
13872 case "$d_getnetbyname_r" in
13873 "$define")
13874         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13875         case "$d_getnetbyname_r_proto:$usethreads" in
13876         ":define")      d_getnetbyname_r_proto=define
13877                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13878                 eval $hasproto ;;
13879         *)      ;;
13880         esac
13881         case "$d_getnetbyname_r_proto" in
13882         define)
13883         case "$getnetbyname_r_proto" in
13884         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13885         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13886         esac
13887         case "$getnetbyname_r_proto" in
13888         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13889         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13890         esac
13891         case "$getnetbyname_r_proto" in
13892         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13893         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13894         esac
13895         case "$getnetbyname_r_proto" in
13896         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13897         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13898         esac
13899         case "$getnetbyname_r_proto" in
13900         ''|0)   d_getnetbyname_r=undef
13901                 getnetbyname_r_proto=0
13902                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13903         * )     case "$getnetbyname_r_proto" in
13904                 REENTRANT_PROTO*) ;;
13905                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13906                 esac
13907                 echo "Prototype: $try" ;;
13908         esac
13909         ;;
13910         *)      case "$usethreads" in
13911                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13912                 esac
13913                 d_getnetbyname_r=undef
13914                 getnetbyname_r_proto=0
13915                 ;;
13916         esac
13917         ;;
13918 *)      getnetbyname_r_proto=0
13919         ;;
13920 esac
13921
13922 : see if getnetent_r exists
13923 set getnetent_r d_getnetent_r
13924 eval $inlibc
13925 case "$d_getnetent_r" in
13926 "$define")
13927         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13928         case "$d_getnetent_r_proto:$usethreads" in
13929         ":define")      d_getnetent_r_proto=define
13930                 set d_getnetent_r_proto getnetent_r $hdrs
13931                 eval $hasproto ;;
13932         *)      ;;
13933         esac
13934         case "$d_getnetent_r_proto" in
13935         define)
13936         case "$getnetent_r_proto" in
13937         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13938         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13939         esac
13940         case "$getnetent_r_proto" in
13941         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13942         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13943         esac
13944         case "$getnetent_r_proto" in
13945         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13946         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13947         esac
13948         case "$getnetent_r_proto" in
13949         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13950         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13951         esac
13952         case "$getnetent_r_proto" in
13953         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13954         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13955         esac
13956         case "$getnetent_r_proto" in
13957         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13958         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13959         esac
13960         case "$getnetent_r_proto" in
13961         ''|0)   d_getnetent_r=undef
13962                 getnetent_r_proto=0
13963                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13964         * )     case "$getnetent_r_proto" in
13965                 REENTRANT_PROTO*) ;;
13966                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13967                 esac
13968                 echo "Prototype: $try" ;;
13969         esac
13970         ;;
13971         *)      case "$usethreads" in
13972                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13973                 esac
13974                 d_getnetent_r=undef
13975                 getnetent_r_proto=0
13976                 ;;
13977         esac
13978         ;;
13979 *)      getnetent_r_proto=0
13980         ;;
13981 esac
13982
13983 : see if prototypes for various getnetxxx netdb.h functions are available
13984 echo " "
13985 set d_getnetprotos getnetent $i_netdb netdb.h
13986 eval $hasproto
13987
13988 : see if getpagesize exists
13989 set getpagesize d_getpagsz
13990 eval $inlibc
13991
13992 : Optional checks for getprotobyname and getprotobynumber
13993
13994 : see if getprotobyname exists
13995 set getprotobyname d_getpbyname
13996 eval $inlibc
13997
13998 : see if getprotobynumber exists
13999 set getprotobynumber d_getpbynumber
14000 eval $inlibc
14001
14002 : see if getprotoent exists
14003 set getprotoent d_getpent
14004 eval $inlibc
14005
14006 : see if getpgid exists
14007 set getpgid d_getpgid
14008 eval $inlibc
14009
14010 : see if getpgrp2 exists
14011 set getpgrp2 d_getpgrp2
14012 eval $inlibc
14013
14014 : see if getppid exists
14015 set getppid d_getppid
14016 eval $inlibc
14017
14018 : see if getpriority exists
14019 set getpriority d_getprior
14020 eval $inlibc
14021
14022 : see if getprotobyname_r exists
14023 set getprotobyname_r d_getprotobyname_r
14024 eval $inlibc
14025 case "$d_getprotobyname_r" in
14026 "$define")
14027         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14028         case "$d_getprotobyname_r_proto:$usethreads" in
14029         ":define")      d_getprotobyname_r_proto=define
14030                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
14031                 eval $hasproto ;;
14032         *)      ;;
14033         esac
14034         case "$d_getprotobyname_r_proto" in
14035         define)
14036         case "$getprotobyname_r_proto" in
14037         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
14038         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
14039         esac
14040         case "$getprotobyname_r_proto" in
14041         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
14042         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
14043         esac
14044         case "$getprotobyname_r_proto" in
14045         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
14046         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
14047         esac
14048         case "$getprotobyname_r_proto" in
14049         ''|0)   d_getprotobyname_r=undef
14050                 getprotobyname_r_proto=0
14051                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
14052         * )     case "$getprotobyname_r_proto" in
14053                 REENTRANT_PROTO*) ;;
14054                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
14055                 esac
14056                 echo "Prototype: $try" ;;
14057         esac
14058         ;;
14059         *)      case "$usethreads" in
14060                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
14061                 esac
14062                 d_getprotobyname_r=undef
14063                 getprotobyname_r_proto=0
14064                 ;;
14065         esac
14066         ;;
14067 *)      getprotobyname_r_proto=0
14068         ;;
14069 esac
14070
14071 : see if getprotobynumber_r exists
14072 set getprotobynumber_r d_getprotobynumber_r
14073 eval $inlibc
14074 case "$d_getprotobynumber_r" in
14075 "$define")
14076         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14077         case "$d_getprotobynumber_r_proto:$usethreads" in
14078         ":define")      d_getprotobynumber_r_proto=define
14079                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
14080                 eval $hasproto ;;
14081         *)      ;;
14082         esac
14083         case "$d_getprotobynumber_r_proto" in
14084         define)
14085         case "$getprotobynumber_r_proto" in
14086         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
14087         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
14088         esac
14089         case "$getprotobynumber_r_proto" in
14090         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
14091         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
14092         esac
14093         case "$getprotobynumber_r_proto" in
14094         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
14095         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
14096         esac
14097         case "$getprotobynumber_r_proto" in
14098         ''|0)   d_getprotobynumber_r=undef
14099                 getprotobynumber_r_proto=0
14100                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
14101         * )     case "$getprotobynumber_r_proto" in
14102                 REENTRANT_PROTO*) ;;
14103                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
14104                 esac
14105                 echo "Prototype: $try" ;;
14106         esac
14107         ;;
14108         *)      case "$usethreads" in
14109                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
14110                 esac
14111                 d_getprotobynumber_r=undef
14112                 getprotobynumber_r_proto=0
14113                 ;;
14114         esac
14115         ;;
14116 *)      getprotobynumber_r_proto=0
14117         ;;
14118 esac
14119
14120 : see if getprotoent_r exists
14121 set getprotoent_r d_getprotoent_r
14122 eval $inlibc
14123 case "$d_getprotoent_r" in
14124 "$define")
14125         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14126         case "$d_getprotoent_r_proto:$usethreads" in
14127         ":define")      d_getprotoent_r_proto=define
14128                 set d_getprotoent_r_proto getprotoent_r $hdrs
14129                 eval $hasproto ;;
14130         *)      ;;
14131         esac
14132         case "$d_getprotoent_r_proto" in
14133         define)
14134         case "$getprotoent_r_proto" in
14135         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
14136         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
14137         esac
14138         case "$getprotoent_r_proto" in
14139         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
14140         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
14141         esac
14142         case "$getprotoent_r_proto" in
14143         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
14144         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
14145         esac
14146         case "$getprotoent_r_proto" in
14147         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
14148         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
14149         esac
14150         case "$getprotoent_r_proto" in
14151         ''|0)   d_getprotoent_r=undef
14152                 getprotoent_r_proto=0
14153                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
14154         * )     case "$getprotoent_r_proto" in
14155                 REENTRANT_PROTO*) ;;
14156                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
14157                 esac
14158                 echo "Prototype: $try" ;;
14159         esac
14160         ;;
14161         *)      case "$usethreads" in
14162                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
14163                 esac
14164                 d_getprotoent_r=undef
14165                 getprotoent_r_proto=0
14166                 ;;
14167         esac
14168         ;;
14169 *)      getprotoent_r_proto=0
14170         ;;
14171 esac
14172
14173 : see if prototypes for various getprotoxxx netdb.h functions are available
14174 echo " "
14175 set d_getprotoprotos getprotoent $i_netdb netdb.h
14176 eval $hasproto
14177
14178 : see if getprpwnam exists
14179 set getprpwnam d_getprpwnam
14180 eval $inlibc
14181
14182 : see if getpwent exists
14183 set getpwent d_getpwent
14184 eval $inlibc
14185
14186 : see if getpwent_r exists
14187 set getpwent_r d_getpwent_r
14188 eval $inlibc
14189 case "$d_getpwent_r" in
14190 "$define")
14191         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14192         case "$d_getpwent_r_proto:$usethreads" in
14193         ":define")      d_getpwent_r_proto=define
14194                 set d_getpwent_r_proto getpwent_r $hdrs
14195                 eval $hasproto ;;
14196         *)      ;;
14197         esac
14198         case "$d_getpwent_r_proto" in
14199         define)
14200         case "$getpwent_r_proto" in
14201         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
14202         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
14203         esac
14204         case "$getpwent_r_proto" in
14205         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
14206         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14207         esac
14208         case "$getpwent_r_proto" in
14209         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14210         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14211         esac
14212         case "$getpwent_r_proto" in
14213         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14214         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14215         esac
14216         case "$getpwent_r_proto" in
14217         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14218         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14219         esac
14220         case "$getpwent_r_proto" in
14221         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14222         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14223         esac
14224         case "$getpwent_r_proto" in
14225         ''|0)   d_getpwent_r=undef
14226                 getpwent_r_proto=0
14227                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14228         * )     case "$getpwent_r_proto" in
14229                 REENTRANT_PROTO*) ;;
14230                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14231                 esac
14232                 echo "Prototype: $try" ;;
14233         esac
14234         ;;
14235         *)      case "$usethreads" in
14236                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14237                 esac
14238                 d_getpwent_r=undef
14239                 getpwent_r_proto=0
14240                 ;;
14241         esac
14242         ;;
14243 *)      getpwent_r_proto=0
14244         ;;
14245 esac
14246
14247 : see if getpwnam_r exists
14248 set getpwnam_r d_getpwnam_r
14249 eval $inlibc
14250 case "$d_getpwnam_r" in
14251 "$define")
14252         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14253         case "$d_getpwnam_r_proto:$usethreads" in
14254         ":define")      d_getpwnam_r_proto=define
14255                 set d_getpwnam_r_proto getpwnam_r $hdrs
14256                 eval $hasproto ;;
14257         *)      ;;
14258         esac
14259         case "$d_getpwnam_r_proto" in
14260         define)
14261         case "$getpwnam_r_proto" in
14262         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14263         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14264         esac
14265         case "$getpwnam_r_proto" in
14266         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14267         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14268         esac
14269         case "$getpwnam_r_proto" in
14270         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14271         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14272         esac
14273         case "$getpwnam_r_proto" in
14274         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14275         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14276         esac
14277         case "$getpwnam_r_proto" in
14278         ''|0)   d_getpwnam_r=undef
14279                 getpwnam_r_proto=0
14280                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14281         * )     case "$getpwnam_r_proto" in
14282                 REENTRANT_PROTO*) ;;
14283                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14284                 esac
14285                 echo "Prototype: $try" ;;
14286         esac
14287         ;;
14288         *)      case "$usethreads" in
14289                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14290                 esac
14291                 d_getpwnam_r=undef
14292                 getpwnam_r_proto=0
14293                 ;;
14294         esac
14295         ;;
14296 *)      getpwnam_r_proto=0
14297         ;;
14298 esac
14299
14300 : see if getpwuid_r exists
14301 set getpwuid_r d_getpwuid_r
14302 eval $inlibc
14303 case "$d_getpwuid_r" in
14304 "$define")
14305         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14306         case "$d_getpwuid_r_proto:$usethreads" in
14307         ":define")      d_getpwuid_r_proto=define
14308                 set d_getpwuid_r_proto getpwuid_r $hdrs
14309                 eval $hasproto ;;
14310         *)      ;;
14311         esac
14312         case "$d_getpwuid_r_proto" in
14313         define)
14314         case "$getpwuid_r_proto" in
14315         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14316         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14317         esac
14318         case "$getpwuid_r_proto" in
14319         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14320         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14321         esac
14322         case "$getpwuid_r_proto" in
14323         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14324         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14325         esac
14326         case "$getpwuid_r_proto" in
14327         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14328         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14329         esac
14330         case "$getpwuid_r_proto" in
14331         ''|0)   d_getpwuid_r=undef
14332                 getpwuid_r_proto=0
14333                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14334         * )     case "$getpwuid_r_proto" in
14335                 REENTRANT_PROTO*) ;;
14336                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14337                 esac
14338                 echo "Prototype: $try" ;;
14339         esac
14340         ;;
14341         *)      case "$usethreads" in
14342                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14343                 esac
14344                 d_getpwuid_r=undef
14345                 getpwuid_r_proto=0
14346                 ;;
14347         esac
14348         ;;
14349 *)      getpwuid_r_proto=0
14350         ;;
14351 esac
14352
14353 : Optional checks for getsbyname and getsbyport
14354
14355 : see if getservbyname exists
14356 set getservbyname d_getsbyname
14357 eval $inlibc
14358
14359 : see if getservbyport exists
14360 set getservbyport d_getsbyport
14361 eval $inlibc
14362
14363 : see if getservent exists
14364 set getservent d_getsent
14365 eval $inlibc
14366
14367 : see if getservbyname_r exists
14368 set getservbyname_r d_getservbyname_r
14369 eval $inlibc
14370 case "$d_getservbyname_r" in
14371 "$define")
14372         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14373         case "$d_getservbyname_r_proto:$usethreads" in
14374         ":define")      d_getservbyname_r_proto=define
14375                 set d_getservbyname_r_proto getservbyname_r $hdrs
14376                 eval $hasproto ;;
14377         *)      ;;
14378         esac
14379         case "$d_getservbyname_r_proto" in
14380         define)
14381         case "$getservbyname_r_proto" in
14382         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14383         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14384         esac
14385         case "$getservbyname_r_proto" in
14386         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14387         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14388         esac
14389         case "$getservbyname_r_proto" in
14390         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14391         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14392         esac
14393         case "$getservbyname_r_proto" in
14394         ''|0)   d_getservbyname_r=undef
14395                 getservbyname_r_proto=0
14396                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14397         * )     case "$getservbyname_r_proto" in
14398                 REENTRANT_PROTO*) ;;
14399                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14400                 esac
14401                 echo "Prototype: $try" ;;
14402         esac
14403         ;;
14404         *)      case "$usethreads" in
14405                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14406                 esac
14407                 d_getservbyname_r=undef
14408                 getservbyname_r_proto=0
14409                 ;;
14410         esac
14411         ;;
14412 *)      getservbyname_r_proto=0
14413         ;;
14414 esac
14415
14416 : see if getservbyport_r exists
14417 set getservbyport_r d_getservbyport_r
14418 eval $inlibc
14419 case "$d_getservbyport_r" in
14420 "$define")
14421         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14422         case "$d_getservbyport_r_proto:$usethreads" in
14423         ":define")      d_getservbyport_r_proto=define
14424                 set d_getservbyport_r_proto getservbyport_r $hdrs
14425                 eval $hasproto ;;
14426         *)      ;;
14427         esac
14428         case "$d_getservbyport_r_proto" in
14429         define)
14430         case "$getservbyport_r_proto" in
14431         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14432         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14433         esac
14434         case "$getservbyport_r_proto" in
14435         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14436         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14437         esac
14438         case "$getservbyport_r_proto" in
14439         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14440         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14441         esac
14442         case "$getservbyport_r_proto" in
14443         ''|0)   d_getservbyport_r=undef
14444                 getservbyport_r_proto=0
14445                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14446         * )     case "$getservbyport_r_proto" in
14447                 REENTRANT_PROTO*) ;;
14448                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14449                 esac
14450                 echo "Prototype: $try" ;;
14451         esac
14452         ;;
14453         *)      case "$usethreads" in
14454                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14455                 esac
14456                 d_getservbyport_r=undef
14457                 getservbyport_r_proto=0
14458                 ;;
14459         esac
14460         ;;
14461 *)      getservbyport_r_proto=0
14462         ;;
14463 esac
14464
14465 : see if getservent_r exists
14466 set getservent_r d_getservent_r
14467 eval $inlibc
14468 case "$d_getservent_r" in
14469 "$define")
14470         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14471         case "$d_getservent_r_proto:$usethreads" in
14472         ":define")      d_getservent_r_proto=define
14473                 set d_getservent_r_proto getservent_r $hdrs
14474                 eval $hasproto ;;
14475         *)      ;;
14476         esac
14477         case "$d_getservent_r_proto" in
14478         define)
14479         case "$getservent_r_proto" in
14480         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14481         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14482         esac
14483         case "$getservent_r_proto" in
14484         ''|0) try='int getservent_r(struct servent*, char*, int);'
14485         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14486         esac
14487         case "$getservent_r_proto" in
14488         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14489         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14490         esac
14491         case "$getservent_r_proto" in
14492         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14493         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14494         esac
14495         case "$getservent_r_proto" in
14496         ''|0)   d_getservent_r=undef
14497                 getservent_r_proto=0
14498                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14499         * )     case "$getservent_r_proto" in
14500                 REENTRANT_PROTO*) ;;
14501                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14502                 esac
14503                 echo "Prototype: $try" ;;
14504         esac
14505         ;;
14506         *)      case "$usethreads" in
14507                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14508                 esac
14509                 d_getservent_r=undef
14510                 getservent_r_proto=0
14511                 ;;
14512         esac
14513         ;;
14514 *)      getservent_r_proto=0
14515         ;;
14516 esac
14517
14518 : see if prototypes for various getservxxx netdb.h functions are available
14519 echo " "
14520 set d_getservprotos getservent $i_netdb netdb.h
14521 eval $hasproto
14522
14523 : see if getspnam exists
14524 set getspnam d_getspnam
14525 eval $inlibc
14526
14527 : see if this is a shadow.h system
14528 set shadow.h i_shadow
14529 eval $inhdr
14530
14531 : see if getspnam_r exists
14532 set getspnam_r d_getspnam_r
14533 eval $inlibc
14534 case "$d_getspnam_r" in
14535 "$define")
14536         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14537         case "$d_getspnam_r_proto:$usethreads" in
14538         ":define")      d_getspnam_r_proto=define
14539                 set d_getspnam_r_proto getspnam_r $hdrs
14540                 eval $hasproto ;;
14541         *)      ;;
14542         esac
14543         case "$d_getspnam_r_proto" in
14544         define)
14545         case "$getspnam_r_proto" in
14546         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14547         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14548         esac
14549         case "$getspnam_r_proto" in
14550         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14551         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14552         esac
14553         case "$getspnam_r_proto" in
14554         ''|0)   d_getspnam_r=undef
14555                 getspnam_r_proto=0
14556                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14557         * )     case "$getspnam_r_proto" in
14558                 REENTRANT_PROTO*) ;;
14559                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14560                 esac
14561                 echo "Prototype: $try" ;;
14562         esac
14563         ;;
14564         *)      case "$usethreads" in
14565                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14566                 esac
14567                 d_getspnam_r=undef
14568                 getspnam_r_proto=0
14569                 ;;
14570         esac
14571         ;;
14572 *)      getspnam_r_proto=0
14573         ;;
14574 esac
14575
14576 : see if gettimeofday or ftime exists
14577 set gettimeofday d_gettimeod
14578 eval $inlibc
14579 case "$d_gettimeod" in
14580 "$undef")
14581         set ftime d_ftime 
14582         eval $inlibc
14583         ;;
14584 *)
14585         val="$undef"; set d_ftime; eval $setvar
14586         ;;
14587 esac
14588 case "$d_gettimeod$d_ftime" in
14589 "$undef$undef")
14590         echo " "
14591         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14592         ;;
14593 esac
14594
14595 : see if gmtime_r exists
14596 set gmtime_r d_gmtime_r
14597 eval $inlibc
14598 case "$d_gmtime_r" in
14599 "$define")
14600         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14601         case "$d_gmtime_r_proto:$usethreads" in
14602         ":define")      d_gmtime_r_proto=define
14603                 set d_gmtime_r_proto gmtime_r $hdrs
14604                 eval $hasproto ;;
14605         *)      ;;
14606         esac
14607         case "$d_gmtime_r_proto" in
14608         define)
14609         case "$gmtime_r_proto" in
14610         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14611         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14612         esac
14613         case "$gmtime_r_proto" in
14614         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14615         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14616         esac
14617         case "$gmtime_r_proto" in
14618         ''|0)   d_gmtime_r=undef
14619                 gmtime_r_proto=0
14620                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14621         * )     case "$gmtime_r_proto" in
14622                 REENTRANT_PROTO*) ;;
14623                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14624                 esac
14625                 echo "Prototype: $try" ;;
14626         esac
14627         ;;
14628         *)      case "$usethreads" in
14629                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14630                 esac
14631                 d_gmtime_r=undef
14632                 gmtime_r_proto=0
14633                 ;;
14634         esac
14635         ;;
14636 *)      gmtime_r_proto=0
14637         ;;
14638 esac
14639
14640 : see if hasmntopt exists
14641 set hasmntopt d_hasmntopt
14642 eval $inlibc
14643
14644 : see if this is a netinet/in.h or sys/in.h system
14645 set netinet/in.h i_niin sys/in.h i_sysin
14646 eval $inhdr
14647
14648 : see if arpa/inet.h has to be included
14649 set arpa/inet.h i_arpainet
14650 eval $inhdr
14651
14652 : see if htonl --and friends-- exists
14653 val=''
14654 set htonl val
14655 eval $inlibc
14656
14657 : Maybe they are macros.
14658 case "$val" in
14659 $undef)
14660         $cat >htonl.c <<EOM
14661 #include <stdio.h>
14662 #include <sys/types.h>
14663 #$i_niin I_NETINET_IN
14664 #$i_sysin I_SYS_IN
14665 #$i_arpainet I_ARPA_INET
14666 #ifdef I_NETINET_IN
14667 #include <netinet/in.h>
14668 #endif
14669 #ifdef I_SYS_IN
14670 #include <sys/in.h>
14671 #endif
14672 #ifdef I_ARPA_INET
14673 #include <arpa/inet.h>
14674 #endif
14675 #ifdef htonl
14676 printf("Defined as a macro.");
14677 #endif
14678 EOM
14679         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14680         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14681                 val="$define"
14682                 echo "But it seems to be defined as a macro." >&4
14683         fi
14684         $rm -f htonl.?
14685         ;;
14686 esac
14687 set d_htonl
14688 eval $setvar
14689
14690 : see if ilogbl exists
14691 set ilogbl d_ilogbl
14692 eval $inlibc
14693
14694 : index or strchr
14695 echo " "
14696 if set index val -f; eval $csym; $val; then
14697         if set strchr val -f d_strchr; eval $csym; $val; then
14698                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14699                         val="$define"
14700                         vali="$undef"
14701                         echo "strchr() found." >&4
14702                 else
14703                         val="$undef"
14704                         vali="$define"
14705                         echo "index() found." >&4
14706                 fi
14707         else
14708                 val="$undef"
14709                 vali="$define"
14710                 echo "index() found." >&4
14711         fi
14712 else
14713         if set strchr val -f d_strchr; eval $csym; $val; then
14714                 val="$define"
14715                 vali="$undef"
14716                 echo "strchr() found." >&4
14717         else
14718                 echo "No index() or strchr() found!" >&4
14719                 val="$undef"
14720                 vali="$undef"
14721         fi
14722 fi
14723 set d_strchr; eval $setvar
14724 val="$vali"
14725 set d_index; eval $setvar
14726
14727 : check whether inet_aton exists
14728 set inet_aton d_inetaton
14729 eval $inlibc
14730
14731 : Look for isascii
14732 echo " "
14733 $cat >isascii.c <<EOCP
14734 #include <stdio.h>
14735 #include <ctype.h>
14736 #$i_stdlib I_STDLIB
14737 #ifdef I_STDLIB
14738 #include <stdlib.h>
14739 #endif
14740 int main() {
14741         int c = 'A';
14742         if (isascii(c))
14743                 exit(0);
14744         else
14745                 exit(1);
14746 }
14747 EOCP
14748 set isascii
14749 if eval $compile; then
14750         echo "isascii() found." >&4
14751         val="$define"
14752 else
14753         echo "isascii() NOT found." >&4
14754         val="$undef"
14755 fi
14756 set d_isascii
14757 eval $setvar
14758 $rm -f isascii*
14759
14760 : see if isfinite exists
14761 set isfinite d_isfinite
14762 eval $inlibc
14763
14764 : see if isinf exists
14765 set isinf d_isinf
14766 eval $inlibc
14767
14768 : see if isnan exists
14769 set isnan d_isnan
14770 eval $inlibc
14771
14772 : see if isnanl exists
14773 set isnanl d_isnanl
14774 eval $inlibc
14775
14776 : see if killpg exists
14777 set killpg d_killpg
14778 eval $inlibc
14779
14780 : see if lchown exists
14781 echo " "
14782 $cat > try.c <<'EOCP'
14783 /* System header to define __stub macros and hopefully few prototypes,
14784     which can conflict with char lchown(); below.  */
14785 #include <assert.h>
14786 /* Override any gcc2 internal prototype to avoid an error.  */
14787 /* We use char because int might match the return type of a gcc2
14788    builtin and then its argument prototype would still apply.  */
14789 char lchown();
14790 int main() {
14791     /*  The GNU C library defines this for functions which it implements
14792         to always fail with ENOSYS.  Some functions are actually named
14793         something starting with __ and the normal name is an alias.  */
14794 #if defined (__stub_lchown) || defined (__stub___lchown)
14795 choke me
14796 #else
14797 lchown();
14798 #endif
14799 ; return 0; }
14800 EOCP
14801 set try
14802 if eval $compile; then
14803     $echo "lchown() found." >&4
14804     val="$define"
14805 else
14806     $echo "lchown() NOT found." >&4
14807     val="$undef"
14808 fi
14809 set d_lchown
14810 eval $setvar
14811
14812 : See if number of significant digits in a double precision number is known
14813 echo " "
14814 $cat >ldbl_dig.c <<EOM
14815 #$i_limits I_LIMITS
14816 #$i_float I_FLOAT
14817 #ifdef I_LIMITS
14818 #include <limits.h>
14819 #endif
14820 #ifdef I_FLOAT
14821 #include <float.h>
14822 #endif
14823 #ifdef LDBL_DIG
14824 printf("Contains LDBL_DIG");
14825 #endif
14826 EOM
14827 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14828 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14829         echo "LDBL_DIG found." >&4
14830         val="$define"
14831 else
14832         echo "LDBL_DIG NOT found." >&4
14833         val="$undef"
14834 fi
14835 $rm -f ldbl_dig.?
14836 set d_ldbl_dig
14837 eval $setvar
14838
14839 : see if this is a math.h system
14840 set math.h i_math
14841 eval $inhdr
14842
14843 : check to see if math.h defines _LIB_VERSION
14844 d_libm_lib_version="$undef"
14845 case $i_math in
14846     $define)
14847         echo " "
14848         echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14849         $cat >try.c <<EOCP
14850 #include <unistd.h>
14851 #include <math.h>
14852 int main (int argc, char *argv[])
14853 {
14854     printf ("%d\n", _LIB_VERSION);
14855     return (0);
14856     } /* main */
14857 EOCP
14858         set try
14859         if eval $compile; then
14860             foo=`$run ./try`
14861             echo "Yes, it does ($foo)" >&4
14862             d_libm_lib_version="$define"
14863         else
14864             echo "No, it does not (probably harmless)" >&4
14865             fi
14866         $rm_try
14867         ;;
14868
14869     esac
14870
14871 : see if link exists
14872 set link d_link
14873 eval $inlibc
14874
14875 : see if localtime_r exists
14876 set localtime_r d_localtime_r
14877 eval $inlibc
14878 case "$d_localtime_r" in
14879 "$define")
14880         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14881         case "$d_localtime_r_proto:$usethreads" in
14882         ":define")      d_localtime_r_proto=define
14883                 set d_localtime_r_proto localtime_r $hdrs
14884                 eval $hasproto ;;
14885         *)      ;;
14886         esac
14887         case "$d_localtime_r_proto" in
14888         define)
14889         case "$localtime_r_proto" in
14890         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14891         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14892         esac
14893         case "$localtime_r_proto" in
14894         ''|0) try='int localtime_r(const time_t*, struct tm*);'
14895         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14896         esac
14897         case "$localtime_r_proto" in
14898         ''|0)   d_localtime_r=undef
14899                 localtime_r_proto=0
14900                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14901         * )     case "$localtime_r_proto" in
14902                 REENTRANT_PROTO*) ;;
14903                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14904                 esac
14905                 echo "Prototype: $try" ;;
14906         esac
14907         ;;
14908         *)      case "$usethreads" in
14909                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14910                 esac
14911                 d_localtime_r=undef
14912                 localtime_r_proto=0
14913                 ;;
14914         esac
14915         ;;
14916 *)      localtime_r_proto=0
14917         ;;
14918 esac
14919
14920 : see if localtime_r calls tzset
14921 case "$localtime_r_proto" in
14922 REENTRANT_PROTO*)
14923         $cat >try.c <<EOCP
14924 /*  Does our libc's localtime_r call tzset ?
14925  *  return 0 if so, 1 otherwise.
14926  */
14927 #include <sys/types.h>
14928 #include <unistd.h>
14929 #include <time.h>
14930 #include <string.h>
14931 #include <malloc.h>
14932 int main()
14933 {
14934     time_t t = time(0L);
14935     char w_tz[]="TZ" "=GMT+5",
14936          e_tz[]="TZ" "=GMT-5",
14937         *tz_e = (char*)malloc(16),
14938         *tz_w = (char*)malloc(16);
14939     struct tm tm_e, tm_w;
14940     memset(&tm_e,'\0',sizeof(struct tm));
14941     memset(&tm_w,'\0',sizeof(struct tm));
14942     strcpy(tz_e,e_tz);
14943     strcpy(tz_w,w_tz);
14944
14945     putenv(tz_e);
14946     localtime_r(&t, &tm_e);
14947
14948     putenv(tz_w);
14949     localtime_r(&t, &tm_w);
14950
14951     if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14952         return 1;
14953     return 0;
14954 }
14955 EOCP
14956         set try
14957         if eval $compile; then
14958             if $run ./try; then
14959                 d_localtime_r_needs_tzset=undef;
14960             else
14961                 d_localtime_r_needs_tzset=define;
14962             fi;
14963         else
14964             d_localtime_r_needs_tzset=undef;
14965         fi;
14966      ;;
14967   *)
14968      d_localtime_r_needs_tzset=undef;
14969      ;;
14970 esac
14971 $rm_try
14972
14973 : see if localeconv exists
14974 set localeconv d_locconv
14975 eval $inlibc
14976
14977 : see if lockf exists
14978 set lockf d_lockf
14979 eval $inlibc
14980
14981 : see if prototype for lseek is available
14982 echo " "
14983 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14984 eval $hasproto
14985
14986 : see if lstat exists
14987 set lstat d_lstat
14988 eval $inlibc
14989
14990 : see if madvise exists
14991 set madvise d_madvise
14992 eval $inlibc
14993
14994 : see if malloc_size exists
14995 set malloc_size d_malloc_size
14996 eval $inlibc
14997
14998 : see if malloc_size_good exists
14999 set malloc_good_size d_malloc_good_size
15000 eval $inlibc
15001
15002 : see if mblen exists
15003 set mblen d_mblen
15004 eval $inlibc
15005
15006 : see if mbstowcs exists
15007 set mbstowcs d_mbstowcs
15008 eval $inlibc
15009
15010 : see if mbtowc exists
15011 set mbtowc d_mbtowc
15012 eval $inlibc
15013
15014 : see if memchr exists
15015 set memchr d_memchr
15016 eval $inlibc
15017
15018 : see if memcmp exists
15019 set memcmp d_memcmp
15020 eval $inlibc
15021
15022 : see if memcpy exists
15023 set memcpy d_memcpy
15024 eval $inlibc
15025
15026 : see if memmove exists
15027 set memmove d_memmove
15028 eval $inlibc
15029
15030 : see if memset exists
15031 set memset d_memset
15032 eval $inlibc
15033
15034 : see if mkdir exists
15035 set mkdir d_mkdir
15036 eval $inlibc
15037
15038 : see if mkdtemp exists
15039 set mkdtemp d_mkdtemp
15040 eval $inlibc
15041
15042 : see if mkfifo exists
15043 set mkfifo d_mkfifo
15044 eval $inlibc
15045
15046 : see if mkstemp exists
15047 set mkstemp d_mkstemp
15048 eval $inlibc
15049
15050 : see if mkstemps exists
15051 set mkstemps d_mkstemps
15052 eval $inlibc
15053
15054 : see if mktime exists
15055 set mktime d_mktime
15056 eval $inlibc
15057
15058 : see if this is a sys/mman.h system
15059 set sys/mman.h i_sysmman
15060 eval $inhdr
15061
15062 : see if mmap exists
15063 set mmap d_mmap
15064 eval $inlibc
15065 : see what shmat returns
15066 : default to something harmless
15067 mmaptype='void *'
15068 case "$i_sysmman$d_mmap" in
15069 "$define$define")
15070         $cat >mmap.c <<'END'
15071 #include <sys/mman.h>
15072 void *mmap();
15073 END
15074         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
15075                 mmaptype='void *'
15076         else
15077                 mmaptype='caddr_t'
15078         fi
15079         echo "and it returns ($mmaptype)." >&4
15080         ;;
15081 esac
15082
15083
15084
15085 : see if sqrtl exists
15086 set sqrtl d_sqrtl
15087 eval $inlibc
15088
15089 : see if scalbnl exists
15090 set scalbnl d_scalbnl
15091 eval $inlibc
15092
15093 : see if modfl exists
15094 set modfl d_modfl
15095 eval $inlibc
15096
15097 : see if prototype for modfl is available
15098 echo " "
15099 set d_modflproto modfl $i_math math.h
15100 eval $hasproto
15101
15102 d_modfl_pow32_bug="$undef"
15103
15104 case "$d_longdbl$d_modfl" in
15105 $define$define)
15106         $cat <<EOM
15107 Checking to see whether your modfl() is okay for large values...
15108 EOM
15109 $cat >try.c <<EOCP
15110 #include <math.h>
15111 #include <stdio.h>
15112 EOCP
15113 if $test "X$d_modflproto" != "X$define"; then
15114         $cat >>try.c <<EOCP
15115 /* Sigh. many current glibcs provide the function, but do not prototype it. */
15116 long double modfl (long double, long double *);
15117 EOCP
15118 fi
15119 $cat >>try.c <<EOCP
15120 int main() {
15121     long double nv = 4294967303.15;
15122     long double v, w;
15123     v = modfl(nv, &w);
15124 #ifdef __GLIBC__
15125     printf("glibc");
15126 #endif
15127     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
15128     return 0;
15129 }
15130 EOCP
15131         case "$osname:$gccversion" in
15132         aix:)   saveccflags="$ccflags"
15133                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
15134         esac
15135         set try
15136         if eval $compile; then
15137                 foo=`$run ./try`
15138                 case "$foo" in
15139                 *" 4294967303.150000 1.150000 4294967302.000000")
15140                         echo >&4 "Your modfl() is broken for large values."
15141                         d_modfl_pow32_bug="$define"
15142                         case "$foo" in
15143                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
15144                         ;;
15145                         esac
15146                         ;;
15147                 *" 4294967303.150000 0.150000 4294967303.000000")
15148                         echo >&4 "Your modfl() seems okay for large values."
15149                         ;;
15150                 *)      echo >&4 "I don't understand your modfl() at all."
15151                         d_modfl="$undef"
15152                         ;;
15153                 esac
15154                 $rm_try
15155         else
15156                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
15157                 d_modfl="$undef"
15158         fi
15159         case "$osname:$gccversion" in
15160         aix:)   ccflags="$saveccflags" ;; # restore
15161         esac
15162         ;;
15163 esac
15164
15165 if $test "$uselongdouble" = "$define"; then
15166     message=""
15167     if $test "$d_sqrtl" != "$define"; then
15168         message="$message sqrtl"
15169     fi
15170     if $test "$d_modfl" != "$define"; then
15171         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
15172             echo "You have both aintl and copysignl, so I can emulate modfl."
15173         else
15174             message="$message modfl"
15175         fi
15176     fi
15177     if $test "$d_frexpl" != "$define"; then
15178         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
15179             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
15180         else
15181             message="$message frexpl"
15182         fi
15183     fi
15184
15185     if $test "$message" != ""; then
15186         $cat <<EOM >&4
15187
15188 *** You requested the use of long doubles but you do not seem to have
15189 *** the following mathematical functions needed for long double support:
15190 ***    $message
15191 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
15192 *** Cannot continue, aborting.
15193
15194 EOM
15195
15196         exit 1
15197     fi
15198 fi
15199
15200 : see if mprotect exists
15201 set mprotect d_mprotect
15202 eval $inlibc
15203
15204 : see if msgctl exists
15205 set msgctl d_msgctl
15206 eval $inlibc
15207
15208 : see if msgget exists
15209 set msgget d_msgget
15210 eval $inlibc
15211
15212 : see if msgsnd exists
15213 set msgsnd d_msgsnd
15214 eval $inlibc
15215
15216 : see if msgrcv exists
15217 set msgrcv d_msgrcv
15218 eval $inlibc
15219
15220 : see how much of the 'msg*(2)' library is present.
15221 h_msg=true
15222 echo " "
15223 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15224 *"$undef"*) h_msg=false;;
15225 esac
15226 case "$osname" in
15227 freebsd)
15228     case "`ipcs 2>&1`" in
15229     "SVID messages"*"not configured"*)
15230         echo "Your $osname does not have the msg*(2) configured." >&4
15231         h_msg=false
15232         val="$undef"
15233         set msgctl d_msgctl
15234         eval $setvar
15235         set msgget d_msgget
15236         eval $setvar
15237         set msgsnd d_msgsnd
15238         eval $setvar
15239         set msgrcv d_msgrcv
15240         eval $setvar
15241         ;;
15242     esac
15243     ;;
15244 esac
15245 : we could also check for sys/ipc.h ...
15246 if $h_msg && $test `./findhdr sys/msg.h`; then
15247         echo "You have the full msg*(2) library." >&4
15248         val="$define"
15249 else
15250         echo "You don't have the full msg*(2) library." >&4
15251         val="$undef"
15252 fi
15253 set d_msg
15254 eval $setvar
15255
15256 : Check for msghdr_s
15257 echo " "
15258 echo "Checking to see if your system supports struct msghdr..." >&4
15259 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15260 eval $hasstruct
15261 case "$d_msghdr_s" in
15262 "$define")      echo "Yes, it does."   ;;
15263 *)              echo "No, it doesn't." ;;
15264 esac
15265
15266
15267 : see if msync exists
15268 set msync d_msync
15269 eval $inlibc
15270
15271 : see if munmap exists
15272 set munmap d_munmap
15273 eval $inlibc
15274
15275 : see if nice exists
15276 set nice d_nice
15277 eval $inlibc
15278
15279 : see if this is a langinfo.h system
15280 set langinfo.h i_langinfo
15281 eval $inhdr
15282
15283 : see if nl_langinfo exists
15284 set nl_langinfo d_nl_langinfo
15285 eval $inlibc
15286
15287 : check for volatile keyword
15288 echo " "
15289 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15290 $cat >try.c <<'EOCP'
15291 int main()
15292 {
15293         typedef struct _goo_struct goo_struct;
15294         goo_struct * volatile goo = ((goo_struct *)0);
15295         struct _goo_struct {
15296                 long long_int;
15297                 int reg_int;
15298                 char char_var;
15299         };
15300         typedef unsigned short foo_t;
15301         char *volatile foo;
15302         volatile int bar;
15303         volatile foo_t blech;
15304         foo = foo;
15305 }
15306 EOCP
15307 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15308         val="$define"
15309         echo "Yup, it does."
15310 else
15311         val="$undef"
15312         echo "Nope, it doesn't."
15313 fi
15314 set d_volatile
15315 eval $setvar
15316 $rm_try
15317
15318 : Check basic sizes
15319 echo " "
15320 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15321
15322 case "$use64bitint:$d_quad:$quadtype" in
15323 define:define:?*)
15324         ivtype="$quadtype"
15325         uvtype="$uquadtype"
15326         ivsize=8
15327         uvsize=8
15328         ;;
15329 *)      ivtype="long"
15330         uvtype="unsigned long"
15331         ivsize=$longsize
15332         uvsize=$longsize
15333         ;;
15334 esac
15335
15336 case "$uselongdouble:$d_longdbl" in
15337 define:define)
15338         nvtype="long double"
15339         nvsize=$longdblsize
15340         ;;
15341 *)      nvtype=double
15342         nvsize=$doublesize
15343         ;;
15344 esac
15345
15346 $echo "(IV will be "$ivtype", $ivsize bytes)"
15347 $echo "(UV will be "$uvtype", $uvsize bytes)"
15348 $echo "(NV will be "$nvtype", $nvsize bytes)"
15349
15350 $cat >try.c <<EOCP
15351 #$i_inttypes I_INTTYPES
15352 #ifdef I_INTTYPES
15353 #include <inttypes.h>
15354 #endif
15355 #include <stdio.h>
15356 int main() {
15357 #ifdef INT8
15358    int8_t i =  INT8_MAX;
15359   uint8_t u = UINT8_MAX;
15360   printf("int8_t\n");
15361 #endif
15362 #ifdef INT16
15363    int16_t i =  INT16_MAX;
15364   uint16_t i = UINT16_MAX;
15365   printf("int16_t\n");
15366 #endif
15367 #ifdef INT32
15368    int32_t i =  INT32_MAX;
15369   uint32_t u = UINT32_MAX;
15370   printf("int32_t\n");
15371 #endif
15372 }
15373 EOCP
15374
15375 i8type="signed char"
15376 u8type="unsigned char"
15377 i8size=1
15378 u8size=1
15379
15380 case "$i16type" in
15381 '')     case "$shortsize" in
15382         2)      i16type=short
15383                 u16type="unsigned short"
15384                 i16size=$shortsize
15385                 u16size=$shortsize
15386                 ;;
15387         esac
15388         ;;
15389 esac
15390 case "$i16type" in
15391 '')     set try -DINT16
15392         if eval $compile; then
15393                 case "`$run ./try`" in
15394                 int16_t)
15395                         i16type=int16_t
15396                         u16type=uint16_t
15397                         i16size=2
15398                         u16size=2
15399                         ;;
15400                 esac
15401         fi
15402         ;;
15403 esac
15404 case "$i16type" in
15405 '')     if $test $shortsize -ge 2; then
15406                 i16type=short
15407                 u16type="unsigned short"
15408                 i16size=$shortsize
15409                 u16size=$shortsize
15410         fi
15411         ;;
15412 esac
15413
15414 case "$i32type" in
15415 '')     case "$longsize" in
15416         4)      i32type=long
15417                 u32type="unsigned long"
15418                 i32size=$longsize
15419                 u32size=$longsize
15420                 ;;
15421         *)      case "$intsize" in
15422                 4)      i32type=int
15423                         u32type="unsigned int"
15424                         i32size=$intsize
15425                         u32size=$intsize
15426                         ;;
15427                 esac
15428                 ;;
15429         esac
15430         ;;
15431 esac
15432 case "$i32type" in
15433 '')     set try -DINT32
15434         if eval $compile; then
15435                 case "`$run ./try`" in
15436                 int32_t)
15437                         i32type=int32_t
15438                         u32type=uint32_t
15439                         i32size=4
15440                         u32size=4
15441                         ;;
15442                 esac
15443         fi
15444         ;;
15445 esac
15446 case "$i32type" in
15447 '')     if $test $intsize -ge 4; then
15448                 i32type=int
15449                 u32type="unsigned int"
15450                 i32size=$intsize
15451                 u32size=$intsize
15452         fi
15453         ;;
15454 esac
15455
15456 case "$i64type" in
15457 '')     case "$d_quad:$quadtype" in
15458         define:?*)
15459                 i64type="$quadtype"
15460                 u64type="$uquadtype"
15461                 i64size=8
15462                 u64size=8
15463                 ;;
15464         esac
15465         ;;
15466 esac
15467
15468 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15469 : volatile so that the compiler has to store it out to memory.
15470 if test X"$d_volatile" = X"$define"; then
15471         volatile=volatile
15472 fi
15473 $cat <<EOP >try.c
15474 #include <stdio.h>
15475 #$i_stdlib I_STDLIB
15476 #ifdef I_STDLIB
15477 #include <stdlib.h>
15478 #endif
15479 #include <sys/types.h>
15480 #include <signal.h>
15481 #ifdef SIGFPE
15482 $volatile int bletched = 0;
15483 $signal_t blech(int s) { bletched = 1; }
15484 #endif
15485 int main() {
15486     $uvtype u = 0;
15487     $nvtype d;
15488     int     n = 8 * $uvsize;
15489     int     i;
15490 #ifdef SIGFPE
15491     signal(SIGFPE, blech);
15492 #endif
15493
15494     for (i = 0; i < n; i++) {
15495       u = u << 1 | ($uvtype)1;
15496       d = ($nvtype)u;
15497       if (($uvtype)d != u)
15498         break;
15499       if (d <= 0)
15500         break;
15501       d = ($nvtype)(u - 1);
15502       if (($uvtype)d != (u - 1))
15503         break;
15504 #ifdef SIGFPE
15505       if (bletched)
15506         break;
15507 #endif
15508     }
15509     printf("%d\n", ((i == n) ? -n : i));
15510     exit(0);
15511 }
15512 EOP
15513 set try
15514
15515 d_nv_preserves_uv="$undef"
15516 if eval $compile; then
15517         nv_preserves_uv_bits="`$run ./try`"
15518 fi
15519 case "$nv_preserves_uv_bits" in
15520 \-[1-9]*)
15521         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15522         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
15523         d_nv_preserves_uv="$define"
15524         ;;
15525 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
15526         d_nv_preserves_uv="$undef" ;;
15527 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
15528         nv_preserves_uv_bits="0" ;;
15529 esac
15530 $rm_try
15531
15532 $echo "Checking to find the largest integer value your NVs can hold..." >&4
15533 : volatile so that the compiler has to store it out to memory.
15534 if test X"$d_volatile" = X"$define"; then
15535         volatile=volatile
15536 fi
15537 $cat <<EOP >try.c
15538 #include <stdio.h>
15539
15540 typedef $nvtype NV;
15541
15542 int
15543 main() {
15544   NV value = 2;
15545   int count = 1;
15546
15547   while(count < 256) {
15548     $volatile NV up = value + 1.0;
15549     $volatile NV negated = -value;
15550     $volatile NV down = negated - 1.0;
15551     $volatile NV got_up = up - value;
15552     int up_good = got_up == 1.0;
15553     int got_down = down - negated;
15554     int down_good = got_down == -1.0;
15555
15556     if (down_good != up_good) {
15557       fprintf(stderr,
15558               "Inconsistency - up %d %f; down %d %f; for 2**%d (%.20f)\n",
15559               up_good, (double) got_up, down_good, (double) got_down,
15560               count, (double) value);
15561       return 1;
15562     }
15563     if (!up_good) {
15564       while (1) {
15565         if (count > 8) {
15566           count -= 8;
15567           fputs("256.0", stdout);
15568         } else {
15569           count--;
15570           fputs("2.0", stdout);
15571         }
15572         if (!count) {
15573           puts("");
15574           return 0;
15575         }
15576         fputs("*", stdout);
15577       }
15578     }
15579     value *= 2;
15580     ++count;
15581   }
15582   fprintf(stderr, "Cannot overflow integer range, even at 2**%d (%.20f)\n",
15583           count, (double) value);
15584   return 1;
15585 }
15586 EOP
15587 set try
15588
15589 nv_overflows_integers_at='0'
15590 if eval $compile; then
15591     xxx="`$run ./try`"
15592     case "$?" in
15593         0)
15594             case "$xxx" in
15595                 2*)  cat >&4 <<EOM
15596 The largest integer your NVs can preserve is equal to $xxx
15597 EOM
15598                     nv_overflows_integers_at="$xxx"
15599                     ;;
15600                 *)  cat >&4 <<EOM
15601 Cannot determine the largest integer value your NVs can hold, unexpected output
15602 '$xxx'
15603 EOM
15604                     ;;
15605             esac
15606             ;;
15607         *)  cat >&4 <<EOM
15608 Cannot determine the largest integer value your NVs can hold
15609 EOM
15610             ;;
15611     esac
15612 fi
15613 $rm_try
15614
15615 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15616 : volatile so that the compiler has to store it out to memory.
15617 if test X"$d_volatile" = X"$define"; then
15618         volatile=volatile
15619 fi
15620 $cat <<EOP >try.c
15621 #include <stdio.h>
15622 #$i_stdlib I_STDLIB
15623 #ifdef I_STDLIB
15624 #include <stdlib.h>
15625 #endif
15626 #$i_string I_STRING
15627 #ifdef I_STRING
15628 #  include <string.h>
15629 #else
15630 #  include <strings.h>
15631 #endif
15632 #include <sys/types.h>
15633 #include <signal.h>
15634 #ifdef SIGFPE
15635 $volatile int bletched = 0;
15636 $signal_t blech(int s) { bletched = 1; }
15637 #endif
15638
15639 int checkit($nvtype d, char *where) {
15640     unsigned char *p = (char *)&d;
15641     unsigned char *end = p + sizeof(d);
15642     int fail = 0;
15643
15644     while (p < end)
15645         fail += *p++;
15646
15647     if (!fail)
15648         return 0;
15649
15650     p = (char *)&d;
15651     printf("No - %s: 0x", where);
15652     while (p < end)
15653         printf ("%02X", *p++);
15654     printf("\n");
15655     return 1;
15656 }
15657
15658 int main(int argc, char **argv) {
15659     $nvtype d = 0.0;
15660     int fail = 0;
15661     fail += checkit(d, "0.0");
15662
15663     /* The compiler shouldn't be assuming that bletched is 0  */
15664     d = bletched;
15665
15666     fail += checkit(d, "bleched");
15667
15668 #ifdef SIGFPE
15669     signal(SIGFPE, blech);
15670 #endif
15671
15672     /* Paranoia - the compiler should have no way of knowing that ANSI says
15673        that argv[argc] will always be NULL.  Actually, if it did assume this it
15674        would be buggy, as this is C and main() can be called from elsewhere in
15675        the program.  */
15676     d = argv[argc] ? 1 : 0;
15677
15678     if (d) {
15679         printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15680     }
15681
15682     fail += checkit(d, "ternary");
15683
15684     memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15685
15686     if (d != 0.0) {
15687         printf("No - memset doesn't give 0.0\n");
15688         /* This might just blow up:  */
15689         printf("(gives %g)\n", d);
15690         return 1;
15691     }
15692
15693 #ifdef SIGFPE
15694     if (bletched) {
15695         printf("No - something bleched\n");
15696         return 1;
15697     }
15698 #endif
15699     if (fail) {
15700       printf("No - %d fail(s)\n", fail);
15701       return 1;
15702     }
15703     printf("Yes\n");
15704     return 0;
15705 }
15706 EOP
15707 set try
15708
15709 d_nv_zero_is_allbits_zero="$undef"
15710 if eval $compile; then
15711     xxx="`$run ./try`"
15712     case "$?" in
15713         0)
15714             case "$xxx" in
15715                 Yes)  cat >&4 <<EOM
15716 0.0 is represented as all bits zero in memory
15717 EOM
15718                     d_nv_zero_is_allbits_zero="$define"
15719                     ;;
15720                 *)  cat >&4 <<EOM
15721 0.0 is not represented as all bits zero in memory
15722 EOM
15723                     d_nv_zero_is_allbits_zero="$undef"
15724                     ;;
15725             esac
15726             ;;
15727         *)  cat >&4 <<EOM
15728 0.0 is not represented as all bits zero in memory
15729 EOM
15730             d_nv_zero_is_allbits_zero="$undef"
15731             ;;
15732     esac
15733 fi
15734 $rm_try
15735
15736 : check for off64_t
15737 echo " "
15738 echo "Checking to see if you have off64_t..." >&4
15739 $cat >try.c <<EOCP
15740 #include <sys/types.h>
15741 #include <unistd.h>
15742 int main() { off64_t x = 7; }
15743 EOCP
15744 set try
15745 if eval $compile; then
15746         val="$define"
15747         echo "You have off64_t."
15748 else
15749         val="$undef"
15750         echo "You do not have off64_t."
15751         case "$lseeksize" in
15752         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15753         esac
15754 fi
15755 $rm_try
15756 set d_off64_t
15757 eval $setvar
15758
15759 : how to create joinable pthreads
15760 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15761         echo " "
15762         echo "Checking what constant to use for creating joinable pthreads..." >&4
15763         $cat >try.c <<'EOCP'
15764 #include <pthread.h>
15765 int main() {
15766     int detachstate = JOINABLE;
15767 }
15768 EOCP
15769         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15770         if eval $compile; then
15771                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15772                 val="$undef" # Yes, undef.
15773                 set d_old_pthread_create_joinable
15774                 eval $setvar
15775                 val=""
15776                 set old_pthread_create_joinable
15777                 eval $setvar
15778         else
15779                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15780                 if eval $compile; then
15781                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15782                         val="$define"
15783                         set d_old_pthread_create_joinable
15784                         eval $setvar
15785                         val=PTHREAD_CREATE_UNDETACHED
15786                         set old_pthread_create_joinable
15787                         eval $setvar
15788                 else
15789                         set try -DJOINABLE=__UNDETACHED
15790                         if eval $compile; then
15791                                 echo "You seem to use __UNDETACHED." >&4
15792                                 val="$define"
15793                                 set d_old_pthread_create_joinable
15794                                 eval $setvar
15795                                 val=__UNDETACHED
15796                                 set old_pthread_create_joinable
15797                                 eval $setvar
15798                         else
15799                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
15800                                 val="$define"
15801                                 set d_old_pthread_create_joinable
15802                                 eval $setvar
15803                                 val=0
15804                                 set old_pthread_create_joinable
15805                                 eval $setvar
15806                         fi
15807                 fi
15808         fi
15809         $rm_try
15810 else
15811     d_old_pthread_create_joinable="$undef"
15812     old_pthread_create_joinable=""
15813 fi
15814
15815 : see if pause exists
15816 set pause d_pause
15817 eval $inlibc
15818
15819 : see if poll exists
15820 set poll d_poll
15821 eval $inlibc
15822
15823 : see if readlink exists
15824 set readlink d_readlink
15825 eval $inlibc
15826
15827 : Check if exe is symlink to abs path of executing program
15828 echo " "
15829 procselfexe=''
15830 val="$undef"
15831 case "$d_readlink" in
15832 "$define")
15833         if $issymlink /proc/self/exe ; then
15834                 $ls -l /proc/self/exe > reflect
15835                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15836                         echo "You have Linux-like /proc/self/exe."
15837                         procselfexe='"/proc/self/exe"'
15838                         val="$define"
15839                 fi
15840         fi
15841         if $issymlink /proc/curproc/file ; then
15842                 $ls -l /proc/curproc/file > reflect
15843                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15844                         echo "You have BSD-like /proc/curproc/file."
15845                         procselfexe='"/proc/curproc/file"'
15846                         val="$define"
15847                 fi
15848         fi
15849         ;;
15850 esac
15851 $rm -f reflect
15852 set d_procselfexe
15853 eval $setvar
15854
15855 : backward compatibility for d_hvfork
15856 if test X$d_hvfork != X; then
15857         d_vfork="$d_hvfork"
15858         d_hvfork=''
15859 fi
15860 : see if there is a vfork
15861 val=''
15862 set vfork val
15863 eval $inlibc
15864
15865 d_pseudofork=$undef
15866
15867 : Ok, but do we want to use it. vfork is reportedly unreliable in
15868 : perl on Solaris 2.x, and probably elsewhere.
15869 case "$val" in
15870 $define)
15871         echo " "
15872         case "$usevfork" in
15873         false) dflt='n';;
15874         *) dflt='y';;
15875         esac
15876         cat <<'EOM'
15877
15878 Perl can only use a vfork() that doesn't suffer from strict
15879 restrictions on calling functions or modifying global data in
15880 the child.  For example, glibc-2.1 contains such a vfork()
15881 that is unsuitable.  If your system provides a proper fork()
15882 call, chances are that you do NOT want perl to use vfork().
15883
15884 EOM
15885         rp="Do you still want to use vfork()?"
15886         . ./myread
15887         case "$ans" in
15888         y|Y) ;;
15889         *)
15890                 echo "Ok, we won't use vfork()."
15891                 val="$undef"
15892                 ;;
15893         esac
15894         ;;
15895 esac
15896 set d_vfork
15897 eval $setvar
15898 case "$d_vfork" in
15899 $define) usevfork='true';;
15900 *) usevfork='false';;
15901 esac
15902
15903 : see whether the pthread_atfork exists
15904 $cat >try.c <<EOP
15905 #include <pthread.h>
15906 #include <stdio.h>
15907 int main() {
15908 #ifdef  PTHREAD_ATFORK
15909         pthread_atfork(NULL,NULL,NULL);
15910 #endif
15911 }
15912 EOP
15913
15914 : see if pthread_atfork exists
15915 set try -DPTHREAD_ATFORK
15916 if eval $compile; then
15917     val="$define"
15918 else
15919     val="$undef"
15920 fi
15921 case "$usethreads" in
15922 $define)
15923         case "$val" in
15924         $define) echo 'pthread_atfork found.' >&4        ;;
15925         *)       echo 'pthread_atfork NOT found.' >&4    ;;
15926         esac
15927 esac
15928 set d_pthread_atfork
15929 eval $setvar
15930
15931 : see if pthread_attr_setscope exists
15932 set pthread_attr_setscope d_pthread_attr_setscope
15933 eval $inlibc
15934
15935 : see whether the various POSIXish _yields exist
15936 $cat >try.c <<EOP
15937 #include <pthread.h>
15938 #include <stdio.h>
15939 int main() {
15940 #ifdef SCHED_YIELD
15941         sched_yield();
15942 #else
15943 #ifdef PTHREAD_YIELD
15944         pthread_yield();
15945 #else
15946 #ifdef PTHREAD_YIELD_NULL
15947         pthread_yield(NULL);
15948 #endif
15949 #endif
15950 #endif
15951 }
15952 EOP
15953 : see if sched_yield exists
15954 set try -DSCHED_YIELD
15955 if eval $compile; then
15956     val="$define"
15957     sched_yield='sched_yield()'
15958 else
15959     val="$undef"
15960 fi
15961 case "$usethreads" in
15962 $define)
15963         case "$val" in
15964         $define) echo 'sched_yield() found.' >&4        ;;
15965         *)       echo 'sched_yield() NOT found.' >&4    ;;
15966         esac
15967 esac
15968 set d_sched_yield
15969 eval $setvar
15970
15971 : see if pthread_yield exists
15972 set try -DPTHREAD_YIELD
15973 if eval $compile; then
15974     val="$define"
15975     case "$sched_yield" in
15976     '') sched_yield='pthread_yield()' ;;
15977     esac
15978 else
15979     set try -DPTHREAD_YIELD_NULL
15980     if eval $compile; then
15981         val="$define"
15982         case "$sched_yield" in
15983         '') sched_yield='pthread_yield(NULL)' ;;
15984         esac
15985     else
15986         val="$undef"
15987     fi
15988 fi
15989 case "$usethreads" in
15990 $define)
15991         case "$val" in
15992         $define) echo 'pthread_yield() found.' >&4      ;;
15993         *)       echo 'pthread_yield() NOT found.' >&4  ;;
15994         esac
15995         ;;
15996 esac
15997 set d_pthread_yield
15998 eval $setvar
15999 case "$sched_yield" in
16000 '') sched_yield=undef ;;
16001 esac
16002 $rm_try
16003
16004 : see if random_r exists
16005 set random_r d_random_r
16006 eval $inlibc
16007 case "$d_random_r" in
16008 "$define")
16009         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16010         case "$d_random_r_proto:$usethreads" in
16011         ":define")      d_random_r_proto=define
16012                 set d_random_r_proto random_r $hdrs
16013                 eval $hasproto ;;
16014         *)      ;;
16015         esac
16016         case "$d_random_r_proto" in
16017         define)
16018         case "$random_r_proto" in
16019         ''|0) try='int random_r(int*, struct random_data*);'
16020         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
16021         esac
16022         case "$random_r_proto" in
16023         ''|0) try='int random_r(long*, struct random_data*);'
16024         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
16025         esac
16026         case "$random_r_proto" in
16027         ''|0) try='int random_r(struct random_data*, int32_t*);'
16028         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
16029         esac
16030         case "$random_r_proto" in
16031         ''|0)   d_random_r=undef
16032                 random_r_proto=0
16033                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
16034         * )     case "$random_r_proto" in
16035                 REENTRANT_PROTO*) ;;
16036                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
16037                 esac
16038                 echo "Prototype: $try" ;;
16039         esac
16040         ;;
16041         *)      case "$usethreads" in
16042                 define) echo "random_r has no prototype, not using it." >&4 ;;
16043                 esac
16044                 d_random_r=undef
16045                 random_r_proto=0
16046                 ;;
16047         esac
16048         ;;
16049 *)      random_r_proto=0
16050         ;;
16051 esac
16052
16053 : see if readdir and friends exist
16054 set readdir d_readdir
16055 eval $inlibc
16056 set seekdir d_seekdir
16057 eval $inlibc
16058 set telldir d_telldir
16059 eval $inlibc
16060 set rewinddir d_rewinddir
16061 eval $inlibc
16062
16063 : see if readdir64_r exists
16064 set readdir64_r d_readdir64_r
16065 eval $inlibc
16066 case "$d_readdir64_r" in
16067 "$define")
16068         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
16069         case "$d_readdir64_r_proto:$usethreads" in
16070         ":define")      d_readdir64_r_proto=define
16071                 set d_readdir64_r_proto readdir64_r $hdrs
16072                 eval $hasproto ;;
16073         *)      ;;
16074         esac
16075         case "$d_readdir64_r_proto" in
16076         define)
16077         case "$readdir64_r_proto" in
16078         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
16079         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
16080         esac
16081         case "$readdir64_r_proto" in
16082         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
16083         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
16084         esac
16085         case "$readdir64_r_proto" in
16086         ''|0)   d_readdir64_r=undef
16087                 readdir64_r_proto=0
16088                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
16089         * )     case "$readdir64_r_proto" in
16090                 REENTRANT_PROTO*) ;;
16091                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
16092                 esac
16093                 echo "Prototype: $try" ;;
16094         esac
16095         ;;
16096         *)      case "$usethreads" in
16097                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
16098                 esac
16099                 d_readdir64_r=undef
16100                 readdir64_r_proto=0
16101                 ;;
16102         esac
16103         ;;
16104 *)      readdir64_r_proto=0
16105         ;;
16106 esac
16107
16108 : see if readdir_r exists
16109 set readdir_r d_readdir_r
16110 eval $inlibc
16111 case "$d_readdir_r" in
16112 "$define")
16113         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
16114         case "$d_readdir_r_proto:$usethreads" in
16115         ":define")      d_readdir_r_proto=define
16116                 set d_readdir_r_proto readdir_r $hdrs
16117                 eval $hasproto ;;
16118         *)      ;;
16119         esac
16120         case "$d_readdir_r_proto" in
16121         define)
16122         case "$readdir_r_proto" in
16123         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
16124         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
16125         esac
16126         case "$readdir_r_proto" in
16127         ''|0) try='int readdir_r(DIR*, struct dirent*);'
16128         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
16129         esac
16130         case "$readdir_r_proto" in
16131         ''|0)   d_readdir_r=undef
16132                 readdir_r_proto=0
16133                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
16134         * )     case "$readdir_r_proto" in
16135                 REENTRANT_PROTO*) ;;
16136                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
16137                 esac
16138                 echo "Prototype: $try" ;;
16139         esac
16140         ;;
16141         *)      case "$usethreads" in
16142                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
16143                 esac
16144                 d_readdir_r=undef
16145                 readdir_r_proto=0
16146                 ;;
16147         esac
16148         ;;
16149 *)      readdir_r_proto=0
16150         ;;
16151 esac
16152
16153 : see if readv exists
16154 set readv d_readv
16155 eval $inlibc
16156
16157 : see if recvmsg exists
16158 set recvmsg d_recvmsg
16159 eval $inlibc
16160
16161 : see if rename exists
16162 set rename d_rename
16163 eval $inlibc
16164
16165 : see if rmdir exists
16166 set rmdir d_rmdir
16167 eval $inlibc
16168
16169 : see if memory.h is available.
16170 val=''
16171 set memory.h val
16172 eval $inhdr
16173
16174 : See if it conflicts with string.h
16175 case "$val" in
16176 $define)
16177         case "$strings" in
16178         '') ;;
16179         *)
16180                 $cppstdin $cppflags $cppminus < $strings > mem.h
16181                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
16182                         echo " "
16183                         echo "We won't be including <memory.h>."
16184                         val="$undef"
16185                 fi
16186                 $rm -f mem.h
16187                 ;;
16188         esac
16189 esac
16190 set i_memory
16191 eval $setvar
16192
16193 : can bcopy handle overlapping blocks?
16194 echo " "
16195 val="$undef"
16196 case "$d_memmove" in
16197 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
16198 *)      case "$d_bcopy" in
16199         "$define")
16200                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
16201                 $cat >try.c <<EOCP
16202 #$i_memory I_MEMORY
16203 #$i_stdlib I_STDLIB
16204 #$i_string I_STRING
16205 #$i_unistd I_UNISTD
16206 EOCP
16207         $cat >>try.c <<'EOCP'
16208 #include <stdio.h>
16209 #ifdef I_MEMORY
16210 #  include <memory.h>
16211 #endif
16212 #ifdef I_STDLIB
16213 #  include <stdlib.h>
16214 #endif
16215 #ifdef I_STRING
16216 #  include <string.h>
16217 #else
16218 #  include <strings.h>
16219 #endif
16220 #ifdef I_UNISTD
16221 #  include <unistd.h>  /* Needed for NetBSD */
16222 #endif
16223 int main()
16224 {
16225 char buf[128], abc[128];
16226 char *b;
16227 int len;
16228 int off;
16229 int align;
16230
16231 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16232    try to store the string in read-only memory. */
16233 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
16234
16235 for (align = 7; align >= 0; align--) {
16236         for (len = 36; len; len--) {
16237                 b = buf+align;
16238                 bcopy(abc, b, len);
16239                 for (off = 1; off <= len; off++) {
16240                         bcopy(b, b+off, len);
16241                         bcopy(b+off, b, len);
16242                         if (bcmp(b, abc, len))
16243                                 exit(1);
16244                 }
16245         }
16246 }
16247 exit(0);
16248 }
16249 EOCP
16250                 set try
16251                 if eval $compile_ok; then
16252                         if $run ./try 2>/dev/null; then
16253                                 echo "Yes, it can."
16254                                 val="$define"
16255                         else
16256                                 echo "It can't, sorry."
16257                         fi
16258                 else
16259                         echo "(I can't compile the test program, so we'll assume not...)"
16260                 fi
16261                 ;;
16262         esac
16263         $rm_try
16264         ;;
16265 esac
16266 set d_safebcpy
16267 eval $setvar
16268
16269 : can memcpy handle overlapping blocks?
16270 echo " "
16271 val="$undef"
16272 case "$d_memmove" in
16273 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16274 *)      case "$d_memcpy" in
16275         "$define")
16276                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16277                 $cat >try.c <<EOCP
16278 #$i_memory I_MEMORY
16279 #$i_stdlib I_STDLIB
16280 #$i_string I_STRING
16281 #$i_unistd I_UNISTD
16282 EOCP
16283         $cat >>try.c <<'EOCP'
16284 #include <stdio.h>
16285 #ifdef I_MEMORY
16286 #  include <memory.h>
16287 #endif
16288 #ifdef I_STDLIB
16289 #  include <stdlib.h>
16290 #endif
16291 #ifdef I_STRING
16292 #  include <string.h>
16293 #else
16294 #  include <strings.h>
16295 #endif
16296 #ifdef I_UNISTD
16297 #  include <unistd.h>  /* Needed for NetBSD */
16298 #endif
16299 int main()
16300 {
16301 char buf[128], abc[128];
16302 char *b;
16303 int len;
16304 int off;
16305 int align;
16306
16307 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16308    try to store the string in read-only memory. */
16309 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16310
16311 for (align = 7; align >= 0; align--) {
16312         for (len = 36; len; len--) {
16313                 b = buf+align;
16314                 memcpy(b, abc, len);
16315                 for (off = 1; off <= len; off++) {
16316                         memcpy(b+off, b, len);
16317                         memcpy(b, b+off, len);
16318                         if (memcmp(b, abc, len))
16319                                 exit(1);
16320                 }
16321         }
16322 }
16323 exit(0);
16324 }
16325 EOCP
16326                 set try
16327                 if eval $compile_ok; then
16328                         if $run ./try 2>/dev/null; then
16329                                 echo "Yes, it can."
16330                                 val="$define"
16331                         else
16332                                 echo "It can't, sorry."
16333                         fi
16334                 else
16335                         echo "(I can't compile the test program, so we'll assume not...)"
16336                 fi
16337                 ;;
16338         esac
16339         $rm_try
16340         ;;
16341 esac
16342 set d_safemcpy
16343 eval $setvar
16344
16345 : can memcmp be trusted to compare relative magnitude?
16346 val="$undef"
16347 case "$d_memcmp" in
16348 "$define")
16349         echo " "
16350         echo "Checking if your memcmp() can compare relative magnitude..." >&4
16351         $cat >try.c <<EOCP
16352 #$i_memory I_MEMORY
16353 #$i_stdlib I_STDLIB
16354 #$i_string I_STRING
16355 #$i_unistd I_UNISTD
16356 EOCP
16357         $cat >>try.c <<'EOCP'
16358 #include <stdio.h>
16359 #ifdef I_MEMORY
16360 #  include <memory.h>
16361 #endif
16362 #ifdef I_STDLIB
16363 #  include <stdlib.h>
16364 #endif
16365 #ifdef I_STRING
16366 #  include <string.h>
16367 #else
16368 #  include <strings.h>
16369 #endif
16370 #ifdef I_UNISTD
16371 #  include <unistd.h>  /* Needed for NetBSD */
16372 #endif
16373 int main()
16374 {
16375 char a = -1;
16376 char b = 0;
16377 if ((a < b) && memcmp(&a, &b, 1) < 0)
16378         exit(1);
16379 exit(0);
16380 }
16381 EOCP
16382         set try
16383         if eval $compile_ok; then
16384                 if $run ./try 2>/dev/null; then
16385                         echo "Yes, it can."
16386                         val="$define"
16387                 else
16388                         echo "No, it can't (it uses signed chars)."
16389                 fi
16390         else
16391                 echo "(I can't compile the test program, so we'll assume not...)"
16392         fi
16393         ;;
16394 esac
16395 $rm_try
16396 set d_sanemcmp
16397 eval $setvar
16398
16399 : see if prototype for sbrk is available
16400 echo " "
16401 set d_sbrkproto sbrk $i_unistd unistd.h
16402 eval $hasproto
16403
16404 : see if select exists
16405 set select d_select
16406 eval $inlibc
16407
16408 : see if semctl exists
16409 set semctl d_semctl
16410 eval $inlibc
16411
16412 : see if semget exists
16413 set semget d_semget
16414 eval $inlibc
16415
16416 : see if semop exists
16417 set semop d_semop
16418 eval $inlibc
16419
16420 : see how much of the 'sem*(2)' library is present.
16421 h_sem=true
16422 echo " "
16423 case "$d_semctl$d_semget$d_semop" in
16424 *"$undef"*) h_sem=false;;
16425 esac
16426 case "$osname" in
16427 freebsd)
16428     case "`ipcs 2>&1`" in
16429     "SVID messages"*"not configured"*)
16430         echo "Your $osname does not have the sem*(2) configured." >&4
16431         h_sem=false
16432         val="$undef"
16433         set semctl d_semctl
16434         eval $setvar
16435         set semget d_semget
16436         eval $setvar
16437         set semop d_semop
16438         eval $setvar
16439         ;;
16440     esac
16441     ;;
16442 esac
16443 : we could also check for sys/ipc.h ...
16444 if $h_sem && $test `./findhdr sys/sem.h`; then
16445         echo "You have the full sem*(2) library." >&4
16446         val="$define"
16447 else
16448         echo "You don't have the full sem*(2) library." >&4
16449         val="$undef"
16450 fi
16451 set d_sem
16452 eval $setvar
16453
16454 : see whether sys/sem.h defines union semun
16455 echo " "
16456 $cat > try.c <<'END'
16457 #include <sys/types.h>
16458 #include <sys/ipc.h>
16459 #include <sys/sem.h>
16460 int main () { union semun semun; semun.buf = 0; }
16461 END
16462 set try
16463 if eval $compile; then
16464     echo "You have union semun in <sys/sem.h>." >&4
16465     val="$define"
16466 else
16467     echo "You do not have union semun in <sys/sem.h>." >&4
16468     val="$undef"
16469 fi
16470 $rm_try
16471 set d_union_semun
16472 eval $setvar
16473
16474 : see how to do semctl IPC_STAT
16475 case "$d_sem" in
16476 $define)
16477     echo " "
16478     $cat > tryh.h <<END
16479 #ifndef S_IRUSR
16480 #   ifdef S_IREAD
16481 #       define S_IRUSR S_IREAD
16482 #       define S_IWUSR S_IWRITE
16483 #       define S_IXUSR S_IEXEC
16484 #   else
16485 #       define S_IRUSR 0400
16486 #       define S_IWUSR 0200
16487 #       define S_IXUSR 0100
16488 #   endif
16489 #   define S_IRGRP (S_IRUSR>>3)
16490 #   define S_IWGRP (S_IWUSR>>3)
16491 #   define S_IXGRP (S_IXUSR>>3)
16492 #   define S_IROTH (S_IRUSR>>6)
16493 #   define S_IWOTH (S_IWUSR>>6)
16494 #   define S_IXOTH (S_IXUSR>>6)
16495 #endif
16496 #ifndef S_IRWXU
16497 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16498 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16499 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16500 #endif
16501 END
16502     : see whether semctl IPC_STAT can use union semun
16503     case "$d_semctl_semun" in
16504     '')
16505       val="$undef"
16506       $cat > try.c <<END
16507 #include <sys/types.h>
16508 #include <sys/ipc.h>
16509 #include <sys/sem.h>
16510 #include <sys/stat.h>
16511 #include <stdio.h>
16512 #include <errno.h>
16513 #include "tryh.h"
16514 #ifndef errno
16515 extern int errno;
16516 #endif
16517 #$d_union_semun HAS_UNION_SEMUN
16518 int main() {
16519     union semun
16520 #ifndef HAS_UNION_SEMUN
16521     {
16522         int val;
16523         struct semid_ds *buf;
16524         unsigned short *array;
16525     }
16526 #endif
16527     arg;
16528     int sem, st;
16529
16530 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16531     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16532     if (sem > -1) {
16533         struct semid_ds argbuf;
16534         arg.buf = &argbuf;
16535 #       ifdef IPC_STAT
16536         st = semctl(sem, 0, IPC_STAT, arg);
16537         if (st == 0)
16538             printf("semun\n");
16539         else
16540 #       endif /* IPC_STAT */
16541             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16542 #       ifdef IPC_RMID
16543         if (semctl(sem, 0, IPC_RMID, arg) != 0)
16544 #       endif /* IPC_RMID */
16545             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16546     } else
16547 #endif /* IPC_PRIVATE && ... */
16548         printf("semget failed: errno = %d\n", errno);
16549   return 0;
16550 }
16551 END
16552       set try
16553       if eval $compile; then
16554           xxx=`$run ./try`
16555           case "$xxx" in
16556           semun) val="$define" ;;
16557           esac
16558       fi
16559       $rm_try
16560       set d_semctl_semun
16561       eval $setvar
16562       ;;
16563     esac
16564     case "$d_semctl_semun" in
16565     $define)
16566         echo "You can use union semun for semctl IPC_STAT." >&4
16567         also='also'
16568         ;;
16569     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
16570         also=''
16571         ;;
16572     esac
16573
16574     : see whether semctl IPC_STAT can use struct semid_ds pointer
16575     case "$d_semctl_semid_ds" in
16576     '')
16577       val="$undef"
16578       $cat > try.c <<'END'
16579 #include <sys/types.h>
16580 #include <sys/ipc.h>
16581 #include <sys/sem.h>
16582 #include <sys/stat.h>
16583 #include "tryh.h"
16584 #include <stdio.h>
16585 #include <errno.h>
16586 #ifndef errno
16587 extern int errno;
16588 #endif
16589 int main() {
16590     struct semid_ds arg;
16591     int sem, st;
16592
16593 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
16594     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16595     if (sem > -1) {
16596 #       ifdef IPC_STAT
16597         st = semctl(sem, 0, IPC_STAT, &arg);
16598         if (st == 0)
16599             printf("semid_ds\n");
16600         else
16601 #       endif /* IPC_STAT */
16602             printf("semctl IPC_STAT failed: errno = %d\n", errno);
16603 #       ifdef IPC_RMID
16604         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16605 #       endif /* IPC_RMID */
16606             printf("semctl IPC_RMID failed: errno = %d\n", errno);
16607     } else
16608 #endif /* IPC_PRIVATE && ... */
16609         printf("semget failed: errno = %d\n", errno);
16610
16611     return 0;
16612 }
16613 END
16614       set try
16615       if eval $compile; then
16616           xxx=`$run ./try`
16617           case "$xxx" in
16618           semid_ds) val="$define" ;;
16619           esac
16620       fi
16621       $rm_try
16622       set d_semctl_semid_ds
16623       eval $setvar
16624       ;;
16625     esac
16626     case "$d_semctl_semid_ds" in
16627     $define)
16628         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16629         ;;
16630     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16631         ;;
16632     esac
16633     ;;
16634 *)  val="$undef"
16635
16636     # We do not have the full sem*(2) library, so assume we can not
16637     # use either.
16638
16639     set d_semctl_semun
16640     eval $setvar
16641
16642     set d_semctl_semid_ds
16643     eval $setvar
16644     ;;
16645 esac
16646 $rm_try tryh.h
16647
16648 : see if sendmsg exists
16649 set sendmsg d_sendmsg
16650 eval $inlibc
16651
16652 : see if setegid exists
16653 set setegid d_setegid
16654 eval $inlibc
16655
16656 : see if seteuid exists
16657 set seteuid d_seteuid
16658 eval $inlibc
16659
16660 : see if setgrent exists
16661 set setgrent d_setgrent
16662 eval $inlibc
16663
16664 : see if setgrent_r exists
16665 set setgrent_r d_setgrent_r
16666 eval $inlibc
16667 case "$d_setgrent_r" in
16668 "$define")
16669         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16670         case "$d_setgrent_r_proto:$usethreads" in
16671         ":define")      d_setgrent_r_proto=define
16672                 set d_setgrent_r_proto setgrent_r $hdrs
16673                 eval $hasproto ;;
16674         *)      ;;
16675         esac
16676         case "$d_setgrent_r_proto" in
16677         define)
16678         case "$setgrent_r_proto" in
16679         ''|0) try='int setgrent_r(FILE**);'
16680         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16681         esac
16682         case "$setgrent_r_proto" in
16683         ''|0) try='void setgrent_r(FILE**);'
16684         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16685         esac
16686         case "$setgrent_r_proto" in
16687         ''|0)   d_setgrent_r=undef
16688                 setgrent_r_proto=0
16689                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16690         * )     case "$setgrent_r_proto" in
16691                 REENTRANT_PROTO*) ;;
16692                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16693                 esac
16694                 echo "Prototype: $try" ;;
16695         esac
16696         ;;
16697         *)      case "$usethreads" in
16698                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16699                 esac
16700                 d_setgrent_r=undef
16701                 setgrent_r_proto=0
16702                 ;;
16703         esac
16704         ;;
16705 *)      setgrent_r_proto=0
16706         ;;
16707 esac
16708
16709 : see if sethostent exists
16710 set sethostent d_sethent
16711 eval $inlibc
16712
16713 : see if sethostent_r exists
16714 set sethostent_r d_sethostent_r
16715 eval $inlibc
16716 case "$d_sethostent_r" in
16717 "$define")
16718         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16719         case "$d_sethostent_r_proto:$usethreads" in
16720         ":define")      d_sethostent_r_proto=define
16721                 set d_sethostent_r_proto sethostent_r $hdrs
16722                 eval $hasproto ;;
16723         *)      ;;
16724         esac
16725         case "$d_sethostent_r_proto" in
16726         define)
16727         case "$sethostent_r_proto" in
16728         ''|0) try='int sethostent_r(int, struct hostent_data*);'
16729         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16730         esac
16731         case "$sethostent_r_proto" in
16732         ''|0) try='void sethostent_r(int, struct hostent_data*);'
16733         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16734         esac
16735         case "$sethostent_r_proto" in
16736         ''|0)   d_sethostent_r=undef
16737                 sethostent_r_proto=0
16738                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16739         * )     case "$sethostent_r_proto" in
16740                 REENTRANT_PROTO*) ;;
16741                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16742                 esac
16743                 echo "Prototype: $try" ;;
16744         esac
16745         ;;
16746         *)      case "$usethreads" in
16747                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16748                 esac
16749                 d_sethostent_r=undef
16750                 sethostent_r_proto=0
16751                 ;;
16752         esac
16753         ;;
16754 *)      sethostent_r_proto=0
16755         ;;
16756 esac
16757
16758 : see if setitimer exists
16759 set setitimer d_setitimer
16760 eval $inlibc
16761
16762 : see if setlinebuf exists
16763 set setlinebuf d_setlinebuf
16764 eval $inlibc
16765
16766 : see if setlocale exists
16767 set setlocale d_setlocale
16768 eval $inlibc
16769
16770 : see if locale.h is available
16771 set locale.h i_locale
16772 eval $inhdr
16773
16774 : see if setlocale_r exists
16775 set setlocale_r d_setlocale_r
16776 eval $inlibc
16777 case "$d_setlocale_r" in
16778 "$define")
16779         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16780         case "$d_setlocale_r_proto:$usethreads" in
16781         ":define")      d_setlocale_r_proto=define
16782                 set d_setlocale_r_proto setlocale_r $hdrs
16783                 eval $hasproto ;;
16784         *)      ;;
16785         esac
16786         case "$d_setlocale_r_proto" in
16787         define)
16788         case "$setlocale_r_proto" in
16789         ''|0) try='int setlocale_r(int, const char*, char*, int);'
16790         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16791         esac
16792         case "$setlocale_r_proto" in
16793         ''|0)   d_setlocale_r=undef
16794                 setlocale_r_proto=0
16795                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16796         * )     case "$setlocale_r_proto" in
16797                 REENTRANT_PROTO*) ;;
16798                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16799                 esac
16800                 echo "Prototype: $try" ;;
16801         esac
16802         ;;
16803         *)      case "$usethreads" in
16804                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16805                 esac
16806                 d_setlocale_r=undef
16807                 setlocale_r_proto=0
16808                 ;;
16809         esac
16810         ;;
16811 *)      setlocale_r_proto=0
16812         ;;
16813 esac
16814
16815 : see if setnetent exists
16816 set setnetent d_setnent
16817 eval $inlibc
16818
16819 : see if setnetent_r exists
16820 set setnetent_r d_setnetent_r
16821 eval $inlibc
16822 case "$d_setnetent_r" in
16823 "$define")
16824         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16825         case "$d_setnetent_r_proto:$usethreads" in
16826         ":define")      d_setnetent_r_proto=define
16827                 set d_setnetent_r_proto setnetent_r $hdrs
16828                 eval $hasproto ;;
16829         *)      ;;
16830         esac
16831         case "$d_setnetent_r_proto" in
16832         define)
16833         case "$setnetent_r_proto" in
16834         ''|0) try='int setnetent_r(int, struct netent_data*);'
16835         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16836         esac
16837         case "$setnetent_r_proto" in
16838         ''|0) try='void setnetent_r(int, struct netent_data*);'
16839         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16840         esac
16841         case "$setnetent_r_proto" in
16842         ''|0)   d_setnetent_r=undef
16843                 setnetent_r_proto=0
16844                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16845         * )     case "$setnetent_r_proto" in
16846                 REENTRANT_PROTO*) ;;
16847                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16848                 esac
16849                 echo "Prototype: $try" ;;
16850         esac
16851         ;;
16852         *)      case "$usethreads" in
16853                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16854                 esac
16855                 d_setnetent_r=undef
16856                 setnetent_r_proto=0
16857                 ;;
16858         esac
16859         ;;
16860 *)      setnetent_r_proto=0
16861         ;;
16862 esac
16863
16864 : see if setprotoent exists
16865 set setprotoent d_setpent
16866 eval $inlibc
16867
16868 : see if setpgid exists
16869 set setpgid d_setpgid
16870 eval $inlibc
16871
16872 : see if setpgrp2 exists
16873 set setpgrp2 d_setpgrp2
16874 eval $inlibc
16875
16876 : see if setpriority exists
16877 set setpriority d_setprior
16878 eval $inlibc
16879
16880 : see if setproctitle exists
16881 set setproctitle d_setproctitle
16882 eval $inlibc
16883
16884 : see if setprotoent_r exists
16885 set setprotoent_r d_setprotoent_r
16886 eval $inlibc
16887 case "$d_setprotoent_r" in
16888 "$define")
16889         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16890         case "$d_setprotoent_r_proto:$usethreads" in
16891         ":define")      d_setprotoent_r_proto=define
16892                 set d_setprotoent_r_proto setprotoent_r $hdrs
16893                 eval $hasproto ;;
16894         *)      ;;
16895         esac
16896         case "$d_setprotoent_r_proto" in
16897         define)
16898         case "$setprotoent_r_proto" in
16899         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16900         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16901         esac
16902         case "$setprotoent_r_proto" in
16903         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16904         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16905         esac
16906         case "$setprotoent_r_proto" in
16907         ''|0)   d_setprotoent_r=undef
16908                 setprotoent_r_proto=0
16909                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16910         * )     case "$setprotoent_r_proto" in
16911                 REENTRANT_PROTO*) ;;
16912                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16913                 esac
16914                 echo "Prototype: $try" ;;
16915         esac
16916         ;;
16917         *)      case "$usethreads" in
16918                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16919                 esac
16920                 d_setprotoent_r=undef
16921                 setprotoent_r_proto=0
16922                 ;;
16923         esac
16924         ;;
16925 *)      setprotoent_r_proto=0
16926         ;;
16927 esac
16928
16929 : see if setpwent exists
16930 set setpwent d_setpwent
16931 eval $inlibc
16932
16933 : see if setpwent_r exists
16934 set setpwent_r d_setpwent_r
16935 eval $inlibc
16936 case "$d_setpwent_r" in
16937 "$define")
16938         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16939         case "$d_setpwent_r_proto:$usethreads" in
16940         ":define")      d_setpwent_r_proto=define
16941                 set d_setpwent_r_proto setpwent_r $hdrs
16942                 eval $hasproto ;;
16943         *)      ;;
16944         esac
16945         case "$d_setpwent_r_proto" in
16946         define)
16947         case "$setpwent_r_proto" in
16948         ''|0) try='int setpwent_r(FILE**);'
16949         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16950         esac
16951         case "$setpwent_r_proto" in
16952         ''|0) try='void setpwent_r(FILE**);'
16953         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16954         esac
16955         case "$setpwent_r_proto" in
16956         ''|0)   d_setpwent_r=undef
16957                 setpwent_r_proto=0
16958                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16959         * )     case "$setpwent_r_proto" in
16960                 REENTRANT_PROTO*) ;;
16961                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16962                 esac
16963                 echo "Prototype: $try" ;;
16964         esac
16965         ;;
16966         *)      case "$usethreads" in
16967                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16968                 esac
16969                 d_setpwent_r=undef
16970                 setpwent_r_proto=0
16971                 ;;
16972         esac
16973         ;;
16974 *)      setpwent_r_proto=0
16975         ;;
16976 esac
16977
16978 : see if setregid exists
16979 set setregid d_setregid
16980 eval $inlibc
16981 set setresgid d_setresgid
16982 eval $inlibc
16983
16984 : see if setreuid exists
16985 set setreuid d_setreuid
16986 eval $inlibc
16987 set setresuid d_setresuid
16988 eval $inlibc
16989
16990 : see if setrgid exists
16991 set setrgid d_setrgid
16992 eval $inlibc
16993
16994 : see if setruid exists
16995 set setruid d_setruid
16996 eval $inlibc
16997
16998 : see if setservent exists
16999 set setservent d_setsent
17000 eval $inlibc
17001
17002 : see if setservent_r exists
17003 set setservent_r d_setservent_r
17004 eval $inlibc
17005 case "$d_setservent_r" in
17006 "$define")
17007         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
17008         case "$d_setservent_r_proto:$usethreads" in
17009         ":define")      d_setservent_r_proto=define
17010                 set d_setservent_r_proto setservent_r $hdrs
17011                 eval $hasproto ;;
17012         *)      ;;
17013         esac
17014         case "$d_setservent_r_proto" in
17015         define)
17016         case "$setservent_r_proto" in
17017         ''|0) try='int setservent_r(int, struct servent_data*);'
17018         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
17019         esac
17020         case "$setservent_r_proto" in
17021         ''|0) try='void setservent_r(int, struct servent_data*);'
17022         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
17023         esac
17024         case "$setservent_r_proto" in
17025         ''|0)   d_setservent_r=undef
17026                 setservent_r_proto=0
17027                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
17028         * )     case "$setservent_r_proto" in
17029                 REENTRANT_PROTO*) ;;
17030                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
17031                 esac
17032                 echo "Prototype: $try" ;;
17033         esac
17034         ;;
17035         *)      case "$usethreads" in
17036                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
17037                 esac
17038                 d_setservent_r=undef
17039                 setservent_r_proto=0
17040                 ;;
17041         esac
17042         ;;
17043 *)      setservent_r_proto=0
17044         ;;
17045 esac
17046
17047 : see if setsid exists
17048 set setsid d_setsid
17049 eval $inlibc
17050
17051 : see if setvbuf exists
17052 set setvbuf d_setvbuf
17053 eval $inlibc
17054
17055 : see if sfio.h is available
17056 set sfio.h i_sfio
17057 eval $inhdr
17058
17059 : see if sfio library is available
17060 case "$i_sfio" in
17061 $define)
17062         val=''
17063         set sfreserve val
17064         eval $inlibc
17065         ;;
17066 *)
17067         val="$undef"
17068         ;;
17069 esac
17070 : Ok, but do we want to use it.
17071 case "$val" in
17072 $define)
17073         case "$usesfio" in
17074         true|$define|[yY]*) dflt='y';;
17075         *) dflt='n';;
17076         esac
17077         echo "$package can use the sfio library, but it is experimental."
17078         case "$useperlio" in
17079         "$undef")
17080             echo "For sfio also the PerlIO abstraction layer is needed."
17081             echo "Earlier you said you wouldn't want that."
17082             ;;
17083         esac
17084         rp="You seem to have sfio available, do you want to try using it?"
17085         . ./myread
17086         case "$ans" in
17087         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
17088                 useperlio="$define"
17089                 val="$define"
17090                 ;;
17091         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
17092                 val="$undef"
17093                 ;;
17094         esac
17095         ;;
17096 *)      case "$usesfio" in
17097         true|$define|[yY]*)
17098                 echo "Sorry, cannot find sfio on this machine." >&4
17099                 echo "Ignoring your setting of usesfio=$usesfio." >&4
17100                 val="$undef"
17101                 ;;
17102         esac
17103         ;;
17104 esac
17105 set d_sfio
17106 eval $setvar
17107 case "$d_sfio" in
17108 $define) usesfio='true';;
17109 *) usesfio='false';;
17110 esac
17111 case "$d_sfio" in
17112 $define) ;;
17113 *)      : Remove sfio from list of libraries to use
17114         case "$libs" in
17115         *-lsfio*)
17116                 echo "Removing unneeded -lsfio from library list" >&4
17117                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
17118                 shift
17119                 libs="$*"
17120                 echo "libs = $libs" >&4
17121                 ;;
17122         esac
17123 ;;
17124 esac
17125
17126
17127 : see if shmctl exists
17128 set shmctl d_shmctl
17129 eval $inlibc
17130
17131 : see if shmget exists
17132 set shmget d_shmget
17133 eval $inlibc
17134
17135 : see if shmat exists
17136 set shmat d_shmat
17137 eval $inlibc
17138 : see what shmat returns
17139 case "$d_shmat" in
17140 "$define")
17141         $cat >shmat.c <<'END'
17142 #include <sys/shm.h>
17143 void *shmat();
17144 END
17145         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
17146                 shmattype='void *'
17147         else
17148                 shmattype='char *'
17149         fi
17150         echo "and it returns ($shmattype)." >&4
17151         : see if a prototype for shmat is available
17152         xxx=`./findhdr sys/shm.h`
17153         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
17154         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
17155                 val="$define"
17156         else
17157                 val="$undef"
17158         fi
17159         $rm -f shmat.[co]
17160         ;;
17161 *)
17162         val="$undef"
17163         ;;
17164 esac
17165 set d_shmatprototype
17166 eval $setvar
17167
17168 : see if shmdt exists
17169 set shmdt d_shmdt
17170 eval $inlibc
17171
17172 : see how much of the 'shm*(2)' library is present.
17173 h_shm=true
17174 echo " "
17175 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
17176 *"$undef"*) h_shm=false;;
17177 esac
17178 case "$osname" in
17179 freebsd)
17180     case "`ipcs 2>&1`" in
17181     "SVID shared memory"*"not configured"*)
17182         echo "Your $osname does not have the shm*(2) configured." >&4
17183         h_shm=false
17184         val="$undef"
17185         set shmctl d_shmctl
17186         evat $setvar
17187         set shmget d_shmget
17188         evat $setvar
17189         set shmat d_shmat
17190         evat $setvar
17191         set shmdt d_shmdt
17192         evat $setvar
17193         ;;
17194     esac
17195     ;;
17196 esac
17197 : we could also check for sys/ipc.h ...
17198 if $h_shm && $test `./findhdr sys/shm.h`; then
17199         echo "You have the full shm*(2) library." >&4
17200         val="$define"
17201 else
17202         echo "You don't have the full shm*(2) library." >&4
17203         val="$undef"
17204 fi
17205 set d_shm
17206 eval $setvar
17207
17208 : see if we have sigaction
17209 echo " "
17210 if set sigaction val -f d_sigaction; eval $csym; $val; then
17211         echo 'sigaction() found.' >&4
17212         $cat > try.c <<EOP
17213 #include <stdio.h>
17214 #include <sys/types.h>
17215 #include <signal.h>
17216 #$i_stdlib I_STDLIB
17217 #ifdef I_STDLIB
17218 #include <stdlib.h>
17219 #endif
17220 int main()
17221 {
17222     struct sigaction act, oact;
17223     act.sa_flags = 0;
17224     oact.sa_handler = 0;
17225     /* so that act and oact are used */
17226     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
17227 }
17228 EOP
17229         set try
17230         if eval $compile_ok; then
17231                 val="$define"
17232         else
17233                 echo "But you don't seem to have a useable struct sigaction." >&4
17234                 val="$undef"
17235         fi
17236 else
17237         echo 'sigaction NOT found.' >&4
17238         val="$undef"
17239 fi
17240 set d_sigaction; eval $setvar
17241 $rm_try
17242
17243 : see if this is a sunmath.h system
17244 set sunmath.h i_sunmath
17245 eval $inhdr
17246
17247 : see if signbit exists
17248 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
17249 $cat >try.c <<EOCP
17250 #$i_math I_MATH
17251 #$i_sunmath I_SUNMATH
17252 #ifdef I_MATH
17253 #  include <math.h>
17254 #endif
17255 #ifdef I_SUNMATH  /* Solaris special math library */
17256 #  include <sunmath.h>
17257 #endif
17258 #define NV $nvtype
17259 int main(int argc, char **argv)
17260 {
17261     NV x = 0.0;
17262     NV y = -0.0;
17263     if ((signbit(x) == 0) && (signbit(y) != 0))
17264         return 0;
17265     else
17266         return 1;
17267 }
17268 EOCP
17269 val="$undef"
17270 set try
17271 if eval $compile; then
17272     if $run ./try; then
17273         $echo "Yes." >&4
17274         val="$define"
17275     else
17276         $echo "Signbit seems to be available, but doesn't work as I expected."
17277         $echo "I won't use it." >&4
17278         val="$undef"
17279     fi
17280 else
17281     $echo "Nope." >&4
17282     dflt="$undef"
17283 fi
17284 set d_signbit
17285 eval $setvar
17286 $rm_try
17287
17288 : see if sigprocmask exists
17289 set sigprocmask d_sigprocmask
17290 eval $inlibc
17291
17292 : see if sigsetjmp exists
17293 echo " "
17294 case "$d_sigsetjmp" in
17295 '')
17296         $cat >try.c <<EOP
17297 #include <setjmp.h>
17298 #$i_stdlib I_STDLIB
17299 #ifdef I_STDLIB
17300 #include <stdlib.h>
17301 #endif
17302 sigjmp_buf env;
17303 int set = 1;
17304 int main()
17305 {
17306         if (sigsetjmp(env,1))
17307                 exit(set);
17308         set = 0;
17309         siglongjmp(env, 1);
17310         exit(1);
17311 }
17312 EOP
17313         set try
17314         if eval $compile; then
17315                 if $run ./try >/dev/null 2>&1; then
17316                         echo "POSIX sigsetjmp found." >&4
17317                         val="$define"
17318                 else
17319                         $cat >&4 <<EOM
17320 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17321 I'll ignore them.
17322 EOM
17323                         val="$undef"
17324                 fi
17325         else
17326                 echo "sigsetjmp not found." >&4
17327                 val="$undef"
17328         fi
17329         ;;
17330 *) val="$d_sigsetjmp"
17331         case "$d_sigsetjmp" in
17332         $define) echo "POSIX sigsetjmp found." >&4;;
17333         $undef) echo "sigsetjmp not found." >&4;;
17334         esac
17335         ;;
17336 esac
17337 set d_sigsetjmp
17338 eval $setvar
17339 $rm_try
17340
17341 : see if snprintf exists
17342 set snprintf d_snprintf
17343 eval $inlibc
17344
17345 : see if vsnprintf exists
17346 set vsnprintf d_vsnprintf
17347 eval $inlibc
17348
17349 case "$d_snprintf-$d_vsnprintf" in
17350 "$define-$define")
17351     $cat <<EOM
17352 Checking whether your snprintf() and vsnprintf() work okay...
17353 EOM
17354     $cat >try.c <<'EOCP'
17355 /* v?snprintf testing logic courtesy of Russ Allbery.
17356  * According to C99:
17357  * - if the buffer is too short it still must be \0-terminated
17358  * - if the buffer is too short the potentially required length
17359  *   must be returned and not -1
17360  * - if the buffer is NULL the potentially required length
17361  *   must be returned and not -1 or core dump
17362  */
17363 #include <stdio.h>
17364 #include <stdarg.h>
17365
17366 char buf[2];
17367
17368 int test (char *format, ...)
17369 {
17370     va_list args;
17371     int count;
17372
17373     va_start (args, format);
17374     count = vsnprintf (buf, sizeof buf, format, args);
17375     va_end (args);
17376     return count;
17377 }
17378
17379 int main ()
17380 {
17381     return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17382              && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17383 }
17384 EOCP
17385     set try
17386     if eval $compile; then
17387         `$run ./try`
17388         case "$?" in
17389         0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17390         *) cat <<EOM >&4
17391 Your snprintf() and snprintf() don't seem to be working okay.
17392 EOM
17393            d_snprintf="$undef"
17394            d_vsnprintf="$undef"
17395            ;;
17396         esac
17397     else
17398         echo "(I can't seem to compile the test program--assuming they don't)"
17399         d_snprintf="$undef"
17400         d_vsnprintf="$undef"
17401     fi
17402     $rm_try
17403     ;;
17404 esac
17405
17406 : see if sockatmark exists
17407 set sockatmark d_sockatmark
17408 eval $inlibc
17409
17410 : see if prototype for sockatmark is available
17411 echo " "
17412 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17413 eval $hasproto
17414
17415 : see if socks5_init exists
17416 set socks5_init d_socks5_init
17417 eval $inlibc
17418
17419 : see if sprintf returns the length of the string in the buffer as per ANSI
17420 $echo "Checking whether sprintf returns the length of the string..." >&4
17421 $cat <<EOP >try.c
17422 #include <stdio.h>
17423 #$i_stdlib I_STDLIB
17424 #ifdef I_STDLIB
17425 #include <stdlib.h>
17426 #endif
17427 #$i_string I_STRING
17428 #ifdef I_STRING
17429 #  include <string.h>
17430 #else
17431 #  include <strings.h>
17432 #endif
17433 #$i_math I_MATH
17434 #ifdef I_MATH
17435 #include <math.h>
17436 #endif
17437
17438 char buffer[256];
17439
17440 int check (size_t expect, int test) {
17441   size_t got = strlen(buffer);
17442   if (expect == got)
17443     return 0;
17444
17445   printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17446        test, buffer);
17447   exit (test);
17448 }
17449
17450 int main(int argc, char **argv) {
17451   int test = 0;
17452
17453   check(sprintf(buffer, ""), ++test);
17454   check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17455   check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17456
17457   return 0;
17458 }
17459 EOP
17460 set try
17461
17462 d_sprintf_returns_strlen="$undef"
17463 if eval $compile; then
17464     xxx="`$run ./try`"
17465     case "$?" in
17466         0) cat >&4 <<EOM
17467 sprintf returns the length of the string (as ANSI says it should)
17468 EOM
17469         d_sprintf_returns_strlen="$define"
17470         ;;
17471         *) cat >&4 <<EOM
17472 sprintf does not return the length of the string (how old is this system?)
17473 EOM
17474         d_sprintf_returns_strlen="$undef"
17475         ;;
17476     esac
17477 fi
17478 $rm_try
17479
17480 : see if srand48_r exists
17481 set srand48_r d_srand48_r
17482 eval $inlibc
17483 case "$d_srand48_r" in
17484 "$define")
17485         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17486         case "$d_srand48_r_proto:$usethreads" in
17487         ":define")      d_srand48_r_proto=define
17488                 set d_srand48_r_proto srand48_r $hdrs
17489                 eval $hasproto ;;
17490         *)      ;;
17491         esac
17492         case "$d_srand48_r_proto" in
17493         define)
17494         case "$srand48_r_proto" in
17495         ''|0) try='int srand48_r(long, struct drand48_data*);'
17496         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17497         esac
17498         case "$srand48_r_proto" in
17499         ''|0)   d_srand48_r=undef
17500                 srand48_r_proto=0
17501                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17502         * )     case "$srand48_r_proto" in
17503                 REENTRANT_PROTO*) ;;
17504                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17505                 esac
17506                 echo "Prototype: $try" ;;
17507         esac
17508         ;;
17509         *)      case "$usethreads" in
17510                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17511                 esac
17512                 d_srand48_r=undef
17513                 srand48_r_proto=0
17514                 ;;
17515         esac
17516         ;;
17517 *)      srand48_r_proto=0
17518         ;;
17519 esac
17520
17521 : see if srandom_r exists
17522 set srandom_r d_srandom_r
17523 eval $inlibc
17524 case "$d_srandom_r" in
17525 "$define")
17526         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17527         case "$d_srandom_r_proto:$usethreads" in
17528         ":define")      d_srandom_r_proto=define
17529                 set d_srandom_r_proto srandom_r $hdrs
17530                 eval $hasproto ;;
17531         *)      ;;
17532         esac
17533         case "$d_srandom_r_proto" in
17534         define)
17535         case "$srandom_r_proto" in
17536         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17537         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17538         esac
17539         case "$srandom_r_proto" in
17540         ''|0)   d_srandom_r=undef
17541                 srandom_r_proto=0
17542                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17543         * )     case "$srandom_r_proto" in
17544                 REENTRANT_PROTO*) ;;
17545                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17546                 esac
17547                 echo "Prototype: $try" ;;
17548         esac
17549         ;;
17550         *)      case "$usethreads" in
17551                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17552                 esac
17553                 d_srandom_r=undef
17554                 srandom_r_proto=0
17555                 ;;
17556         esac
17557         ;;
17558 *)      srandom_r_proto=0
17559         ;;
17560 esac
17561
17562 : see if prototype for setresgid is available
17563 echo " "
17564 set d_sresgproto setresgid $i_unistd unistd.h
17565 eval $hasproto
17566
17567 : see if prototype for setresuid is available
17568 echo " "
17569 set d_sresuproto setresuid $i_unistd unistd.h
17570 eval $hasproto
17571
17572 : see if sys/stat.h is available
17573 set sys/stat.h i_sysstat
17574 eval $inhdr
17575
17576 : see if stat knows about block sizes
17577 echo " "
17578 echo "Checking to see if your struct stat has st_blocks field..." >&4
17579 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17580 eval $hasfield
17581
17582 : see if this is a sys/vfs.h system
17583 set sys/vfs.h i_sysvfs
17584 eval $inhdr
17585
17586 : see if this is a sys/statfs.h system
17587 set sys/statfs.h i_sysstatfs
17588 eval $inhdr
17589
17590 : Check for statfs_s
17591 echo " "
17592 echo "Checking to see if your system supports struct statfs..." >&4
17593 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
17594 eval $hasstruct
17595 case "$d_statfs_s" in
17596 "$define")      echo "Yes, it does."   ;;
17597 *)              echo "No, it doesn't." ;;
17598 esac
17599
17600
17601 : see if struct statfs knows about f_flags
17602 case "$d_statfs_s" in
17603 define)
17604         echo " "
17605         echo "Checking to see if your struct statfs has f_flags field..." >&4
17606         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
17607         eval $hasfield
17608         ;;
17609 *)      val="$undef"
17610         set d_statfs_f_flags
17611         eval $setvar
17612         ;;
17613 esac
17614 case "$d_statfs_f_flags" in
17615 "$define")      echo "Yes, it does."   ;;
17616 *)              echo "No, it doesn't." ;;
17617 esac
17618
17619 : Check stream access
17620 $cat >&4 <<EOM
17621 Checking how to access stdio streams by file descriptor number...
17622 EOM
17623 case "$stdio_stream_array" in
17624 '')     $cat >try.c <<EOCP
17625 #include <stdio.h>
17626 int main() {
17627   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17628     printf("yes\n");
17629 }
17630 EOCP
17631         for s in _iob __iob __sF
17632         do
17633                 set try -DSTDIO_STREAM_ARRAY=$s
17634                 if eval $compile; then
17635                         case "`$run ./try`" in
17636                         yes)    stdio_stream_array=$s; break ;;
17637                         esac
17638                 fi
17639         done
17640         $rm_try
17641 esac
17642 case "$stdio_stream_array" in
17643 '')     $cat >&4 <<EOM
17644 I can't figure out how to access stdio streams by file descriptor number.
17645 EOM
17646         d_stdio_stream_array="$undef"
17647         ;;
17648 *)      $cat >&4 <<EOM
17649 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17650 EOM
17651         d_stdio_stream_array="$define"
17652         ;;
17653 esac
17654
17655 : see if strcoll exists
17656 set strcoll d_strcoll
17657 eval $inlibc
17658
17659 : check for structure copying
17660 echo " "
17661 echo "Checking to see if your C compiler can copy structs..." >&4
17662 $cat >try.c <<'EOCP'
17663 int main()
17664 {
17665         struct blurfl {
17666                 int dyick;
17667         } foo, bar;
17668
17669         foo = bar;
17670 }
17671 EOCP
17672 if $cc -c try.c >/dev/null 2>&1 ; then
17673         val="$define"
17674         echo "Yup, it can."
17675 else
17676         val="$undef"
17677         echo "Nope, it can't."
17678 fi
17679 set d_strctcpy
17680 eval $setvar
17681 $rm_try
17682
17683 : see if strerror and/or sys_errlist[] exist
17684 echo " "
17685 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17686     if set strerror val -f d_strerror; eval $csym; $val; then
17687                 echo 'strerror() found.' >&4
17688                 d_strerror="$define"
17689                 d_strerrm='strerror(e)'
17690                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17691                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
17692                         d_syserrlst="$define"
17693                 else
17694                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17695                         d_syserrlst="$undef"
17696                 fi
17697     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17698                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17699                 echo 'strerror() found in string header.' >&4
17700                 d_strerror="$define"
17701                 d_strerrm='strerror(e)'
17702                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
17703                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17704                                 d_syserrlst="$define"
17705                 else
17706                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
17707                         d_syserrlst="$undef"
17708                 fi
17709     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17710                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17711                 d_strerror="$undef"
17712                 d_syserrlst="$define"
17713                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17714     else
17715                 echo 'strerror() and sys_errlist[] NOT found.' >&4
17716                 d_strerror="$undef"
17717                 d_syserrlst="$undef"
17718                 d_strerrm='"unknown"'
17719     fi
17720 fi
17721
17722 : see if strerror_r exists
17723 set strerror_r d_strerror_r
17724 eval $inlibc
17725 case "$d_strerror_r" in
17726 "$define")
17727         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17728         case "$d_strerror_r_proto:$usethreads" in
17729         ":define")      d_strerror_r_proto=define
17730                 set d_strerror_r_proto strerror_r $hdrs
17731                 eval $hasproto ;;
17732         *)      ;;
17733         esac
17734         case "$d_strerror_r_proto" in
17735         define)
17736         case "$strerror_r_proto" in
17737         ''|0) try='int strerror_r(int, char*, size_t);'
17738         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17739         esac
17740         case "$strerror_r_proto" in
17741         ''|0) try='int strerror_r(int, char*, int);'
17742         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17743         esac
17744         case "$strerror_r_proto" in
17745         ''|0) try='char* strerror_r(int, char*, size_t);'
17746         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17747         esac
17748         case "$strerror_r_proto" in
17749         ''|0)   d_strerror_r=undef
17750                 strerror_r_proto=0
17751                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17752         * )     case "$strerror_r_proto" in
17753                 REENTRANT_PROTO*) ;;
17754                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17755                 esac
17756                 echo "Prototype: $try" ;;
17757         esac
17758         ;;
17759         *)      case "$usethreads" in
17760                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17761                 esac
17762                 d_strerror_r=undef
17763                 strerror_r_proto=0
17764                 ;;
17765         esac
17766         ;;
17767 *)      strerror_r_proto=0
17768         ;;
17769 esac
17770
17771 : see if strftime exists
17772 set strftime d_strftime
17773 eval $inlibc
17774
17775 : see if strlcat exists
17776 set strlcat d_strlcat
17777 eval $inlibc
17778
17779 : see if strlcpy exists
17780 set strlcpy d_strlcpy
17781 eval $inlibc
17782
17783 : see if strtod exists
17784 set strtod d_strtod
17785 eval $inlibc
17786
17787 : see if strtol exists
17788 set strtol d_strtol
17789 eval $inlibc
17790
17791 : see if strtold exists
17792 set strtold d_strtold
17793 eval $inlibc
17794
17795 : see if strtoll exists
17796 set strtoll d_strtoll
17797 eval $inlibc
17798
17799 case "$d_longlong-$d_strtoll" in
17800 "$define-$define")
17801         $cat <<EOM
17802 Checking whether your strtoll() works okay...
17803 EOM
17804         $cat >try.c <<'EOCP'
17805 #include <errno.h>
17806 #ifdef __hpux
17807 #define strtoll __strtoll
17808 #endif
17809 #ifdef __EMX__
17810 #define strtoll _strtoll
17811 #endif
17812 #include <stdio.h>
17813 extern long long int strtoll(char *s, char **, int);
17814 static int bad = 0;
17815 int check(char *s, long long ell, int een) {
17816         long long gll;
17817         errno = 0;
17818         gll = strtoll(s, 0, 10);
17819         if (!((gll == ell) && (errno == een)))
17820                 bad++;
17821 }
17822 int main() {
17823         check(" 1",                                      1LL, 0);
17824         check(" 0",                                      0LL, 0);
17825         check("-1",                                     -1LL, 0);
17826         check("-9223372036854775808", -9223372036854775808LL, 0);
17827         check("-9223372036854775808", -9223372036854775808LL, 0);
17828         check(" 9223372036854775807",  9223372036854775807LL, 0);
17829         check("-9223372036854775808", -9223372036854775808LL, 0);
17830         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
17831         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17832         if (!bad)
17833                 printf("ok\n");
17834 }
17835 EOCP
17836         set try
17837         if eval $compile; then
17838                 yyy=`$run ./try`
17839                 case "$yyy" in
17840                 ok) echo "Your strtoll() seems to be working okay." ;;
17841                 *) cat <<EOM >&4
17842 Your strtoll() doesn't seem to be working okay.
17843 EOM
17844                    d_strtoll="$undef"
17845                    ;;
17846                 esac
17847         else
17848                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17849                 d_strtoll="$undef"
17850         fi
17851         ;;
17852 esac
17853
17854 : see if strtoq exists
17855 set strtoq d_strtoq
17856 eval $inlibc
17857
17858 : see if strtoul exists
17859 set strtoul d_strtoul
17860 eval $inlibc
17861
17862 case "$d_strtoul" in
17863 "$define")
17864         $cat <<EOM
17865 Checking whether your strtoul() works okay...
17866 EOM
17867         $cat >try.c <<'EOCP'
17868 #include <errno.h>
17869 #include <stdio.h>
17870 extern unsigned long int strtoul(char *s, char **, int);
17871 static int bad = 0;
17872 void check(char *s, unsigned long eul, int een) {
17873         unsigned long gul;
17874         errno = 0;
17875         gul = strtoul(s, 0, 10);
17876         if (!((gul == eul) && (errno == een)))
17877                 bad++;
17878 }
17879 int main() {
17880         check(" 1", 1L, 0);
17881         check(" 0", 0L, 0);
17882 EOCP
17883         case "$longsize" in
17884         8)
17885             $cat >>try.c <<'EOCP'
17886         check("18446744073709551615", 18446744073709551615UL, 0);
17887         check("18446744073709551616", 18446744073709551615UL, ERANGE);
17888 #if 0 /* strtoul() for /^-/ strings is undefined. */
17889         check("-1", 18446744073709551615UL, 0);
17890         check("-18446744073709551614", 2, 0);
17891         check("-18446744073709551615", 1, 0);
17892         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17893         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17894 #endif
17895 EOCP
17896                 ;;
17897         4)
17898                     $cat >>try.c <<'EOCP'
17899         check("4294967295", 4294967295UL, 0);
17900         check("4294967296", 4294967295UL, ERANGE);
17901 #if 0 /* strtoul() for /^-/ strings is undefined. */
17902         check("-1", 4294967295UL, 0);
17903         check("-4294967294", 2, 0);
17904         check("-4294967295", 1, 0);
17905         check("-4294967296", 4294967295UL, ERANGE);
17906         check("-4294967297", 4294967295UL, ERANGE);
17907 #endif
17908 EOCP
17909                 ;;
17910         *)
17911 : Should we write these tests to be more portable by sprintf-ing
17912 : ~0 and then manipulating that char string as input for strtol?
17913                 ;;
17914         esac
17915         $cat >>try.c <<'EOCP'
17916         if (!bad)
17917                 printf("ok\n");
17918         return 0;
17919 }
17920 EOCP
17921         set try
17922         if eval $compile; then
17923                 case "`$run ./try`" in
17924                 ok) echo "Your strtoul() seems to be working okay." ;;
17925                 *) cat <<EOM >&4
17926 Your strtoul() doesn't seem to be working okay.
17927 EOM
17928                    d_strtoul="$undef"
17929                    ;;
17930                 esac
17931         else
17932                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17933                 d_strtoul="$undef"
17934         fi
17935         ;;
17936 esac
17937
17938 : see if strtoull exists
17939 set strtoull d_strtoull
17940 eval $inlibc
17941
17942 case "$d_longlong-$d_strtoull" in
17943 "$define-$define")
17944         $cat <<EOM
17945 Checking whether your strtoull() works okay...
17946 EOM
17947         $cat >try.c <<'EOCP'
17948 #include <errno.h>
17949 #ifdef __hpux
17950 #define strtoull __strtoull
17951 #endif
17952 #include <stdio.h>
17953 extern unsigned long long int strtoull(char *s, char **, int);
17954 static int bad = 0;
17955 int check(char *s, long long eull, int een) {
17956         long long gull;
17957         errno = 0;
17958         gull = strtoull(s, 0, 10);
17959         if (!((gull == eull) && (errno == een)))
17960                 bad++;
17961 }
17962 int main() {
17963         check(" 1",                                        1LL, 0);
17964         check(" 0",                                        0LL, 0);
17965         check("18446744073709551615",  18446744073709551615ULL, 0);
17966         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
17967 #if 0 /* strtoull() for /^-/ strings is undefined. */
17968         check("-1",                    18446744073709551615ULL, 0);
17969         check("-18446744073709551614",                     2LL, 0);
17970         check("-18446744073709551615",                     1LL, 0);
17971         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17972         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17973 #endif
17974         if (!bad)
17975                 printf("ok\n");
17976 }
17977 EOCP
17978         set try
17979         if eval $compile; then
17980                 case "`$run ./try`" in
17981                 ok) echo "Your strtoull() seems to be working okay." ;;
17982                 *) cat <<EOM >&4
17983 Your strtoull() doesn't seem to be working okay.
17984 EOM
17985                    d_strtoull="$undef"
17986                    ;;
17987                 esac
17988         else
17989                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17990                 d_strtoull="$undef"
17991         fi
17992         ;;
17993 esac
17994
17995 : see if strtouq exists
17996 set strtouq d_strtouq
17997 eval $inlibc
17998
17999 case "$d_strtouq" in
18000 "$define")
18001         $cat <<EOM
18002 Checking whether your strtouq() works okay...
18003 EOM
18004         $cat >try.c <<'EOCP'
18005 #include <errno.h>
18006 #include <stdio.h>
18007 extern unsigned long long int strtouq(char *s, char **, int);
18008 static int bad = 0;
18009 void check(char *s, unsigned long long eull, int een) {
18010         unsigned long long gull;
18011         errno = 0;
18012         gull = strtouq(s, 0, 10);
18013         if (!((gull == eull) && (errno == een)))
18014                 bad++;
18015 }
18016 int main() {
18017         check(" 1",                                        1LL, 0);
18018         check(" 0",                                        0LL, 0);
18019         check("18446744073709551615",  18446744073709551615ULL, 0);
18020         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
18021 #if 0 /* strtouq() for /^-/ strings is undefined. */
18022         check("-1",                    18446744073709551615ULL, 0);
18023         check("-18446744073709551614",                     2LL, 0);
18024         check("-18446744073709551615",                     1LL, 0);
18025         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
18026         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
18027 #endif
18028         if (!bad)
18029                 printf("ok\n");
18030         return 0;
18031 }
18032 EOCP
18033         set try
18034         if eval $compile; then
18035                 case "`$run ./try`" in
18036                 ok) echo "Your strtouq() seems to be working okay." ;;
18037                 *) cat <<EOM >&4
18038 Your strtouq() doesn't seem to be working okay.
18039 EOM
18040                    d_strtouq="$undef"
18041                    ;;
18042                 esac
18043         else
18044                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18045                 d_strtouq="$undef"
18046         fi
18047         ;;
18048 esac
18049
18050 : see if strxfrm exists
18051 set strxfrm d_strxfrm
18052 eval $inlibc
18053
18054 : see if symlink exists
18055 set symlink d_symlink
18056 eval $inlibc
18057
18058 : see if syscall exists
18059 set syscall d_syscall
18060 eval $inlibc
18061
18062 : see if prototype for syscall is available
18063 echo " "
18064 set d_syscallproto syscall $i_unistd unistd.h
18065 eval $hasproto
18066
18067 : see if sysconf exists
18068 set sysconf d_sysconf
18069 eval $inlibc
18070
18071 : see if system exists
18072 set system d_system
18073 eval $inlibc
18074
18075 : see if tcgetpgrp exists
18076 set tcgetpgrp d_tcgetpgrp
18077 eval $inlibc
18078
18079 : see if tcsetpgrp exists
18080 set tcsetpgrp d_tcsetpgrp
18081 eval $inlibc
18082
18083 : see if prototype for telldir is available
18084 echo " "
18085 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
18086 eval $hasproto
18087
18088 : see if time exists
18089 echo " "
18090 if test "X$d_time" = X -o X"$timetype" = X; then
18091     if set time val -f d_time; eval $csym; $val; then
18092                 echo 'time() found.' >&4
18093                 val="$define"
18094                 rp="What is the type returned by time() on this system?"
18095                 set time_t timetype long stdio.h sys/types.h
18096                 eval $typedef_ask
18097     else
18098                 echo 'time() not found, hope that will do.' >&4
18099                 val="$undef"
18100                 timetype='int';
18101     fi
18102     set d_time
18103     eval $setvar
18104 fi
18105
18106 : see if this is a sys/times.h system
18107 set sys/times.h i_systimes
18108 eval $inhdr
18109
18110 : see if times exists
18111 echo " "
18112 if set times val -f d_times; eval $csym; $val; then
18113         echo 'times() found.' >&4
18114         d_times="$define"
18115         inc=''
18116         case "$i_systimes" in
18117         "$define") inc='sys/times.h';;
18118         esac
18119         rp="What is the type returned by times() on this system?"
18120         set clock_t clocktype long stdio.h sys/types.h $inc
18121         eval $typedef_ask
18122 else
18123         echo 'times() NOT found, hope that will do.' >&4
18124         d_times="$undef"
18125         clocktype='int'
18126 fi
18127
18128 : see if tmpnam_r exists
18129 set tmpnam_r d_tmpnam_r
18130 eval $inlibc
18131 case "$d_tmpnam_r" in
18132 "$define")
18133         hdrs="$i_systypes sys/types.h define stdio.h "
18134         case "$d_tmpnam_r_proto:$usethreads" in
18135         ":define")      d_tmpnam_r_proto=define
18136                 set d_tmpnam_r_proto tmpnam_r $hdrs
18137                 eval $hasproto ;;
18138         *)      ;;
18139         esac
18140         case "$d_tmpnam_r_proto" in
18141         define)
18142         case "$tmpnam_r_proto" in
18143         ''|0) try='char* tmpnam_r(char*);'
18144         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
18145         esac
18146         case "$tmpnam_r_proto" in
18147         ''|0)   d_tmpnam_r=undef
18148                 tmpnam_r_proto=0
18149                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
18150         * )     case "$tmpnam_r_proto" in
18151                 REENTRANT_PROTO*) ;;
18152                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
18153                 esac
18154                 echo "Prototype: $try" ;;
18155         esac
18156         ;;
18157         *)      case "$usethreads" in
18158                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
18159                 esac
18160                 d_tmpnam_r=undef
18161                 tmpnam_r_proto=0
18162                 ;;
18163         esac
18164         ;;
18165 *)      tmpnam_r_proto=0
18166         ;;
18167 esac
18168
18169 : see if truncate exists
18170 set truncate d_truncate
18171 eval $inlibc
18172
18173 : see if ttyname_r exists
18174 set ttyname_r d_ttyname_r
18175 eval $inlibc
18176 case "$d_ttyname_r" in
18177 "$define")
18178         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
18179         case "$d_ttyname_r_proto:$usethreads" in
18180         ":define")      d_ttyname_r_proto=define
18181                 set d_ttyname_r_proto ttyname_r $hdrs
18182                 eval $hasproto ;;
18183         *)      ;;
18184         esac
18185         case "$d_ttyname_r_proto" in
18186         define)
18187         case "$ttyname_r_proto" in
18188         ''|0) try='int ttyname_r(int, char*, size_t);'
18189         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
18190         esac
18191         case "$ttyname_r_proto" in
18192         ''|0) try='int ttyname_r(int, char*, int);'
18193         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
18194         esac
18195         case "$ttyname_r_proto" in
18196         ''|0) try='char* ttyname_r(int, char*, int);'
18197         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
18198         esac
18199         case "$ttyname_r_proto" in
18200         ''|0)   d_ttyname_r=undef
18201                 ttyname_r_proto=0
18202                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
18203         * )     case "$ttyname_r_proto" in
18204                 REENTRANT_PROTO*) ;;
18205                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
18206                 esac
18207                 echo "Prototype: $try" ;;
18208         esac
18209         ;;
18210         *)      case "$usethreads" in
18211                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
18212                 esac
18213                 d_ttyname_r=undef
18214                 ttyname_r_proto=0
18215                 ;;
18216         esac
18217         ;;
18218 *)      ttyname_r_proto=0
18219         ;;
18220 esac
18221
18222 : see if tzname[] exists
18223 echo " "
18224 if set tzname val -a d_tzname; eval $csym; $val; then
18225         val="$define"
18226         echo 'tzname[] found.' >&4
18227 else
18228         val="$undef"
18229         echo 'tzname[] NOT found.' >&4
18230 fi
18231 set d_tzname
18232 eval $setvar
18233
18234 : Check if is a multiplatform env
18235 case "$osname" in
18236 next|rhapsody|darwin) multiarch="$define" ;;
18237 esac
18238 case "$multiarch" in
18239 ''|[nN]*) multiarch="$undef" ;;
18240 esac
18241
18242 : check for ordering of bytes in a UV
18243 echo " "
18244 case "$usecrosscompile$multiarch" in
18245 *$define*)
18246         $cat <<EOM
18247 You seem to be either cross-compiling or doing a multiarchitecture build,
18248 skipping the byteorder check.
18249
18250 EOM
18251         byteorder='ffff'
18252         ;;
18253 *)
18254         case "$byteorder" in
18255         '')
18256                 $cat <<'EOM'
18257 In the following, larger digits indicate more significance.  A big-endian
18258 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
18259 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
18260 machines may have weird orders like 3412.  A Cray will report 87654321,
18261 an Alpha will report 12345678. If the test program works the default is
18262 probably right.
18263 I'm now running the test program...
18264 EOM
18265                 $cat >try.c <<EOCP
18266 #include <stdio.h>
18267 #$i_stdlib I_STDLIB
18268 #ifdef I_STDLIB
18269 #include <stdlib.h>
18270 #endif
18271 #include <sys/types.h>
18272 typedef $uvtype UV;
18273 int main()
18274 {
18275         int i;
18276         union {
18277                 UV l;
18278                 char c[$uvsize];
18279         } u;
18280
18281         if ($uvsize > 4)
18282                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18283         else
18284                 u.l = (UV)0x04030201;
18285         for (i = 0; i < $uvsize; i++)
18286                 printf("%c", u.c[i]+'0');
18287         printf("\n");
18288         exit(0);
18289 }
18290 EOCP
18291                 xxx_prompt=y
18292                 set try
18293                 if eval $compile && $run ./try > /dev/null; then
18294                         dflt=`$run ./try`
18295                         case "$dflt" in
18296                         [1-4][1-4][1-4][1-4]|12345678|87654321)
18297                                 echo "(The test program ran ok.)"
18298                                 echo "byteorder=$dflt"
18299                                 xxx_prompt=n
18300                         ;;
18301                         ????|????????) echo "(The test program ran ok.)" ;;
18302                         *) echo "(The test program didn't run right for some reason.)" ;;
18303                         esac
18304                 else
18305                         dflt='4321'
18306                         cat <<'EOM'
18307 (I can't seem to compile the test program.  Guessing big-endian...)
18308 EOM
18309                 fi
18310                 case "$xxx_prompt" in
18311                 y)
18312                         rp="What is the order of bytes in $uvtype?"
18313                         . ./myread
18314                         byteorder="$ans"
18315                         ;;
18316                 *)      byteorder=$dflt
18317                         ;;
18318                 esac
18319                 ;;
18320         esac
18321         $rm_try
18322         ;;
18323 esac
18324
18325 : Checking 32bit aligndness
18326 $cat <<EOM
18327
18328 Checking to see whether you can access character data unalignedly...
18329 EOM
18330 case "$d_u32align" in
18331 '')   $cat >try.c <<EOCP
18332 #include <stdio.h>
18333 #$i_stdlib I_STDLIB
18334 #ifdef I_STDLIB
18335 #include <stdlib.h>
18336 #endif
18337 #define U32 $u32type
18338 #define BYTEORDER 0x$byteorder
18339 #define U8 $u8type
18340 #include <signal.h>
18341 #ifdef SIGBUS
18342 $signal_t bletch(int s) { exit(4); }
18343 #endif
18344 int main() {
18345 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18346     U8 buf[8];
18347     U32 *up;
18348     int i;
18349
18350     if (sizeof(U32) != 4) {
18351         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18352         exit(1);
18353     }
18354
18355     fflush(stdout);
18356
18357 #ifdef SIGBUS
18358     signal(SIGBUS, bletch);
18359 #endif
18360
18361     buf[0] = 0;
18362     buf[1] = 0;
18363     buf[2] = 0;
18364     buf[3] = 1;
18365     buf[4] = 0;
18366     buf[5] = 0;
18367     buf[6] = 0;
18368     buf[7] = 1;
18369
18370     for (i = 0; i < 4; i++) {
18371         up = (U32*)(buf + i);
18372         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
18373                (*up == 1 << (8*(3-i)))  /* little-endian */
18374               )
18375            )
18376         {
18377             printf("read failed (%x)\n", *up);
18378             exit(2);
18379         }
18380     }
18381
18382     /* write test */
18383     for (i = 0; i < 4; i++) {
18384         up = (U32*)(buf + i);
18385         *up = 0xBeef;
18386         if (*up != 0xBeef) {
18387             printf("write failed (%x)\n", *up);
18388             exit(3);
18389         }
18390     }
18391
18392     exit(0);
18393 #else
18394     printf("1\n");
18395     exit(1);
18396 #endif
18397     return 0;
18398 }
18399 EOCP
18400 set try
18401 if eval $compile_ok; then
18402         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
18403         $run ./try 2>&1 >/dev/null
18404         case "$?" in
18405         0)      cat >&4 <<EOM
18406 You can access character data pretty unalignedly.
18407 EOM
18408                 d_u32align="$undef"
18409                 ;;
18410         *)      cat >&4 <<EOM
18411 It seems that you must access character data in an aligned manner.
18412 EOM
18413                 d_u32align="$define"
18414                 ;;
18415         esac
18416 else
18417         rp='Can you access character data at unaligned addresses?'
18418         dflt='n'
18419         . ./myread
18420         case "$ans" in
18421         [yY]*)  d_u32align="$undef"  ;;
18422         *)      d_u32align="$define" ;;
18423         esac
18424 fi
18425 $rm_try
18426 ;;
18427 esac
18428
18429 : see if ualarm exists
18430 set ualarm d_ualarm
18431 eval $inlibc
18432
18433 : see if umask exists
18434 set umask d_umask
18435 eval $inlibc
18436
18437 : see if unordered exists
18438 set unordered d_unordered
18439 eval $inlibc
18440
18441 : see if unsetenv exists
18442 set unsetenv d_unsetenv
18443 eval $inlibc
18444
18445 : see if usleep exists
18446 set usleep d_usleep
18447 eval $inlibc
18448
18449 : see if prototype for usleep is available
18450 echo " "
18451 set d_usleepproto usleep $i_unistd unistd.h
18452 eval $hasproto
18453
18454 : see if ustat exists
18455 set ustat d_ustat
18456 eval $inlibc
18457
18458 : see if closedir exists
18459 set closedir d_closedir
18460 eval $inlibc
18461
18462 case "$d_closedir" in
18463 "$define")
18464         echo " "
18465         echo "Checking whether closedir() returns a status..." >&4
18466         cat > try.c <<EOM
18467 #$i_dirent I_DIRENT             /**/
18468 #$i_sysdir I_SYS_DIR            /**/
18469 #$i_sysndir I_SYS_NDIR          /**/
18470 #$i_systypes I_SYS_TYPES        /**/
18471
18472 #if defined(I_SYS_TYPES)
18473 #include <sys/types.h>
18474 #endif
18475 #if defined(I_DIRENT)
18476 #include <dirent.h>
18477 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18478 #include <sys/dir.h>
18479 #endif
18480 #else
18481 #ifdef I_SYS_NDIR
18482 #include <sys/ndir.h>
18483 #else
18484 #ifdef I_SYS_DIR
18485 #ifdef hp9000s500
18486 #include <ndir.h>       /* may be wrong in the future */
18487 #else
18488 #include <sys/dir.h>
18489 #endif
18490 #endif
18491 #endif
18492 #endif
18493 int main() { return closedir(opendir(".")); }
18494 EOM
18495         set try
18496         if eval $compile_ok; then
18497                 if $run ./try > /dev/null 2>&1 ; then
18498                         echo "Yes, it does."
18499                         val="$undef"
18500                 else
18501                         echo "No, it doesn't."
18502                         val="$define"
18503                 fi
18504         else
18505                 echo "(I can't seem to compile the test program--assuming it doesn't)"
18506                 val="$define"
18507         fi
18508         ;;
18509 *)
18510         val="$undef";
18511         ;;
18512 esac
18513 set d_void_closedir
18514 eval $setvar
18515 $rm_try
18516
18517 : see if there is a wait4
18518 set wait4 d_wait4
18519 eval $inlibc
18520
18521 : see if waitpid exists
18522 set waitpid d_waitpid
18523 eval $inlibc
18524
18525 : see if wcstombs exists
18526 set wcstombs d_wcstombs
18527 eval $inlibc
18528
18529 : see if wctomb exists
18530 set wctomb d_wctomb
18531 eval $inlibc
18532
18533 : see if writev exists
18534 set writev d_writev
18535 eval $inlibc
18536
18537 : preserve RCS keywords in files with variable substitution, grrr
18538 Date='$Date'
18539 Id='$Id'
18540 Log='$Log'
18541 RCSfile='$RCSfile'
18542 Revision='$Revision'
18543
18544 : check for alignment requirements
18545 echo " "
18546 case "$usecrosscompile$multiarch" in
18547 *$define*)
18548         $cat <<EOM
18549 You seem to be either cross-compiling or doing a multiarchitecture build,
18550 skipping the memory alignment check.
18551
18552 EOM
18553         case "$alignbytes" in
18554         '') alignbytes=8 ;;
18555         esac
18556         ;;
18557 *)
18558         case "$alignbytes" in
18559         '') echo "Checking alignment constraints..." >&4
18560                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18561                         $cat >try.c <<'EOCP'
18562 typedef long double NV;
18563 EOCP
18564                 else
18565                         $cat >try.c <<'EOCP'
18566 typedef double NV;
18567 EOCP
18568                 fi
18569                 $cat >>try.c <<'EOCP'
18570 #include <stdio.h>
18571 struct foobar {
18572         char foo;
18573         NV bar;
18574 } try_algn;
18575 int main()
18576 {
18577     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18578     return(0);
18579 }
18580 EOCP
18581                 set try
18582                 if eval $compile_ok; then
18583                         dflt=`$run ./try`
18584                 else
18585                         dflt='8'
18586                         echo "(I can't seem to compile the test program...)"
18587                 fi
18588                 ;;
18589         *) dflt="$alignbytes"
18590                 ;;
18591         esac
18592         rp="Doubles must be aligned on a how-many-byte boundary?"
18593         . ./myread
18594         alignbytes="$ans"
18595         $rm_try
18596         ;;
18597 esac
18598
18599
18600 : set the base revision
18601 baserev=5.0
18602
18603 : how do we concatenate cpp tokens here?
18604 echo " "
18605 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18606 $cat >cpp_stuff.c <<'EOCP'
18607 #define RCAT(a,b)a/**/b
18608 #define ACAT(a,b)a ## b
18609 RCAT(Rei,ser)
18610 ACAT(Cir,cus)
18611 EOCP
18612 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18613 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18614         echo "Oh!  Smells like ANSI's been here." >&4
18615         echo "We can catify or stringify, separately or together!"
18616         cpp_stuff=42
18617 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18618         echo "Ah, yes!  The good old days!" >&4
18619         echo "However, in the good old days we don't know how to stringify and"
18620         echo "catify at the same time."
18621         cpp_stuff=1
18622 else
18623         $cat >&4 <<EOM
18624 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18625 You're going to have to edit the values of CAT[2-5] in config.h...
18626 EOM
18627         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18628 fi
18629 $rm -f cpp_stuff.*
18630
18631 : see if this is a db.h system
18632 set db.h i_db
18633 eval $inhdr
18634
18635 case "$i_db" in
18636 $define)
18637         : Check db version.
18638         echo " "
18639         echo "Checking Berkeley DB version ..." >&4
18640         $cat >try.c <<EOCP
18641 #$d_const HASCONST
18642 #ifndef HASCONST
18643 #define const
18644 #endif
18645 #include <sys/types.h>
18646 #include <stdio.h>
18647 #$i_stdlib I_STDLIB
18648 #ifdef I_STDLIB
18649 #include <stdlib.h>
18650 #endif
18651 #include <db.h>
18652 int main(int argc, char *argv[])
18653 {
18654 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18655     int Major, Minor, Patch ;
18656     unsigned long Version ;
18657     (void)db_version(&Major, &Minor, &Patch) ;
18658     if (argc == 2) {
18659         printf("%d %d %d %d %d %d\n",
18660                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18661                Major, Minor, Patch);
18662         exit(0);
18663     }
18664     printf("You have Berkeley DB Version 2 or greater.\n");
18665
18666     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18667                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18668     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18669                 Major, Minor, Patch) ;
18670
18671     /* check that db.h & libdb are compatible */
18672     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18673         printf("db.h and libdb are incompatible.\n") ;
18674         exit(3);
18675     }
18676
18677     printf("db.h and libdb are compatible.\n") ;
18678
18679     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18680                 + DB_VERSION_PATCH ;
18681
18682     /* needs to be >= 2.3.4 */
18683     if (Version < 2003004) {
18684     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18685         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18686         exit(2);
18687     }
18688
18689     exit(0);
18690 #else
18691 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18692     if (argc == 2) {
18693         printf("1 0 0\n");
18694         exit(0);
18695     }
18696     printf("You have Berkeley DB Version 1.\n");
18697     exit(0);    /* DB version < 2: the coast is clear. */
18698 #else
18699     exit(1);    /* <db.h> not Berkeley DB? */
18700 #endif
18701 #endif
18702 }
18703 EOCP
18704         set try
18705         if eval $compile_ok && $run ./try; then
18706                 echo 'Looks OK.' >&4
18707                 set `$run ./try 1`
18708                 db_version_major=$1
18709                 db_version_minor=$2
18710                 db_version_patch=$3
18711         else
18712                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
18713                 i_db=$undef
18714                 case " $libs " in
18715                 *"-ldb "*)
18716                         : Remove db from list of libraries to use
18717                         echo "Removing unusable -ldb from library list" >&4
18718                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18719                         shift
18720                         libs="$*"
18721                         echo "libs = $libs" >&4
18722                         ;;
18723                 esac
18724         fi
18725         $rm_try
18726         ;;
18727 esac
18728
18729 case "$i_db" in
18730 define)
18731         : Check the return type needed for hash
18732         echo " "
18733         echo "Checking return type needed for hash for Berkeley DB ..." >&4
18734         $cat >try.c <<EOCP
18735 #$d_const HASCONST
18736 #ifndef HASCONST
18737 #define const
18738 #endif
18739 #include <sys/types.h>
18740 #include <db.h>
18741
18742 #ifndef DB_VERSION_MAJOR
18743 u_int32_t hash_cb (ptr, size)
18744 const void *ptr;
18745 size_t size;
18746 {
18747 }
18748 HASHINFO info;
18749 int main()
18750 {
18751         info.hash = hash_cb;
18752 }
18753 #endif
18754 EOCP
18755         if $cc $ccflags -c try.c >try.out 2>&1 ; then
18756                 if $contains warning try.out >>/dev/null 2>&1 ; then
18757                         db_hashtype='int'
18758                 else
18759                         db_hashtype='u_int32_t'
18760                 fi
18761         else
18762                 : XXX Maybe we should just give up here.
18763                 db_hashtype=u_int32_t
18764                 $cat try.out >&4
18765                 echo "Help:  I can't seem to compile the db test program." >&4
18766                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18767         fi
18768         $rm_try
18769         echo "Your version of Berkeley DB uses $db_hashtype for hash."
18770         ;;
18771 *)      db_hashtype=u_int32_t
18772         ;;
18773 esac
18774 case "$i_db" in
18775 define)
18776         : Check the return type needed for prefix
18777         echo " "
18778         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18779         cat >try.c <<EOCP
18780 #$d_const HASCONST
18781 #ifndef HASCONST
18782 #define const
18783 #endif
18784 #include <sys/types.h>
18785 #include <db.h>
18786
18787 #ifndef DB_VERSION_MAJOR
18788 size_t prefix_cb (key1, key2)
18789 const DBT *key1;
18790 const DBT *key2;
18791 {
18792 }
18793 BTREEINFO info;
18794 int main()
18795 {
18796         info.prefix = prefix_cb;
18797 }
18798 #endif
18799 EOCP
18800         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
18801                 if $contains warning try.out >>/dev/null 2>&1 ; then
18802                         db_prefixtype='int'
18803                 else
18804                         db_prefixtype='size_t'
18805                 fi
18806         else
18807                 db_prefixtype='size_t'
18808                 : XXX Maybe we should just give up here.
18809                 $cat try.out >&4
18810                 echo "Help:  I can't seem to compile the db test program." >&4
18811                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18812         fi
18813         $rm_try
18814         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18815         ;;
18816 *)      db_prefixtype='size_t'
18817         ;;
18818 esac
18819
18820 : How can we generate normalized random numbers ?
18821 echo " "
18822 echo "Looking for a random number function..." >&4
18823 case "$randfunc" in
18824 '')
18825         if set drand48 val -f; eval $csym; $val; then
18826                 dflt="drand48"
18827                 echo "Good, found drand48()." >&4
18828         elif set random val -f; eval $csym; $val; then
18829                 dflt="random"
18830                 echo "OK, found random()." >&4
18831         else
18832                 dflt="rand"
18833                 echo "Yick, looks like I have to use rand()." >&4
18834         fi
18835         echo " "
18836         ;;
18837 *)
18838         dflt="$randfunc"
18839         ;;
18840 esac
18841 cont=true
18842
18843 case "$ccflags" in
18844 *-Dmy_rand=*|*-Dmy_srand=*)
18845         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18846         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18847         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18848         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18849         ;;
18850 esac
18851
18852 while $test "$cont"; do
18853         rp="Use which function to generate random numbers?"
18854         . ./myread
18855         if $test "$ans" = "$dflt"; then
18856                 : null
18857         else
18858                 randbits=''
18859         fi
18860         randfunc="$ans"
18861         if set $ans val -f; eval $csym; $val; then
18862                 cont=''
18863         else
18864                 dflt=y
18865                 rp="I cannot find function $ans. Use that name anyway?"
18866                 . ./myread
18867                 dflt=rand
18868                 case "$ans" in
18869                         [yY]*) cont='';;
18870                 esac
18871         fi
18872         case "$cont" in
18873         '')
18874                 case "$randfunc" in
18875                 drand48)
18876                         drand01="drand48()"
18877                         seedfunc="srand48"
18878                         randbits=48
18879                         randseedtype=long
18880                         ;;
18881                 rand|random)
18882                         case "$randbits" in
18883                         '')
18884 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18885                                 $cat >try.c <<EOCP
18886 #$i_unistd I_UNISTD
18887 #$i_stdlib I_STDLIB
18888 #include <stdio.h>
18889 #ifdef I_UNISTD
18890 #  include <unistd.h>
18891 #endif
18892 #ifdef I_STDLIB
18893 #  include <stdlib.h>
18894 #endif
18895 int main()
18896 {
18897         register int i;
18898         register unsigned long tmp;
18899         register unsigned long max = 0L;
18900
18901         for (i = 1000; i; i--) {
18902                 tmp = (unsigned long) $randfunc();
18903                 if (tmp > max) max = tmp;
18904         }
18905         for (i = 0; max; i++)
18906                 max /= 2;
18907         printf("%d\n",i);
18908 }
18909 EOCP
18910                                 set try
18911                                 if eval $compile_ok; then
18912                                         dflt=`try`
18913                                 else
18914                                         dflt='?'
18915                                         echo "(I can't seem to compile the test program...)"
18916                                 fi
18917                                 ;;
18918                         *)
18919                                 dflt="$randbits"
18920                                 ;;
18921                         esac
18922                         rp="How many bits does your $randfunc() function produce?"
18923                         . ./myread
18924                         randbits="$ans"
18925                         $rm_try
18926                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18927                         seedfunc="s$randfunc"
18928                         randseedtype=unsigned
18929                         ;;
18930                 *)
18931                         dflt="31"
18932                         rp="How many bits does your $randfunc() function produce?"
18933                         . ./myread
18934                         randbits="$ans"
18935                         seedfunc="s$randfunc"
18936                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18937                         if set $seedfunc val -f; eval $csym; $val; then
18938                                 echo "(Using $seedfunc() to seed random generator)"
18939                         else
18940                                 echo "(Warning: no $seedfunc() to seed random generator)"
18941                                 seedfunc=rand
18942                         fi
18943                         randseedtype=unsigned
18944                         ;;
18945                 esac
18946                 ;;
18947         esac
18948 done
18949
18950 : Determine if this is an EBCDIC system
18951 echo " "
18952 echo "Determining whether or not we are on an EBCDIC system..." >&4
18953 $cat >try.c <<'EOM'
18954 int main()
18955 {
18956   if ('M'==0xd4) return 0;
18957   return 1;
18958 }
18959 EOM
18960
18961 val=$undef
18962 set try
18963 if eval $compile_ok; then
18964         if $run ./try; then
18965                 echo "You seem to speak EBCDIC." >&4
18966                 val="$define"
18967         else
18968                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18969         fi
18970 else
18971         echo "I'm unable to compile the test program." >&4
18972         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18973 fi
18974 $rm_try
18975 set ebcdic
18976 eval $setvar
18977
18978 : Check how to flush
18979 echo " "
18980 $cat >&4 <<EOM
18981 Checking how to flush all pending stdio output...
18982 EOM
18983 # I only know how to find the first 32 possibly open files on SunOS.
18984 # See also hints/sunos_4_1.sh and util.c  --AD
18985 case "$osname" in
18986 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18987 esac
18988 $cat >>try.c <<EOCP
18989 #include <stdio.h>
18990 #$i_stdlib I_STDLIB
18991 #ifdef I_STDLIB
18992 #include <stdlib.h>
18993 #endif
18994 #$i_unistd I_UNISTD
18995 #ifdef I_UNISTD
18996 # include <unistd.h>
18997 #endif
18998 #$d_sysconf HAS_SYSCONF
18999 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
19000 #ifdef HAS_STDIO_STREAM_ARRAY
19001 # define STDIO_STREAM_ARRAY $stdio_stream_array
19002 #endif
19003 int main() {
19004   FILE* p;
19005   unlink("try.out");
19006   p = fopen("try.out", "w");
19007 #ifdef TRY_FPUTC
19008   fputc('x', p);
19009 #else
19010 # ifdef TRY_FPRINTF
19011   fprintf(p, "x");
19012 # endif
19013 #endif
19014 #ifdef TRY_FFLUSH_NULL
19015   fflush(NULL);
19016 #endif
19017 #ifdef TRY_FFLUSH_ALL
19018   {
19019     long open_max = -1;
19020 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
19021     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
19022 # else
19023 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
19024     open_max = sysconf(_SC_OPEN_MAX);
19025 #  else
19026 #   ifdef FOPEN_MAX
19027     open_max = FOPEN_MAX;
19028 #   else
19029 #    ifdef OPEN_MAX
19030     open_max = OPEN_MAX;
19031 #    else
19032 #     ifdef _NFILE
19033     open_max = _NFILE;
19034 #     endif
19035 #    endif
19036 #   endif
19037 #  endif
19038 # endif
19039 # ifdef HAS_STDIO_STREAM_ARRAY
19040     if (open_max > 0) {
19041       long i;
19042       for (i = 0; i < open_max; i++)
19043             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
19044                 STDIO_STREAM_ARRAY[i]._file < open_max &&
19045                 STDIO_STREAM_ARRAY[i]._flag)
19046                 fflush(&STDIO_STREAM_ARRAY[i]);
19047     }
19048   }
19049 # endif
19050 #endif
19051   _exit(42);
19052 }
19053 EOCP
19054 : first we have to find out how _not_ to flush
19055 $to try.c
19056 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
19057     output=''
19058     set try -DTRY_FPUTC
19059     if eval $compile; then
19060             $run ./try 2>/dev/null
19061             code="$?"
19062             $from try.out
19063             if $test ! -s try.out -a "X$code" = X42; then
19064                 output=-DTRY_FPUTC
19065             fi
19066     fi
19067     case "$output" in
19068     '')
19069             set try -DTRY_FPRINTF
19070             if eval $compile; then
19071                     $run ./try 2>/dev/null
19072                     code="$?"
19073                     $from try.out
19074                     if $test ! -s try.out -a "X$code" = X42; then
19075                         output=-DTRY_FPRINTF
19076                     fi
19077             fi
19078         ;;
19079     esac
19080 fi
19081 : check for fflush NULL behaviour
19082 case "$fflushNULL" in
19083 '')     set try -DTRY_FFLUSH_NULL $output
19084         if eval $compile; then
19085                 $run ./try 2>/dev/null
19086                 code="$?"
19087                 $from try.out
19088                 if $test -s try.out -a "X$code" = X42; then
19089                         fflushNULL="`$cat try.out`"
19090                 else
19091                         if $test "X$code" != X42; then
19092                                 $cat >&4 <<EOM
19093 (If this test failed, don't worry, we'll try another method shortly.)
19094 EOM
19095                         fi
19096                 fi
19097         fi
19098         $rm -f core try.core core.try.*
19099         case "$fflushNULL" in
19100         x)      $cat >&4 <<EOM
19101 Your fflush(NULL) works okay for output streams.
19102 Let's see if it clobbers input pipes...
19103 EOM
19104 # As of mid-March 2000 all versions of Solaris appear to have a stdio
19105 # bug that improperly flushes the input end of pipes.  So we avoid the
19106 # autoflush on fork/system/exec support for now. :-(
19107 $cat >tryp.c <<EOCP
19108 #include <stdio.h>
19109 int
19110 main(int argc, char **argv)
19111 {
19112     char buf[1024];
19113     int i;
19114     char *bp = buf;
19115     while (1) {
19116         while ((i = getc(stdin)) != -1
19117                && (*bp++ = i) != '\n'
19118                && bp < &buf[1024])
19119         /* DO NOTHING */ ;
19120         *bp = '\0';
19121         fprintf(stdout, "%s", buf);
19122         fflush(NULL);
19123         if (i == -1)
19124             return 0;
19125         bp = buf;
19126     }
19127 }
19128 EOCP
19129                 fflushNULL="$define"
19130                 set tryp
19131                 if eval $compile; then
19132                     $rm -f tryp.out
19133                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19134                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
19135                        $cat >&4 <<EOM
19136 fflush(NULL) seems to behave okay with input streams.
19137 EOM
19138                         fflushNULL="$define"
19139                     else
19140                         $cat >&4 <<EOM
19141 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
19142 EOM
19143                         fflushNULL="$undef"
19144                     fi
19145                 fi
19146                 $rm -f core tryp.c tryp.core core.tryp.*
19147                 ;;
19148         '')     $cat >&4 <<EOM
19149 Your fflush(NULL) isn't working (contrary to ANSI C).
19150 EOM
19151                 fflushNULL="$undef"
19152                 ;;
19153         *)      $cat >&4 <<EOM
19154 Cannot figure out whether your fflush(NULL) works or not.
19155 I'm assuming it doesn't (contrary to ANSI C).
19156 EOM
19157                 fflushNULL="$undef"
19158                 ;;
19159         esac
19160         ;;
19161 $define|true|[yY]*)
19162         fflushNULL="$define"
19163         ;;
19164 *)
19165         fflushNULL="$undef"
19166         ;;
19167 esac
19168 : check explicit looping only if NULL did not work, and if the pipe
19169 : bug does not show up on an explicit flush too
19170 case "$fflushNULL" in
19171 "$undef")
19172         $cat >tryp.c <<EOCP
19173 #include <stdio.h>
19174 int
19175 main(int argc, char **argv)
19176 {
19177     char buf[1024];
19178     int i;
19179     char *bp = buf;
19180     while (1) {
19181         while ((i = getc(stdin)) != -1
19182                && (*bp++ = i) != '\n'
19183                && bp < &buf[1024])
19184         /* DO NOTHING */ ;
19185         *bp = '\0';
19186         fprintf(stdout, "%s", buf);
19187         fflush(stdin);
19188         if (i == -1)
19189             return 0;
19190         bp = buf;
19191     }
19192 }
19193 EOCP
19194         set tryp
19195         if eval $compile; then
19196             $rm -f tryp.out
19197             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19198             if cmp tryp.c tryp.out >/dev/null 2>&1; then
19199                $cat >&4 <<EOM
19200 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
19201 EOM
19202                 : now check for fflushall behaviour
19203                 case "$fflushall" in
19204                 '')     set try -DTRY_FFLUSH_ALL $output
19205                         if eval $compile; then
19206                                 $cat >&4 <<EOM
19207 (Now testing the other method--but note that this also may fail.)
19208 EOM
19209                                 $run ./try 2>/dev/null
19210                                 code=$?
19211                                 $from try.out
19212                                 if $test -s try.out -a "X$code" = X42; then
19213                                         fflushall="`$cat try.out`"
19214                                 fi
19215                         fi
19216                         $rm_try
19217                         case "$fflushall" in
19218                         x)      $cat >&4 <<EOM
19219 Whew. Flushing explicitly all the stdio streams works.
19220 EOM
19221                                 fflushall="$define"
19222                                 ;;
19223                         '')     $cat >&4 <<EOM
19224 Sigh. Flushing explicitly all the stdio streams doesn't work.
19225 EOM
19226                                 fflushall="$undef"
19227                                 ;;
19228                         *)      $cat >&4 <<EOM
19229 Cannot figure out whether flushing stdio streams explicitly works or not.
19230 I'm assuming it doesn't.
19231 EOM
19232                                 fflushall="$undef"
19233                                 ;;
19234                         esac
19235                         ;;
19236                 "$define"|true|[yY]*)
19237                         fflushall="$define"
19238                         ;;
19239                 *)
19240                         fflushall="$undef"
19241                         ;;
19242                 esac
19243             else
19244                 $cat >&4 <<EOM
19245 All is futile.  Even fflush(stdin) clobbers input pipes!
19246 EOM
19247                 fflushall="$undef"
19248             fi
19249         else
19250             fflushall="$undef"
19251         fi
19252         $rm -f core tryp.c tryp.core core.tryp.*
19253         ;;
19254 *)      fflushall="$undef"
19255         ;;
19256 esac
19257
19258 case "$fflushNULL$fflushall" in
19259 undefundef)
19260         $cat <<EOM
19261 OK, I give up.  I cannot figure out how to flush pending stdio output.
19262 We won't be flushing handles at all before fork/exec/popen.
19263 EOM
19264         ;;
19265 esac
19266 $rm_try tryp
19267
19268 : Store the full pathname to the ar program for use in the C program
19269 : Respect a hint or command line value for full_ar.
19270 case "$full_ar" in
19271 '') full_ar=$ar ;;
19272 esac
19273
19274 : Store the full pathname to the sed program for use in the C program
19275 full_sed=$sed
19276
19277 : see what type gids are declared as in the kernel
19278 echo " "
19279 echo "Looking for the type for group ids returned by getgid()."
19280 set gid_t gidtype xxx stdio.h sys/types.h
19281 eval $typedef
19282 case "$gidtype" in
19283 xxx)
19284         xxx=`./findhdr sys/user.h`
19285         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19286         case $1 in
19287         unsigned) dflt="$1 $2" ;;
19288         *) dflt="$1" ;;
19289         esac
19290         ;;
19291 *) dflt="$gidtype";;
19292 esac
19293 case "$gidtype" in
19294 gid_t) echo "gid_t found." ;;
19295 *)      rp="What is the type for group ids returned by getgid()?"
19296         . ./myread
19297         gidtype="$ans"
19298         ;;
19299 esac
19300
19301 : Check the size of GID
19302 echo " "
19303 case "$gidtype" in
19304 *_t) zzz="$gidtype"     ;;
19305 *)   zzz="gid"          ;;
19306 esac
19307 echo "Checking the size of $zzz..." >&4
19308 cat > try.c <<EOCP
19309 #include <sys/types.h>
19310 #include <stdio.h>
19311 #$i_stdlib I_STDLIB
19312 #ifdef I_STDLIB
19313 #include <stdlib.h>
19314 #endif
19315 int main() {
19316     printf("%d\n", (int)sizeof($gidtype));
19317     exit(0);
19318 }
19319 EOCP
19320 set try
19321 if eval $compile_ok; then
19322         yyy=`$run ./try`
19323         case "$yyy" in
19324         '')     gidsize=4
19325                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19326                 ;;
19327         *)      gidsize=$yyy
19328                 echo "Your $zzz is $gidsize bytes long."
19329                 ;;
19330         esac
19331 else
19332         gidsize=4
19333         echo "(I can't compile the test program--guessing $gidsize.)" >&4
19334 fi
19335
19336
19337 : Check if GID is signed
19338 echo " "
19339 case "$gidtype" in
19340 *_t) zzz="$gidtype"     ;;
19341 *)   zzz="gid"          ;;
19342 esac
19343 echo "Checking the sign of $zzz..." >&4
19344 cat > try.c <<EOCP
19345 #include <sys/types.h>
19346 #include <stdio.h>
19347 int main() {
19348         $gidtype foo = -1;
19349         if (foo < 0)
19350                 printf("-1\n");
19351         else
19352                 printf("1\n");
19353 }
19354 EOCP
19355 set try
19356 if eval $compile; then
19357         yyy=`$run ./try`
19358         case "$yyy" in
19359         '')     gidsign=1
19360                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19361                 ;;
19362         *)      gidsign=$yyy
19363                 case "$gidsign" in
19364                  1) echo "Your $zzz is unsigned." ;;
19365                 -1) echo "Your $zzz is signed."   ;;
19366                 esac
19367                 ;;
19368         esac
19369 else
19370         gidsign=1
19371         echo "(I can't compile the test program--guessing unsigned.)" >&4
19372 fi
19373
19374
19375 : Check 64bit sizes
19376 echo " "
19377
19378 if $test X"$quadtype" != X; then
19379
19380 echo "Checking how to print 64-bit integers..." >&4
19381
19382 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19383         $cat >try.c <<'EOCP'
19384 #include <sys/types.h>
19385 #include <stdio.h>
19386 int main() {
19387   int q = 12345678901;
19388   printf("%ld\n", q);
19389 }
19390 EOCP
19391         set try
19392         if eval $compile; then
19393                 yyy=`$run ./try`
19394                 case "$yyy" in
19395                 12345678901)
19396                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19397                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19398                         echo "We will use %d."
19399                         ;;
19400                 esac
19401         fi
19402 fi
19403
19404 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19405         $cat >try.c <<'EOCP'
19406 #include <sys/types.h>
19407 #include <stdio.h>
19408 int main() {
19409   long q = 12345678901;
19410   printf("%ld\n", q);
19411 }
19412 EOCP
19413         set try
19414         if eval $compile; then
19415                 yyy=`$run ./try`
19416                 case "$yyy" in
19417                 12345678901)
19418                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19419                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19420                         echo "We will use %ld."
19421                         ;;
19422                 esac
19423         fi
19424 fi
19425
19426 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19427         $cat >try.c <<'EOCP'
19428 #include <sys/types.h>
19429 #include <inttypes.h>
19430 #include <stdio.h>
19431 int main() {
19432   int64_t q = 12345678901;
19433   printf("%" PRId64 "\n", q);
19434 }
19435 EOCP
19436         set try
19437         if eval $compile; then
19438                 yyy=`$run ./try`
19439                 case "$yyy" in
19440                 12345678901)
19441                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19442                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19443                         echo "We will use the C9X style."
19444                         ;;
19445                 esac
19446         fi
19447 fi
19448
19449 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19450         $cat >try.c <<EOCP
19451 #include <sys/types.h>
19452 #include <stdio.h>
19453 int main() {
19454   $quadtype q = 12345678901;
19455   printf("%Ld\n", q);
19456 }
19457 EOCP
19458         set try
19459         if eval $compile; then
19460                 yyy=`$run ./try`
19461                 case "$yyy" in
19462                 12345678901)
19463                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19464                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19465                         echo "We will use %Ld."
19466                         ;;
19467                 esac
19468         fi
19469 fi
19470
19471 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19472         $cat >try.c <<'EOCP'
19473 #include <sys/types.h>
19474 #include <stdio.h>
19475 int main() {
19476   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19477   printf("%lld\n", q);
19478 }
19479 EOCP
19480         set try
19481         if eval $compile; then
19482                 yyy=`$run ./try`
19483                 case "$yyy" in
19484                 12345678901)
19485                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19486                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19487                         echo "We will use the %lld style."
19488                         ;;
19489                 esac
19490         fi
19491 fi
19492
19493 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19494         $cat >try.c <<EOCP
19495 #include <sys/types.h>
19496 #include <stdio.h>
19497 int main() {
19498   $quadtype q = 12345678901;
19499   printf("%qd\n", q);
19500 }
19501 EOCP
19502         set try
19503         if eval $compile; then
19504                 yyy=`$run ./try`
19505                 case "$yyy" in
19506                 12345678901)
19507                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19508                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19509                         echo "We will use %qd."
19510                         ;;
19511                 esac
19512         fi
19513 fi
19514
19515 if $test X"$sPRId64" = X; then
19516         echo "Cannot figure out how to print 64-bit integers." >&4
19517 fi
19518 $rm_try
19519
19520 fi
19521
19522 case "$sPRId64" in
19523 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19524         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19525         ;;
19526 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19527         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19528         ;;
19529 esac
19530
19531 : Check format strings for internal types
19532 echo " "
19533 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19534
19535 if $test X"$ivsize" = X8; then
19536         ivdformat="$sPRId64"
19537         uvuformat="$sPRIu64"
19538         uvoformat="$sPRIo64"
19539         uvxformat="$sPRIx64"
19540         uvXUformat="$sPRIXU64"
19541 else
19542         if $test X"$ivsize" = X"$longsize"; then
19543                 ivdformat='"ld"'
19544                 uvuformat='"lu"'
19545                 uvoformat='"lo"'
19546                 uvxformat='"lx"'
19547                 uvXUformat='"lX"'
19548         else
19549                 if $test X"$ivsize" = X"$intsize"; then
19550                         ivdformat='"d"'
19551                         uvuformat='"u"'
19552                         uvoformat='"o"'
19553                         uvxformat='"x"'
19554                         uvXUformat='"X"'
19555                 else
19556                         : far out
19557                         if $test X"$ivsize" = X"$shortsize"; then
19558                                 ivdformat='"hd"'
19559                                 uvuformat='"hu"'
19560                                 uvoformat='"ho"'
19561                                 uvxformat='"hx"'
19562                                 uvXUformat='"hX"'
19563                         fi
19564                 fi
19565         fi
19566 fi
19567
19568 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19569         nveformat="$sPRIeldbl"
19570         nvfformat="$sPRIfldbl"
19571         nvgformat="$sPRIgldbl"
19572         nvEUformat="$sPRIEUldbl"
19573         nvFUformat="$sPRIFUldbl"
19574         nvGUformat="$sPRIGUldbl"
19575 else
19576         nveformat='"e"'
19577         nvfformat='"f"'
19578         nvgformat='"g"'
19579         nvEUformat='"E"'
19580         nvFUformat='"F"'
19581         nvGUformat='"G"'
19582 fi
19583
19584 case "$ivdformat" in
19585 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19586     exit 1
19587     ;;
19588 esac
19589
19590 : Check format string for GID
19591
19592 echo " "
19593 $echo "Checking the format string to be used for gids..." >&4
19594
19595 case "$gidsign" in
19596 -1)     if $test X"$gidsize" = X"$ivsize"; then
19597                 gidformat="$ivdformat"
19598         else
19599                 if $test X"$gidsize" = X"$longsize"; then
19600                         gidformat='"ld"'
19601                 else
19602                         if $test X"$gidsize" = X"$intsize"; then
19603                                 gidformat='"d"'
19604                         else
19605                                 if $test X"$gidsize" = X"$shortsize"; then
19606                                         gidformat='"hd"'
19607                                 fi
19608                         fi
19609                 fi
19610         fi
19611         ;;
19612 *)      if $test X"$gidsize" = X"$uvsize"; then
19613                 gidformat="$uvuformat"
19614         else
19615                 if $test X"$gidsize" = X"$longsize"; then
19616                         gidformat='"lu"'
19617                 else
19618                         if $test X"$gidsize" = X"$intsize"; then
19619                                 gidformat='"u"'
19620                         else
19621                                 if $test X"$gidsize" = X"$shortsize"; then
19622                                         gidformat='"hu"'
19623                                 fi
19624                         fi
19625                 fi
19626         fi
19627         ;;
19628 esac
19629
19630 : see if getgroups exists
19631 set getgroups d_getgrps
19632 eval $inlibc
19633
19634 : see if setgroups exists
19635 set setgroups d_setgrps
19636 eval $inlibc
19637
19638 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19639 echo " "
19640 case "$d_getgrps$d_setgrps" in
19641 *define*)
19642         case "$groupstype" in
19643         '') dflt="$gidtype" ;;
19644         *)  dflt="$groupstype" ;;
19645         esac
19646         $cat <<EOM
19647 What type of pointer is the second argument to getgroups() and setgroups()?
19648 Usually this is the same as group ids, $gidtype, but not always.
19649
19650 EOM
19651         rp='What type pointer is the second argument to getgroups() and setgroups()?'
19652         . ./myread
19653         groupstype="$ans"
19654         ;;
19655 *)  groupstype="$gidtype";;
19656 esac
19657
19658 : MAD = Misc Attribute Definition
19659
19660 if $test $patchlevel -lt 9; then
19661 : MAD is not available in 5.8.x or earlier.
19662     ans=n;
19663 else
19664     case "$mad" in
19665     $define|true|[yY]*) dflt='y' ;;
19666     *)                  dflt='n' ;;
19667     esac
19668     cat <<EOM
19669
19670 Would you like to build with Misc Attribute Decoration? This is development
19671 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19672 overhead on the interpreter.
19673
19674 If this doesn't make any sense to you, just accept the default '$dflt'.
19675 EOM
19676     rp='Build Perl with MAD?'
19677     . ./myread
19678 fi
19679 case "$ans" in
19680 y|Y)    val="$define"
19681         madlyh='madly.h madly.act madly.tab'
19682         madlysrc='madly.c'
19683         madlyobj="madly$_o" ;;
19684 *)      val="$undef"
19685         madlyh=''
19686         madlysrc=''
19687         madlyobj='' ;;
19688 esac
19689 set mad
19690 eval $setvar
19691
19692 : check whether make sets MAKE
19693 echo " "
19694 echo "Checking if your $make program sets \$(MAKE)..." >&4
19695 case "$make_set_make" in
19696 '')
19697         $sed 's/^X //' > testmake.mak << 'EOF'
19698 Xall:
19699 X       @echo 'maketemp="$(MAKE)"'
19700 EOF
19701         case "`$make -f testmake.mak 2>/dev/null`" in
19702         *maketemp=*) make_set_make='#' ;;
19703         *)      make_set_make="MAKE=$make" ;;
19704         esac
19705         $rm -f testmake.mak
19706         ;;
19707 esac
19708 case "$make_set_make" in
19709 '#') echo "Yup, it does.";;
19710 *) echo "Nope, it doesn't.";;
19711 esac
19712
19713 : see what type is used for mode_t
19714 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19715 set mode_t modetype int stdio.h sys/types.h
19716 eval $typedef_ask
19717
19718 : see if we need va_copy
19719 echo " "
19720 case "$i_stdarg" in
19721 "$define")
19722         $cat >try.c <<EOCP
19723 #include <stdarg.h>
19724 #include <stdio.h>
19725 #$i_stdlib I_STDLIB
19726 #ifdef I_STDLIB
19727 #include <stdlib.h>
19728 #endif
19729 #include <signal.h>
19730
19731 int
19732 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19733 {
19734   return vfprintf(f, fmt, *valp);
19735 }
19736
19737 int
19738 myvfprintf(FILE *f, const  char *fmt, va_list val)
19739 {
19740   return ivfprintf(f, fmt, &val);
19741 }
19742
19743 int
19744 myprintf(char *fmt, ...)
19745 {
19746   va_list val;
19747   va_start(val, fmt);
19748   return myvfprintf(stdout, fmt, val);
19749 }
19750
19751 int
19752 main(int ac, char **av)
19753 {
19754   signal(SIGSEGV, exit);
19755
19756   myprintf("%s%cs all right, then\n", "that", '\'');
19757   exit(0);
19758 }
19759 EOCP
19760         set try
19761         if eval $compile && $run ./try 2>&1 >/dev/null; then
19762                 case "`$run ./try`" in
19763                 "that's all right, then")
19764                         okay=yes
19765                         ;;
19766                 esac
19767         fi
19768         case "$okay" in
19769         yes)    echo "It seems that you don't need va_copy()." >&4
19770                 need_va_copy="$undef"
19771                 ;;
19772         *)      echo "It seems that va_copy() or similar will be needed." >&4
19773                 need_va_copy="$define"
19774                 ;;
19775         esac
19776         $rm_try
19777         ;;
19778 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19779         ;;
19780 esac
19781
19782 : see what type is used for size_t
19783 rp="What is the type used for the length parameter for string functions?"
19784 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19785 eval $typedef_ask
19786
19787 : check for type of arguments to gethostbyaddr. 
19788 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19789         case "$d_gethbyaddr" in
19790         $define)
19791                 $cat <<EOM
19792
19793 Checking to see what type of arguments are accepted by gethostbyaddr().
19794 EOM
19795                 hdrs="$define sys/types.h
19796                         $d_socket sys/socket.h 
19797                         $i_niin netinet/in.h 
19798                         $i_netdb netdb.h
19799                         $i_unistd unistd.h"
19800                 : The first arg can 'char *' or 'void *'
19801                 : The second arg is some of integral type
19802                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19803                         for yyy in size_t long int; do
19804                                 case "$netdb_host_type" in
19805                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19806                                         if ./protochk "$try" $hdrs; then
19807                                                 echo "Your system accepts $xxx for the first arg."
19808                                                 echo "...and $yyy for the second arg."
19809                                                 netdb_host_type="$xxx"
19810                                                 netdb_hlen_type="$yyy"
19811                                         fi
19812                                         ;;
19813                                 esac
19814                         done
19815                 done
19816                 : In case none of those worked, prompt the user.
19817                 case "$netdb_host_type" in
19818                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
19819                         dflt='char *'
19820                         . ./myread
19821                         netdb_host_type=$ans
19822                         rp='What is the type for the 2nd argument to gethostbyaddr?'
19823                         dflt="$sizetype"
19824                         . ./myread
19825                         netdb_hlen_type=$ans
19826                         ;;
19827                 esac
19828                 ;;
19829         *)      : no gethostbyaddr, so pick harmless defaults
19830                 netdb_host_type='char *'
19831                 netdb_hlen_type="$sizetype"
19832                 ;;
19833         esac
19834         # Remove the "const" if needed. -- but then we'll have a 
19835         # prototype clash!
19836         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19837 fi
19838
19839 : check for type of argument to gethostbyname. 
19840 if test "X$netdb_name_type" = X ; then
19841         case "$d_gethbyname" in
19842         $define)
19843                 $cat <<EOM
19844
19845 Checking to see what type of argument is accepted by gethostbyname().
19846 EOM
19847                 hdrs="$define sys/types.h
19848                         $d_socket sys/socket.h 
19849                         $i_niin netinet/in.h 
19850                         $i_netdb netdb.h
19851                         $i_unistd unistd.h"
19852                 for xxx in "const char *" "char *"; do
19853                         case "$netdb_name_type" in
19854                         '')     try="extern struct hostent *gethostbyname($xxx);"
19855                                 if ./protochk "$try" $hdrs; then
19856                                         echo "Your system accepts $xxx."
19857                                         netdb_name_type="$xxx"
19858                                 fi
19859                                 ;;
19860                         esac
19861                 done
19862                 : In case none of those worked, prompt the user.
19863                 case "$netdb_name_type" in
19864                 '')     rp='What is the type for the 1st argument to gethostbyname?'
19865                         dflt='char *'
19866                         . ./myread
19867                         netdb_name_type=$ans
19868                         ;;
19869                 esac
19870                 ;;
19871         *)      : no gethostbyname, so pick harmless default
19872                 netdb_name_type='char *'
19873                 ;;
19874         esac
19875 fi
19876
19877 : check for type of 1st argument to getnetbyaddr. 
19878 if test "X$netdb_net_type" = X ; then
19879         case "$d_getnbyaddr" in
19880         $define)
19881                 $cat <<EOM
19882
19883 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19884 EOM
19885                 hdrs="$define sys/types.h
19886                         $d_socket sys/socket.h 
19887                         $i_niin netinet/in.h 
19888                         $i_netdb netdb.h
19889                         $i_unistd unistd.h"
19890                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19891                         case "$netdb_net_type" in
19892                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
19893                                 if ./protochk "$try" $hdrs; then
19894                                         echo "Your system accepts $xxx."
19895                                         netdb_net_type="$xxx"
19896                                 fi
19897                                 ;;
19898                         esac
19899                 done
19900                 : In case none of those worked, prompt the user.
19901                 case "$netdb_net_type" in
19902                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
19903                         dflt='long'
19904                         . ./myread
19905                         netdb_net_type=$ans
19906                         ;;
19907                 esac
19908                 ;;
19909         *)      : no getnetbyaddr, so pick harmless default
19910                 netdb_net_type='long'
19911                 ;;
19912         esac
19913 fi
19914 : locate the preferred pager for this system
19915 fn=f/
19916 case "$pager" in
19917 '')
19918         dflt=''
19919         case "$pg" in
19920         /*) dflt=$pg;;
19921         [a-zA-Z]:/*) dflt=$pg;;
19922         esac
19923         case "$more" in
19924         /*) dflt=$more;;
19925         [a-zA-Z]:/*) dflt=$more;;
19926         esac
19927         case "$less" in
19928         /*) dflt=$less;;
19929         [a-zA-Z]:/*) dflt=$less;;
19930         esac
19931         case "$dflt" in
19932         '') dflt=/usr/ucb/more;;
19933         esac
19934         ;;
19935 *)      dflt="$pager"
19936         fn="f/($pager)"
19937         ;;
19938 esac
19939 echo " "
19940 rp='What pager is used on your system?'
19941 . ./getfile
19942 pager="$ans"
19943
19944 : see what type pids are declared as in the kernel
19945 rp="What is the type of process ids on this system?"
19946 set pid_t pidtype int stdio.h sys/types.h
19947 eval $typedef_ask
19948
19949 : see if ar generates random libraries by itself
19950 echo " "
19951 echo "Checking how to generate random libraries on your machine..." >&4
19952 echo 'int bar1() { return bar2(); }' > bar1.c
19953 echo 'int bar2() { return 2; }' > bar2.c
19954 $cat > foo.c <<EOP
19955 #$i_stdlib I_STDLIB
19956 #ifdef I_STDLIB
19957 #include <stdlib.h>
19958 #endif
19959 int main() { printf("%d\n", bar1()); exit(0); }
19960 EOP
19961 $cc $ccflags -c bar1.c >/dev/null 2>&1
19962 $cc $ccflags -c bar2.c >/dev/null 2>&1
19963 $cc $ccflags -c foo.c >/dev/null 2>&1
19964 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19965 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19966         $run ./foobar >/dev/null 2>&1; then
19967         echo "$ar appears to generate random libraries itself."
19968         orderlib=false
19969         if [ "X$ranlib" = "X" ]; then
19970             ranlib=":"
19971         fi
19972 elif $ar s bar$_a >/dev/null 2>&1 &&
19973         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19974         $run ./foobar >/dev/null 2>&1; then
19975                 echo "a table of contents needs to be added with '$ar s'."
19976                 orderlib=false
19977                 ranlib="$ar s"
19978 elif $ar ts bar$_a >/dev/null 2>&1 &&
19979         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19980         $run ./foobar >/dev/null 2>&1; then
19981                 echo "a table of contents needs to be added with '$ar ts'."
19982                 orderlib=false
19983                 ranlib="$ar ts"
19984 else
19985         case "$ranlib" in
19986         :) ranlib='';;
19987         '')
19988                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19989                 $test -f $ranlib || ranlib=''
19990                 ;;
19991         esac
19992         if $test -n "$ranlib"; then
19993                 echo "your system has '$ranlib'; we'll use that."
19994                 orderlib=false
19995         else
19996                 echo "your system doesn't seem to support random libraries"
19997                 echo "so we'll use lorder and tsort to order the libraries."
19998                 orderlib=true
19999                 ranlib=":"
20000         fi
20001 fi
20002 $rm -f foo* bar*
20003
20004 : check for type of arguments to select.
20005 case "$selecttype" in
20006 '') case "$d_select" in
20007         $define)
20008                 echo " "
20009                 $cat <<EOM
20010 Checking to see what type of arguments are accepted by select().
20011 EOM
20012                 hdrs="$define sys/types.h
20013                         $i_systime sys/time.h
20014                         $i_sysselct sys/select.h
20015                         $d_socket sys/socket.h"
20016                 : The first arg can be int, unsigned, or size_t
20017                 : The last arg may or may not be 'const'
20018                 val=''
20019                 : void pointer has been seen but using that
20020                 : breaks the selectminbits test
20021                 for xxx in 'fd_set *' 'int *'; do
20022                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
20023                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
20024                                         case "$val" in
20025                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
20026                                                 if ./protochk "$try" $hdrs; then
20027                                                         echo "Your system accepts $xxx."
20028                                                         val="$xxx"
20029                                                 fi
20030                                                 ;;
20031                                         esac
20032                                 done
20033                         done
20034                 done
20035                 case "$val" in
20036                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
20037                         case "$d_fd_set" in
20038                                 $define) dflt="fd_set *" ;;
20039                                 *)              dflt="int *" ;;
20040                         esac
20041                         . ./myread
20042                         val=$ans
20043                         ;;
20044                 esac
20045                 selecttype="$val"
20046                 ;;
20047         *)      : no select, so pick a harmless default
20048                 selecttype='int *'
20049                 ;;
20050         esac
20051         ;;
20052 esac
20053
20054 : check for the select 'width'
20055 case "$selectminbits" in
20056 '') safebits=`expr $ptrsize \* 8`
20057     case "$d_select" in
20058         $define)
20059                 $cat <<EOM
20060
20061 Checking to see on how many bits at a time your select() operates...
20062 EOM
20063                 $cat >try.c <<EOCP
20064 #include <sys/types.h>
20065 #$i_time I_TIME
20066 #$i_systime I_SYS_TIME
20067 #$i_systimek I_SYS_TIME_KERNEL
20068 #ifdef I_TIME
20069 #   include <time.h>
20070 #endif
20071 #ifdef I_SYS_TIME
20072 #   ifdef I_SYS_TIME_KERNEL
20073 #       define KERNEL
20074 #   endif
20075 #   include <sys/time.h>
20076 #   ifdef I_SYS_TIME_KERNEL
20077 #       undef KERNEL
20078 #   endif
20079 #endif
20080 #$i_sysselct I_SYS_SELECT
20081 #ifdef I_SYS_SELECT
20082 #include <sys/select.h>
20083 #endif
20084 #$d_socket HAS_SOCKET
20085 #ifdef HAS_SOCKET
20086 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
20087 #endif
20088 #include <stdio.h>
20089 #$i_stdlib I_STDLIB
20090 #ifdef I_STDLIB
20091 #include <stdlib.h>
20092 #endif
20093 $selecttype b;
20094 #define S sizeof(*(b))
20095 #define MINBITS 64
20096 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
20097 #define NBITS  (NBYTES * 8)
20098 int main() {
20099     char *s = (char *)malloc(NBYTES);
20100     struct timeval t;
20101     int i;
20102     FILE* fp;
20103     int fd;
20104
20105     if (!s)
20106         exit(1);
20107     fclose(stdin);
20108     fp = fopen("try.c", "r");
20109     if (fp == 0)
20110       exit(2);
20111     fd = fileno(fp);
20112     if (fd < 0)
20113       exit(3);
20114     b = ($selecttype)s;
20115     for (i = 0; i < NBITS; i++)
20116         FD_SET(i, b);
20117     t.tv_sec  = 0;
20118     t.tv_usec = 0;
20119     select(fd + 1, b, 0, 0, &t);
20120     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
20121     free(s);
20122     printf("%d\n", i + 1);
20123     return 0;
20124 }
20125 EOCP
20126                 set try
20127                 if eval $compile_ok; then
20128                         selectminbits=`$run ./try`
20129                         case "$selectminbits" in
20130                         '')     cat >&4 <<EOM
20131 Cannot figure out on how many bits at a time your select() operates.
20132 I'll play safe and guess it is $safebits bits.
20133 EOM
20134                                 selectminbits=$safebits
20135                                 bits="$safebits bits"
20136                                 ;;
20137                         1)      bits="1 bit" ;;
20138                         *)      bits="$selectminbits bits" ;;
20139                         esac
20140                         echo "Your select() operates on $bits at a time." >&4
20141                 else
20142                         rp='What is the minimum number of bits your select() operates on?'
20143                         case "$byteorder" in
20144                         12345678)       dflt=64 ;;
20145                         1234)           dflt=32 ;;
20146                         *)              dflt=1  ;;
20147                         esac
20148                         . ./myread
20149                         val=$ans
20150                         selectminbits="$val"
20151                 fi
20152                 $rm_try
20153                 ;;
20154         *)      : no select, so pick a harmless default
20155                 selectminbits=$safebits
20156                 ;;
20157         esac
20158         ;;
20159 esac
20160
20161 : Trace out the files included by signal.h, then look for SIGxxx names.
20162 if [ "X$fieldn" = X ]; then
20163         : Just make some guesses.  We check them later.
20164         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
20165 else
20166         xxx=`echo '#include <signal.h>' |
20167         $cppstdin $cppminus $cppflags 2>/dev/null |
20168         $grep '^[       ]*#.*include' |
20169         $awk "{print \\$$fieldn}" | $sed 's!"!!g' |\
20170                 $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
20171 fi
20172 xxxfiles=''
20173 for xx in $xxx /dev/null ; do
20174         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
20175 done
20176 case "$xxxfiles" in
20177 '')     xxxfiles=`./findhdr signal.h` ;;
20178 esac
20179 xxx=`awk '
20180 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
20181         print substr($2, 4, 20)
20182 }
20183 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
20184         print substr($3, 4, 20)
20185 }' $xxxfiles`
20186 : Append some common names just in case the awk scan failed.
20187 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
20188 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
20189 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
20190 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
20191 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
20192
20193 : generate a few handy files for later
20194 $cat > signal.c <<EOCP
20195 #include <sys/types.h>
20196 #include <signal.h>
20197 #$i_stdlib I_STDLIB
20198 #ifdef I_STDLIB
20199 #include <stdlib.h>
20200 #endif
20201 #include <stdio.h>
20202 int main() {
20203
20204 /* Strange style to avoid deeply-nested #if/#else/#endif */
20205 #ifndef NSIG
20206 #  ifdef _NSIG
20207 #    define NSIG (_NSIG)
20208 #  endif
20209 #endif
20210
20211 #ifndef NSIG
20212 #  ifdef SIGMAX
20213 #    define NSIG (SIGMAX+1)
20214 #  endif
20215 #endif
20216
20217 #ifndef NSIG
20218 #  ifdef SIG_MAX
20219 #    define NSIG (SIG_MAX+1)
20220 #  endif
20221 #endif
20222
20223 #ifndef NSIG
20224 #  ifdef _SIG_MAX
20225 #    define NSIG (_SIG_MAX+1)
20226 #  endif
20227 #endif
20228
20229 #ifndef NSIG
20230 #  ifdef MAXSIG
20231 #    define NSIG (MAXSIG+1)
20232 #  endif
20233 #endif
20234
20235 #ifndef NSIG
20236 #  ifdef MAX_SIG
20237 #    define NSIG (MAX_SIG+1)
20238 #  endif
20239 #endif
20240
20241 #ifndef NSIG
20242 #  ifdef SIGARRAYSIZE
20243 #    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
20244 #  endif
20245 #endif
20246
20247 #ifndef NSIG
20248 #  ifdef _sys_nsig
20249 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
20250 #  endif
20251 #endif
20252
20253 /* Default to some arbitrary number that's big enough to get most
20254    of the common signals.
20255 */
20256 #ifndef NSIG
20257 #    define NSIG 50
20258 #endif
20259
20260 printf("NSIG %d\n", NSIG);
20261
20262 #ifndef JUST_NSIG
20263
20264 EOCP
20265
20266 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20267 {
20268         printf "#ifdef SIG"; printf $1; printf "\n"
20269         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20270         printf $1; printf ");\n"
20271         printf "#endif\n"
20272 }
20273 END {
20274         printf "#endif /* JUST_NSIG */\n";
20275         printf "exit(0);\n}\n";
20276 }
20277 ' >>signal.c
20278 $cat >signal.awk <<'EOP'
20279 BEGIN { ndups = 0 }
20280 $1 ~ /^NSIG$/ { nsig = $2 }
20281 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20282     if ($2 > maxsig) { maxsig = $2 }
20283     if (sig_name[$2]) {
20284         dup_name[ndups] = $1
20285         dup_num[ndups] = $2
20286         ndups++
20287     }
20288     else {
20289         sig_name[$2] = $1
20290         sig_num[$2] = $2
20291     }
20292 }
20293 END {
20294     if (nsig == 0) {
20295         nsig = maxsig + 1
20296     }
20297     printf("NSIG %d\n", nsig);
20298     for (n = 1; n < nsig; n++) {
20299         if (sig_name[n]) {
20300             printf("%s %d\n", sig_name[n], sig_num[n])
20301         }
20302         else {
20303             printf("NUM%d %d\n", n, n)
20304         }
20305     }
20306     for (n = 0; n < ndups; n++) {
20307         printf("%s %d\n", dup_name[n], dup_num[n])
20308     }
20309 }
20310 EOP
20311 $cat >signal_cmd <<EOS
20312 $startsh
20313 if $test -s signal.lst; then
20314     echo "Using your existing signal.lst file"
20315         exit 0
20316 fi
20317 xxx="$xxx"
20318 EOS
20319 $cat >>signal_cmd <<'EOS'
20320
20321 set signal
20322 if eval $compile_ok; then
20323         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) |\
20324                 $uniq | $awk -f signal.awk >signal.lst
20325 else
20326         echo "(I can't seem be able to compile the whole test program)" >&4
20327         echo "(I'll try it in little pieces.)" >&4
20328         set signal -DJUST_NSIG
20329         if eval $compile_ok; then
20330                 $run ./signal$_exe > signal.nsg
20331                 $cat signal.nsg
20332         else
20333                 echo "I can't seem to figure out how many signals you have." >&4
20334                 echo "Guessing 50." >&4
20335                 echo 'NSIG 50' > signal.nsg
20336         fi
20337         : Now look at all the signal names, one at a time.
20338         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20339                 $cat > signal.c <<EOCP
20340 #include <sys/types.h>
20341 #include <signal.h>
20342 #include <stdio.h>
20343 int main() {
20344 printf("$xx %d\n", SIG${xx});
20345 return 0;
20346 }
20347 EOCP
20348                 set signal
20349                 if eval $compile; then
20350                         echo "SIG${xx} found."
20351                         $run ./signal$_exe  >> signal.ls1
20352                 else
20353                         echo "SIG${xx} NOT found."
20354                 fi
20355         done
20356         if $test -s signal.ls1; then
20357                 $cat signal.nsg signal.ls1 |
20358                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
20359         fi
20360
20361 fi
20362 if $test -s signal.lst; then
20363         :
20364 else
20365         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20366         echo 'kill -l' >signal
20367         set X `csh -f <signal`
20368         $rm -f signal
20369         shift
20370         case $# in
20371         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20372         esac
20373         echo $@ | $tr ' ' $trnl | \
20374             $awk '{ printf "%s %d\n", $1, ++s; }
20375                   END { printf "NSIG %d\n", ++s }' >signal.lst
20376 fi
20377 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20378 EOS
20379 chmod a+x signal_cmd
20380 $eunicefix signal_cmd
20381
20382 : generate list of signal names
20383 echo " "
20384 case "$sig_name_init" in
20385 '') doinit=yes ;;
20386 *)  case "$sig_num_init" in
20387     ''|*,*) doinit=yes ;;
20388     esac ;;
20389 esac
20390 case "$doinit" in
20391 yes)
20392         echo "Generating a list of signal names and numbers..." >&4
20393         . ./signal_cmd
20394         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20395         sig_name=`$awk 'BEGIN { printf "ZERO " }
20396                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20397         sig_num=`$awk  'BEGIN { printf "0 " }
20398                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20399         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
20400                              !/^NSIG/   { printf "\"%s\", ", $1 }
20401                              END        { printf "0\n" }' signal.lst`
20402         sig_num_init=`$awk  'BEGIN      { printf "0, " }
20403                              !/^NSIG/   { printf "%d, ", $2}
20404                              END        { printf "0\n"}' signal.lst`
20405         ;;
20406 esac
20407 echo "The following $sig_count signals are available:"
20408 echo " "
20409 echo $sig_name | $awk \
20410 'BEGIN { linelen = 0 }
20411 {
20412         for (i = 1; i <= NF; i++) {
20413                 name = "SIG" $i " "
20414                 linelen = linelen + length(name)
20415                 if (linelen > 70) {
20416                         printf "\n"
20417                         linelen = length(name)
20418                 }
20419                 printf "%s", name
20420         }
20421         printf "\n"
20422 }'
20423 sig_size=`echo $sig_name | awk '{print NF}'`
20424 $rm -f signal signal.c signal.awk signal.lst signal_cmd
20425
20426 : Check size of size
20427 echo " "
20428 case "$sizetype" in
20429 *_t) zzz="$sizetype"    ;;
20430 *)   zzz="filesize"     ;;
20431 esac
20432 echo "Checking the size of $zzz..." >&4
20433 cat > try.c <<EOCP
20434 #include <sys/types.h>
20435 #include <stdio.h>
20436 #$i_stdlib I_STDLIB
20437 #ifdef I_STDLIB
20438 #include <stdlib.h>
20439 #endif
20440 int main() {
20441     printf("%d\n", (int)sizeof($sizetype));
20442     exit(0);
20443 }
20444 EOCP
20445 set try
20446 if eval $compile_ok; then
20447         yyy=`$run ./try`
20448         case "$yyy" in
20449         '')     sizesize=4
20450                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20451                 ;;
20452         *)      sizesize=$yyy
20453                 echo "Your $zzz size is $sizesize bytes."
20454                 ;;
20455         esac
20456 else
20457         sizesize=4
20458         echo "(I can't compile the test program--guessing $sizesize.)" >&4
20459 fi
20460
20461
20462 : check for socklen_t
20463 echo " "
20464 echo "Checking to see if you have socklen_t..." >&4
20465 $cat >try.c <<EOCP
20466 #include <sys/types.h>
20467 #$d_socket HAS_SOCKET
20468 #ifdef HAS_SOCKET
20469 #include <sys/socket.h>
20470 #endif
20471 int main() { socklen_t x = 16; }
20472 EOCP
20473 set try
20474 if eval $compile; then
20475         val="$define"
20476         echo "You have socklen_t."
20477 else
20478         val="$undef"
20479         echo "You do not have socklen_t."
20480         case "$sizetype" in
20481         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20482         esac
20483 fi
20484 $rm_try
20485 set d_socklen_t
20486 eval $setvar
20487
20488 : see if this is a socks.h system
20489 set socks.h i_socks
20490 eval $inhdr
20491
20492 : check for type of the size argument to socket calls
20493 case "$d_socket" in
20494 "$define")
20495         $cat <<EOM
20496
20497 Checking to see what type is the last argument of accept().
20498 EOM
20499         yyy=''
20500         case "$d_socklen_t" in
20501         "$define") yyy="$yyy socklen_t"
20502         esac
20503         yyy="$yyy $sizetype int long unsigned"
20504         for xxx in $yyy; do
20505                 case "$socksizetype" in
20506                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
20507                         case "$usesocks" in
20508                         "$define")
20509                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20510                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20511                                         socksizetype="$xxx"
20512                                 fi
20513                                 ;;
20514                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
20515                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
20516                                         socksizetype="$xxx"
20517                                 fi
20518                                 ;;
20519                         esac
20520                         ;;
20521                 esac
20522         done
20523 : In case none of those worked, prompt the user.
20524         case "$socksizetype" in
20525         '')     rp='What is the type for socket address structure sizes?'
20526                 dflt='int'
20527                 . ./myread
20528                 socksizetype=$ans
20529                 ;;
20530         esac
20531         ;;
20532 *)      : no sockets, so pick relatively harmless default
20533         socksizetype='int'
20534         ;;
20535 esac
20536
20537 : see what type is used for signed size_t
20538 set ssize_t ssizetype int stdio.h sys/types.h
20539 eval $typedef
20540 dflt="$ssizetype"
20541 $cat > try.c <<EOM
20542 #include <stdio.h>
20543 #$i_stdlib I_STDLIB
20544 #ifdef I_STDLIB
20545 #include <stdlib.h>
20546 #endif
20547 #include <sys/types.h>
20548 #define Size_t $sizetype
20549 #define SSize_t $dflt
20550 int main()
20551 {
20552         if (sizeof(Size_t) == sizeof(SSize_t))
20553                 printf("$dflt\n");
20554         else if (sizeof(Size_t) == sizeof(int))
20555                 printf("int\n");
20556         else
20557                 printf("long\n");
20558         exit(0);
20559 }
20560 EOM
20561 echo " "
20562 set try
20563 if eval $compile_ok && $run ./try > /dev/null; then
20564         ssizetype=`$run ./try`
20565         echo "I'll be using $ssizetype for functions returning a byte count." >&4
20566 else
20567         $cat >&4 <<EOM
20568 Help! I can't compile and run the ssize_t test program: please enlighten me!
20569 (This is probably a misconfiguration in your system or libraries, and
20570 you really ought to fix it.  Still, I'll try anyway.)
20571
20572 I need a type that is the same size as $sizetype, but is guaranteed to
20573 be signed.  Common values are ssize_t, int and long.
20574
20575 EOM
20576         rp="What signed type is the same size as $sizetype?"
20577         . ./myread
20578         ssizetype="$ans"
20579 fi
20580 $rm_try
20581
20582 : see what type of char stdio uses.
20583 echo " "
20584 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
20585 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20586         echo "Your stdio uses unsigned chars." >&4
20587         stdchar="unsigned char"
20588 else
20589         echo "Your stdio uses signed chars." >&4
20590         stdchar="char"
20591 fi
20592 $rm -f stdioh
20593
20594 : see what type uids are declared as in the kernel
20595 echo " "
20596 echo "Looking for the type for user ids returned by getuid()."
20597 set uid_t uidtype xxx stdio.h sys/types.h
20598 eval $typedef
20599 case "$uidtype" in
20600 xxx)
20601         xxx=`./findhdr sys/user.h`
20602         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20603         case $1 in
20604         unsigned) dflt="$1 $2" ;;
20605         *) dflt="$1" ;;
20606         esac
20607         ;;
20608 *) dflt="$uidtype";;
20609 esac
20610 case "$uidtype" in
20611 uid_t)  echo "uid_t found." ;;
20612 *)      rp="What is the type for user ids returned by getuid()?"
20613         . ./myread
20614         uidtype="$ans"
20615         ;;
20616 esac
20617
20618 : Check size of UID
20619 echo " "
20620 case "$uidtype" in
20621 *_t) zzz="$uidtype"     ;;
20622 *)   zzz="uid"          ;;
20623 esac
20624 echo "Checking the size of $zzz..." >&4
20625 cat > try.c <<EOCP
20626 #include <sys/types.h>
20627 #include <stdio.h>
20628 #$i_stdlib I_STDLIB
20629 #ifdef I_STDLIB
20630 #include <stdlib.h>
20631 #endif
20632 int main() {
20633     printf("%d\n", (int)sizeof($uidtype));
20634     exit(0);
20635 }
20636 EOCP
20637 set try
20638 if eval $compile_ok; then
20639         yyy=`$run ./try`
20640         case "$yyy" in
20641         '')     uidsize=4
20642                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20643                 ;;
20644         *)      uidsize=$yyy
20645                 echo "Your $zzz is $uidsize bytes long."
20646                 ;;
20647         esac
20648 else
20649         uidsize=4
20650         echo "(I can't compile the test program--guessing $uidsize.)" >&4
20651 fi
20652
20653 : Check if UID is signed
20654 echo " "
20655 case "$uidtype" in
20656 *_t) zzz="$uidtype"     ;;
20657 *)   zzz="uid"          ;;
20658 esac
20659 echo "Checking the sign of $zzz..." >&4
20660 cat > try.c <<EOCP
20661 #include <sys/types.h>
20662 #include <stdio.h>
20663 int main() {
20664         $uidtype foo = -1;
20665         if (foo < 0)
20666                 printf("-1\n");
20667         else
20668                 printf("1\n");
20669 }
20670 EOCP
20671 set try
20672 if eval $compile; then
20673         yyy=`$run ./try`
20674         case "$yyy" in
20675         '')     uidsign=1
20676                 echo "(I can't execute the test program--guessing unsigned.)" >&4
20677                 ;;
20678         *)      uidsign=$yyy
20679                 case "$uidsign" in
20680                  1) echo "Your $zzz is unsigned." ;;
20681                 -1) echo "Your $zzz is signed."   ;;
20682                 esac
20683                 ;;
20684         esac
20685 else
20686         uidsign=1
20687         echo "(I can't compile the test program--guessing unsigned.)" >&4
20688 fi
20689
20690
20691 : Check format string for UID
20692 echo " "
20693 $echo "Checking the format string to be used for uids..." >&4
20694
20695 case "$uidsign" in
20696 -1)     if $test X"$uidsize" = X"$ivsize"; then
20697                 uidformat="$ivdformat"
20698         else
20699                 if $test X"$uidsize" = X"$longsize"; then
20700                         uidformat='"ld"'
20701                 else
20702                         if $test X"$uidsize" = X"$intsize"; then
20703                                 uidformat='"d"'
20704                         else
20705                                 if $test X"$uidsize" = X"$shortsize"; then
20706                                         uidformat='"hd"'
20707                                 fi
20708                         fi
20709                 fi
20710         fi
20711         ;;
20712 *)      if $test X"$uidsize" = X"$uvsize"; then
20713                 uidformat="$uvuformat"
20714         else
20715                 if $test X"$uidsize" = X"$longsize"; then
20716                         uidformat='"lu"'
20717                 else
20718                         if $test X"$uidsize" = X"$intsize"; then
20719                                 uidformat='"u"'
20720                         else
20721                                 if $test X"$uidsize" = X"$shortsize"; then
20722                                         uidformat='"hu"'
20723                                 fi
20724                         fi
20725                 fi
20726         fi
20727         ;;
20728 esac
20729
20730 : Check if site customization support was requested
20731 case "$usesitecustomize" in
20732     $define|true|[Yy]*)
20733         usesitecustomize="$define"
20734         ;;
20735     *)
20736         usesitecustomize="$undef"
20737         ;;
20738     esac
20739
20740 : determine compiler compiler
20741 case "$yacc" in
20742 '')
20743         dflt=yacc;;
20744 *)
20745         dflt="$yacc";;
20746 esac
20747 echo " "
20748 comp='yacc'
20749 if $test -f "$byacc$_exe"; then
20750         dflt="$byacc"
20751         comp="byacc or $comp"
20752 fi
20753 if $test -f "$bison$_exe"; then
20754         comp="$comp or bison -y"
20755 fi
20756 rp="Which compiler compiler ($comp) shall I use?"
20757 . ./myread
20758 yacc="$ans"
20759 case "$yacc" in
20760 *bis*)
20761         case "$yacc" in
20762         *-y*) ;;
20763         *)
20764                 yacc="$yacc -y"
20765                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20766                 ;;
20767         esac
20768         ;;
20769 esac
20770
20771 : see if this is a assert.h system
20772 set assert.h i_assert
20773 eval $inhdr
20774
20775 : see if this is a fp.h system
20776 set fp.h i_fp
20777 eval $inhdr
20778
20779 : see if this is a fp_class.h system
20780 set fp_class.h i_fp_class
20781 eval $inhdr
20782
20783 : see if gdbm.h is available
20784 set gdbm.h t_gdbm
20785 eval $inhdr
20786 case "$t_gdbm" in
20787 $define)
20788         : see if gdbm_open exists
20789         set gdbm_open d_gdbm_open
20790         eval $inlibc
20791         case "$d_gdbm_open" in
20792         $undef)
20793                 t_gdbm="$undef"
20794                 echo "We won't be including <gdbm.h>"
20795                 ;;
20796         esac
20797         ;;
20798 esac
20799 val="$t_gdbm"
20800 set i_gdbm
20801 eval $setvar
20802
20803 : see if ndbm.h is available
20804 set ndbm.h i_ndbm
20805 eval $inhdr
20806 : Compatibility location for RedHat 7.1
20807 set gdbm/ndbm.h i_gdbmndbm
20808 eval $inhdr
20809 : Compatibility location for Debian 4.0
20810 set gdbm-ndbm.h i_gdbm_ndbm
20811 eval $inhdr
20812
20813 if $test "$i_ndbm" = "$define" -o "$i_gdbmndbm" = "$define" -o "$i_gdbm_ndbm" = "$define"; then
20814         : see if dbm_open exists
20815         set dbm_open d_dbm_open
20816         eval $inlibc
20817         case "$d_dbm_open" in
20818         $undef)
20819                 i_ndbm="$undef"
20820                 i_gdbmndbm="$undef"
20821                 i_gdbm_ndbm="$undef"
20822                 echo "We won't be including <ndbm.h>"
20823             val="$undef"
20824                 ;;
20825         *) val="$define"
20826            ;;
20827         esac
20828 fi
20829 set d_ndbm
20830 eval $setvar
20831
20832 : see if this is a ieeefp.h system
20833 case "$i_ieeefp" in
20834 '' ) set ieeefp.h i_ieeefp
20835      eval $inhdr
20836      ;;
20837 esac
20838
20839 : see if this is a libutil.h system
20840 set libutil.h i_libutil
20841 eval $inhdr
20842
20843 : see if mach cthreads are available
20844 if test "X$usethreads" = "X$define"; then
20845         set mach/cthreads.h i_machcthr
20846         eval $inhdr
20847 else
20848         i_machcthr="$undef"
20849 fi
20850
20851 : see if this is a mntent.h system
20852 set mntent.h i_mntent
20853 eval $inhdr
20854
20855 : see if net/errno.h is available
20856 val=''
20857 set net/errno.h val
20858 eval $inhdr
20859
20860 : Unfortunately, it causes problems on some systems.  Arrgh.
20861 case "$val" in
20862 $define)
20863         cat > try.c <<'EOM'
20864 #include <stdio.h>
20865 #include <errno.h>
20866 #include <net/errno.h>
20867 int func()
20868 {
20869         return ENOTSOCK;
20870 }
20871 EOM
20872         if $cc $ccflags -c try.c >/dev/null 2>&1; then
20873                 echo "We'll be including <net/errno.h>." >&4
20874         else
20875                 echo "We won't be including <net/errno.h>." >&4
20876                 val="$undef"
20877         fi
20878         $rm_try
20879         ;;
20880 esac
20881 set i_neterrno
20882 eval $setvar
20883
20884 : see if netinet/tcp.h is available
20885 set netinet/tcp.h i_netinettcp
20886 eval $inhdr
20887
20888 : see if this is a poll.h system
20889 set poll.h i_poll
20890 eval $inhdr
20891
20892 : see if this is a prot.h system
20893 set prot.h i_prot
20894 eval $inhdr
20895
20896 : Preprocessor symbols
20897 echo " "
20898 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20899 $cat <<'EOSH' > Cppsym.know
20900 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20901 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20902 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20903 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20904 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20905 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20906 bull c cadmus clipper CMU COFF COMPILER_VERSION
20907 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20908 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20909 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20910 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20911 GLIBC GLIBC_MINOR
20912 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20913 H3050R H3050RX hbullx20 hcx host_mips
20914 hp200 hp300 hp700 HP700 hp800 hp9000
20915 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20916 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20917 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20918 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20919 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20920 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20921 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20922 LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20923 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20924 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20925 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20926 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20927 MATH_HAS_NO_SIDE_EFFECTS
20928 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20929 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20930 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20931 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20932 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20933 NetBSD news1500 news1700 news1800 news1900 news3700
20934 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20935 ns32016 ns32332 ns32k nsc32000
20936 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20937 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20938 pc532 pdp11 PGC PIC plexus PORTAR posix
20939 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20940 POSIX_C_SOURCE POSIX_SOURCE POWER
20941 PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
20942 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20943 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20944 sony sony_news sonyrisc sparc sparclite spectrum
20945 stardent stdc STDC_EXT stratos sun sun3 sun386
20946 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20947 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20948 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20949 sysV68 sysV88 Tek4132 Tek4300 titan
20950 TM3200 TM5400 TM5600
20951 tower tower32 tower32_200 tower32_600 tower32_700
20952 tower32_800 tower32_850 tss
20953 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20954 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20955 unix UNIX95 UNIX99 unixpc unos
20956 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20957 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20958 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20959 USGr4 USGr4_2
20960 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20961 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20962 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20963 z8000
20964 EOSH
20965 # Maybe put other stuff here too.
20966 cat <<EOSH >>Cppsym.know
20967 $osname
20968 EOSH
20969 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20970 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20971 $cat Cppsym.know > Cppsym.c
20972 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20973 $rm -f Cppsym.a Cppsym.b Cppsym.c
20974 cat <<EOSH > Cppsym
20975 $startsh
20976 if $test \$# -gt 0; then
20977     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20978     if $test -s Cppsym.got; then
20979         $rm -f Cppsym.got
20980         exit 0
20981     fi
20982     $rm -f Cppsym.got
20983     exit 1
20984 else
20985     $tr " " "$trnl" | ./Cppsym.try
20986     exit 0
20987 fi
20988 EOSH
20989 chmod +x Cppsym
20990 $eunicefix Cppsym
20991 cat <<EOSH > Cppsym.try
20992 $startsh
20993 cat <<'EOCP' > try.c
20994 #include <stdio.h>
20995 #if cpp_stuff == 1
20996 #define STRINGIFY(a)    "a"
20997 #endif
20998 #if cpp_stuff == 42
20999 #define StGiFy(a)  #a
21000 #define STRINGIFY(a)    StGiFy(a)
21001 #endif
21002 #if $cpp_stuff != 1 && $cpp_stuff != 42
21003 #   include "Bletch: How does this C preprocessor stringify macros?"
21004 #endif
21005 int main() {
21006 EOCP
21007 $awk \\
21008 EOSH
21009 cat <<'EOSH' >> Cppsym.try
21010 'length($1) > 0 {
21011     printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
21012     printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
21013     printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
21014     printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
21015 }'       >> try.c
21016 echo 'return 0;}' >> try.c
21017 EOSH
21018 cat <<EOSH >> Cppsym.try
21019 ccflags="$ccflags"
21020 case "$osname-$gccversion" in
21021 irix-) ccflags="\$ccflags -woff 1178" ;;
21022 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
21023 esac
21024 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
21025 EOSH
21026 chmod +x Cppsym.try
21027 $eunicefix Cppsym.try
21028 ./Cppsym < Cppsym.know > Cppsym.true
21029 : Add in any linux cpp "predefined macros":
21030 case "$osname::$gccversion" in
21031   *linux*::*.*)
21032     tHdrH=_tmpHdr
21033     rm -f $tHdrH'.h' $tHdrH
21034     touch $tHdrH'.h'
21035     if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
21036        sed 's/#define[\ \  ]*//;s/[\ \     ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
21037        if [ -s $tHdrH'_cppsym.real' ]; then
21038           cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
21039        fi
21040     fi
21041     rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
21042   ;;
21043 esac
21044 : now check the C compiler for additional symbols
21045 postprocess_cc_v=''
21046 case "$osname" in
21047 aix) postprocess_cc_v="|$tr , ' '" ;;
21048 esac
21049 $cat >ccsym <<EOS
21050 $startsh
21051 $cat >tmp.c <<EOF
21052 extern int foo;
21053 EOF
21054 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
21055 do
21056         case "\$i" in
21057         -D*) echo "\$i" | $sed 's/^-D//';;
21058         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
21059         esac
21060 done
21061 $rm_try
21062 EOS
21063 postprocess_cc_v=''
21064 chmod +x ccsym
21065 $eunicefix ccsym
21066 ./ccsym > ccsym1.raw
21067 if $test -s ccsym1.raw; then
21068        $sort ccsym1.raw | $uniq >ccsym.raw
21069 else
21070        mv ccsym1.raw ccsym.raw
21071 fi
21072
21073 $awk '/\=/ { print $0; next }
21074         { print $0"=1" }' ccsym.raw >ccsym.list
21075 $comm -13 Cppsym.true ccsym.list >ccsym.own
21076 $comm -12 Cppsym.true ccsym.list >ccsym.com
21077 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
21078 also=''
21079 if $test -z ccsym.raw; then
21080         echo "Your C compiler doesn't seem to define any symbols!" >&4
21081         echo " "
21082         echo "However, your C preprocessor defines the following symbols:"
21083         $cat Cppsym.true
21084         ccsymbols=''
21085         cppsymbols=`$cat Cppsym.true`
21086         cppsymbols=`echo $cppsymbols`
21087         cppccsymbols="$cppsymbols"
21088 else
21089         if $test -s ccsym.com; then
21090                 echo "Your C compiler and pre-processor define these symbols:"
21091                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
21092                 also='also '
21093                 symbols='ones'
21094                 cppccsymbols=`$cat ccsym.com`
21095                 cppccsymbols=`echo $cppccsymbols`
21096                 $test "$silent" || sleep 1
21097         fi
21098         if $test -s ccsym.cpp; then
21099                 $test "$also" && echo " "
21100                 echo "Your C pre-processor ${also}defines the following symbols:"
21101                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
21102                 also='further '
21103                 cppsymbols=`$cat ccsym.cpp`
21104                 cppsymbols=`echo $cppsymbols`
21105                 $test "$silent" || sleep 1
21106         fi
21107         if $test -s ccsym.own; then
21108                 $test "$also" && echo " "
21109                 echo "Your C compiler ${also}defines the following cpp symbols:"
21110                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
21111                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
21112                 ccsymbols=`$cat ccsym.own`
21113                 ccsymbols=`echo $ccsymbols`
21114                 $test "$silent" || sleep 1
21115         fi
21116 fi
21117
21118 : see if this is a termio system
21119 val="$undef"
21120 val2="$undef"
21121 val3="$undef"
21122 if $test `./findhdr termios.h`; then
21123         set tcsetattr i_termios
21124         eval $inlibc
21125         val3="$i_termios"
21126 fi
21127 echo " "
21128 case "$val3" in
21129 "$define") echo "You have POSIX termios.h... good!" >&4;;
21130 *) if ./Cppsym pyr; then
21131                 case "`/bin/universe`" in
21132                 ucb) if $test `./findhdr sgtty.h`; then
21133                                 val2="$define"
21134                                 echo "<sgtty.h> found." >&4
21135                         else
21136                                 echo "System is pyramid with BSD universe."
21137                                 ./warn "<sgtty.h> not found--you could have problems."
21138                         fi;;
21139                 *) if $test `./findhdr termio.h`; then
21140                                 val="$define"
21141                                 echo "<termio.h> found." >&4
21142                         else
21143                                 echo "System is pyramid with USG universe."
21144                                 ./warn "<termio.h> not found--you could have problems."
21145                         fi;;
21146                 esac
21147         elif ./usg; then
21148                 if $test `./findhdr termio.h`; then
21149                         echo "<termio.h> found." >&4
21150                         val="$define"
21151                 elif $test `./findhdr sgtty.h`; then
21152                         echo "<sgtty.h> found." >&4
21153                         val2="$define"
21154                 else
21155                         ./warn "Neither <termio.h> nor <sgtty.h> found--cross fingers!"
21156                 fi
21157         else
21158                 if $test `./findhdr sgtty.h`; then
21159                         echo "<sgtty.h> found." >&4
21160                         val2="$define"
21161                 elif $test `./findhdr termio.h`; then
21162                         echo "<termio.h> found." >&4
21163                         val="$define"
21164                 else
21165                         ./warn "Neither <sgtty.h> nor <termio.h> found--cross fingers!"
21166                 fi
21167         fi;;
21168 esac
21169 set i_termio; eval $setvar
21170 val=$val2; set i_sgtty; eval $setvar
21171 val=$val3; set i_termios; eval $setvar
21172
21173 : see if stddef is available
21174 set stddef.h i_stddef
21175 eval $inhdr
21176
21177 : see if sys/access.h is available
21178 set sys/access.h i_sysaccess
21179 eval $inhdr
21180
21181 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
21182 set sys/filio.h i_sysfilio
21183 eval $inhdr
21184 echo " "
21185 if $test `./findhdr sys/ioctl.h`; then
21186         val="$define"
21187         echo '<sys/ioctl.h> found.' >&4
21188 else
21189         val="$undef"
21190         if $test $i_sysfilio = "$define"; then
21191             echo '<sys/ioctl.h> NOT found.' >&4
21192         else
21193                 $test $i_sgtty = "$define" && xxx="sgtty.h"
21194                 $test $i_termio = "$define" && xxx="termio.h"
21195                 $test $i_termios = "$define" && xxx="termios.h"
21196 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
21197         fi
21198 fi
21199 set i_sysioctl
21200 eval $setvar
21201
21202 : see if socket ioctl defs are in sys/sockio.h
21203 echo " "
21204 xxx=`./findhdr sys/sockio.h`
21205 if $test "$xxx"; then
21206         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
21207                 val="$define"
21208                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
21209         else
21210                 val="$undef"
21211                 echo "No socket ioctls found in <sys/sockio.h>." >&4
21212         fi
21213 else
21214         val="$undef"
21215         $cat <<EOM
21216 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
21217 EOM
21218 fi
21219 set i_syssockio
21220 eval $setvar
21221
21222 : see if this is a syslog.h system
21223 set syslog.h i_syslog
21224 eval $inhdr
21225
21226 : see if this is a sys/mode.h system
21227 set sys/mode.h i_sysmode
21228 eval $inhdr
21229
21230 : see if there is a sys/poll.h file
21231 set sys/poll.h i_syspoll
21232 eval $inhdr
21233
21234 : see if sys/resource.h has to be included
21235 set sys/resource.h i_sysresrc
21236 eval $inhdr
21237
21238 : see if sys/security.h is available
21239 set sys/security.h i_syssecrt
21240 eval $inhdr
21241
21242 : see if this is a sys/statvfs.h system
21243 set sys/statvfs.h i_sysstatvfs
21244 eval $inhdr
21245
21246 : see if this is a sys/un.h system
21247 set sys/un.h i_sysun
21248 eval $inhdr
21249
21250 : see if this is a sys/utsname.h system
21251 set sys/utsname.h i_sysutsname
21252 eval $inhdr
21253
21254 : see if this is a syswait system
21255 set sys/wait.h i_syswait
21256 eval $inhdr
21257
21258 : see if this is a ustat.h system
21259 set ustat.h i_ustat
21260 eval $inhdr
21261
21262 : see if this is an utime system
21263 set utime.h i_utime
21264 eval $inhdr
21265
21266 : see if this is a values.h system
21267 set values.h i_values
21268 eval $inhdr
21269
21270 : see if this is a vfork system
21271 case "$d_vfork" in
21272 "$define")
21273         set vfork.h i_vfork
21274         eval $inhdr
21275         ;;
21276 *)
21277         i_vfork="$undef"
21278         ;;
21279 esac
21280
21281 : Check extensions
21282 echo " "
21283 echo "Looking for extensions..." >&4
21284 : If we are using the old config.sh, known_extensions may contain
21285 : old or inaccurate or duplicate values.
21286 known_extensions=''
21287 nonxs_extensions=''
21288 : We do not use find because it might not be available.
21289 : We do not just use MANIFEST because the user may have dropped
21290 : some additional extensions into the source tree and expect them
21291 : to be built.
21292
21293 : Function to recursively find available extensions, ignoring DynaLoader
21294 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21295 find_extensions='
21296     for xxx in *; do
21297         case "$xxx" in
21298             DynaLoader|dynaload) ;;
21299             *)
21300             if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21301                 known_extensions="$known_extensions $1$xxx";
21302             elif $test -f $xxx/Makefile.PL; then
21303                 nonxs_extensions="$nonxs_extensions $1$xxx";
21304             else
21305                 if $test -d $xxx -a $# -lt 10; then
21306                     set $1$xxx/ $*;
21307                     cd "$xxx";
21308                     eval $find_extensions;
21309                     cd ..;
21310                     shift;
21311                 fi;
21312             fi
21313             ;;
21314         esac;
21315     done'
21316 tdir=`pwd`
21317 cd "$rsrc/ext"
21318 set X
21319 shift
21320 eval $find_extensions
21321 # Special case:  Add in modules that nest beyond the first level.
21322 # Currently threads/shared and Hash/Util/FieldHash, since they are
21323 # not picked up by the recursive find above (and adding in general
21324 # recursive finding breaks SDBM_File/sdbm).
21325 # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
21326 known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
21327 set X $known_extensions
21328 shift
21329 known_extensions="$*"
21330 set X $nonxs_extensions
21331 shift
21332 nonxs_extensions="$*"
21333 cd "$tdir"
21334
21335 : Now see which are supported on this system.
21336 avail_ext=''
21337 for xxx in $known_extensions ; do
21338         case "$xxx" in
21339         DB_File|db_file)
21340                 case "$i_db" in
21341                 $define) avail_ext="$avail_ext $xxx" ;;
21342                 esac
21343                 ;;
21344         GDBM_File|gdbm_fil)
21345                 case "$i_gdbm" in
21346                 $define) avail_ext="$avail_ext $xxx" ;;
21347                 esac
21348                 ;;
21349         I18N/Langinfo|i18n_lan)
21350                 case "$i_langinfo$d_nl_langinfo" in
21351                 $define$define) avail_ext="$avail_ext $xxx" ;;
21352                 esac
21353                 ;;
21354         IPC/SysV|ipc/sysv)
21355                 : XXX Do we need a useipcsysv variable here
21356                 case "${d_msg}${d_sem}${d_shm}" in
21357                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21358                 esac
21359                 ;;
21360         NDBM_File|ndbm_fil)
21361                 case "$i_ndbm" in
21362                 $define)
21363                     case "$osname-$use64bitint" in
21364                     hpux-define)
21365                         case "$libs" in
21366                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21367                         esac
21368                         ;;
21369                     *) avail_ext="$avail_ext $xxx" ;;
21370                     esac
21371                     ;;
21372                 esac
21373                 ;;
21374         ODBM_File|odbm_fil)
21375                 case "${i_dbm}${i_rpcsvcdbm}" in
21376                 *"${define}"*)
21377                     case "$d_cplusplus" in
21378                     define) ;; # delete as a function name will not work
21379                     *)  case "$osname-$use64bitint" in
21380                         hpux-define)
21381                             case "$libs" in
21382                             *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21383                             esac
21384                             ;;
21385                         *) avail_ext="$avail_ext $xxx" ;;
21386                         esac
21387                         ;;
21388                     esac
21389                     ;;
21390                 esac
21391                 ;;
21392         Opcode|opcode)
21393                 case "$useopcode" in
21394                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21395                 esac
21396                 ;;
21397         POSIX|posix)
21398                 case "$useposix" in
21399                 true|define|y) avail_ext="$avail_ext $xxx" ;;
21400                 esac
21401                 ;;
21402         Socket|socket)
21403                 case "$d_socket" in
21404                 true|$define|y)
21405                     case "$osname" in
21406                     beos) ;; # not unless BONE
21407                     *) avail_ext="$avail_ext $xxx" ;;
21408                     esac
21409                     ;;
21410                 esac
21411                 ;;
21412         Sys/Syslog|sys/syslog)
21413                 : XXX syslog requires socket
21414                 case "$d_socket" in
21415                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21416                 esac
21417                 ;;
21418         Thread|thread)
21419                 case "$usethreads" in
21420                 true|$define|y)
21421                         case "$use5005threads" in
21422                         $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21423                         esac
21424                 esac
21425                 ;;
21426         threads|threads/shared)
21427                 # threads and threads::shared are special cases.
21428                 # To stop people from asking "Perl 5.8.0 was supposed
21429                 # to have this new fancy threads implementation but my
21430                 # perl doesn't have it" and from people trying to
21431                 # (re)install the threads module using CPAN.pm and
21432                 # CPAN.pm then offering to reinstall Perl 5.8.0,
21433                 # the threads.pm and threads/shared.pm will always be
21434                 # there, croaking informatively ("you need to rebuild
21435                 # all of Perl with threads, sorry") when threads haven't
21436                 # been compiled in.
21437                 # --jhi
21438                 avail_ext="$avail_ext $xxx"
21439                 ;;
21440         Win32*)
21441                 case "$osname" in
21442                 cygwin) avail_ext="$avail_ext $xxx" ;;
21443                 esac
21444                 ;;
21445         XS/APItest|xs/apitest)
21446                 # This is just for testing.  Skip it unless we have dynamic loading.
21447
21448                 case "$usedl" in
21449                 $define) avail_ext="$avail_ext $xxx" ;;
21450                 esac
21451                 ;;
21452         XS/Typemap|xs/typemap)
21453                 # This is just for testing.  Skip it unless we have dynamic loading.
21454                 case "$usedl" in
21455                 $define) avail_ext="$avail_ext $xxx" ;;
21456                 esac
21457                 ;;
21458         *)      avail_ext="$avail_ext $xxx"
21459                 ;;
21460         esac
21461 done
21462
21463 set X $avail_ext
21464 shift
21465 avail_ext="$*"
21466
21467 case "$onlyextensions" in
21468 '') ;;
21469 *)  keepextensions=''
21470     echo "You have requested that only certains extensions be included..." >&4
21471     for i in $onlyextensions; do
21472         case " $avail_ext " in
21473         *" $i "*)
21474             echo "Keeping extension $i."
21475             keepextensions="$keepextensions $i"
21476             ;;
21477         *) echo "Ignoring extension $i." ;;
21478         esac
21479     done
21480     avail_ext="$keepextensions"
21481     ;;
21482 esac
21483
21484 case "$noextensions" in
21485 '') ;;
21486 *)  keepextensions=''
21487     echo "You have requested that certain extensions be ignored..." >&4
21488     for i in $avail_ext; do
21489         case " $noextensions " in
21490         *" $i "*) echo "Ignoring extension $i." ;;
21491         *) echo "Keeping extension $i.";
21492            keepextensions="$keepextensions $i"
21493            ;;
21494         esac
21495     done
21496     avail_ext="$keepextensions"
21497     ;;
21498 esac
21499
21500 : Now see which nonxs extensions are supported on this system.
21501 : For now assume all are.
21502 nonxs_ext=''
21503 for xxx in $nonxs_extensions ; do
21504         case "$xxx" in
21505         *)      nonxs_ext="$nonxs_ext $xxx"
21506                 ;;
21507         esac
21508 done
21509
21510 set X $nonxs_ext
21511 shift
21512 nonxs_ext="$*"
21513
21514 case $usedl in
21515 $define)
21516         $cat <<EOM
21517 A number of extensions are supplied with $package.  You may choose to
21518 compile these extensions for dynamic loading (the default), compile
21519 them into the $package executable (static loading), or not include
21520 them at all.  Answer "none" to include no extensions.
21521 Note that DynaLoader is always built and need not be mentioned here.
21522
21523 EOM
21524         case "$dynamic_ext" in
21525         '')
21526                 : Exclude those listed in static_ext
21527                 dflt=''
21528                 for xxx in $avail_ext; do
21529                         case " $static_ext " in
21530                         *" $xxx "*) ;;
21531                         *) dflt="$dflt $xxx" ;;
21532                         esac
21533                 done
21534                 set X $dflt
21535                 shift
21536                 dflt="$*"
21537                 ;;
21538         *)      dflt="$dynamic_ext"
21539                 # Perhaps we are reusing an old out-of-date config.sh.
21540                 case "$hint" in
21541                 previous)
21542                         if test X"$dynamic_ext" != X"$avail_ext"; then
21543                                 $cat <<EOM
21544 NOTICE:  Your previous config.sh list may be incorrect.
21545 The extensions now available to you are
21546         ${avail_ext}
21547 but the default list from your previous config.sh is
21548         ${dynamic_ext}
21549
21550 EOM
21551                         fi
21552                         ;;
21553                 esac
21554                 ;;
21555         esac
21556         case "$dflt" in
21557         '')     dflt=none;;
21558         esac
21559         rp="What extensions do you wish to load dynamically?"
21560         . ./myread
21561         case "$ans" in
21562         none) dynamic_ext=' ' ;;
21563         *) dynamic_ext="$ans" ;;
21564         esac
21565
21566         case "$static_ext" in
21567         '')
21568                 : Exclude those already listed in dynamic linking
21569                 dflt=''
21570                 for xxx in $avail_ext; do
21571                         case " $dynamic_ext " in
21572                         *" $xxx "*) ;;
21573                         *) dflt="$dflt $xxx" ;;
21574                         esac
21575                 done
21576                 set X $dflt
21577                 shift
21578                 dflt="$*"
21579                 ;;
21580         *)  dflt="$static_ext"
21581                 ;;
21582         esac
21583
21584         case "$dflt" in
21585         '')     dflt=none;;
21586         esac
21587         rp="What extensions do you wish to load statically?"
21588         . ./myread
21589         case "$ans" in
21590         none) static_ext=' ' ;;
21591         *) static_ext="$ans" ;;
21592         esac
21593         ;;
21594 *)
21595         $cat <<EOM
21596 A number of extensions are supplied with $package.  Answer "none"
21597 to include no extensions.
21598 Note that DynaLoader is always built and need not be mentioned here.
21599
21600 EOM
21601         case "$static_ext" in
21602         '') dflt="$avail_ext" ;;
21603         *)      dflt="$static_ext"
21604                 # Perhaps we are reusing an old out-of-date config.sh.
21605                 case "$hint" in
21606                 previous)
21607                         if test X"$static_ext" != X"$avail_ext"; then
21608                                 $cat <<EOM
21609 NOTICE:  Your previous config.sh list may be incorrect.
21610 The extensions now available to you are
21611         ${avail_ext}
21612 but the default list from your previous config.sh is
21613         ${static_ext}
21614
21615 EOM
21616                         fi
21617                         ;;
21618                 esac
21619                 ;;
21620         esac
21621         : Exclude those that are not xs extensions
21622         case "$dflt" in
21623         '')     dflt=none;;
21624         esac
21625         rp="What extensions do you wish to include?"
21626         . ./myread
21627         case "$ans" in
21628         none) static_ext=' ' ;;
21629         *) static_ext="$ans" ;;
21630         esac
21631         ;;
21632 esac
21633 #
21634 # Encode is a special case.  If we are building Encode as a static
21635 # extension, we need to explicitly list its subextensions as well.
21636 # For other nested extensions, this is handled automatically by
21637 # the appropriate Makefile.PL.
21638 case " $static_ext " in
21639         *" Encode "*) # Add the subextensions of Encode
21640         cd "$rsrc/ext"
21641         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21642                 static_ext="$static_ext Encode/$xxx"
21643         done
21644         cd "$tdir"
21645         ;;
21646 esac
21647
21648 set X $dynamic_ext $static_ext $nonxs_ext
21649 shift
21650 extensions="$*"
21651
21652 # Sanity check:  We require an extension suitable for use with
21653 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
21654 # should show up as failures in the test suite, but it's helpful to
21655 # catch them now.) The 'extensions' list is normally sorted
21656 # alphabetically, so we need to accept either
21657 #    DB_File ... Fcntl ... IO  ....
21658 # or something like
21659 #    Fcntl ... NDBM_File ... IO  ....
21660 case " $extensions"  in
21661 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21662 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21663 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21664 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21665    echo "WARNING: The Perl you are building will be quite crippled." >& 4
21666    ;;
21667 esac
21668
21669 : Remove libraries needed only for extensions
21670 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21671 : The exception is SunOS 4.x, which needs them.
21672 case "${osname}X${osvers}" in
21673 sunos*X4*)
21674     perllibs="$libs"
21675     ;;
21676 *) case "$usedl" in
21677     $define|true|[yY]*)
21678             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
21679             shift
21680             perllibs="$*"
21681             ;;
21682     *)  perllibs="$libs"
21683             ;;
21684     esac
21685     ;;
21686 esac
21687
21688 : Remove build directory name from cppstdin so it can be used from
21689 : either the present location or the final installed location.
21690 echo " "
21691 : Get out of the UU directory to get correct path name.
21692 cd ..
21693 case "$cppstdin" in
21694 `pwd`/cppstdin)
21695         echo "Stripping down cppstdin path name"
21696         cppstdin=cppstdin
21697         ;;
21698 esac
21699 cd UU
21700
21701 : end of configuration questions
21702 echo " "
21703 echo "End of configuration questions."
21704 echo " "
21705
21706 : back to where it started
21707 if test -d ../UU; then
21708         cd ..
21709 fi
21710
21711 : configuration may be unconditionally patched via a 'config.arch' file
21712 if $test -f config.arch; then
21713         echo "I see a config.arch file, loading it." >&4
21714         . ./config.arch
21715 fi
21716
21717 : configuration may be patched via a 'config.over' file
21718 if $test -f config.over; then
21719         echo " "
21720         dflt=y
21721         rp='I see a config.over file.  Do you wish to load it?'
21722         . UU/myread
21723         case "$ans" in
21724         n*) echo "OK, I'll ignore it.";;
21725         *)      . ./config.over
21726                 echo "Configuration override changes have been loaded."
21727                 ;;
21728         esac
21729 fi
21730
21731 : in case they want portability, strip down executable paths
21732 case "$d_portable" in
21733 "$define")
21734         echo " "
21735         echo "Stripping down executable paths..." >&4
21736         for file in $loclist $trylist; do
21737                 eval temp=\$$file
21738                 eval $file=`basename $temp`
21739         done
21740         ;;
21741 esac
21742
21743 : create config.sh file
21744 echo " "
21745 echo "Creating config.sh..." >&4
21746 $spitshell <<EOT >config.sh
21747 $startsh
21748 #
21749 # This file was produced by running the Configure script. It holds all the
21750 # definitions figured out by Configure. Should you modify one of these values,
21751 # do not forget to propagate your changes by running "Configure -der". You may
21752 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21753 #
21754
21755 # Package name      : $package
21756 # Source directory  : $src
21757 # Configuration time: $cf_time
21758 # Configured by     : $cf_by
21759 # Target system     : $myuname
21760
21761 EOT
21762 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21763 $spitshell <<EOT >>config.sh
21764
21765 Author='$Author'
21766 Date='$Date'
21767 Header='$Header'
21768 Id='$Id'
21769 Locker='$Locker'
21770 Log='$Log'
21771 RCSfile='$RCSfile'
21772 Revision='$Revision'
21773 Source='$Source'
21774 State='$State'
21775 _a='$_a'
21776 _exe='$_exe'
21777 _o='$_o'
21778 afs='$afs'
21779 afsroot='$afsroot'
21780 alignbytes='$alignbytes'
21781 ansi2knr='$ansi2knr'
21782 aphostname='$aphostname'
21783 api_revision='$api_revision'
21784 api_subversion='$api_subversion'
21785 api_version='$api_version'
21786 api_versionstring='$api_versionstring'
21787 ar='$ar'
21788 archlib='$archlib'
21789 archlibexp='$archlibexp'
21790 archname64='$archname64'
21791 archname='$archname'
21792 archobjs='$archobjs'
21793 asctime_r_proto='$asctime_r_proto'
21794 awk='$awk'
21795 baserev='$baserev'
21796 bash='$bash'
21797 bin='$bin'
21798 binexp='$binexp'
21799 bison='$bison'
21800 byacc='$byacc'
21801 byteorder='$byteorder'
21802 c='$c'
21803 castflags='$castflags'
21804 cat='$cat'
21805 cc='$cc'
21806 cccdlflags='$cccdlflags'
21807 ccdlflags='$ccdlflags'
21808 ccflags='$ccflags'
21809 ccflags_uselargefiles='$ccflags_uselargefiles'
21810 ccname='$ccname'
21811 ccsymbols='$ccsymbols'
21812 ccversion='$ccversion'
21813 cf_by='$cf_by'
21814 cf_email='$cf_email'
21815 cf_time='$cf_time'
21816 chgrp='$chgrp'
21817 chmod='$chmod'
21818 chown='$chown'
21819 clocktype='$clocktype'
21820 comm='$comm'
21821 compress='$compress'
21822 contains='$contains'
21823 cp='$cp'
21824 cpio='$cpio'
21825 cpp='$cpp'
21826 cpp_stuff='$cpp_stuff'
21827 cppccsymbols='$cppccsymbols'
21828 cppflags='$cppflags'
21829 cpplast='$cpplast'
21830 cppminus='$cppminus'
21831 cpprun='$cpprun'
21832 cppstdin='$cppstdin'
21833 cppsymbols='$cppsymbols'
21834 crypt_r_proto='$crypt_r_proto'
21835 cryptlib='$cryptlib'
21836 csh='$csh'
21837 ctermid_r_proto='$ctermid_r_proto'
21838 ctime_r_proto='$ctime_r_proto'
21839 d_Gconvert='$d_Gconvert'
21840 d_PRIEUldbl='$d_PRIEUldbl'
21841 d_PRIFUldbl='$d_PRIFUldbl'
21842 d_PRIGUldbl='$d_PRIGUldbl'
21843 d_PRIXU64='$d_PRIXU64'
21844 d_PRId64='$d_PRId64'
21845 d_PRIeldbl='$d_PRIeldbl'
21846 d_PRIfldbl='$d_PRIfldbl'
21847 d_PRIgldbl='$d_PRIgldbl'
21848 d_PRIi64='$d_PRIi64'
21849 d_PRIo64='$d_PRIo64'
21850 d_PRIu64='$d_PRIu64'
21851 d_PRIx64='$d_PRIx64'
21852 d_SCNfldbl='$d_SCNfldbl'
21853 d__fwalk='$d__fwalk'
21854 d_access='$d_access'
21855 d_accessx='$d_accessx'
21856 d_aintl='$d_aintl'
21857 d_alarm='$d_alarm'
21858 d_archlib='$d_archlib'
21859 d_asctime_r='$d_asctime_r'
21860 d_atolf='$d_atolf'
21861 d_atoll='$d_atoll'
21862 d_attribute_format='$d_attribute_format'
21863 d_attribute_malloc='$d_attribute_malloc'
21864 d_attribute_nonnull='$d_attribute_nonnull'
21865 d_attribute_noreturn='$d_attribute_noreturn'
21866 d_attribute_pure='$d_attribute_pure'
21867 d_attribute_unused='$d_attribute_unused'
21868 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21869 d_bcmp='$d_bcmp'
21870 d_bcopy='$d_bcopy'
21871 d_bsd='$d_bsd'
21872 d_bsdgetpgrp='$d_bsdgetpgrp'
21873 d_bsdsetpgrp='$d_bsdsetpgrp'
21874 d_builtin_choose_expr='$d_builtin_choose_expr'
21875 d_builtin_expect='$d_builtin_expect'
21876 d_bzero='$d_bzero'
21877 d_c99_variadic_macros='$d_c99_variadic_macros'
21878 d_casti32='$d_casti32'
21879 d_castneg='$d_castneg'
21880 d_charvspr='$d_charvspr'
21881 d_chown='$d_chown'
21882 d_chroot='$d_chroot'
21883 d_chsize='$d_chsize'
21884 d_class='$d_class'
21885 d_clearenv='$d_clearenv'
21886 d_closedir='$d_closedir'
21887 d_cmsghdr_s='$d_cmsghdr_s'
21888 d_const='$d_const'
21889 d_copysignl='$d_copysignl'
21890 d_cplusplus='$d_cplusplus'
21891 d_crypt='$d_crypt'
21892 d_crypt_r='$d_crypt_r'
21893 d_csh='$d_csh'
21894 d_ctermid='$d_ctermid'
21895 d_ctermid_r='$d_ctermid_r'
21896 d_ctime_r='$d_ctime_r'
21897 d_cuserid='$d_cuserid'
21898 d_dbl_dig='$d_dbl_dig'
21899 d_dbminitproto='$d_dbminitproto'
21900 d_difftime='$d_difftime'
21901 d_dir_dd_fd='$d_dir_dd_fd'
21902 d_dirfd='$d_dirfd'
21903 d_dirnamlen='$d_dirnamlen'
21904 d_dlerror='$d_dlerror'
21905 d_dlopen='$d_dlopen'
21906 d_dlsymun='$d_dlsymun'
21907 d_dosuid='$d_dosuid'
21908 d_drand48_r='$d_drand48_r'
21909 d_drand48proto='$d_drand48proto'
21910 d_dup2='$d_dup2'
21911 d_eaccess='$d_eaccess'
21912 d_endgrent='$d_endgrent'
21913 d_endgrent_r='$d_endgrent_r'
21914 d_endhent='$d_endhent'
21915 d_endhostent_r='$d_endhostent_r'
21916 d_endnent='$d_endnent'
21917 d_endnetent_r='$d_endnetent_r'
21918 d_endpent='$d_endpent'
21919 d_endprotoent_r='$d_endprotoent_r'
21920 d_endpwent='$d_endpwent'
21921 d_endpwent_r='$d_endpwent_r'
21922 d_endsent='$d_endsent'
21923 d_endservent_r='$d_endservent_r'
21924 d_eofnblk='$d_eofnblk'
21925 d_eunice='$d_eunice'
21926 d_faststdio='$d_faststdio'
21927 d_fchdir='$d_fchdir'
21928 d_fchmod='$d_fchmod'
21929 d_fchown='$d_fchown'
21930 d_fcntl='$d_fcntl'
21931 d_fcntl_can_lock='$d_fcntl_can_lock'
21932 d_fd_macros='$d_fd_macros'
21933 d_fd_set='$d_fd_set'
21934 d_fds_bits='$d_fds_bits'
21935 d_fgetpos='$d_fgetpos'
21936 d_finite='$d_finite'
21937 d_finitel='$d_finitel'
21938 d_flexfnam='$d_flexfnam'
21939 d_flock='$d_flock'
21940 d_flockproto='$d_flockproto'
21941 d_fork='$d_fork'
21942 d_fp_class='$d_fp_class'
21943 d_fpathconf='$d_fpathconf'
21944 d_fpclass='$d_fpclass'
21945 d_fpclassify='$d_fpclassify'
21946 d_fpclassl='$d_fpclassl'
21947 d_fpos64_t='$d_fpos64_t'
21948 d_frexpl='$d_frexpl'
21949 d_fs_data_s='$d_fs_data_s'
21950 d_fseeko='$d_fseeko'
21951 d_fsetpos='$d_fsetpos'
21952 d_fstatfs='$d_fstatfs'
21953 d_fstatvfs='$d_fstatvfs'
21954 d_fsync='$d_fsync'
21955 d_ftello='$d_ftello'
21956 d_ftime='$d_ftime'
21957 d_futimes='$d_futimes'
21958 d_getcwd='$d_getcwd'
21959 d_getespwnam='$d_getespwnam'
21960 d_getfsstat='$d_getfsstat'
21961 d_getgrent='$d_getgrent'
21962 d_getgrent_r='$d_getgrent_r'
21963 d_getgrgid_r='$d_getgrgid_r'
21964 d_getgrnam_r='$d_getgrnam_r'
21965 d_getgrps='$d_getgrps'
21966 d_gethbyaddr='$d_gethbyaddr'
21967 d_gethbyname='$d_gethbyname'
21968 d_gethent='$d_gethent'
21969 d_gethname='$d_gethname'
21970 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21971 d_gethostbyname_r='$d_gethostbyname_r'
21972 d_gethostent_r='$d_gethostent_r'
21973 d_gethostprotos='$d_gethostprotos'
21974 d_getitimer='$d_getitimer'
21975 d_getlogin='$d_getlogin'
21976 d_getlogin_r='$d_getlogin_r'
21977 d_getmnt='$d_getmnt'
21978 d_getmntent='$d_getmntent'
21979 d_getnbyaddr='$d_getnbyaddr'
21980 d_getnbyname='$d_getnbyname'
21981 d_getnent='$d_getnent'
21982 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21983 d_getnetbyname_r='$d_getnetbyname_r'
21984 d_getnetent_r='$d_getnetent_r'
21985 d_getnetprotos='$d_getnetprotos'
21986 d_getpagsz='$d_getpagsz'
21987 d_getpbyname='$d_getpbyname'
21988 d_getpbynumber='$d_getpbynumber'
21989 d_getpent='$d_getpent'
21990 d_getpgid='$d_getpgid'
21991 d_getpgrp2='$d_getpgrp2'
21992 d_getpgrp='$d_getpgrp'
21993 d_getppid='$d_getppid'
21994 d_getprior='$d_getprior'
21995 d_getprotobyname_r='$d_getprotobyname_r'
21996 d_getprotobynumber_r='$d_getprotobynumber_r'
21997 d_getprotoent_r='$d_getprotoent_r'
21998 d_getprotoprotos='$d_getprotoprotos'
21999 d_getprpwnam='$d_getprpwnam'
22000 d_getpwent='$d_getpwent'
22001 d_getpwent_r='$d_getpwent_r'
22002 d_getpwnam_r='$d_getpwnam_r'
22003 d_getpwuid_r='$d_getpwuid_r'
22004 d_getsbyname='$d_getsbyname'
22005 d_getsbyport='$d_getsbyport'
22006 d_getsent='$d_getsent'
22007 d_getservbyname_r='$d_getservbyname_r'
22008 d_getservbyport_r='$d_getservbyport_r'
22009 d_getservent_r='$d_getservent_r'
22010 d_getservprotos='$d_getservprotos'
22011 d_getspnam='$d_getspnam'
22012 d_getspnam_r='$d_getspnam_r'
22013 d_gettimeod='$d_gettimeod'
22014 d_gmtime_r='$d_gmtime_r'
22015 d_gnulibc='$d_gnulibc'
22016 d_grpasswd='$d_grpasswd'
22017 d_hasmntopt='$d_hasmntopt'
22018 d_htonl='$d_htonl'
22019 d_ilogbl='$d_ilogbl'
22020 d_inc_version_list='$d_inc_version_list'
22021 d_index='$d_index'
22022 d_inetaton='$d_inetaton'
22023 d_int64_t='$d_int64_t'
22024 d_isascii='$d_isascii'
22025 d_isfinite='$d_isfinite'
22026 d_isinf='$d_isinf'
22027 d_isnan='$d_isnan'
22028 d_isnanl='$d_isnanl'
22029 d_killpg='$d_killpg'
22030 d_lchown='$d_lchown'
22031 d_ldbl_dig='$d_ldbl_dig'
22032 d_libm_lib_version='$d_libm_lib_version'
22033 d_link='$d_link'
22034 d_localtime_r='$d_localtime_r'
22035 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
22036 d_locconv='$d_locconv'
22037 d_lockf='$d_lockf'
22038 d_longdbl='$d_longdbl'
22039 d_longlong='$d_longlong'
22040 d_lseekproto='$d_lseekproto'
22041 d_lstat='$d_lstat'
22042 d_madvise='$d_madvise'
22043 d_malloc_good_size='$d_malloc_good_size'
22044 d_malloc_size='$d_malloc_size'
22045 d_mblen='$d_mblen'
22046 d_mbstowcs='$d_mbstowcs'
22047 d_mbtowc='$d_mbtowc'
22048 d_memchr='$d_memchr'
22049 d_memcmp='$d_memcmp'
22050 d_memcpy='$d_memcpy'
22051 d_memmove='$d_memmove'
22052 d_memset='$d_memset'
22053 d_mkdir='$d_mkdir'
22054 d_mkdtemp='$d_mkdtemp'
22055 d_mkfifo='$d_mkfifo'
22056 d_mkstemp='$d_mkstemp'
22057 d_mkstemps='$d_mkstemps'
22058 d_mktime='$d_mktime'
22059 d_mmap='$d_mmap'
22060 d_modfl='$d_modfl'
22061 d_modfl_pow32_bug='$d_modfl_pow32_bug'
22062 d_modflproto='$d_modflproto'
22063 d_mprotect='$d_mprotect'
22064 d_msg='$d_msg'
22065 d_msg_ctrunc='$d_msg_ctrunc'
22066 d_msg_dontroute='$d_msg_dontroute'
22067 d_msg_oob='$d_msg_oob'
22068 d_msg_peek='$d_msg_peek'
22069 d_msg_proxy='$d_msg_proxy'
22070 d_msgctl='$d_msgctl'
22071 d_msgget='$d_msgget'
22072 d_msghdr_s='$d_msghdr_s'
22073 d_msgrcv='$d_msgrcv'
22074 d_msgsnd='$d_msgsnd'
22075 d_msync='$d_msync'
22076 d_munmap='$d_munmap'
22077 d_mymalloc='$d_mymalloc'
22078 d_ndbm='$d_ndbm'
22079 d_nice='$d_nice'
22080 d_nl_langinfo='$d_nl_langinfo'
22081 d_nv_preserves_uv='$d_nv_preserves_uv'
22082 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
22083 d_off64_t='$d_off64_t'
22084 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
22085 d_oldpthreads='$d_oldpthreads'
22086 d_oldsock='$d_oldsock'
22087 d_open3='$d_open3'
22088 d_pathconf='$d_pathconf'
22089 d_pause='$d_pause'
22090 d_perl_otherlibdirs='$d_perl_otherlibdirs'
22091 d_phostname='$d_phostname'
22092 d_pipe='$d_pipe'
22093 d_poll='$d_poll'
22094 d_portable='$d_portable'
22095 d_printf_format_null='$d_printf_format_null'
22096 d_procselfexe='$d_procselfexe'
22097 d_pseudofork='$d_pseudofork'
22098 d_pthread_atfork='$d_pthread_atfork'
22099 d_pthread_attr_setscope='$d_pthread_attr_setscope'
22100 d_pthread_yield='$d_pthread_yield'
22101 d_pwage='$d_pwage'
22102 d_pwchange='$d_pwchange'
22103 d_pwclass='$d_pwclass'
22104 d_pwcomment='$d_pwcomment'
22105 d_pwexpire='$d_pwexpire'
22106 d_pwgecos='$d_pwgecos'
22107 d_pwpasswd='$d_pwpasswd'
22108 d_pwquota='$d_pwquota'
22109 d_qgcvt='$d_qgcvt'
22110 d_quad='$d_quad'
22111 d_random_r='$d_random_r'
22112 d_readdir64_r='$d_readdir64_r'
22113 d_readdir='$d_readdir'
22114 d_readdir_r='$d_readdir_r'
22115 d_readlink='$d_readlink'
22116 d_readv='$d_readv'
22117 d_recvmsg='$d_recvmsg'
22118 d_rename='$d_rename'
22119 d_rewinddir='$d_rewinddir'
22120 d_rmdir='$d_rmdir'
22121 d_safebcpy='$d_safebcpy'
22122 d_safemcpy='$d_safemcpy'
22123 d_sanemcmp='$d_sanemcmp'
22124 d_sbrkproto='$d_sbrkproto'
22125 d_scalbnl='$d_scalbnl'
22126 d_sched_yield='$d_sched_yield'
22127 d_scm_rights='$d_scm_rights'
22128 d_seekdir='$d_seekdir'
22129 d_select='$d_select'
22130 d_sem='$d_sem'
22131 d_semctl='$d_semctl'
22132 d_semctl_semid_ds='$d_semctl_semid_ds'
22133 d_semctl_semun='$d_semctl_semun'
22134 d_semget='$d_semget'
22135 d_semop='$d_semop'
22136 d_sendmsg='$d_sendmsg'
22137 d_setegid='$d_setegid'
22138 d_seteuid='$d_seteuid'
22139 d_setgrent='$d_setgrent'
22140 d_setgrent_r='$d_setgrent_r'
22141 d_setgrps='$d_setgrps'
22142 d_sethent='$d_sethent'
22143 d_sethostent_r='$d_sethostent_r'
22144 d_setitimer='$d_setitimer'
22145 d_setlinebuf='$d_setlinebuf'
22146 d_setlocale='$d_setlocale'
22147 d_setlocale_r='$d_setlocale_r'
22148 d_setnent='$d_setnent'
22149 d_setnetent_r='$d_setnetent_r'
22150 d_setpent='$d_setpent'
22151 d_setpgid='$d_setpgid'
22152 d_setpgrp2='$d_setpgrp2'
22153 d_setpgrp='$d_setpgrp'
22154 d_setprior='$d_setprior'
22155 d_setproctitle='$d_setproctitle'
22156 d_setprotoent_r='$d_setprotoent_r'
22157 d_setpwent='$d_setpwent'
22158 d_setpwent_r='$d_setpwent_r'
22159 d_setregid='$d_setregid'
22160 d_setresgid='$d_setresgid'
22161 d_setresuid='$d_setresuid'
22162 d_setreuid='$d_setreuid'
22163 d_setrgid='$d_setrgid'
22164 d_setruid='$d_setruid'
22165 d_setsent='$d_setsent'
22166 d_setservent_r='$d_setservent_r'
22167 d_setsid='$d_setsid'
22168 d_setvbuf='$d_setvbuf'
22169 d_sfio='$d_sfio'
22170 d_shm='$d_shm'
22171 d_shmat='$d_shmat'
22172 d_shmatprototype='$d_shmatprototype'
22173 d_shmctl='$d_shmctl'
22174 d_shmdt='$d_shmdt'
22175 d_shmget='$d_shmget'
22176 d_sigaction='$d_sigaction'
22177 d_signbit='$d_signbit'
22178 d_sigprocmask='$d_sigprocmask'
22179 d_sigsetjmp='$d_sigsetjmp'
22180 d_sitearch='$d_sitearch'
22181 d_snprintf='$d_snprintf'
22182 d_sockatmark='$d_sockatmark'
22183 d_sockatmarkproto='$d_sockatmarkproto'
22184 d_socket='$d_socket'
22185 d_socklen_t='$d_socklen_t'
22186 d_sockpair='$d_sockpair'
22187 d_socks5_init='$d_socks5_init'
22188 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
22189 d_sqrtl='$d_sqrtl'
22190 d_srand48_r='$d_srand48_r'
22191 d_srandom_r='$d_srandom_r'
22192 d_sresgproto='$d_sresgproto'
22193 d_sresuproto='$d_sresuproto'
22194 d_statblks='$d_statblks'
22195 d_statfs_f_flags='$d_statfs_f_flags'
22196 d_statfs_s='$d_statfs_s'
22197 d_statvfs='$d_statvfs'
22198 d_stdio_cnt_lval='$d_stdio_cnt_lval'
22199 d_stdio_ptr_lval='$d_stdio_ptr_lval'
22200 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
22201 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
22202 d_stdio_stream_array='$d_stdio_stream_array'
22203 d_stdiobase='$d_stdiobase'
22204 d_stdstdio='$d_stdstdio'
22205 d_strchr='$d_strchr'
22206 d_strcoll='$d_strcoll'
22207 d_strctcpy='$d_strctcpy'
22208 d_strerrm='$d_strerrm'
22209 d_strerror='$d_strerror'
22210 d_strerror_r='$d_strerror_r'
22211 d_strftime='$d_strftime'
22212 d_strlcat='$d_strlcat'
22213 d_strlcpy='$d_strlcpy'
22214 d_strtod='$d_strtod'
22215 d_strtol='$d_strtol'
22216 d_strtold='$d_strtold'
22217 d_strtoll='$d_strtoll'
22218 d_strtoq='$d_strtoq'
22219 d_strtoul='$d_strtoul'
22220 d_strtoull='$d_strtoull'
22221 d_strtouq='$d_strtouq'
22222 d_strxfrm='$d_strxfrm'
22223 d_suidsafe='$d_suidsafe'
22224 d_symlink='$d_symlink'
22225 d_syscall='$d_syscall'
22226 d_syscallproto='$d_syscallproto'
22227 d_sysconf='$d_sysconf'
22228 d_sysernlst='$d_sysernlst'
22229 d_syserrlst='$d_syserrlst'
22230 d_system='$d_system'
22231 d_tcgetpgrp='$d_tcgetpgrp'
22232 d_tcsetpgrp='$d_tcsetpgrp'
22233 d_telldir='$d_telldir'
22234 d_telldirproto='$d_telldirproto'
22235 d_time='$d_time'
22236 d_times='$d_times'
22237 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
22238 d_tm_tm_zone='$d_tm_tm_zone'
22239 d_tmpnam_r='$d_tmpnam_r'
22240 d_truncate='$d_truncate'
22241 d_ttyname_r='$d_ttyname_r'
22242 d_tzname='$d_tzname'
22243 d_u32align='$d_u32align'
22244 d_ualarm='$d_ualarm'
22245 d_umask='$d_umask'
22246 d_uname='$d_uname'
22247 d_union_semun='$d_union_semun'
22248 d_unordered='$d_unordered'
22249 d_unsetenv='$d_unsetenv'
22250 d_usleep='$d_usleep'
22251 d_usleepproto='$d_usleepproto'
22252 d_ustat='$d_ustat'
22253 d_vendorarch='$d_vendorarch'
22254 d_vendorbin='$d_vendorbin'
22255 d_vendorlib='$d_vendorlib'
22256 d_vendorscript='$d_vendorscript'
22257 d_vfork='$d_vfork'
22258 d_void_closedir='$d_void_closedir'
22259 d_voidsig='$d_voidsig'
22260 d_voidtty='$d_voidtty'
22261 d_volatile='$d_volatile'
22262 d_vprintf='$d_vprintf'
22263 d_vsnprintf='$d_vsnprintf'
22264 d_wait4='$d_wait4'
22265 d_waitpid='$d_waitpid'
22266 d_wcstombs='$d_wcstombs'
22267 d_wctomb='$d_wctomb'
22268 d_writev='$d_writev'
22269 d_xenix='$d_xenix'
22270 date='$date'
22271 db_hashtype='$db_hashtype'
22272 db_prefixtype='$db_prefixtype'
22273 db_version_major='$db_version_major'
22274 db_version_minor='$db_version_minor'
22275 db_version_patch='$db_version_patch'
22276 defvoidused='$defvoidused'
22277 direntrytype='$direntrytype'
22278 dlext='$dlext'
22279 dlsrc='$dlsrc'
22280 doublesize='$doublesize'
22281 drand01='$drand01'
22282 drand48_r_proto='$drand48_r_proto'
22283 dtrace='$dtrace'
22284 dynamic_ext='$dynamic_ext'
22285 eagain='$eagain'
22286 ebcdic='$ebcdic'
22287 echo='$echo'
22288 egrep='$egrep'
22289 emacs='$emacs'
22290 endgrent_r_proto='$endgrent_r_proto'
22291 endhostent_r_proto='$endhostent_r_proto'
22292 endnetent_r_proto='$endnetent_r_proto'
22293 endprotoent_r_proto='$endprotoent_r_proto'
22294 endpwent_r_proto='$endpwent_r_proto'
22295 endservent_r_proto='$endservent_r_proto'
22296 eunicefix='$eunicefix'
22297 exe_ext='$exe_ext'
22298 expr='$expr'
22299 extensions='$extensions'
22300 extras='$extras'
22301 fflushNULL='$fflushNULL'
22302 fflushall='$fflushall'
22303 find='$find'
22304 firstmakefile='$firstmakefile'
22305 flex='$flex'
22306 fpossize='$fpossize'
22307 fpostype='$fpostype'
22308 freetype='$freetype'
22309 from='$from'
22310 full_ar='$full_ar'
22311 full_csh='$full_csh'
22312 full_sed='$full_sed'
22313 gccansipedantic='$gccansipedantic'
22314 gccosandvers='$gccosandvers'
22315 gccversion='$gccversion'
22316 getgrent_r_proto='$getgrent_r_proto'
22317 getgrgid_r_proto='$getgrgid_r_proto'
22318 getgrnam_r_proto='$getgrnam_r_proto'
22319 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22320 gethostbyname_r_proto='$gethostbyname_r_proto'
22321 gethostent_r_proto='$gethostent_r_proto'
22322 getlogin_r_proto='$getlogin_r_proto'
22323 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22324 getnetbyname_r_proto='$getnetbyname_r_proto'
22325 getnetent_r_proto='$getnetent_r_proto'
22326 getprotobyname_r_proto='$getprotobyname_r_proto'
22327 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22328 getprotoent_r_proto='$getprotoent_r_proto'
22329 getpwent_r_proto='$getpwent_r_proto'
22330 getpwnam_r_proto='$getpwnam_r_proto'
22331 getpwuid_r_proto='$getpwuid_r_proto'
22332 getservbyname_r_proto='$getservbyname_r_proto'
22333 getservbyport_r_proto='$getservbyport_r_proto'
22334 getservent_r_proto='$getservent_r_proto'
22335 getspnam_r_proto='$getspnam_r_proto'
22336 gidformat='$gidformat'
22337 gidsign='$gidsign'
22338 gidsize='$gidsize'
22339 gidtype='$gidtype'
22340 glibpth='$glibpth'
22341 gmake='$gmake'
22342 gmtime_r_proto='$gmtime_r_proto'
22343 gnulibc_version='$gnulibc_version'
22344 grep='$grep'
22345 groupcat='$groupcat'
22346 groupstype='$groupstype'
22347 gzip='$gzip'
22348 h_fcntl='$h_fcntl'
22349 h_sysfile='$h_sysfile'
22350 hint='$hint'
22351 hostcat='$hostcat'
22352 html1dir='$html1dir'
22353 html1direxp='$html1direxp'
22354 html3dir='$html3dir'
22355 html3direxp='$html3direxp'
22356 i16size='$i16size'
22357 i16type='$i16type'
22358 i32size='$i32size'
22359 i32type='$i32type'
22360 i64size='$i64size'
22361 i64type='$i64type'
22362 i8size='$i8size'
22363 i8type='$i8type'
22364 i_arpainet='$i_arpainet'
22365 i_assert='$i_assert'
22366 i_bsdioctl='$i_bsdioctl'
22367 i_crypt='$i_crypt'
22368 i_db='$i_db'
22369 i_dbm='$i_dbm'
22370 i_dirent='$i_dirent'
22371 i_dld='$i_dld'
22372 i_dlfcn='$i_dlfcn'
22373 i_fcntl='$i_fcntl'
22374 i_float='$i_float'
22375 i_fp='$i_fp'
22376 i_fp_class='$i_fp_class'
22377 i_gdbm='$i_gdbm'
22378 i_gdbm_ndbm='$i_gdbm_ndbm'
22379 i_gdbmndbm='$i_gdbmndbm'
22380 i_grp='$i_grp'
22381 i_ieeefp='$i_ieeefp'
22382 i_inttypes='$i_inttypes'
22383 i_langinfo='$i_langinfo'
22384 i_libutil='$i_libutil'
22385 i_limits='$i_limits'
22386 i_locale='$i_locale'
22387 i_machcthr='$i_machcthr'
22388 i_malloc='$i_malloc'
22389 i_mallocmalloc='$i_mallocmalloc'
22390 i_math='$i_math'
22391 i_memory='$i_memory'
22392 i_mntent='$i_mntent'
22393 i_ndbm='$i_ndbm'
22394 i_netdb='$i_netdb'
22395 i_neterrno='$i_neterrno'
22396 i_netinettcp='$i_netinettcp'
22397 i_niin='$i_niin'
22398 i_poll='$i_poll'
22399 i_prot='$i_prot'
22400 i_pthread='$i_pthread'
22401 i_pwd='$i_pwd'
22402 i_rpcsvcdbm='$i_rpcsvcdbm'
22403 i_sfio='$i_sfio'
22404 i_sgtty='$i_sgtty'
22405 i_shadow='$i_shadow'
22406 i_socks='$i_socks'
22407 i_stdarg='$i_stdarg'
22408 i_stddef='$i_stddef'
22409 i_stdlib='$i_stdlib'
22410 i_string='$i_string'
22411 i_sunmath='$i_sunmath'
22412 i_sysaccess='$i_sysaccess'
22413 i_sysdir='$i_sysdir'
22414 i_sysfile='$i_sysfile'
22415 i_sysfilio='$i_sysfilio'
22416 i_sysin='$i_sysin'
22417 i_sysioctl='$i_sysioctl'
22418 i_syslog='$i_syslog'
22419 i_sysmman='$i_sysmman'
22420 i_sysmode='$i_sysmode'
22421 i_sysmount='$i_sysmount'
22422 i_sysndir='$i_sysndir'
22423 i_sysparam='$i_sysparam'
22424 i_syspoll='$i_syspoll'
22425 i_sysresrc='$i_sysresrc'
22426 i_syssecrt='$i_syssecrt'
22427 i_sysselct='$i_sysselct'
22428 i_syssockio='$i_syssockio'
22429 i_sysstat='$i_sysstat'
22430 i_sysstatfs='$i_sysstatfs'
22431 i_sysstatvfs='$i_sysstatvfs'
22432 i_systime='$i_systime'
22433 i_systimek='$i_systimek'
22434 i_systimes='$i_systimes'
22435 i_systypes='$i_systypes'
22436 i_sysuio='$i_sysuio'
22437 i_sysun='$i_sysun'
22438 i_sysutsname='$i_sysutsname'
22439 i_sysvfs='$i_sysvfs'
22440 i_syswait='$i_syswait'
22441 i_termio='$i_termio'
22442 i_termios='$i_termios'
22443 i_time='$i_time'
22444 i_unistd='$i_unistd'
22445 i_ustat='$i_ustat'
22446 i_utime='$i_utime'
22447 i_values='$i_values'
22448 i_varargs='$i_varargs'
22449 i_varhdr='$i_varhdr'
22450 i_vfork='$i_vfork'
22451 ignore_versioned_solibs='$ignore_versioned_solibs'
22452 inc_version_list='$inc_version_list'
22453 inc_version_list_init='$inc_version_list_init'
22454 incpath='$incpath'
22455 inews='$inews'
22456 initialinstalllocation='$initialinstalllocation'
22457 installarchlib='$installarchlib'
22458 installbin='$installbin'
22459 installhtml1dir='$installhtml1dir'
22460 installhtml3dir='$installhtml3dir'
22461 installman1dir='$installman1dir'
22462 installman3dir='$installman3dir'
22463 installprefix='$installprefix'
22464 installprefixexp='$installprefixexp'
22465 installprivlib='$installprivlib'
22466 installscript='$installscript'
22467 installsitearch='$installsitearch'
22468 installsitebin='$installsitebin'
22469 installsitehtml1dir='$installsitehtml1dir'
22470 installsitehtml3dir='$installsitehtml3dir'
22471 installsitelib='$installsitelib'
22472 installsiteman1dir='$installsiteman1dir'
22473 installsiteman3dir='$installsiteman3dir'
22474 installsitescript='$installsitescript'
22475 installstyle='$installstyle'
22476 installusrbinperl='$installusrbinperl'
22477 installvendorarch='$installvendorarch'
22478 installvendorbin='$installvendorbin'
22479 installvendorhtml1dir='$installvendorhtml1dir'
22480 installvendorhtml3dir='$installvendorhtml3dir'
22481 installvendorlib='$installvendorlib'
22482 installvendorman1dir='$installvendorman1dir'
22483 installvendorman3dir='$installvendorman3dir'
22484 installvendorscript='$installvendorscript'
22485 intsize='$intsize'
22486 issymlink='$issymlink'
22487 ivdformat='$ivdformat'
22488 ivsize='$ivsize'
22489 ivtype='$ivtype'
22490 known_extensions='$known_extensions'
22491 ksh='$ksh'
22492 ld='$ld'
22493 lddlflags='$lddlflags'
22494 ldflags='$ldflags'
22495 ldflags_uselargefiles='$ldflags_uselargefiles'
22496 ldlibpthname='$ldlibpthname'
22497 less='$less'
22498 lib_ext='$lib_ext'
22499 libc='$libc'
22500 libperl='$libperl'
22501 libpth='$libpth'
22502 libs='$libs'
22503 libsdirs='$libsdirs'
22504 libsfiles='$libsfiles'
22505 libsfound='$libsfound'
22506 libspath='$libspath'
22507 libswanted='$libswanted'
22508 libswanted_uselargefiles='$libswanted_uselargefiles'
22509 line='$line'
22510 lint='$lint'
22511 lkflags='$lkflags'
22512 ln='$ln'
22513 lns='$lns'
22514 localtime_r_proto='$localtime_r_proto'
22515 locincpth='$locincpth'
22516 loclibpth='$loclibpth'
22517 longdblsize='$longdblsize'
22518 longlongsize='$longlongsize'
22519 longsize='$longsize'
22520 lp='$lp'
22521 lpr='$lpr'
22522 ls='$ls'
22523 lseeksize='$lseeksize'
22524 lseektype='$lseektype'
22525 mad='$mad'
22526 madlyh='$madlyh'
22527 madlyobj='$madlyobj'
22528 madlysrc='$madlysrc'
22529 mail='$mail'
22530 mailx='$mailx'
22531 make='$make'
22532 make_set_make='$make_set_make'
22533 mallocobj='$mallocobj'
22534 mallocsrc='$mallocsrc'
22535 malloctype='$malloctype'
22536 man1dir='$man1dir'
22537 man1direxp='$man1direxp'
22538 man1ext='$man1ext'
22539 man3dir='$man3dir'
22540 man3direxp='$man3direxp'
22541 man3ext='$man3ext'
22542 mips_type='$mips_type'
22543 mistrustnm='$mistrustnm'
22544 mkdir='$mkdir'
22545 mmaptype='$mmaptype'
22546 modetype='$modetype'
22547 more='$more'
22548 multiarch='$multiarch'
22549 mv='$mv'
22550 myarchname='$myarchname'
22551 mydomain='$mydomain'
22552 myhostname='$myhostname'
22553 myuname='$myuname'
22554 n='$n'
22555 need_va_copy='$need_va_copy'
22556 netdb_hlen_type='$netdb_hlen_type'
22557 netdb_host_type='$netdb_host_type'
22558 netdb_name_type='$netdb_name_type'
22559 netdb_net_type='$netdb_net_type'
22560 nm='$nm'
22561 nm_opt='$nm_opt'
22562 nm_so_opt='$nm_so_opt'
22563 nonxs_ext='$nonxs_ext'
22564 nroff='$nroff'
22565 nvEUformat='$nvEUformat'
22566 nvFUformat='$nvFUformat'
22567 nvGUformat='$nvGUformat'
22568 nv_overflows_integers_at='$nv_overflows_integers_at'
22569 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22570 nveformat='$nveformat'
22571 nvfformat='$nvfformat'
22572 nvgformat='$nvgformat'
22573 nvsize='$nvsize'
22574 nvtype='$nvtype'
22575 o_nonblock='$o_nonblock'
22576 obj_ext='$obj_ext'
22577 old_pthread_create_joinable='$old_pthread_create_joinable'
22578 optimize='$optimize'
22579 orderlib='$orderlib'
22580 osname='$osname'
22581 osvers='$osvers'
22582 otherlibdirs='$otherlibdirs'
22583 package='$package'
22584 pager='$pager'
22585 passcat='$passcat'
22586 patchlevel='$patchlevel'
22587 path_sep='$path_sep'
22588 perl5='$perl5'
22589 perl='$perl'
22590 perl_patchlevel='$perl_patchlevel'
22591 perladmin='$perladmin'
22592 perllibs='$perllibs'
22593 perlpath='$perlpath'
22594 pg='$pg'
22595 phostname='$phostname'
22596 pidtype='$pidtype'
22597 plibpth='$plibpth'
22598 pmake='$pmake'
22599 pr='$pr'
22600 prefix='$prefix'
22601 prefixexp='$prefixexp'
22602 privlib='$privlib'
22603 privlibexp='$privlibexp'
22604 procselfexe='$procselfexe'
22605 prototype='$prototype'
22606 ptrsize='$ptrsize'
22607 quadkind='$quadkind'
22608 quadtype='$quadtype'
22609 randbits='$randbits'
22610 randfunc='$randfunc'
22611 random_r_proto='$random_r_proto'
22612 randseedtype='$randseedtype'
22613 ranlib='$ranlib'
22614 rd_nodata='$rd_nodata'
22615 readdir64_r_proto='$readdir64_r_proto'
22616 readdir_r_proto='$readdir_r_proto'
22617 revision='$revision'
22618 rm='$rm'
22619 rm_try='$rm_try'
22620 rmail='$rmail'
22621 run='$run'
22622 runnm='$runnm'
22623 sPRIEUldbl='$sPRIEUldbl'
22624 sPRIFUldbl='$sPRIFUldbl'
22625 sPRIGUldbl='$sPRIGUldbl'
22626 sPRIXU64='$sPRIXU64'
22627 sPRId64='$sPRId64'
22628 sPRIeldbl='$sPRIeldbl'
22629 sPRIfldbl='$sPRIfldbl'
22630 sPRIgldbl='$sPRIgldbl'
22631 sPRIi64='$sPRIi64'
22632 sPRIo64='$sPRIo64'
22633 sPRIu64='$sPRIu64'
22634 sPRIx64='$sPRIx64'
22635 sSCNfldbl='$sSCNfldbl'
22636 sched_yield='$sched_yield'
22637 scriptdir='$scriptdir'
22638 scriptdirexp='$scriptdirexp'
22639 sed='$sed'
22640 seedfunc='$seedfunc'
22641 selectminbits='$selectminbits'
22642 selecttype='$selecttype'
22643 sendmail='$sendmail'
22644 setgrent_r_proto='$setgrent_r_proto'
22645 sethostent_r_proto='$sethostent_r_proto'
22646 setlocale_r_proto='$setlocale_r_proto'
22647 setnetent_r_proto='$setnetent_r_proto'
22648 setprotoent_r_proto='$setprotoent_r_proto'
22649 setpwent_r_proto='$setpwent_r_proto'
22650 setservent_r_proto='$setservent_r_proto'
22651 sh='$sh'
22652 shar='$shar'
22653 sharpbang='$sharpbang'
22654 shmattype='$shmattype'
22655 shortsize='$shortsize'
22656 shrpenv='$shrpenv'
22657 shsharp='$shsharp'
22658 sig_count='$sig_count'
22659 sig_name='$sig_name'
22660 sig_name_init='$sig_name_init'
22661 sig_num='$sig_num'
22662 sig_num_init='$sig_num_init'
22663 sig_size='$sig_size'
22664 signal_t='$signal_t'
22665 sitearch='$sitearch'
22666 sitearchexp='$sitearchexp'
22667 sitebin='$sitebin'
22668 sitebinexp='$sitebinexp'
22669 sitehtml1dir='$sitehtml1dir'
22670 sitehtml1direxp='$sitehtml1direxp'
22671 sitehtml3dir='$sitehtml3dir'
22672 sitehtml3direxp='$sitehtml3direxp'
22673 sitelib='$sitelib'
22674 sitelib_stem='$sitelib_stem'
22675 sitelibexp='$sitelibexp'
22676 siteman1dir='$siteman1dir'
22677 siteman1direxp='$siteman1direxp'
22678 siteman3dir='$siteman3dir'
22679 siteman3direxp='$siteman3direxp'
22680 siteprefix='$siteprefix'
22681 siteprefixexp='$siteprefixexp'
22682 sitescript='$sitescript'
22683 sitescriptexp='$sitescriptexp'
22684 sizesize='$sizesize'
22685 sizetype='$sizetype'
22686 sleep='$sleep'
22687 smail='$smail'
22688 so='$so'
22689 sockethdr='$sockethdr'
22690 socketlib='$socketlib'
22691 socksizetype='$socksizetype'
22692 sort='$sort'
22693 spackage='$spackage'
22694 spitshell='$spitshell'
22695 srand48_r_proto='$srand48_r_proto'
22696 srandom_r_proto='$srandom_r_proto'
22697 src='$src'
22698 ssizetype='$ssizetype'
22699 startperl='$startperl'
22700 startsh='$startsh'
22701 static_ext='$static_ext'
22702 stdchar='$stdchar'
22703 stdio_base='$stdio_base'
22704 stdio_bufsiz='$stdio_bufsiz'
22705 stdio_cnt='$stdio_cnt'
22706 stdio_filbuf='$stdio_filbuf'
22707 stdio_ptr='$stdio_ptr'
22708 stdio_stream_array='$stdio_stream_array'
22709 strerror_r_proto='$strerror_r_proto'
22710 strings='$strings'
22711 submit='$submit'
22712 subversion='$subversion'
22713 sysman='$sysman'
22714 tail='$tail'
22715 tar='$tar'
22716 targetarch='$targetarch'
22717 tbl='$tbl'
22718 tee='$tee'
22719 test='$test'
22720 timeincl='$timeincl'
22721 timetype='$timetype'
22722 tmpnam_r_proto='$tmpnam_r_proto'
22723 to='$to'
22724 touch='$touch'
22725 tr='$tr'
22726 trnl='$trnl'
22727 troff='$troff'
22728 ttyname_r_proto='$ttyname_r_proto'
22729 u16size='$u16size'
22730 u16type='$u16type'
22731 u32size='$u32size'
22732 u32type='$u32type'
22733 u64size='$u64size'
22734 u64type='$u64type'
22735 u8size='$u8size'
22736 u8type='$u8type'
22737 uidformat='$uidformat'
22738 uidsign='$uidsign'
22739 uidsize='$uidsize'
22740 uidtype='$uidtype'
22741 uname='$uname'
22742 uniq='$uniq'
22743 uquadtype='$uquadtype'
22744 use5005threads='$use5005threads'
22745 use64bitall='$use64bitall'
22746 use64bitint='$use64bitint'
22747 usecrosscompile='$usecrosscompile'
22748 usedl='$usedl'
22749 usedtrace='$usedtrace'
22750 usefaststdio='$usefaststdio'
22751 useithreads='$useithreads'
22752 uselargefiles='$uselargefiles'
22753 uselongdouble='$uselongdouble'
22754 usemallocwrap='$usemallocwrap'
22755 usemorebits='$usemorebits'
22756 usemultiplicity='$usemultiplicity'
22757 usemymalloc='$usemymalloc'
22758 usenm='$usenm'
22759 useopcode='$useopcode'
22760 useperlio='$useperlio'
22761 useposix='$useposix'
22762 usereentrant='$usereentrant'
22763 userelocatableinc='$userelocatableinc'
22764 usesfio='$usesfio'
22765 useshrplib='$useshrplib'
22766 usesitecustomize='$usesitecustomize'
22767 usesocks='$usesocks'
22768 usethreads='$usethreads'
22769 usevendorprefix='$usevendorprefix'
22770 usevfork='$usevfork'
22771 usrinc='$usrinc'
22772 uuname='$uuname'
22773 uvXUformat='$uvXUformat'
22774 uvoformat='$uvoformat'
22775 uvsize='$uvsize'
22776 uvtype='$uvtype'
22777 uvuformat='$uvuformat'
22778 uvxformat='$uvxformat'
22779 vendorarch='$vendorarch'
22780 vendorarchexp='$vendorarchexp'
22781 vendorbin='$vendorbin'
22782 vendorbinexp='$vendorbinexp'
22783 vendorhtml1dir='$vendorhtml1dir'
22784 vendorhtml1direxp='$vendorhtml1direxp'
22785 vendorhtml3dir='$vendorhtml3dir'
22786 vendorhtml3direxp='$vendorhtml3direxp'
22787 vendorlib='$vendorlib'
22788 vendorlib_stem='$vendorlib_stem'
22789 vendorlibexp='$vendorlibexp'
22790 vendorman1dir='$vendorman1dir'
22791 vendorman1direxp='$vendorman1direxp'
22792 vendorman3dir='$vendorman3dir'
22793 vendorman3direxp='$vendorman3direxp'
22794 vendorprefix='$vendorprefix'
22795 vendorprefixexp='$vendorprefixexp'
22796 vendorscript='$vendorscript'
22797 vendorscriptexp='$vendorscriptexp'
22798 version='$version'
22799 version_patchlevel_string='$version_patchlevel_string'
22800 versiononly='$versiononly'
22801 vi='$vi'
22802 voidflags='$voidflags'
22803 xlibpth='$xlibpth'
22804 yacc='$yacc'
22805 yaccflags='$yaccflags'
22806 zcat='$zcat'
22807 zip='$zip'
22808 EOT
22809
22810 : Add in command line options if available
22811 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22812
22813 : add special variables
22814 $test -f $src/patchlevel.h && \
22815 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22816 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22817 echo "PERL_CONFIG_SH=true" >>config.sh
22818
22819 : propagate old symbols
22820 if $test -f UU/config.sh; then
22821         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22822         $sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' \
22823                 config.sh config.sh UU/oldconfig.sh |\
22824                 $sort | $uniq -u >UU/oldsyms
22825         set X `cat UU/oldsyms`
22826         shift
22827         case $# in
22828         0) ;;
22829         *)
22830                 cat <<EOM
22831 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22832 EOM
22833                 echo ": Variables propagated from previous config.sh file." >>config.sh
22834                 for sym in `cat UU/oldsyms`; do
22835                         echo "    Propagating $hint variable "'$'"$sym..."
22836                         eval 'tmp="$'"${sym}"'"'
22837                         echo "$tmp" | \
22838                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22839                 done
22840                 ;;
22841         esac
22842 fi
22843
22844 : Finish up by extracting the .SH files
22845 case "$alldone" in
22846 exit)
22847         $rm -rf UU
22848         echo "Extraction done."
22849         exit 0
22850         ;;
22851 cont)
22852         ;;
22853 '')
22854         dflt=''
22855         nostick=true
22856         $cat <<EOM
22857
22858 If you'd like to make any changes to the config.sh file before I begin
22859 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22860
22861 EOM
22862         rp="Press return or use a shell escape to edit config.sh:"
22863         . UU/myread
22864         nostick=''
22865         case "$ans" in
22866         '') ;;
22867         *) : in case they cannot read
22868                 sh 1>&4 -c "$ans";;
22869         esac
22870         ;;
22871 esac
22872
22873 : if this fails, just run all the .SH files by hand
22874 . ./config.sh
22875
22876 echo " "
22877 exec 1>&4
22878 pwd=`pwd`
22879 . ./UU/extract
22880 cd "$pwd"
22881
22882 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22883         dflt=y
22884         case "$silent" in
22885         true) ;;
22886         *)
22887                 $cat <<EOM
22888
22889 Now you need to generate make dependencies by running "$make depend".
22890 You might prefer to run it in background: "$make depend > makedepend.out &"
22891 It can take a while, so you might not want to run it right now.
22892
22893 EOM
22894                 ;;
22895         esac
22896         rp="Run $make depend now?"
22897         . UU/myread
22898         case "$ans" in
22899         y*)
22900                 $make depend && echo "Now you must run '$make'."
22901                 ;;
22902         *)
22903                 echo "You must run '$make depend' then '$make'."
22904                 ;;
22905         esac
22906 elif test -f [Mm]akefile; then
22907         echo " "
22908         echo "Now you must run a $make."
22909 else
22910         echo "Configure done."
22911 fi
22912
22913 if $test -f Policy.sh; then
22914     $cat <<EOM
22915
22916 If you compile $package on a different machine or from a different object
22917 directory, copy the Policy.sh file from this object directory to the
22918 new one before you run Configure -- this will help you with most of
22919 the policy defaults.
22920
22921 EOM
22922 fi
22923 if $test -f config.msg; then
22924     echo "Hmm.  I also noted the following information while running:"
22925     echo " "
22926     $cat config.msg >&4
22927     $rm -f config.msg
22928 fi
22929 $rm -f kit*isdone ark*isdone
22930 $rm -rf UU
22931
22932 : End of Configure
22933