This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #29397] Change in pod2man arguments
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu May  6 13:54:05 METDST 2004 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 usemallocwrap=''
946 usemymalloc=''
947 installman1dir=''
948 man1dir=''
949 man1direxp=''
950 man1ext=''
951 installman3dir=''
952 man3dir=''
953 man3direxp=''
954 man3ext=''
955 modetype=''
956 multiarch=''
957 mydomain=''
958 myhostname=''
959 phostname=''
960 c=''
961 n=''
962 d_eofnblk=''
963 eagain=''
964 o_nonblock=''
965 rd_nodata=''
966 need_va_copy=''
967 netdb_hlen_type=''
968 netdb_host_type=''
969 netdb_name_type=''
970 netdb_net_type=''
971 groupcat=''
972 hostcat=''
973 passcat=''
974 orderlib=''
975 ranlib=''
976 d_perl_otherlibdirs=''
977 otherlibdirs=''
978 package=''
979 spackage=''
980 pager=''
981 api_revision=''
982 api_subversion=''
983 api_version=''
984 api_versionstring=''
985 patchlevel=''
986 perl_patchlevel=''
987 revision=''
988 subversion=''
989 version=''
990 version_patchlevel_string=''
991 perl5=''
992 perladmin=''
993 perlpath=''
994 d_nv_preserves_uv=''
995 i16size=''
996 i16type=''
997 i32size=''
998 i32type=''
999 i64size=''
1000 i64type=''
1001 i8size=''
1002 i8type=''
1003 ivsize=''
1004 ivtype=''
1005 nv_preserves_uv_bits=''
1006 nvsize=''
1007 nvtype=''
1008 u16size=''
1009 u16type=''
1010 u32size=''
1011 u32type=''
1012 u64size=''
1013 u64type=''
1014 u8size=''
1015 u8type=''
1016 uvsize=''
1017 uvtype=''
1018 ivdformat=''
1019 nvEUformat=''
1020 nvFUformat=''
1021 nvGUformat=''
1022 nveformat=''
1023 nvfformat=''
1024 nvgformat=''
1025 uvXUformat=''
1026 uvoformat=''
1027 uvuformat=''
1028 uvxformat=''
1029 pidtype=''
1030 prefix=''
1031 prefixexp=''
1032 installprivlib=''
1033 privlib=''
1034 privlibexp=''
1035 prototype=''
1036 ptrsize=''
1037 d_PRIXU64=''
1038 d_PRId64=''
1039 d_PRIi64=''
1040 d_PRIo64=''
1041 d_PRIu64=''
1042 d_PRIx64=''
1043 sPRIXU64=''
1044 sPRId64=''
1045 sPRIi64=''
1046 sPRIo64=''
1047 sPRIu64=''
1048 sPRIx64=''
1049 d_quad=''
1050 quadkind=''
1051 quadtype=''
1052 uquadtype=''
1053 drand01=''
1054 randbits=''
1055 randfunc=''
1056 randseedtype=''
1057 seedfunc=''
1058 installscript=''
1059 scriptdir=''
1060 scriptdirexp=''
1061 selectminbits=''
1062 selecttype=''
1063 sh=''
1064 sig_count=''
1065 sig_name=''
1066 sig_name_init=''
1067 sig_num=''
1068 sig_num_init=''
1069 sig_size=''
1070 installsitearch=''
1071 sitearch=''
1072 sitearchexp=''
1073 installsitebin=''
1074 sitebin=''
1075 sitebinexp=''
1076 installsitehtml1dir=''
1077 sitehtml1dir=''
1078 sitehtml1direxp=''
1079 installsitehtml3dir=''
1080 sitehtml3dir=''
1081 sitehtml3direxp=''
1082 installsitelib=''
1083 sitelib=''
1084 sitelib_stem=''
1085 sitelibexp=''
1086 installsiteman1dir=''
1087 siteman1dir=''
1088 siteman1direxp=''
1089 installsiteman3dir=''
1090 siteman3dir=''
1091 siteman3direxp=''
1092 siteprefix=''
1093 siteprefixexp=''
1094 installsitescript=''
1095 sitescript=''
1096 sitescriptexp=''
1097 sizesize=''
1098 sizetype=''
1099 so=''
1100 socksizetype=''
1101 sharpbang=''
1102 shsharp=''
1103 spitshell=''
1104 src=''
1105 ssizetype=''
1106 startperl=''
1107 startsh=''
1108 stdchar=''
1109 d_stdio_stream_array=''
1110 stdio_stream_array=''
1111 sysman=''
1112 trnl=''
1113 uidformat=''
1114 uidsign=''
1115 uidsize=''
1116 uidtype=''
1117 archname64=''
1118 use64bitall=''
1119 use64bitint=''
1120 usefaststdio=''
1121 ccflags_uselargefiles=''
1122 ldflags_uselargefiles=''
1123 libswanted_uselargefiles=''
1124 uselargefiles=''
1125 uselongdouble=''
1126 usemorebits=''
1127 usemultiplicity=''
1128 nm_opt=''
1129 nm_so_opt=''
1130 runnm=''
1131 usenm=''
1132 useperlio=''
1133 usesocks=''
1134 d_oldpthreads=''
1135 use5005threads=''
1136 useithreads=''
1137 usereentrant=''
1138 usethreads=''
1139 incpath=''
1140 mips_type=''
1141 usrinc=''
1142 d_vendorarch=''
1143 installvendorarch=''
1144 vendorarch=''
1145 vendorarchexp=''
1146 d_vendorbin=''
1147 installvendorbin=''
1148 vendorbin=''
1149 vendorbinexp=''
1150 installvendorhtml1dir=''
1151 vendorhtml1dir=''
1152 vendorhtml1direxp=''
1153 installvendorhtml3dir=''
1154 vendorhtml3dir=''
1155 vendorhtml3direxp=''
1156 d_vendorlib=''
1157 installvendorlib=''
1158 vendorlib=''
1159 vendorlib_stem=''
1160 vendorlibexp=''
1161 installvendorman1dir=''
1162 vendorman1dir=''
1163 vendorman1direxp=''
1164 installvendorman3dir=''
1165 vendorman3dir=''
1166 vendorman3direxp=''
1167 usevendorprefix=''
1168 vendorprefix=''
1169 vendorprefixexp=''
1170 d_vendorscript=''
1171 installvendorscript=''
1172 vendorscript=''
1173 vendorscriptexp=''
1174 versiononly=''
1175 defvoidused=''
1176 voidflags=''
1177 yacc=''
1178 yaccflags=''
1179 CONFIG=''
1180
1181 define='define'
1182 undef='undef'
1183 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1184 rmlist=''
1185
1186 : We must find out about Eunice early
1187 eunicefix=':'
1188 if test -f /etc/unixtovms; then
1189         eunicefix=/etc/unixtovms
1190 fi
1191 if test -f /etc/unixtovms.exe; then
1192         eunicefix=/etc/unixtovms.exe
1193 fi
1194
1195 : Set executable suffix now -- needed before hints available
1196 if test -f "/libs/version.library"; then
1197 : Amiga OS
1198     _exe=""
1199 elif test -f "/system/gnu_library/bin/ar.pm"; then
1200 : Stratus VOS
1201     _exe=".pm"
1202 elif test -n "$DJGPP"; then
1203 : DOS DJGPP
1204     _exe=".exe"
1205 elif test -d c:/. -o -n "$is_os2" ; then
1206 : OS/2 or cygwin
1207     _exe=".exe"
1208 fi
1209
1210 i_whoami=''
1211 ccname=''
1212 ccversion=''
1213 perllibs=''
1214 : set useposix=false in your hint file to disable the POSIX extension.
1215 useposix=true
1216 : set useopcode=false in your hint file to disable the Opcode extension.
1217 useopcode=true
1218 : Trailing extension.  Override this in a hint file, if needed.
1219 : Extra object files, if any, needed on this platform.
1220 archobjs=''
1221 archname=''
1222 : Possible local include directories to search.
1223 : Set locincpth to "" in a hint file to defeat local include searches.
1224 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1225 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1226 :
1227 : no include file wanted by default
1228 inclwanted=''
1229
1230 groupstype=''
1231 libnames=''
1232 : change the next line if compiling for Xenix/286 on Xenix/386
1233 xlibpth='/usr/lib/386 /lib/386'
1234 : Possible local library directories to search.
1235 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1236 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1237
1238 : general looking path for locating libraries
1239 glibpth="/lib /usr/lib $xlibpth"
1240 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1241 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1242 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1243
1244 : Private path used by Configure to find libraries.  Its value
1245 : is prepended to libpth. This variable takes care of special
1246 : machines, like the mips.  Usually, it should be empty.
1247 plibpth=''
1248
1249 : default library list
1250 libswanted=''
1251 : some systems want to use only the non-versioned libso:s
1252 ignore_versioned_solibs=''
1253 siteman1dir=''
1254 siteman3dir=''
1255 sitescript=''
1256 archname64=''
1257 ccflags_uselargefiles=''
1258 ldflags_uselargefiles=''
1259 libswanted_uselargefiles=''
1260 : set usemultiplicity on the Configure command line to enable multiplicity.
1261 : set usesocks on the Configure command line to enable socks.
1262 : set usethreads on the Configure command line to enable threads.
1263 usereentrant='undef'
1264 : full support for void wanted by default
1265 defvoidused=15
1266
1267 : List of libraries we want.
1268 : If anyone needs extra -lxxx, put those in a hint file.
1269 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1270 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1271 : We probably want to search /usr/shlib before most other libraries.
1272 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1273 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274 glibpth="/usr/shlib $glibpth"
1275 : Do not use vfork unless overridden by a hint file.
1276 usevfork=false
1277
1278 : Find the basic shell for Bourne shell scripts
1279 case "$sh" in
1280 '')
1281         case "$SYSTYPE" in
1282         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283         *) xxx='/bin/sh';;
1284         esac
1285         if test -f "$xxx"; then
1286                 sh="$xxx"
1287         else
1288                 : Build up a list and do a single loop so we can 'break' out.
1289                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290                 for xxx in sh bash ksh pdksh ash; do
1291                         for p in $pth; do
1292                                 try="$try ${p}/${xxx}"
1293                         done
1294                 done
1295                 for xxx in $try; do
1296                         if test -f "$xxx"; then
1297                                 sh="$xxx";
1298                                 break
1299                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300                                 sh="$xxx";
1301                                 break
1302                         elif test -f "$xxx.exe"; then
1303                                 sh="$xxx";
1304                                 break
1305                         fi
1306                 done
1307         fi
1308         ;;
1309 esac
1310
1311 case "$sh" in
1312 '')     cat >&2 <<EOM
1313 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1314
1315 Usually it's in /bin/sh.  How did you even get this far?
1316 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1317 we'll try to straighten this all out.
1318 EOM
1319         exit 1
1320         ;;
1321 esac
1322
1323 : see if sh knows # comments
1324 if `$sh -c '#' >/dev/null 2>&1`; then
1325         shsharp=true
1326         spitshell=cat
1327         xcat=/bin/cat
1328         test -f $xcat$_exe || xcat=/usr/bin/cat
1329         if test ! -f $xcat$_exe; then
1330                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1331                         if test -f $p/cat$_exe; then
1332                                 xcat=$p/cat
1333                                 break
1334                         fi
1335                 done
1336                 if test ! -f $xcat$_exe; then
1337                         echo "Can't find cat anywhere!"
1338                         exit 1
1339                 fi
1340         fi
1341         echo "#!$xcat" >sharp
1342         $eunicefix sharp
1343         chmod +x sharp
1344         ./sharp > today
1345         if test -s today; then
1346                 sharpbang='#!'
1347         else
1348                 echo "#! $xcat" > sharp
1349                 $eunicefix sharp
1350                 chmod +x sharp
1351                 ./sharp > today
1352                 if test -s today; then
1353                         sharpbang='#! '
1354                 else
1355                         sharpbang=': use '
1356                 fi
1357         fi
1358 else
1359         echo " "
1360         echo "Your $sh doesn't grok # comments--I will strip them later on."
1361         shsharp=false
1362         cd ..
1363         echo "exec grep -v '^[  ]*#'" >spitshell
1364         chmod +x spitshell
1365         $eunicefix spitshell
1366         spitshell=`pwd`/spitshell
1367         cd UU
1368         echo "I presume that if # doesn't work, #! won't work either!"
1369         sharpbang=': use '
1370 fi
1371 rm -f sharp today
1372
1373 : figure out how to guarantee sh startup
1374 case "$startsh" in
1375 '') startsh=${sharpbang}${sh} ;;
1376 *)
1377 esac
1378 cat >sharp <<EOSS
1379 $startsh
1380 set abc
1381 test "$?abc" != 1
1382 EOSS
1383
1384 chmod +x sharp
1385 $eunicefix sharp
1386 if ./sharp; then
1387         : echo "Yup, it does."
1388 else
1389         echo "Hmm... '$startsh' does not guarantee sh startup..."
1390         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1391 fi
1392 rm -f sharp
1393
1394
1395 : Save command line options in file UU/cmdline.opt for later use in
1396 : generating config.sh.
1397 cat > cmdline.opt <<EOSH
1398 # Configure command line arguments.
1399 config_arg0='$0'
1400 config_args='$*'
1401 config_argc=$#
1402 EOSH
1403 argn=1
1404 args_exp=''
1405 args_sep=''
1406 for arg in "$@"; do
1407         cat >>cmdline.opt <<EOSH
1408 config_arg$argn='$arg'
1409 EOSH
1410         # Extreme backslashitis: replace each ' by '"'"'
1411         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412 $arg
1413 EOC
1414         arg_exp=`cat cmdl.opt`
1415         args_exp="$args_exp$args_sep'$arg_exp'"
1416         argn=`expr $argn + 1`
1417         args_sep=' '
1418 done
1419 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420 # used by ./hints/os2.sh
1421 rm -f cmdl.opt
1422
1423 : produce awk script to parse command line options
1424 cat >options.awk <<'EOF'
1425 BEGIN {
1426         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1427
1428         len = length(optstr);
1429         for (i = 1; i <= len; i++) {
1430                 c = substr(optstr, i, 1);
1431                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432                 if (a == ":") {
1433                         arg[c] = 1;
1434                         i++;
1435                 }
1436                 opt[c] = 1;
1437         }
1438 }
1439 {
1440         expect = 0;
1441         str = $0;
1442         if (substr(str, 1, 1) != "-") {
1443                 printf("'%s'\n", str);
1444                 next;
1445         }
1446         len = length($0);
1447         for (i = 2; i <= len; i++) {
1448                 c = substr(str, i, 1);
1449                 if (!opt[c]) {
1450                         printf("-%s\n", substr(str, i));
1451                         next;
1452                 }
1453                 printf("-%s\n", c);
1454                 if (arg[c]) {
1455                         if (i < len)
1456                                 printf("'%s'\n", substr(str, i + 1));
1457                         else
1458                                 expect = 1;
1459                         next;
1460                 }
1461         }
1462 }
1463 END {
1464         if (expect)
1465                 print "?";
1466 }
1467 EOF
1468
1469 : process the command line options
1470 set X `for arg in "$@"; do echo "X$arg"; done |
1471         sed -e s/X// | awk -f options.awk`
1472 eval "set $*"
1473 shift
1474 rm -f options.awk
1475
1476 : set up default values
1477 fastread=''
1478 reuseval=false
1479 config_sh=''
1480 alldone=''
1481 error=''
1482 silent=''
1483 extractsh=''
1484 override=''
1485 knowitall=''
1486 rm -f optdef.sh posthint.sh
1487 cat >optdef.sh <<EOS
1488 $startsh
1489 EOS
1490
1491
1492 : option parsing
1493 while test $# -gt 0; do
1494         case "$1" in
1495         -d) shift; fastread=yes;;
1496         -e) shift; alldone=cont;;
1497         -f)
1498                 shift
1499                 cd ..
1500                 if test -r "$1"; then
1501                         config_sh="$1"
1502                 else
1503                         echo "$me: cannot read config file $1." >&2
1504                         error=true
1505                 fi
1506                 cd UU
1507                 shift;;
1508         -h) shift; error=true;;
1509         -r) shift; reuseval=true;;
1510         -s) shift; silent=true; realsilent=true;;
1511         -E) shift; alldone=exit;;
1512         -K) shift; knowitall=true;;
1513         -O) shift; override=true;;
1514         -S) shift; silent=true; extractsh=true;;
1515         -D)
1516                 shift
1517                 case "$1" in
1518                 *=)
1519                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520                         echo "$me: ignoring -D $1" >&2
1521                         ;;
1522                 *=*) echo "$1" | \
1523                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524                 *) echo "$1='define'" >> optdef.sh;;
1525                 esac
1526                 shift
1527                 ;;
1528         -U)
1529                 shift
1530                 case "$1" in
1531                 *=) echo "$1" >> optdef.sh;;
1532                 *=*)
1533                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534                         echo "$me: ignoring -U $1" >&2
1535                         ;;
1536                 *) echo "$1='undef'" >> optdef.sh;;
1537                 esac
1538                 shift
1539                 ;;
1540         -A)
1541             shift
1542             xxx=''
1543             yyy="$1"
1544             zzz=''
1545             uuu=undef
1546             case "$yyy" in
1547             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1548                  case "$zzz" in
1549                  *:*) zzz='' ;;
1550                  *)   xxx=append
1551                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1552                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1553                  esac
1554                  ;;
1555             esac
1556             case "$xxx" in
1557             '')  case "$yyy" in
1558                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1563                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1564                  esac
1565                  ;;       
1566             esac
1567             case "$xxx" in
1568             append)
1569                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1570             clear)
1571                 echo "$yyy=''"                  >> posthint.sh ;;
1572             define)
1573                 case "$zzz" in
1574                 '') zzz=define ;;
1575                 esac
1576                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1577             eval)
1578                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1579             prepend)
1580                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1581             undef)
1582                 case "$zzz" in
1583                 '') zzz="$uuu" ;;
1584                 esac
1585                 echo "$yyy=$zzz"                >> posthint.sh ;;
1586             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1587             esac
1588             shift
1589             ;;
1590         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1591             exit 0;;
1592         --) break;;
1593         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1594         *) break;;
1595         esac
1596 done
1597
1598 case "$error" in
1599 true)
1600         cat >&2 <<EOM
1601 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1602                  [-U symbol] [-U symbol=] [-A command:symbol...]
1603   -d : use defaults for all answers.
1604   -e : go on without questioning past the production of config.sh.
1605   -f : specify an alternate default configuration file.
1606   -h : print this help message and exit (with an error status).
1607   -r : reuse C symbols value if possible (skips costly nm extraction).
1608   -s : silent mode, only echoes questions and essential information.
1609   -D : define symbol to have some value:
1610          -D symbol         symbol gets the value 'define'
1611          -D symbol=value   symbol gets the value 'value'
1612   -E : stop at the end of questions, after having produced config.sh.
1613   -K : do not use unless you know what you are doing.
1614   -O : let -D and -U override definitions from loaded configuration file.
1615   -S : perform variable substitutions on all .SH files (can mix with -f)
1616   -U : undefine symbol:
1617          -U symbol    symbol gets the value 'undef'
1618          -U symbol=   symbol gets completely empty
1619   -A : manipulate symbol after the platform specific hints have been applied:
1620          -A symbol=value                append " "value to symbol
1621          -A append:symbol=value         append value to symbol
1622          -A define:symbol=value         define symbol to have value
1623          -A clear:symbol                define symbol to be ''
1624          -A define:symbol               define symbol to be 'define'
1625          -A eval:symbol=value           define symbol to be eval of value
1626          -A prepend:symbol=value        prepend value to symbol
1627          -A undef:symbol                define symbol to be 'undef'
1628          -A undef:symbol=               define symbol to be ''
1629   -V : print version number and exit (with a zero status).
1630 EOM
1631         exit 1
1632         ;;
1633 esac
1634
1635 : Sanity checks
1636 case "$fastread$alldone" in
1637 yescont|yesexit) ;;
1638 *)
1639         case "$extractsh" in
1640         true) ;;
1641         *)
1642                 if test ! -t 0; then
1643                         echo "Say 'sh Configure', not 'sh <Configure'"
1644                         exit 1
1645                 fi
1646                 ;;
1647         esac
1648         ;;
1649 esac
1650
1651 exec 4>&1
1652 case "$silent" in
1653 true) exec 1>/dev/null;;
1654 esac
1655
1656 : run the defines and the undefines, if any, but leave the file out there...
1657 touch optdef.sh
1658 . ./optdef.sh
1659 : create the posthint manipulation script and leave the file out there...
1660 touch posthint.sh
1661
1662 : set package name
1663 package=perl5
1664 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669 esac
1670
1671 : Some greps do not return status, grrr.
1672 echo "grimblepritz" >grimble
1673 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674         contains=contains
1675 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676         contains=grep
1677 else
1678         contains=contains
1679 fi
1680 rm -f grimble
1681 : the following should work in any shell
1682 case "$contains" in
1683 contains*)
1684         echo " "
1685         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1686         cat >contains <<'EOSS'
1687 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688 EOSS
1689 chmod +x contains
1690 esac
1691
1692 : Find the path to the source tree
1693 case "$src" in
1694 '') case "$0" in
1695     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696          case "$src" in
1697          /*)    ;;
1698          .)     ;;
1699          *)     src=`cd ../$src && pwd` ;;
1700          esac
1701          ;;
1702     *)   src='.';;
1703     esac;;
1704 esac
1705 case "$src" in
1706 '')     src=/
1707         rsrc=/
1708         ;;
1709 /*) rsrc="$src";;
1710 *) rsrc="../$src";;
1711 esac
1712 if test -f $rsrc/Configure && \
1713         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714 then
1715    : found it, so we are ok.
1716 else
1717         rsrc=''
1718         for src in . .. ../.. ../../.. ../../../..; do
1719                 if test -f ../$src/Configure && \
1720                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721                 then
1722                         rsrc=../$src
1723                         break
1724                 fi
1725         done
1726 fi
1727 case "$rsrc" in
1728 '')
1729         cat <<EOM >&4
1730
1731 Sorry, I can't seem to locate the source dir for $package.  Please start
1732 Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734 EOM
1735         exit 1
1736         ;;
1737 ../.)   rsrc='..';;
1738 *)
1739         echo " "
1740         echo "Sources for $package found in \"$src\"." >&4
1741         ;;
1742 esac
1743
1744 : script used to extract .SH files with variable substitutions
1745 cat >extract <<'EOS'
1746 PERL_CONFIG_SH=true
1747 echo "Doing variable substitutions on .SH files..."
1748 if test -f MANIFEST; then
1749         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1750 else
1751         echo "(Looking for .SH files under the source directory.)"
1752         set x `(cd "$src"; find . -name "*.SH" -print)`
1753 fi
1754 shift
1755 case $# in
1756 0) set x `(cd "$src"; echo *.SH)`; shift;;
1757 esac
1758 if test ! -f "$src/$1"; then
1759         shift
1760 fi
1761 mkdir_p='
1762 name=$1;
1763 create="";
1764 while test $name; do
1765         if test ! -d "$name"; then
1766                 create="$name $create";
1767                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769         else
1770                 name="";
1771         fi;
1772 done;
1773 for file in $create; do
1774         mkdir $file;
1775 done
1776 '
1777 for file in $*; do
1778         case "$src" in
1779         ".")
1780                 case "$file" in
1781                 */*)
1782                         dir=`expr X$file : 'X\(.*\)/'`
1783                         file=`expr X$file : 'X.*/\(.*\)'`
1784                         (cd "$dir" && . ./$file)
1785                         ;;
1786                 *)
1787                         . ./$file
1788                         ;;
1789                 esac
1790                 ;;
1791         *)
1792                 case "$file" in
1793                 */*)
1794                         dir=`expr X$file : 'X\(.*\)/'`
1795                         file=`expr X$file : 'X.*/\(.*\)'`
1796                         (set x $dir; shift; eval $mkdir_p)
1797                         sh <"$src/$dir/$file"
1798                         ;;
1799                 *)
1800                         sh <"$src/$file"
1801                         ;;
1802                 esac
1803                 ;;
1804         esac
1805 done
1806 if test -f "$src/config_h.SH"; then
1807         if test ! -f config.h; then
1808         : oops, they left it out of MANIFEST, probably, so do it anyway.
1809         . "$src/config_h.SH"
1810         fi
1811 fi
1812 EOS
1813
1814 : extract files and exit if asked to do so
1815 case "$extractsh" in
1816 true)
1817         case "$realsilent" in
1818         true) ;;
1819         *) exec 1>&4;;
1820         esac
1821         case "$config_sh" in
1822         '') config_sh='config.sh';;
1823         esac
1824         echo " "
1825         echo "Fetching answers from $config_sh..."
1826         cd ..
1827         . $config_sh
1828         test "$override" && . ./optdef.sh
1829         echo " "
1830         . UU/extract
1831         rm -rf UU
1832         echo "Extraction done."
1833         exit 0
1834         ;;
1835 esac
1836
1837 : Eunice requires " " instead of "", can you believe it
1838 echo " "
1839 : Here we go...
1840 echo "Beginning of configuration questions for $package."
1841
1842 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
1844 : first determine how to suppress newline on echo command
1845 echo " "
1846 echo "Checking echo to see how to suppress newlines..."
1847 (echo "hi there\c" ; echo " ") >.echotmp
1848 if $contains c .echotmp >/dev/null 2>&1 ; then
1849         echo "...using -n."
1850         n='-n'
1851         c=''
1852 else
1853         cat <<'EOM'
1854 ...using \c
1855 EOM
1856         n=''
1857         c='\c'
1858 fi
1859 echo $n "The star should be here-->$c"
1860 echo '*'
1861 rm -f .echotmp
1862
1863 : Now test for existence of everything in MANIFEST
1864 echo " "
1865 if test -f "$rsrc/MANIFEST"; then
1866         echo "First let's make sure your kit is complete.  Checking..." >&4
1867         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1868         rm -f missing
1869         tmppwd=`pwd`
1870         for filelist in x??; do
1871                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1872         done
1873         if test -s missing; then
1874                 cat missing >&4
1875                 cat >&4 <<'EOM'
1876
1877 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879 You have the option of continuing the configuration process, despite the
1880 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1881 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1882 and contact the author (perlbug@perl.org).
1883
1884 EOM
1885                 echo $n "Continue? [n] $c" >&4
1886                 read ans
1887                 case "$ans" in
1888                 y*)
1889                         echo "Continuing..." >&4
1890                         rm -f missing
1891                         ;;
1892                 *)
1893                         echo "ABORTING..." >&4
1894                         kill $$
1895                         ;;
1896                 esac
1897         else
1898                 echo "Looks good..."
1899         fi
1900 else
1901         echo "There is no MANIFEST file.  I hope your kit is complete !"
1902 fi
1903 rm -f missing x??
1904
1905 echo " "
1906 : Find the appropriate value for a newline for tr
1907 if test -n "$DJGPP"; then
1908        trnl='\012'
1909 fi
1910 if test X"$trnl" = X; then
1911         case "`echo foo|tr '\n' x 2>/dev/null`" in
1912         foox) trnl='\n' ;;
1913         esac
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\012' x 2>/dev/null`" in
1917         foox) trnl='\012' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922        fooxy) trnl='\n\r' ;;
1923        esac
1924 fi
1925 if test X"$trnl" = X; then
1926         cat <<EOM >&2
1927
1928 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930 EOM
1931         exit 1
1932 fi
1933
1934 : compute the number of columns on the terminal for proper question formatting
1935 case "$COLUMNS" in
1936 '') COLUMNS='80';;
1937 esac
1938
1939 : set up the echo used in my read
1940 myecho="case \"\$xxxm\" in
1941 '') echo $n \"\$rp $c\" >&4;;
1942 *) case \"\$rp\" in
1943         '') echo $n \"[\$xxxm] $c\";;
1944         *)
1945                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1946                         echo \"\$rp\" >&4
1947                         echo $n \"[\$xxxm] $c\" >&4
1948                 else
1949                         echo $n \"\$rp [\$xxxm] $c\" >&4
1950                 fi
1951                 ;;
1952         esac;;
1953 esac"
1954
1955 : now set up to do reads with possible shell escape and default assignment
1956 cat <<EOSC >myread
1957 $startsh
1958 xxxm=\$dflt
1959 $myecho
1960 ans='!'
1961 case "\$fastread" in
1962 yes) case "\$dflt" in
1963         '') ;;
1964         *) ans='';
1965                 case "\$silent-\$rp" in
1966                 true-) ;;
1967                 *) echo " " >&4;;
1968                 esac;;
1969         esac;;
1970 *) case "\$silent" in
1971         true) case "\$rp" in
1972                 '') ans='';;
1973                 esac;;
1974         esac;;
1975 esac
1976 while expr "X\$ans" : "X!" >/dev/null; do
1977         read answ
1978         set x \$xxxm
1979         shift
1980         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1981         case  "\$answ" in
1982         "!")
1983                 sh 1>&4
1984                 echo " "
1985                 $myecho
1986                 ;;
1987         !*)
1988                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989                 shift
1990                 sh 1>&4 -c "\$*"
1991                 echo " "
1992                 $myecho
1993                 ;;
1994         "\$ans")
1995                 case "\$ans" in
1996                 \\&*)
1997                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998                         shift
1999                         case "\$1" in
2000                         -d)
2001                                 fastread=yes
2002                                 echo "(OK, I'll run with -d after this question.)" >&4
2003                                 ;;
2004                         -*)
2005                                 echo "*** Sorry, \$1 not supported yet." >&4
2006                                 ;;
2007                         esac
2008                         $myecho
2009                         ans=!
2010                         ;;
2011                 esac;;
2012         *)
2013                 case "\$aok" in
2014                 y)
2015                         echo "*** Substitution done -- please confirm."
2016                         xxxm="\$ans"
2017                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2018                         xxxm="\$ans"
2019                         ans=!
2020                         ;;
2021                 *)
2022                         echo "*** Error -- try again."
2023                         ans=!
2024                         ;;
2025                 esac
2026                 $myecho
2027                 ;;
2028         esac
2029         case "\$ans\$xxxm\$nostick" in
2030         '')
2031                 ans=!
2032                 $myecho
2033                 ;;
2034         esac
2035 done
2036 case "\$ans" in
2037 '') ans="\$xxxm";;
2038 esac
2039 EOSC
2040
2041 : create .config dir to save info across Configure sessions
2042 test -d ../.config || mkdir ../.config
2043 cat >../.config/README <<EOF
2044 This directory created by Configure to save information that should
2045 persist across sessions for $package.
2046
2047 You may safely delete it if you wish.
2048 EOF
2049
2050 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2051 case "$usedevel" in
2052 $define|true|[yY]*) ;;
2053 *) case "$xversion" in
2054    *[13579])
2055         cat >&4 <<EOH
2056 *** WHOA THERE!!! ***
2057
2058     This is an UNSTABLE DEVELOPMENT release.
2059     The version of this $package distribution is $xversion, that is, odd,
2060     (as opposed to even) and that signifies a development release.
2061     If you want a maintenance release, you want an even-numbered version.
2062
2063     Do ***NOT*** install this into production use.
2064     Data corruption and crashes are possible.
2065
2066     It is most seriously suggested that you do not continue any further
2067     unless you want to help in developing and debugging Perl.
2068
2069     If you *still* want to build perl, you can answer 'y' now,
2070     or pass -Dusedevel to Configure.
2071
2072 EOH
2073         rp='Do you really want to continue?'
2074         dflt='n'
2075         . ./myread
2076         case "$ans" in
2077         [yY]) echo >&4 "Okay, continuing."
2078               usedevel="$define" ;;
2079         *) echo >&4 "Okay, bye."
2080            exit 1
2081            ;;
2082         esac
2083         ;;
2084     esac
2085     ;;
2086 esac
2087 case "$usedevel" in
2088 $define|true|[yY]*)
2089         case "$versiononly" in
2090         '') versiononly="$define" ;;
2091         esac
2092         case "$installusrbinperl" in
2093         '') installusrbinperl="$undef" ;;
2094         esac
2095         ;;
2096 esac
2097
2098 : general instructions
2099 needman=true
2100 firsttime=true
2101 user=`(logname) 2>/dev/null`
2102 case "$user" in
2103 '') user=`whoami 2>&1`;;
2104 esac
2105 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106         firsttime=false
2107         echo " "
2108         rp='Would you like to see the instructions?'
2109         dflt=n
2110         . ./myread
2111         case "$ans" in
2112         [yY]*) ;;
2113         *) needman=false;;
2114         esac
2115 fi
2116 if $needman; then
2117         cat <<EOH
2118
2119 This installation shell script will examine your system and ask you questions
2120 to determine how the perl5 package should be installed. If you get
2121 stuck on a question, you may use a ! shell escape to start a subshell or
2122 execute a command.  Many of the questions will have default answers in square
2123 brackets; typing carriage return will give you the default.
2124
2125 On some of the questions which ask for file or directory names you are allowed
2126 to use the ~name construct to specify the login directory belonging to "name",
2127 even if you don't have a shell which knows about that.  Questions where this is
2128 allowed will be marked "(~name ok)".
2129
2130 EOH
2131         rp=''
2132         dflt='Type carriage return to continue'
2133         . ./myread
2134         cat <<'EOH'
2135
2136 The prompter used in this script allows you to use shell variables and
2137 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2138 in the default answer, as if the default line was a set of arguments given to a
2139 script shell.  This means you may also use $* to repeat the whole default line,
2140 so you do not have to re-type everything to add something to the default.
2141
2142 Everytime there is a substitution, you will have to confirm.  If there is an
2143 error (e.g. an unmatched backtick), the default answer will remain unchanged
2144 and you will be prompted again.
2145
2146 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2147 the questions and use the computed defaults (or the previous answers if there
2148 was already a config.sh file). Type 'Configure -h' for a list of options.
2149 You may also start interactively and then answer '& -d' at any prompt to turn
2150 on the non-interactive behaviour for the remainder of the execution.
2151
2152 EOH
2153         . ./myread
2154         cat <<EOH
2155
2156 Much effort has been expended to ensure that this shell script will run on any
2157 Unix system.  If despite that it blows up on yours, your best bet is to edit
2158 Configure and run it again.  If you can't run Configure for some reason,
2159 you'll have to generate a config.sh file by hand.  Whatever problems you
2160 have, let me (perlbug@perl.org) know how I blew it.
2161
2162 This installation script affects things in two ways:
2163
2164 1) it may do direct variable substitutions on some of the files included
2165    in this kit.
2166 2) it builds a config.h file for inclusion in C programs.  You may edit
2167    any of these files as the need arises after running this script.
2168
2169 If you make a mistake on a question, there is no easy way to back up to it
2170 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2171 files.  Configure will offer to let you do this before it runs the SH files.
2172
2173 EOH
2174         dflt='Type carriage return to continue'
2175         . ./myread
2176         case "$firsttime" in
2177         true) echo $user >>../.config/instruct;;
2178         esac
2179 fi
2180
2181 : find out where common programs are
2182 echo " "
2183 echo "Locating common programs..." >&4
2184 cat <<EOSC >loc
2185 $startsh
2186 case \$# in
2187 0) exit 1;;
2188 esac
2189 thing=\$1
2190 shift
2191 dflt=\$1
2192 shift
2193 for dir in \$*; do
2194         case "\$thing" in
2195         .)
2196         if test -d \$dir/\$thing; then
2197                 echo \$dir
2198                 exit 0
2199         fi
2200         ;;
2201         *)
2202         for thisthing in \$dir/\$thing; do
2203                 : just loop through to pick last item
2204         done
2205         if test -f \$thisthing; then
2206                 echo \$thisthing
2207                 exit 0
2208         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209                 echo \$thisthing
2210                 exit 0
2211         elif test -f \$dir/\$thing.exe; then
2212                 if test -n "$DJGPP"; then
2213                         echo \$dir/\$thing.exe
2214                 elif test "$eunicefix" != ":"; then
2215                         : on Eunice apparently
2216                         echo \$dir/\$thing
2217                         exit 0
2218                 fi
2219                 exit 0
2220         fi
2221         ;;
2222         esac
2223 done
2224 echo \$dflt
2225 exit 1
2226 EOSC
2227 chmod +x loc
2228 $eunicefix loc
2229 loclist="
2230 awk
2231 cat
2232 chmod
2233 comm
2234 cp
2235 echo
2236 expr
2237 grep
2238 ls
2239 mkdir
2240 rm
2241 sed
2242 sort
2243 touch
2244 tr
2245 uniq
2246 "
2247 trylist="
2248 Mcc
2249 ar
2250 bison
2251 byacc
2252 cpp
2253 csh
2254 date
2255 egrep
2256 gmake
2257 gzip
2258 less
2259 ln
2260 make
2261 more
2262 nm
2263 nroff
2264 pg
2265 test
2266 uname
2267 zip
2268 "
2269 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2270 pth="$pth /lib /usr/lib"
2271 for file in $loclist; do
2272         eval xxx=\$$file
2273         case "$xxx" in
2274         /*|?:[\\/]*)
2275                 if test -f "$xxx"; then
2276                         : ok
2277                 else
2278                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279                         xxx=`./loc $file $file $pth`
2280                 fi
2281                 ;;
2282         '') xxx=`./loc $file $file $pth`;;
2283         *) xxx=`./loc $xxx $xxx $pth`;;
2284         esac
2285         eval $file=$xxx$_exe
2286         eval _$file=$xxx
2287         case "$xxx" in
2288         /*)
2289                 echo $file is in $xxx.
2290                 ;;
2291         ?:[\\/]*)
2292                 echo $file is in $xxx.
2293                 ;;
2294         *)
2295                 echo "I don't know where '$file' is, and my life depends on it." >&4
2296                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2297                 exit 1
2298                 ;;
2299         esac
2300 done
2301 echo " "
2302 echo "Don't worry if any of the following aren't found..."
2303 say=offhand
2304 for file in $trylist; do
2305         eval xxx=\$$file
2306         case "$xxx" in
2307         /*|?:[\\/]*)
2308                 if test -f "$xxx"; then
2309                         : ok
2310                 else
2311                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312                         xxx=`./loc $file $file $pth`
2313                 fi
2314                 ;;
2315         '') xxx=`./loc $file $file $pth`;;
2316         *) xxx=`./loc $xxx $xxx $pth`;;
2317         esac
2318         eval $file=$xxx$_exe
2319         eval _$file=$xxx
2320         case "$xxx" in
2321         /*)
2322                 echo $file is in $xxx.
2323                 ;;
2324         ?:[\\/]*)
2325                 echo $file is in $xxx.
2326                 ;;
2327         *)
2328                 echo "I don't see $file out there, $say."
2329                 say=either
2330                 ;;
2331         esac
2332 done
2333 case "$egrep" in
2334 egrep)
2335         echo "Substituting grep for egrep."
2336         egrep=$grep
2337         _egrep=$grep
2338         ;;
2339 esac
2340 case "$ln" in
2341 ln)
2342         echo "Substituting cp for ln."
2343         ln=$cp
2344         _ln=$cp
2345         ;;
2346 esac
2347 case "$make" in
2348 make)   
2349         case "$gmake" in
2350         gmake)
2351         echo "I can't find make or gmake, and my life depends on it." >&4
2352         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353         exit 1
2354         ;;
2355         esac
2356         ;;
2357 esac    
2358 case "$gmake" in
2359 gmake)  ;;
2360 *)      # We can't have osname yet.
2361         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362                 # Assume that gmake, if found, is definitely GNU make
2363                 # and prefer it over the system make.
2364                 echo "Substituting gmake for make."
2365                 make=$gmake
2366                 _make=$gmake
2367         fi
2368         ;;
2369 esac
2370 case "$test" in
2371 test)
2372         echo "Hopefully test is built into your sh."
2373         ;;
2374 *)
2375         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2376                 echo "Using the test built into your sh."
2377                 test=test
2378                 _test=test
2379         fi
2380         ;;
2381 esac
2382 case "$echo" in
2383 echo)
2384         echo "Hopefully echo is built into your sh."
2385         ;;
2386 '') ;;
2387 *)
2388         echo " "
2389 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390         $echo $n "hi there$c" >foo1
2391         echo $n "hi there$c" >foo2
2392         if cmp foo1 foo2 >/dev/null 2>&1; then
2393                 echo "They are compatible.  In fact, they may be identical."
2394         else
2395                 case "$n" in
2396                 '-n') n='' c='\c';;
2397                 *) n='-n' c='';;
2398                 esac
2399                 cat <<FOO
2400 They are not compatible!  You are probably running ksh on a non-USG system.
2401 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402 have echo built in and we may have to run some Bourne shell scripts.  That
2403 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2404
2405 FOO
2406                 $echo $n "The star should be here-->$c"
2407                 $echo "*"
2408         fi
2409         $rm -f foo1 foo2
2410         ;;
2411 esac
2412
2413 cat <<EOS >trygcc
2414 $startsh
2415 EOS
2416 cat <<'EOSC' >>trygcc
2417 case "$cc" in
2418 '') ;;
2419 *)  $rm -f try try.*
2420     $cat >try.c <<EOM
2421 int main(int argc, char *argv[]) {
2422   return 0;
2423 }
2424 EOM
2425     if $cc -o try $ccflags $ldflags try.c; then
2426        :
2427     else
2428         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429         despair=yes
2430         trygcc=yes
2431         case "$cc" in
2432         *gcc*) trygcc=no ;;
2433         esac
2434         case "`$cc -v -c try.c 2>&1`" in
2435         *gcc*) trygcc=no ;;
2436         esac
2437         if $test X"$trygcc" = Xyes; then
2438             if gcc -o try -c try.c; then
2439                 echo " "
2440                 echo "You seem to have a working gcc, though." >&4
2441                 rp="Would you like to use it?"
2442                 dflt=y
2443                 if $test -f myread; then
2444                     . ./myread
2445                 else
2446                     if $test -f UU/myread; then
2447                         . ./UU/myread
2448                     else
2449                         echo "Cannot find myread, sorry.  Aborting." >&2
2450                         exit 1
2451                     fi
2452                 fi  
2453                 case "$ans" in
2454                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455                        if $test -f usethreads.cbu; then
2456                            $cat >&4 <<EOM 
2457
2458 *** However, any setting of the C compiler flags (e.g. for thread support)
2459 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2460 *** (together with e.g. -Dusethreads).
2461
2462 EOM
2463                        fi;;
2464                 esac
2465             fi
2466         fi
2467     fi
2468     $rm -f try try.*
2469     ;;
2470 esac
2471 EOSC
2472
2473 cat <<EOS >checkcc
2474 $startsh
2475 EOS
2476 cat <<'EOSC' >>checkcc
2477 case "$cc" in        
2478 '') ;;
2479 *)  $rm -f try try.*              
2480     $cat >try.c <<EOM
2481 int main(int argc, char *argv[]) {
2482   return 0;
2483 }
2484 EOM
2485     if $cc -o try $ccflags $ldflags try.c; then
2486        :
2487     else
2488         if $test X"$despair" = Xyes; then
2489            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490         fi
2491         $cat >&4 <<EOM         
2492 You need to find a working C compiler.
2493 Either (purchase and) install the C compiler supplied by your OS vendor,
2494 or for a free C compiler try http://gcc.gnu.org/
2495 I cannot continue any further, aborting.
2496 EOM
2497         exit 1
2498     fi
2499     $rm -f try try.*
2500     ;;
2501 esac
2502 EOSC
2503
2504 : determine whether symbolic links are supported
2505 echo " "
2506 $touch blurfl
2507 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508         echo "Symbolic links are supported." >&4
2509         lns="$ln -s"
2510 else
2511         echo "Symbolic links are NOT supported." >&4
2512         lns="$ln"
2513 fi
2514 $rm -f blurfl sym
2515
2516 : determine whether symbolic links are supported
2517 echo " "
2518 case "$lns" in
2519 *"ln"*" -s")
2520         echo "Checking how to test for symbolic links..." >&4
2521         $lns blurfl sym
2522         if $test "X$issymlink" = X; then
2523                 case "$newsh" in
2524                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 esac
2527                 if test $? = 0; then
2528                         issymlink="test -h"
2529                 else
2530                         echo "Your builtin 'test -h' may be broken." >&4
2531                         case "$test" in
2532                         /*)     ;;
2533                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534                                 for p in $pth
2535                                 do
2536                                         if test -f "$p/$test"; then
2537                                                 test="$p/$test"
2538                                                 break
2539                                         fi
2540                                 done
2541                                 ;;
2542                         esac
2543                         case "$test" in
2544                         /*)
2545                                 echo "Trying external '$test -h'." >&4
2546                                 issymlink="$test -h"
2547                                 if $test ! -h sym >/dev/null 2>&1; then
2548                                         echo "External '$test -h' is broken, too." >&4
2549                                         issymlink=''
2550                                 fi
2551                                 ;;
2552                         *)      issymlink='' ;;
2553                         esac
2554                 fi              
2555         fi
2556         if $test "X$issymlink" = X; then
2557                 if $test -L sym 2>/dev/null; then
2558                         issymlink="$test -L"
2559                         echo "The builtin '$test -L' worked." >&4
2560                 fi
2561         fi
2562         if $test "X$issymlink" != X; then
2563                 echo "You can test for symbolic links with '$issymlink'." >&4
2564         else
2565                 echo "I do not know how you can test for symbolic links." >&4
2566         fi
2567         $rm -f blurfl sym
2568         ;;
2569 *)      echo "No symbolic links, so not testing for their testing..." >&4
2570         ;;
2571 esac
2572 echo " "
2573
2574
2575 case "$mksymlinks" in
2576 $define|true|[yY]*)
2577         case "$src" in
2578         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579                 exit 1
2580                 ;;
2581         *)      case "$lns:$issymlink" in
2582                 *"ln"*" -s:"*"test -"?)
2583                         echo "Creating the symbolic links..." >&4
2584                         echo "(First creating the subdirectories...)" >&4
2585                         cd ..
2586                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587                                 read directory
2588                                 test -z "$directory" && break
2589                                 mkdir -p $directory
2590                         done
2591                         # Sanity check 1.
2592                         if test ! -d t/base; then
2593                                 echo "Failed to create the subdirectories.  Aborting." >&4
2594                                 exit 1
2595                         fi
2596                         echo "(Then creating the symlinks...)" >&4
2597                         awk '{print $1}' $src/MANIFEST | while true; do
2598                                 read filename
2599                                 test -z "$filename" && break
2600                                 if test -f $filename; then
2601                                         if $issymlink $filename; then
2602                                                 rm -f $filename
2603                                         fi
2604                                 fi
2605                                 if test -f $filename; then
2606                                         echo "$filename already exists, not symlinking."
2607                                 else
2608                                         ln -s $src/$filename $filename
2609                                 fi
2610                         done
2611                         # Sanity check 2.
2612                         if test ! -f t/base/lex.t; then
2613                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2614                                 exit 1
2615                         fi
2616                         cd UU
2617                         ;;
2618                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619                         ;;
2620                 esac
2621                 ;;
2622         esac
2623         ;;
2624 esac
2625
2626
2627 case "$usecrosscompile" in
2628 $define|true|[yY]*)
2629         $echo "Cross-compiling..."
2630         croak=''
2631         case "$cc" in
2632         *-*-gcc) # A cross-compiling gcc, probably.
2633             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2634             ar=$targetarch-ar
2635             # leave out ld, choosing it is more complex
2636             nm=$targetarch-nm
2637             ranlib=$targetarch-ranlib
2638             $echo 'extern int foo;' > try.c
2639             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2640             shift
2641             if $test $# -gt 0; then
2642                 incpth="$incpth $*"
2643                 incpth="`$echo $incpth|$sed 's/^ //'`"
2644                 echo "Guessing incpth '$incpth'." >&4
2645                 for i in $*; do
2646                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2647                     if $test -d $j; then
2648                         libpth="$libpth $j"
2649                     fi
2650                 done   
2651                 libpth="`$echo $libpth|$sed 's/^ //'`"
2652                 echo "Guessing libpth '$libpth'." >&4
2653             fi
2654             $rm -f try.c
2655             ;;
2656         esac
2657         case "$targetarch" in
2658         '') echo "Targetarch not defined." >&4; croak=y ;;
2659         *)  echo "Using targetarch $targetarch." >&4 ;;
2660         esac
2661         case "$incpth" in
2662         '') echo "Incpth not defined." >&4; croak=y ;;
2663         *)  echo "Using incpth '$incpth'." >&4 ;;
2664         esac
2665         case "$libpth" in
2666         '') echo "Libpth not defined." >&4; croak=y ;;
2667         *)  echo "Using libpth '$libpth'." >&4 ;;
2668         esac
2669         case "$usrinc" in
2670         '') for i in $incpth; do
2671                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672                     usrinc=$i
2673                     echo "Guessing usrinc $usrinc." >&4
2674                     break
2675                 fi
2676             done
2677             case "$usrinc" in
2678             '') echo "Usrinc not defined." >&4; croak=y ;;
2679             esac
2680             ;;
2681         *)  echo "Using usrinc $usrinc." >&4 ;;
2682         esac
2683         case "$targethost" in
2684         '') echo "Targethost not defined." >&4; croak=y ;;
2685         *)  echo "Using targethost $targethost." >&4
2686         esac
2687         locincpth=' '
2688         loclibpth=' '
2689         case "$croak" in
2690         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2691         esac
2692         case "$src" in
2693         /*) run=$src/Cross/run
2694             targetmkdir=$src/Cross/mkdir
2695             to=$src/Cross/to
2696             from=$src/Cross/from
2697             ;;
2698         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2699             run=$pwd/Cross/run
2700             targetmkdir=$pwd/Cross/mkdir
2701             to=$pwd/Cross/to
2702             from=$pwd/Cross/from
2703             ;;
2704         esac
2705         case "$targetrun" in
2706         '') targetrun=ssh ;;
2707         esac
2708         case "$targetto" in
2709         '') targetto=scp ;;
2710         esac
2711         case "$targetfrom" in
2712         '') targetfrom=scp ;;
2713         esac
2714         run=$run-$targetrun
2715         to=$to-$targetto
2716         from=$from-$targetfrom
2717         case "$targetdir" in
2718         '')  targetdir=/tmp
2719              echo "Guessing targetdir $targetdir." >&4
2720              ;;
2721         esac
2722         case "$targetuser" in
2723         '')  targetuser=root
2724              echo "Guessing targetuser $targetuser." >&4
2725              ;;
2726         esac
2727         case "$targetfrom" in
2728         scp)    q=-q ;;
2729         *)      q='' ;;
2730         esac
2731         case "$targetrun" in
2732         ssh|rsh)
2733             cat >$run <<EOF
2734 #!/bin/sh
2735 case "\$1" in
2736 -cwd)
2737   shift
2738   cwd=\$1
2739   shift
2740   ;;
2741 esac
2742 case "\$cwd" in
2743 '') cwd=$targetdir ;;
2744 esac
2745 exe=\$1
2746 shift
2747 if $test ! -f \$exe.xok; then
2748   $to \$exe
2749   $touch \$exe.xok
2750 fi
2751 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2752 EOF
2753             ;;
2754         *)  echo "Unknown targetrun '$targetrun'" >&4
2755             exit 1
2756             ;;
2757         esac
2758         case "$targetmkdir" in
2759         */Cross/mkdir)
2760             cat >$targetmkdir <<EOF
2761 #!/bin/sh
2762 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2763 EOF
2764             $chmod a+rx $targetmkdir
2765             ;;
2766         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2767             exit 1
2768             ;;
2769         esac
2770         case "$targetto" in
2771         scp|rcp)
2772             cat >$to <<EOF
2773 #!/bin/sh
2774 for f in \$@
2775 do
2776   case "\$f" in
2777   /*)
2778     $targetmkdir \`dirname \$f\`
2779     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2780     ;;
2781   *)
2782     $targetmkdir $targetdir/\`dirname \$f\`
2783     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784     ;;
2785   esac
2786 done
2787 exit 0
2788 EOF
2789             ;;
2790         cp) cat >$to <<EOF
2791 #!/bin/sh
2792 for f in \$@
2793 do
2794   case "\$f" in
2795   /*)
2796     $mkdir -p $targetdir/\`dirname \$f\`
2797     $cp \$f $targetdir/\$f || exit 1
2798     ;;
2799   *)
2800     $targetmkdir $targetdir/\`dirname \$f\`
2801     $cp \$f $targetdir/\$f || exit 1
2802     ;;
2803   esac
2804 done
2805 exit 0
2806 EOF
2807             ;;
2808         *)  echo "Unknown targetto '$targetto'" >&4
2809             exit 1
2810             ;;
2811         esac
2812         case "$targetfrom" in
2813         scp|rcp)
2814           cat >$from <<EOF
2815 #!/bin/sh
2816 for f in \$@
2817 do
2818   $rm -f \$f
2819   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820 done
2821 exit 0
2822 EOF
2823             ;;
2824         cp) cat >$from <<EOF
2825 #!/bin/sh
2826 for f in \$@
2827 do
2828   $rm -f \$f
2829   cp $targetdir/\$f . || exit 1
2830 done
2831 exit 0
2832 EOF
2833             ;;
2834         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2835             exit 1
2836             ;;
2837         esac
2838         if $test ! -f $run; then
2839             echo "Target 'run' script '$run' not found." >&4
2840         else
2841             $chmod a+rx $run
2842         fi
2843         if $test ! -f $to; then
2844             echo "Target 'to' script '$to' not found." >&4
2845         else
2846             $chmod a+rx $to
2847         fi
2848         if $test ! -f $from; then
2849             echo "Target 'from' script '$from' not found." >&4
2850         else
2851             $chmod a+rx $from
2852         fi
2853         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2854             exit 1
2855         fi
2856         cat >&4 <<EOF
2857 Using '$run' for remote execution,
2858 and '$from' and '$to'
2859 for remote file transfer.
2860 EOF
2861         ;;
2862 *)      run=''
2863         to=:
2864         from=:
2865         usecrosscompile='undef'
2866         targetarch=''
2867         ;;
2868 esac
2869
2870 : see whether [:lower:] and [:upper:] are supported character classes
2871 echo " "
2872 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873 ABYZ)
2874         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875         up='[:upper:]'
2876         low='[:lower:]'
2877         ;;
2878 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2879         # (0xd9 and 0xe2), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2882             rs) up='[A-Z]'
2883                 low='[a-z]'
2884                 ;;
2885             esac
2886         fi
2887         if test "X$up" = X -o "X$low" = X; then
2888             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2889             rs) up='A-Z'
2890                 low='a-z'
2891                 ;;
2892             esac
2893         fi
2894         if test "X$up" = X -o "X$low" = X; then
2895             case "`echo RS | od -x 2>/dev/null`" in
2896             *D9E2*|*d9e2*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     rs) up='[A-IJ-RS-Z]'
2901                         low='[a-ij-rs-z]'
2902                         ;;
2903                     esac
2904                 fi
2905                 if test "X$up" = X -o "X$low" = X; then
2906                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     rs) up='A-IJ-RS-Z'
2908                         low='a-ij-rs-z'
2909                         ;;
2910                     esac
2911                 fi
2912                 ;;
2913             esac
2914         fi
2915 esac
2916 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 rs)
2918     echo "Using $up and $low to convert case." >&4
2919     ;;
2920 *)
2921     echo "I don't know how to translate letters from upper to lower case." >&4
2922     echo "Your tr is not acting any way I know of." >&4
2923     exit 1
2924     ;;
2925 esac
2926 : set up the translation script tr, must be called with ./tr of course
2927 cat >tr <<EOSC
2928 $startsh
2929 case "\$1\$2" in
2930 '[A-Z][a-z]') exec $tr '$up' '$low';;
2931 '[a-z][A-Z]') exec $tr '$low' '$up';;
2932 esac
2933 exec $tr "\$@"
2934 EOSC
2935 chmod +x tr
2936 $eunicefix tr
2937
2938 : Try to determine whether config.sh was made on this system
2939 case "$config_sh" in
2940 '')
2941 myuname=`$uname -a 2>/dev/null`
2942 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2943 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944 # because the A-Z/a-z are not consecutive.
2945 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2946         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2947 newmyuname="$myuname"
2948 dflt=n
2949 case "$knowitall" in
2950 '')
2951         if test -f ../config.sh; then
2952                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953                         eval "`grep myuname= ../config.sh`"
2954                 fi
2955                 if test "X$myuname" = "X$newmyuname"; then
2956                         dflt=y
2957                 fi
2958         fi
2959         ;;
2960 *) dflt=y;;
2961 esac
2962
2963 : Get old answers from old config file if Configure was run on the
2964 : same system, otherwise use the hints.
2965 hint=default
2966 cd ..
2967 if test -f config.sh; then
2968         echo " "
2969         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2970         . UU/myread
2971         case "$ans" in
2972         n*|N*) echo "OK, I'll ignore it."
2973                 mv config.sh config.sh.old
2974                 myuname="$newmyuname"
2975                 ;;
2976         *)  echo "Fetching default answers from your old config.sh file..." >&4
2977                 tmp_n="$n"
2978                 tmp_c="$c"
2979                 tmp_sh="$sh"
2980                 . ./config.sh
2981                 cp config.sh UU
2982                 n="$tmp_n"
2983                 c="$tmp_c"
2984                 : Older versions did not always set $sh.  Catch re-use of such
2985                 : an old config.sh.
2986                 case "$sh" in
2987                 '') sh="$tmp_sh" ;;
2988                 esac
2989                 hint=previous
2990                 ;;
2991         esac
2992 fi
2993 . ./UU/checkcc
2994 if test ! -f config.sh; then
2995         $cat <<EOM
2996
2997 First time through, eh?  I have some defaults handy for some systems
2998 that need some extra help getting the Configure answers right:
2999
3000 EOM
3001         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3002         dflt=''
3003         : Half the following guesses are probably wrong... If you have better
3004         : tests or hints, please send them to perlbug@perl.org
3005         : The metaconfig authors would also appreciate a copy...
3006         $test -f /irix && osname=irix
3007         $test -f /xenix && osname=sco_xenix
3008         $test -f /dynix && osname=dynix
3009         $test -f /dnix && osname=dnix
3010         $test -f /lynx.os && osname=lynxos
3011         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3012         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /bin/mips && /bin/mips && osname=mips
3015         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3017         $test -d /usr/apollo/bin && osname=apollo
3018         $test -f /etc/saf/_sactab && osname=svr4
3019         $test -d /usr/include/minix && osname=minix
3020         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3021         if $test -d /MachTen -o -d /MachTen_Folder; then
3022                 osname=machten
3023                 if $test -x /sbin/version; then
3024                         osvers=`/sbin/version | $awk '{print $2}' |
3025                         $sed -e 's/[A-Za-z]$//'`
3026                 elif $test -x /usr/etc/version; then
3027                         osvers=`/usr/etc/version | $awk '{print $2}' |
3028                         $sed -e 's/[A-Za-z]$//'`
3029                 else
3030                         osvers="$2.$3"
3031                 fi
3032         fi
3033
3034         $test -f /sys/posix.dll &&
3035                 $test -f /usr/bin/what &&
3036                 set X `/usr/bin/what /sys/posix.dll` &&
3037                 $test "$3" = UWIN &&
3038                 osname=uwin &&
3039                 osvers="$5"
3040
3041         if $test -f $uname; then
3042                 set X $myuname
3043                 shift
3044
3045                 case "$5" in
3046                 fps*) osname=fps ;;
3047                 mips*)
3048                         case "$4" in
3049                         umips) osname=umips ;;
3050                         *) osname=mips ;;
3051                         esac;;
3052                 [23]100) osname=mips ;;
3053                 next*) osname=next ;;
3054                 i386*)
3055                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3057                                 osname='sco'
3058                                 osvers=$tmp
3059                         elif $test -f /etc/kconfig; then
3060                                 osname=isc
3061                                 if test "$lns" = "$ln -s"; then
3062                                         osvers=4
3063                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064                                         osvers=3
3065                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=2
3067                                 fi
3068                         fi
3069                         tmp=''
3070                         ;;
3071                 pc*)
3072                         if test -n "$DJGPP"; then
3073                                 osname=dos
3074                                 osvers=djgpp
3075                         fi
3076                         ;;
3077                 esac
3078
3079                 case "$1" in
3080                 aix) osname=aix
3081                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082                         case "$tmp" in
3083                         'not found') osvers="$4"."$3" ;;
3084                         '<3240'|'<>3240') osvers=3.2.0 ;;
3085                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086                         '=3250'|'>3250') osvers=3.2.5 ;;
3087                         *) osvers=$tmp;;
3088                         esac
3089                         ;;
3090                 bsd386) osname=bsd386
3091                         osvers=`$uname -r`
3092                         ;;
3093                 cygwin*) osname=cygwin
3094                         osvers="$3"
3095                         ;;
3096                 *dc.osx) osname=dcosx
3097                         osvers="$3"
3098                         ;;
3099                 dnix) osname=dnix
3100                         osvers="$3"
3101                         ;;
3102                 domainos) osname=apollo
3103                         osvers="$3"
3104                         ;;
3105                 dgux)   osname=dgux 
3106                         osvers="$3"
3107                         ;;
3108                 dynixptx*) osname=dynixptx
3109                         osvers=`echo "$4"|sed 's/^v//'`
3110                         ;;
3111                 freebsd) osname=freebsd 
3112                         osvers="$3" ;;
3113                 genix)  osname=genix ;;
3114                 gnu)    osname=gnu
3115                         osvers="$3" ;;
3116                 hp*)    osname=hpux 
3117                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3118                         ;;
3119                 irix*)  osname=irix
3120                         case "$3" in
3121                         4*) osvers=4 ;;
3122                         5*) osvers=5 ;;
3123                         *)      osvers="$3" ;;
3124                         esac
3125                         ;;
3126                 linux)  osname=linux
3127                         case "$3" in
3128                         *)      osvers="$3" ;;
3129                         esac
3130                         ;;
3131                 MiNT)   osname=mint
3132                         ;;
3133                 netbsd*) osname=netbsd
3134                         osvers="$3"
3135                         ;;
3136                 news-os) osvers="$3"
3137                         case "$3" in
3138                         4*) osname=newsos4 ;;
3139                         *) osname=newsos ;;
3140                         esac
3141                         ;;
3142                 next*) osname=next ;;
3143                 nonstop-ux) osname=nonstopux ;;
3144                 openbsd) osname=openbsd
3145                         osvers="$3"
3146                         ;;
3147                 os2)    osname=os2
3148                         osvers="$4"
3149                         ;;
3150                 POSIX-BC | posix-bc ) osname=posix-bc
3151                         osvers="$3"
3152                         ;;
3153                 powerux | power_ux | powermax_os | powermaxos | \
3154                 powerunix | power_unix) osname=powerux
3155                         osvers="$3"
3156                         ;;
3157                 qnx) osname=qnx
3158                         osvers="$4"
3159                         ;;
3160                 solaris) osname=solaris
3161                         case "$3" in
3162                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3163                         *)      osvers="$3" ;;
3164                         esac
3165                         ;;
3166                 sunos) osname=sunos
3167                         case "$3" in
3168                         5*) osname=solaris
3169                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3170                         *)      osvers="$3" ;;
3171                         esac
3172                         ;;
3173                 titanos) osname=titanos
3174                         case "$3" in
3175                         1*) osvers=1 ;;
3176                         2*) osvers=2 ;;
3177                         3*) osvers=3 ;;
3178                         4*) osvers=4 ;;
3179                         *)      osvers="$3" ;;
3180                         esac
3181                         ;;
3182                 ultrix) osname=ultrix
3183                         osvers="$3"
3184                         ;;
3185                 osf1|mls+)      case "$5" in
3186                                 alpha)
3187                                         osname=dec_osf
3188                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3189                                         case "$osvers" in
3190                                         [1-9].[0-9]*) ;;
3191                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3192                                         esac
3193                                         ;;
3194                         hp*)    osname=hp_osf1  ;;
3195                         mips)   osname=mips_osf1 ;;
3196                         esac
3197                         ;;
3198                 # UnixWare 7.1.2 is known as Open UNIX 8
3199                 openunix|unixware) osname=svr5
3200                         osvers="$4"
3201                         ;;
3202                 uts)    osname=uts
3203                         osvers="$3"
3204                         ;;
3205                 vos) osvers="$3"
3206                         ;;
3207                 $2) case "$osname" in
3208                         *isc*) ;;
3209                         *freebsd*) ;;
3210                         svr*)
3211                                 : svr4.x or possibly later
3212                                 case "svr$3" in 
3213                                 ${osname}*)
3214                                         osname=svr$3
3215                                         osvers=$4
3216                                         ;;
3217                                 esac
3218                                 case "$osname" in
3219                                 svr4.0)
3220                                         : Check for ESIX
3221                                         if test -f /stand/boot ; then
3222                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3223                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3224                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3225                                                         if test -n "$isesix"; then
3226                                                                 osname=esix4
3227                                                         fi
3228                                                 fi
3229                                         fi
3230                                         ;;
3231                                 esac
3232                                 ;;
3233                         *)      if test -f /etc/systemid; then
3234                                         osname=sco
3235                                         set `echo $3 | $sed 's/\./ /g'` $4
3236                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3237                                                 osvers=$1.$2.$3
3238                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3239                                                 osvers=$1.$2
3240                                         elif $test -f $src/hints/sco_$1.sh; then
3241                                                 osvers=$1
3242                                         fi
3243                                 else
3244                                         case "$osname" in
3245                                         '') : Still unknown.  Probably a generic Sys V.
3246                                                 osname="sysv"
3247                                                 osvers="$3"
3248                                                 ;;
3249                                         esac
3250                                 fi
3251                                 ;;
3252                         esac
3253                         ;;
3254                 *)      case "$osname" in
3255                         '') : Still unknown.  Probably a generic BSD.
3256                                 osname="$1"
3257                                 osvers="$3"
3258                                 ;;
3259                         esac
3260                         ;;
3261                 esac
3262         else
3263                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3264                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3265                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3266                                 osname=news_os
3267                         fi
3268                         $rm -f UU/kernel.what
3269                 elif test -d c:/. -o -n "$is_os2" ; then
3270                         set X $myuname
3271                         osname=os2
3272                         osvers="$5"
3273                 fi
3274         fi
3275         
3276         case "$targetarch" in
3277         '') ;;
3278         *)  hostarch=$osname
3279             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3280             osvers=''
3281             ;;
3282         esac
3283
3284         : Now look for a hint file osname_osvers, unless one has been
3285         : specified already.
3286         case "$hintfile" in
3287         ''|' ')
3288                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3289                 : Also try without trailing minor version numbers.
3290                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3291                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3292                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3293                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3294                 case "$file" in
3295                 '') dflt=none ;;
3296                 *)  case "$osvers" in
3297                         '') dflt=$file
3298                                 ;;
3299                         *)  if $test -f $src/hints/$file.sh ; then
3300                                         dflt=$file
3301                                 elif $test -f $src/hints/$xfile.sh ; then
3302                                         dflt=$xfile
3303                                 elif $test -f $src/hints/$xxfile.sh ; then
3304                                         dflt=$xxfile
3305                                 elif $test -f $src/hints/$xxxfile.sh ; then
3306                                         dflt=$xxxfile
3307                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3308                                         dflt=$xxxxfile
3309                                 elif $test -f "$src/hints/${osname}.sh" ; then
3310                                         dflt="${osname}"
3311                                 else
3312                                         dflt=none
3313                                 fi
3314                                 ;;
3315                         esac
3316                         ;;
3317                 esac
3318                 if $test -f Policy.sh ; then
3319                         case "$dflt" in
3320                         *Policy*) ;;
3321                         none) dflt="Policy" ;;
3322                         *) dflt="Policy $dflt" ;;
3323                         esac
3324                 fi
3325                 ;;
3326         *)
3327                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3328                 ;;
3329         esac
3330
3331         if $test -f Policy.sh ; then
3332                 $cat <<EOM
3333
3334 There's also a Policy hint file available, which should make the
3335 site-specific (policy) questions easier to answer.
3336 EOM
3337
3338         fi
3339
3340         $cat <<EOM
3341
3342 You may give one or more space-separated answers, or "none" if appropriate.
3343 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3344 is a good thing.  DO NOT give a wrong version or a wrong OS.
3345
3346 EOM
3347
3348         rp="Which of these apply, if any?"
3349         . UU/myread
3350         tans=$ans
3351         for file in $tans; do
3352                 if $test X$file = XPolicy -a -f Policy.sh; then
3353                         . Policy.sh
3354                         $cat Policy.sh >> UU/config.sh
3355                 elif $test -f $src/hints/$file.sh; then
3356                         . $src/hints/$file.sh
3357                         $cat $src/hints/$file.sh >> UU/config.sh
3358                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3359                         : nothing
3360                 else
3361                         : Give one chance to correct a possible typo.
3362                         echo "$file.sh does not exist"
3363                         dflt=$file
3364                         rp="hint to use instead?"
3365                         . UU/myread
3366                         for file in $ans; do
3367                                 if $test -f "$src/hints/$file.sh"; then
3368                                         . $src/hints/$file.sh
3369                                         $cat $src/hints/$file.sh >> UU/config.sh
3370                                 elif $test X$ans = X -o X$ans = Xnone ; then
3371                                         : nothing
3372                                 else
3373                                         echo "$file.sh does not exist -- ignored."
3374                                 fi
3375                         done
3376                 fi
3377         done
3378
3379         hint=recommended
3380         : Remember our hint file for later.
3381         if $test -f "$src/hints/$file.sh" ; then
3382                 hintfile="$file"
3383         else
3384                 hintfile=''
3385         fi
3386 fi
3387 cd UU
3388 ;;
3389 *)
3390         echo " "
3391         echo "Fetching default answers from $config_sh..." >&4
3392         tmp_n="$n"
3393         tmp_c="$c"
3394         cd ..
3395         cp $config_sh config.sh 2>/dev/null
3396         chmod +w config.sh
3397         . ./config.sh
3398         cd UU
3399         cp ../config.sh .
3400         n="$tmp_n"
3401         c="$tmp_c"
3402         hint=previous
3403         ;;
3404 esac
3405 test "$override" && . ./optdef.sh
3406
3407 : Restore computed paths
3408 for file in $loclist $trylist; do
3409         eval $file="\$_$file"
3410 done
3411
3412 cat << EOM
3413
3414 Configure uses the operating system name and version to set some defaults.
3415 The default value is probably right if the name rings a bell. Otherwise,
3416 since spelling matters for me, either accept the default or answer "none"
3417 to leave it blank.
3418
3419 EOM
3420 case "$osname" in
3421         ''|' ')
3422                 case "$hintfile" in
3423                 ''|' '|none) dflt=none ;;
3424                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3425                 esac
3426                 ;;
3427         *) dflt="$osname" ;;
3428 esac
3429 rp="Operating system name?"
3430 . ./myread
3431 case "$ans" in
3432 none)  osname='' ;;
3433 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3434 esac
3435 echo " "
3436 case "$osvers" in
3437         ''|' ')
3438                 case "$hintfile" in
3439                 ''|' '|none) dflt=none ;;
3440                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3441                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3442                         case "$dflt" in
3443                         ''|' ') dflt=none ;;
3444                         esac
3445                         ;;
3446                 esac
3447                 ;;
3448         *) dflt="$osvers" ;;
3449 esac
3450 rp="Operating system version?"
3451 . ./myread
3452 case "$ans" in
3453 none)  osvers='' ;;
3454 *) osvers="$ans" ;;
3455 esac
3456
3457
3458 . ./posthint.sh
3459
3460 : who configured the system
3461 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3462 case "$cf_by" in
3463 "")
3464         cf_by=`(logname) 2>/dev/null`
3465         case "$cf_by" in
3466         "")
3467                 cf_by=`(whoami) 2>/dev/null`
3468                 case "$cf_by" in
3469                 "") cf_by=unknown ;;
3470                 esac ;;
3471         esac ;;
3472 esac
3473
3474 : set up the script used to warn in case of inconsistency
3475 cat <<EOS >whoa
3476 $startsh
3477 EOS
3478 cat <<'EOSC' >>whoa
3479 dflt=y
3480 echo " "
3481 echo "*** WHOA THERE!!! ***" >&4
3482 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3483 rp="    Keep the $hint value?"
3484 . ./myread
3485 case "$ans" in
3486 y) td=$was; tu=$was;;
3487 esac
3488 EOSC
3489
3490 : function used to set $1 to $val
3491 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3492 case "$val$was" in
3493 $define$undef) . ./whoa; eval "$var=\$td";;
3494 $undef$define) . ./whoa; eval "$var=\$tu";;
3495 *) eval "$var=$val";;
3496 esac'
3497
3498 case "$usesocks" in
3499 $define|true|[yY]*)     dflt='y';;
3500 *) dflt='n';;
3501 esac
3502 cat <<EOM
3503
3504 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3505 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3506 to use the PerlIO abstraction layer, this will be implicitly selected.
3507
3508 If this doesn't make any sense to you, just accept the default '$dflt'.
3509 EOM
3510 rp='Build Perl for SOCKS?'
3511 . ./myread
3512 case "$ans" in
3513 y|Y)    val="$define" ;;     
3514 *)      val="$undef" ;;
3515 esac
3516 set usesocks
3517 eval $setvar
3518
3519 case "$usesocks" in
3520 $define|true|[yY]*) useperlio="$define";;
3521 esac
3522
3523 case "$useperlio" in
3524 $define|true|[yY]*|'')  dflt='y';;
3525 *) dflt='n';;
3526 esac
3527 cat <<EOM
3528
3529 Previous version of $package used the standard IO mechanisms as
3530 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3531 alternate IO mechanisms via the PerlIO abstraction layer, but the
3532 stdio mechanism is still available if needed.  The abstraction layer
3533 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3534 Using PerlIO with sfio may cause problems with some extension modules.
3535
3536 If this doesn't make any sense to you, just accept the default '$dflt'.
3537 EOM
3538 rp='Use the PerlIO abstraction layer?'
3539 . ./myread
3540 case "$ans" in
3541 y|Y) 
3542         val="$define"
3543         ;;
3544 *)      
3545         echo "Ok, doing things the stdio way."
3546         val="$undef"
3547         ;;
3548 esac
3549 set useperlio
3550 eval $setvar 
3551
3552 case "$usesocks" in
3553 $define|true|[yY]*)
3554         case "$useperlio" in
3555         $define|true|[yY]*) ;;
3556         *)      cat >&4 <<EOM
3557
3558 You are using the SOCKS proxy protocol library which means that you
3559 should also use the PerlIO layer.  You may be headed for trouble.
3560
3561 EOM
3562                 ;;
3563         esac
3564         ;;
3565 esac
3566
3567         
3568 case "$usethreads" in
3569 $define|true|[yY]*)     dflt='y';;
3570 *)     # Catch case where user specified ithreads or 5005threads but
3571        # forgot -Dusethreads (A.D. 4/2002)
3572        case "$useithreads$use5005threads" in
3573        *$define*)      
3574                 case "$useperlio" in
3575                 "$define")      dflt='y' ;;
3576                 *)              dflt='n' ;;
3577                 esac
3578                 ;;
3579        *)       dflt='n';;
3580        esac
3581        ;;
3582 esac
3583 cat <<EOM
3584
3585 Perl can be built to take advantage of threads on some systems.
3586 To do so, Configure can be run with -Dusethreads.
3587
3588 Note that Perl built with threading support runs slightly slower
3589 and uses more memory than plain Perl. The current implementation
3590 is believed to be stable, but it is fairly new, and so should be
3591 treated with caution.
3592
3593 If this doesn't make any sense to you, just accept the default '$dflt'.
3594 EOM
3595 rp='Build a threading Perl?'
3596 . ./myread
3597 case "$ans" in
3598 y|Y)    val="$define" ;;
3599 *)      val="$undef" ;;
3600 esac
3601 set usethreads
3602 eval $setvar
3603
3604 case "$usethreads" in
3605 $define)
3606         $cat <<EOM
3607
3608 Since release 5.6, Perl has had two different threading implementations,
3609 the newer interpreter-based version (ithreads) with one interpreter per
3610 thread, and the older 5.005 version (5005threads).
3611 The 5005threads version is effectively unmaintained and will probably be
3612 removed in Perl 5.10, so there should be no need to build a Perl using it
3613 unless needed for backwards compatibility with some existing 5.005threads
3614 code.
3615
3616 EOM
3617         : Default to ithreads unless overridden on command line or with
3618         : old config.sh
3619         dflt='y'
3620         case "$use5005threads" in
3621                 $define|true|[yY]*) dflt='n';;
3622         esac
3623         case "$useithreads" in
3624                 $undef|false|[nN]*) dflt='n';;
3625         esac
3626         rp='Use the newer interpreter-based ithreads?'
3627         . ./myread
3628         case "$ans" in
3629         y|Y)    val="$define" ;;
3630         *)      val="$undef" ;;
3631         esac
3632         set useithreads
3633         eval $setvar
3634         : Now set use5005threads to the opposite value.
3635         case "$useithreads" in
3636         $define) val="$undef" ;;
3637         *) val="$define" ;;
3638         esac
3639         set use5005threads
3640         eval $setvar
3641         ;;
3642 *)
3643         useithreads="$undef"
3644         use5005threads="$undef"
3645         ;;
3646 esac
3647
3648 case "$useithreads$use5005threads" in
3649 "$define$define")
3650         $cat >&4 <<EOM
3651
3652 You cannot have both the ithreads and the 5.005 threads enabled
3653 at the same time.  Disabling the 5.005 threads since they are
3654 much less stable than the ithreads.
3655
3656 EOM
3657         use5005threads="$undef"
3658         ;;
3659 esac
3660
3661 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3662         cat >&4 <<EOF
3663 ***
3664 *** To build with ithreads you must also use the PerlIO layer.
3665 *** Cannot continue, aborting.
3666 ***
3667 EOF
3668         exit 1
3669 fi
3670
3671 case "$d_oldpthreads" in
3672 '')     : Configure tests would be welcome here.  For now, assume undef.
3673         val="$undef" ;;
3674 *)      val="$d_oldpthreads" ;;
3675 esac
3676 set d_oldpthreads
3677 eval $setvar
3678
3679
3680 : Look for a hint-file generated 'call-back-unit'.  If the
3681 : user has specified that a threading perl is to be built,
3682 : we may need to set or change some other defaults.
3683 if $test -f usethreads.cbu; then
3684     echo "Your platform has some specific hints regarding threaded builds, using them..."
3685     . ./usethreads.cbu
3686 else
3687     case "$usethreads" in
3688         "$define"|true|[yY]*)
3689                 $cat <<EOM
3690 (Your platform does not have any specific hints for threaded builds.
3691  Assuming POSIX threads, then.)
3692 EOM
3693         ;;
3694     esac
3695 fi
3696
3697 cat <<EOM
3698
3699 Perl can be built so that multiple Perl interpreters can coexist
3700 within the same Perl executable.
3701 EOM
3702
3703 case "$useithreads" in
3704 $define)
3705         cat <<EOM
3706 This multiple interpreter support is required for interpreter-based threads.
3707 EOM
3708         val="$define"
3709         ;;
3710 *)      case "$usemultiplicity" in
3711         $define|true|[yY]*)     dflt='y';;
3712         *) dflt='n';;
3713         esac
3714         echo " "
3715         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3716         rp='Build Perl for multiplicity?'
3717         . ./myread
3718         case "$ans" in
3719         y|Y)    val="$define" ;;
3720         *)      val="$undef" ;;
3721         esac
3722         ;;
3723 esac
3724 set usemultiplicity
3725 eval $setvar
3726
3727
3728 case "$usemorebits" in
3729 "$define"|true|[yY]*)
3730         use64bitint="$define"
3731         uselongdouble="$define"
3732         usemorebits="$define"
3733         ;;
3734 *)      usemorebits="$undef"
3735         ;;
3736 esac
3737
3738 : make some quick guesses about what we are up against
3739 echo " "
3740 $echo $n "Hmm...  $c"
3741 echo exit 1 >bsd
3742 echo exit 1 >usg
3743 echo exit 1 >v7
3744 echo exit 1 >osf1
3745 echo exit 1 >eunice
3746 echo exit 1 >xenix
3747 echo exit 1 >venix
3748 echo exit 1 >os2
3749 d_bsd="$undef"
3750 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3751 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3752 then
3753         echo "Looks kind of like an OSF/1 system, but we'll see..."
3754         echo exit 0 >osf1
3755 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3756         xxx=`./loc addbib blurfl $pth`
3757         if $test -f $xxx; then
3758         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3759                 echo exit 0 >bsd
3760                 echo exit 0 >usg
3761         else
3762                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3763                         echo "Looks kind of like an extended USG system, but we'll see..."
3764                 else
3765                         echo "Looks kind of like a USG system, but we'll see..."
3766                 fi
3767                 echo exit 0 >usg
3768         fi
3769 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770         echo "Looks kind of like a BSD system, but we'll see..."
3771         d_bsd="$define"
3772         echo exit 0 >bsd
3773 else
3774         echo "Looks kind of like a Version 7 system, but we'll see..."
3775         echo exit 0 >v7
3776 fi
3777 case "$eunicefix" in
3778 *unixtovms*)
3779         $cat <<'EOI'
3780 There is, however, a strange, musty smell in the air that reminds me of
3781 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3782 EOI
3783         echo exit 0 >eunice
3784         d_eunice="$define"
3785 : it so happens the Eunice I know will not run shell scripts in Unix format
3786         ;;
3787 *)
3788         echo " "
3789         echo "Congratulations.  You aren't running Eunice."
3790         d_eunice="$undef"
3791         ;;
3792 esac
3793 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3794 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3795 : semicolon as a patch separator
3796 case "$p_" in
3797 :) ;;
3798 *)
3799         $cat <<'EOI'
3800 I have the feeling something is not exactly right, however...don't tell me...
3801 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3802 (Or you may be running DOS with DJGPP.)
3803 EOI
3804         echo exit 0 >os2
3805         ;;
3806 esac
3807 if test -f /xenix; then
3808         echo "Actually, this looks more like a XENIX system..."
3809         echo exit 0 >xenix
3810         d_xenix="$define"
3811 else
3812         echo " "
3813         echo "It's not Xenix..."
3814         d_xenix="$undef"
3815 fi
3816 chmod +x xenix
3817 $eunicefix xenix
3818 if test -f /venix; then
3819         echo "Actually, this looks more like a VENIX system..."
3820         echo exit 0 >venix
3821 else
3822         echo " "
3823         if ./xenix; then
3824                 : null
3825         else
3826                 echo "Nor is it Venix..."
3827         fi
3828 fi
3829 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3830 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3831 $rm -f foo
3832
3833 case "$cc" in
3834 '') dflt=cc;;
3835 *) dflt="$cc";;
3836 esac
3837 rp="Use which C compiler?"
3838 . ./myread
3839 cc="$ans"
3840
3841 : See if they have not cc but they do have gcc
3842 . ./trygcc
3843 : Look for a hint-file generated 'call-back-unit'.  Now that the
3844 : user has specified the compiler, we may need to set or change some
3845 : other defaults.
3846 if $test -f cc.cbu; then
3847     . ./cc.cbu
3848 fi
3849 . ./checkcc
3850
3851 echo " "
3852 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3853 $cat >try.c <<EOM
3854 #include <stdio.h>
3855 int main() {
3856 #ifdef __GNUC__
3857 #ifdef __VERSION__
3858         printf("%s\n", __VERSION__);
3859 #else
3860         printf("%s\n", "1");
3861 #endif
3862 #endif
3863         return(0);
3864 }
3865 EOM
3866 if $cc -o try $ccflags $ldflags try.c; then
3867         gccversion=`$run ./try`
3868         case "$gccversion" in
3869         '') echo "You are not using GNU cc." ;;
3870         *)  echo "You are using GNU cc $gccversion."
3871             ccname=gcc
3872             ;;
3873         esac
3874 else
3875         echo " "
3876         echo "*** WHOA THERE!!! ***" >&4
3877         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3878         case "$knowitall" in
3879         '')
3880         echo "    You'd better start hunting for one and let me know about it." >&4
3881                 exit 1
3882                 ;;
3883         esac
3884 fi
3885 $rm -f try try.*
3886 case "$gccversion" in
3887 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3888 esac
3889 case "$gccversion" in
3890 '') gccosandvers='' ;;
3891 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3892    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3893    gccshortvers=''
3894    ccflags="$ccflags -pipe"
3895    case "$gccosandvers" in
3896    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3897    $osname$osvers) ;; # looking good
3898    $osname*) cat <<EOM >&4
3899
3900 *** WHOA THERE!!! ***
3901
3902     Your gcc has not been compiled for the exact release of
3903     your operating system ($gccosandvers versus $osname$osvers).
3904
3905     In general it is a good idea to keep gcc synchronized with
3906     the operating system because otherwise serious problems
3907     may ensue when trying to compile software, like Perl.
3908
3909     I'm trying to be optimistic here, though, and will continue.
3910     If later during the configuration and build icky compilation
3911     problems appear (headerfile conflicts being the most common
3912     manifestation), I suggest reinstalling the gcc to match
3913     your operating system release.
3914
3915 EOM
3916       ;;
3917    *) gccosandvers='' ;; # failed to parse, better be silent
3918    esac
3919    ;;
3920 esac
3921 case "$ccname" in
3922 '') ccname="$cc" ;;
3923 esac
3924
3925 # gcc 3.* complain about adding -Idirectories that they already know about,
3926 # so we will take those off from locincpth.
3927 case "$gccversion" in
3928 3*)
3929     echo "main(){}">try.c
3930     for incdir in $locincpth; do
3931        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3932              grep '^c[cp]p*[01]: warning: changing search order '`
3933        if test "X$warn" != X; then
3934            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3935        fi
3936     done
3937     $rm -f try try.*
3938 esac
3939
3940 : decide how portable to be.  Allow command line overrides.
3941 case "$d_portable" in
3942 "$undef") ;;
3943 *)      d_portable="$define" ;;
3944 esac
3945
3946 : set up shell script to do ~ expansion
3947 cat >filexp <<EOSS
3948 $startsh
3949 : expand filename
3950 case "\$1" in
3951  ~/*|~)
3952         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3953         ;;
3954  ~*)
3955         if $test -f /bin/csh; then
3956                 /bin/csh -f -c "glob \$1"
3957                 failed=\$?
3958                 echo ""
3959                 exit \$failed
3960         else
3961                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3962                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3963                 if $test ! -d "\$dir"; then
3964                         me=\`basename \$0\`
3965                         echo "\$me: can't locate home directory for: \$name" >&2
3966                         exit 1
3967                 fi
3968                 case "\$1" in
3969                 */*)
3970                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3971                         ;;
3972                 *)
3973                         echo \$dir
3974                         ;;
3975                 esac
3976         fi
3977         ;;
3978 *)
3979         echo \$1
3980         ;;
3981 esac
3982 EOSS
3983 chmod +x filexp
3984 $eunicefix filexp
3985
3986 : now set up to get a file name
3987 cat <<EOS >getfile
3988 $startsh
3989 EOS
3990 cat <<'EOSC' >>getfile
3991 tilde=''
3992 fullpath=''
3993 already=''
3994 skip=''
3995 none_ok=''
3996 exp_file=''
3997 nopath_ok=''
3998 orig_rp="$rp"
3999 orig_dflt="$dflt"
4000 case "$gfpth" in
4001 '') gfpth='.' ;;
4002 esac
4003
4004 case "$fn" in
4005 *\(*)
4006         : getfile will accept an answer from the comma-separated list
4007         : enclosed in parentheses even if it does not meet other criteria.
4008         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4009         fn=`echo $fn | sed 's/(.*)//'`
4010         ;;
4011 esac
4012
4013 case "$fn" in
4014 *:*)
4015         loc_file=`expr $fn : '.*:\(.*\)'`
4016         fn=`expr $fn : '\(.*\):.*'`
4017         ;;
4018 esac
4019
4020 case "$fn" in
4021 *~*) tilde=true;;
4022 esac
4023 case "$fn" in
4024 */*) fullpath=true;;
4025 esac
4026 case "$fn" in
4027 *+*) skip=true;;
4028 esac
4029 case "$fn" in
4030 *n*) none_ok=true;;
4031 esac
4032 case "$fn" in
4033 *e*) exp_file=true;;
4034 esac
4035 case "$fn" in
4036 *p*) nopath_ok=true;;
4037 esac
4038
4039 case "$fn" in
4040 *f*) type='File';;
4041 *d*) type='Directory';;
4042 *l*) type='Locate';;
4043 esac
4044
4045 what="$type"
4046 case "$what" in
4047 Locate) what='File';;
4048 esac
4049
4050 case "$exp_file" in
4051 '')
4052         case "$d_portable" in
4053         "$define") ;;
4054         *) exp_file=true;;
4055         esac
4056         ;;
4057 esac
4058
4059 cd ..
4060 while test "$type"; do
4061         redo=''
4062         rp="$orig_rp"
4063         dflt="$orig_dflt"
4064         case "$tilde" in
4065         true) rp="$rp (~name ok)";;
4066         esac
4067         . UU/myread
4068         if test -f UU/getfile.ok && \
4069                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4070         then
4071                 value="$ans"
4072                 ansexp="$ans"
4073                 break
4074         fi
4075         case "$ans" in
4076         none)
4077                 value=''
4078                 ansexp=''
4079                 case "$none_ok" in
4080                 true) type='';;
4081                 esac
4082                 ;;
4083         *)
4084                 case "$tilde" in
4085                 '') value="$ans"
4086                         ansexp="$ans";;
4087                 *)
4088                         value=`UU/filexp $ans`
4089                         case $? in
4090                         0)
4091                                 if test "$ans" != "$value"; then
4092                                         echo "(That expands to $value on this system.)"
4093                                 fi
4094                                 ;;
4095                         *) value="$ans";;
4096                         esac
4097                         ansexp="$value"
4098                         case "$exp_file" in
4099                         '') value="$ans";;
4100                         esac
4101                         ;;
4102                 esac
4103                 case "$fullpath" in
4104                 true)
4105                         case "$ansexp" in
4106                         /*) value="$ansexp" ;;
4107                         [a-zA-Z]:/*) value="$ansexp" ;;
4108                         *)
4109                                 redo=true
4110                                 case "$already" in
4111                                 true)
4112                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4113                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4114                                         ;;
4115                                 *)
4116                                 echo "Please give a full path name, starting with slash." >&4
4117                                         case "$tilde" in
4118                                         true)
4119                                 echo "Note that using ~name is ok provided it expands well." >&4
4120                                                 already=true
4121                                                 ;;
4122                                         esac
4123                                 esac
4124                                 ;;
4125                         esac
4126                         ;;
4127                 esac
4128                 case "$redo" in
4129                 '')
4130                         case "$type" in
4131                         File)
4132                                 for fp in $gfpth; do
4133                                         if test "X$fp" = X.; then
4134                                             pf="$ansexp"
4135                                         else    
4136                                             pf="$fp/$ansexp"
4137                                         fi
4138                                         if test -f "$pf"; then
4139                                                 type=''
4140                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4141                                         then
4142                                                 echo "($value is not a plain file, but that's ok.)"
4143                                                 type=''
4144                                         fi
4145                                         if test X"$type" = X; then
4146                                             value="$pf"
4147                                             break
4148                                         fi
4149                                 done
4150                                 ;;
4151                         Directory)
4152                                 for fp in $gfpth; do
4153                                         if test "X$fp" = X.; then
4154                                             dir="$ans"
4155                                             direxp="$ansexp"
4156                                         else    
4157                                             dir="$fp/$ansexp"
4158                                             direxp="$fp/$ansexp"
4159                                         fi
4160                                         if test -d "$direxp"; then
4161                                                 type=''
4162                                                 value="$dir"
4163                                                 break
4164                                         fi
4165                                 done
4166                                 ;;
4167                         Locate)
4168                                 if test -d "$ansexp"; then
4169                                         echo "(Looking for $loc_file in directory $value.)"
4170                                         value="$value/$loc_file"
4171                                         ansexp="$ansexp/$loc_file"
4172                                 fi
4173                                 if test -f "$ansexp"; then
4174                                         type=''
4175                                 fi
4176                                 case "$nopath_ok" in
4177                                 true)   case "$value" in
4178                                         */*) ;;
4179                                         *)      echo "Assuming $value will be in people's path."
4180                                                 type=''
4181                                                 ;;
4182                                         esac
4183                                         ;;
4184                                 esac
4185                                 ;;
4186                         esac
4187
4188                         case "$skip" in
4189                         true) type='';
4190                         esac
4191
4192                         case "$type" in
4193                         '') ;;
4194                         *)
4195                                 if test "$fastread" = yes; then
4196                                         dflt=y
4197                                 else
4198                                         dflt=n
4199                                 fi
4200                                 rp="$what $value doesn't exist.  Use that name anyway?"
4201                                 . UU/myread
4202                                 dflt=''
4203                                 case "$ans" in
4204                                 y*) type='';;
4205                                 *) echo " ";;
4206                                 esac
4207                                 ;;
4208                         esac
4209                         ;;
4210                 esac
4211                 ;;
4212         esac
4213 done
4214 cd UU
4215 ans="$value"
4216 rp="$orig_rp"
4217 dflt="$orig_dflt"
4218 rm -f getfile.ok
4219 test "X$gfpthkeep" != Xy && gfpth=""
4220 EOSC
4221
4222 : What should the include directory be ?
4223 echo " "
4224 $echo $n "Hmm...  $c"
4225 dflt='/usr/include'
4226 incpath=''
4227 mips_type=''
4228 if $test -f /bin/mips && /bin/mips; then
4229         echo "Looks like a MIPS system..."
4230         $cat >usr.c <<'EOCP'
4231 #ifdef SYSTYPE_BSD43
4232 /bsd43
4233 #endif
4234 EOCP
4235         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4236                 dflt='/bsd43/usr/include'
4237                 incpath='/bsd43'
4238                 mips_type='BSD 4.3'
4239         else
4240                 mips_type='System V'
4241         fi
4242         $rm -f usr.c usr.out
4243         echo "and you're compiling with the $mips_type compiler and libraries."
4244         xxx_prompt=y
4245         echo "exit 0" >mips
4246 else
4247         echo "Doesn't look like a MIPS system."
4248         xxx_prompt=n
4249         echo "exit 1" >mips
4250 fi
4251 chmod +x mips
4252 $eunicefix mips
4253 case "$usrinc" in
4254 '') ;;
4255 *) dflt="$usrinc";;
4256 esac
4257 case "$xxx_prompt" in
4258 y)      fn=d/
4259         echo " "
4260         rp='Where are the include files you want to use?'
4261         . ./getfile
4262         usrinc="$ans"
4263         ;;
4264 *)      usrinc="$dflt"
4265         ;;
4266 esac
4267
4268 : see how we invoke the C preprocessor
4269 echo " "
4270 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4271 cat <<'EOT' >testcpp.c
4272 #define ABC abc
4273 #define XYZ xyz
4274 ABC.XYZ
4275 EOT
4276 cd ..
4277 if test ! -f cppstdin; then
4278         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4279                 # AIX cc -E doesn't show the absolute headerfile
4280                 # locations but we'll cheat by using the -M flag.
4281                 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
4282         else
4283                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4284         fi
4285 else
4286         echo "Keeping your $hint cppstdin wrapper."
4287 fi
4288 chmod 755 cppstdin
4289 wrapper=`pwd`/cppstdin
4290 ok='false'
4291 cd UU
4292
4293 if $test "X$cppstdin" != "X" && \
4294         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4295         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4296 then
4297         echo "You used to use $cppstdin $cppminus so we'll use that again."
4298         case "$cpprun" in
4299         '') echo "But let's see if we can live without a wrapper..." ;;
4300         *)
4301                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4302                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4303                 then
4304                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4305                         ok='true'
4306                 else
4307                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4308                 fi
4309                 ;;
4310         esac
4311 else
4312         case "$cppstdin" in
4313         '') ;;
4314         *)
4315                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4316                 ;;
4317         esac
4318 fi
4319
4320 if $ok; then
4321         : nothing
4322 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4323         $cc -E <testcpp.c >testcpp.out 2>&1; \
4324         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4325         echo "Yup, it does."
4326         x_cpp="$cc -E"
4327         x_minus='';
4328 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4329         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4331         echo "Yup, it does."
4332         x_cpp="$cc -E"
4333         x_minus='-';
4334 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4335         $cc -P <testcpp.c >testcpp.out 2>&1; \
4336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4337         echo "Yipee, that works!"
4338         x_cpp="$cc -P"
4339         x_minus='';
4340 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4341         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4343         echo "At long last!"
4344         x_cpp="$cc -P"
4345         x_minus='-';
4346 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4347         $cpp <testcpp.c >testcpp.out 2>&1; \
4348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4349         echo "It works!"
4350         x_cpp="$cpp"
4351         x_minus='';
4352 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4353         $cpp - <testcpp.c >testcpp.out 2>&1; \
4354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4355         echo "Hooray, it works!  I was beginning to wonder."
4356         x_cpp="$cpp"
4357         x_minus='-';
4358 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4359         $wrapper <testcpp.c >testcpp.out 2>&1; \
4360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361         x_cpp="$wrapper"
4362         x_minus=''
4363         echo "Eureka!"
4364 else
4365         dflt=''
4366         rp="No dice.  I can't find a C preprocessor.  Name one:"
4367         . ./myread
4368         x_cpp="$ans"
4369         x_minus=''
4370         $x_cpp <testcpp.c >testcpp.out 2>&1
4371         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4372                 echo "OK, that will do." >&4
4373         else
4374 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4375                 exit 1
4376         fi
4377 fi
4378
4379 case "$ok" in
4380 false)
4381         cppstdin="$x_cpp"
4382         cppminus="$x_minus"
4383         cpprun="$x_cpp"
4384         cpplast="$x_minus"
4385         set X $x_cpp
4386         shift
4387         case "$1" in
4388         "$cpp")
4389                 echo "Perhaps can we force $cc -E using a wrapper..."
4390                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4391                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4392                 then
4393                         echo "Yup, we can."
4394                         cppstdin="$wrapper"
4395                         cppminus='';
4396                 else
4397                         echo "Nope, we'll have to live without it..."
4398                 fi
4399                 ;;
4400         esac
4401         case "$cpprun" in
4402         "$wrapper")
4403                 cpprun=''
4404                 cpplast=''
4405                 ;;
4406         esac
4407         ;;
4408 esac
4409
4410 case "$cppstdin" in
4411 "$wrapper"|'cppstdin') ;;
4412 *) $rm -f $wrapper;;
4413 esac
4414 $rm -f testcpp.c testcpp.out
4415
4416 : Set private lib path
4417 case "$plibpth" in
4418 '') if ./mips; then
4419                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4420         fi;;
4421 esac
4422 case "$libpth" in
4423 ' ') dlist='';;
4424 '') dlist="$loclibpth $plibpth $glibpth";;
4425 *) dlist="$libpth";;
4426 esac
4427
4428 : Now check and see which directories actually exist, avoiding duplicates
4429 libpth=''
4430 for xxx in $dlist
4431 do
4432     if $test -d $xxx; then
4433                 case " $libpth " in
4434                 *" $xxx "*) ;;
4435                 *) libpth="$libpth $xxx";;
4436                 esac
4437     fi
4438 done
4439 $cat <<'EOM'
4440
4441 Some systems have incompatible or broken versions of libraries.  Among
4442 the directories listed in the question below, please remove any you
4443 know not to be holding relevant libraries, and add any that are needed.
4444 Say "none" for none.
4445
4446 EOM
4447 case "$libpth" in
4448 '') dflt='none';;
4449 *)
4450         set X $libpth
4451         shift
4452         dflt=${1+"$@"}
4453         ;;
4454 esac
4455 rp="Directories to use for library searches?"
4456 . ./myread
4457 case "$ans" in
4458 none) libpth=' ';;
4459 *) libpth="$ans";;
4460 esac
4461
4462 : compute shared library extension
4463 case "$so" in
4464 '')
4465         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4466                 dflt='sl'
4467         else
4468                 dflt='so'
4469         fi
4470         ;;
4471 *) dflt="$so";;
4472 esac
4473 $cat <<EOM
4474
4475 On some systems, shared libraries may be available.  Answer 'none' if
4476 you want to suppress searching of shared libraries for the remainder
4477 of this configuration.
4478
4479 EOM
4480 rp='What is the file extension used for shared libraries?'
4481 . ./myread
4482 so="$ans"
4483
4484 : Define several unixisms.
4485 : Hints files or command line option can be used to override them.
4486 : The convoluted testing is in case hints files set either the old
4487 : or the new name.
4488 case "$_exe" in
4489 '')     case "$exe_ext" in
4490         '')     ;;
4491         *)      _exe="$exe_ext" ;;
4492         esac
4493         ;;
4494 esac
4495 case "$_a" in
4496 '')     case "$lib_ext" in
4497     '') _a='.a';;
4498         *)      _a="$lib_ext" ;;
4499         esac
4500         ;;
4501 esac
4502 case "$_o" in
4503 '') case "$obj_ext" in
4504         '')     _o='.o';;
4505         *)      _o="$obj_ext";;
4506         esac
4507         ;;
4508 esac
4509 case "$p_" in
4510 '') case "$path_sep" in
4511         '')     p_=':';;
4512         *)      p_="$path_sep";;
4513         esac
4514         ;;
4515 esac
4516 exe_ext=$_exe
4517 lib_ext=$_a
4518 obj_ext=$_o
4519 path_sep=$p_
4520
4521 : Which makefile gets called first.  This is used by make depend.
4522 case "$firstmakefile" in
4523 '') firstmakefile='makefile';;
4524 esac
4525
4526 case "$ccflags" in
4527 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4528 esac
4529
4530 case "$uselongdouble" in
4531 $define|true|[yY]*)     dflt='y';;
4532 *) dflt='n';;
4533 esac
4534 cat <<EOM
4535
4536 Perl can be built to take advantage of long doubles which
4537 (if available) may give more accuracy and range for floating point numbers.
4538
4539 If this doesn't make any sense to you, just accept the default '$dflt'.
4540 EOM
4541 rp='Try to use long doubles if available?'
4542 . ./myread
4543 case "$ans" in
4544 y|Y)    val="$define"   ;;
4545 *)      val="$undef"    ;;
4546 esac
4547 set uselongdouble
4548 eval $setvar
4549
4550 case "$uselongdouble" in
4551 true|[yY]*) uselongdouble="$define" ;;
4552 esac
4553
4554 : Look for a hint-file generated 'call-back-unit'.  If the
4555 : user has specified that long doubles should be used,
4556 : we may need to set or change some other defaults.
4557 if $test -f uselongdouble.cbu; then
4558     echo "Your platform has some specific hints regarding long doubles, using them..."
4559     . ./uselongdouble.cbu
4560 else
4561     case "$uselongdouble" in
4562         $define)
4563                 $cat <<EOM
4564 (Your platform does not have any specific hints for long doubles.)
4565 EOM
4566         ;;
4567     esac
4568 fi
4569
4570 : Looking for optional libraries
4571 echo " "
4572 echo "Checking for optional libraries..." >&4
4573 case "$libs" in
4574 ' '|'') dflt='';;
4575 *) dflt="$libs";;
4576 esac
4577 case "$libswanted" in
4578 '') libswanted='c_s';;
4579 esac
4580 case "$usesocks" in
4581 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4582 esac
4583 libsfound=''
4584 libsfiles=''
4585 libsdirs=''
4586 libspath=''
4587 for thisdir in $libpth $xlibpth; do
4588   test -d $thisdir && libspath="$libspath $thisdir"
4589 done
4590 for thislib in $libswanted; do
4591         for thisdir in $libspath; do
4592             xxx=''
4593             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4594                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4595                 $test -f "$xxx" && eval $libscheck
4596                 $test -f "$xxx" && libstyle=shared
4597             fi
4598             if test ! -f "$xxx"; then
4599                 xxx=$thisdir/lib$thislib.$so
4600                 $test -f "$xxx" && eval $libscheck
4601                 $test -f "$xxx" && libstyle=shared
4602             fi  
4603             if test ! -f "$xxx"; then
4604                 xxx=$thisdir/lib$thislib$_a
4605                 $test -f "$xxx" && eval $libscheck
4606                 $test -f "$xxx" && libstyle=static
4607             fi
4608             if test ! -f "$xxx"; then
4609                 xxx=$thisdir/$thislib$_a
4610                 $test -f "$xxx" && eval $libscheck
4611                 $test -f "$xxx" && libstyle=static
4612             fi
4613             if test ! -f "$xxx"; then
4614                 xxx=$thisdir/lib${thislib}_s$_a
4615                 $test -f "$xxx" && eval $libscheck
4616                 $test -f "$xxx" && libstyle=static
4617                 $test -f "$xxx" && thislib=${thislib}_s
4618             fi
4619             if test ! -f "$xxx"; then
4620                 xxx=$thisdir/Slib$thislib$_a
4621                 $test -f "$xxx" && eval $libscheck
4622                 $test -f "$xxx" && libstyle=static
4623             fi
4624             if $test -f "$xxx"; then
4625                 case "$libstyle" in
4626                 shared) echo "Found -l$thislib (shared)." ;;
4627                 static) echo "Found -l$thislib." ;;
4628                 *)      echo "Found -l$thislib ($libstyle)." ;;
4629                 esac
4630                 case " $dflt " in
4631                 *"-l$thislib "*);;
4632                 *) dflt="$dflt -l$thislib"
4633                    libsfound="$libsfound $xxx"
4634                    yyy=`basename $xxx`
4635                    libsfiles="$libsfiles $yyy"
4636                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4637                    case " $libsdirs " in
4638                    *" $yyy "*) ;;
4639                    *) libsdirs="$libsdirs $yyy" ;;
4640                    esac
4641                    ;;
4642                 esac
4643                 break
4644             fi  
4645         done
4646         if $test ! -f "$xxx"; then
4647             echo "No -l$thislib."
4648         fi
4649 done
4650 set X $dflt
4651 shift
4652 dflt="$*"
4653 case "$libs" in
4654 '') dflt="$dflt";;
4655 *) dflt="$libs";;
4656 esac
4657 case "$dflt" in
4658 ' '|'') dflt='none';;
4659 esac
4660
4661 $cat <<EOM
4662
4663 In order to compile $package on your machine, a number of libraries
4664 are usually needed.  Include any other special libraries here as well.
4665 Say "none" for none.  The default list is almost always right.
4666 EOM
4667
4668 echo " "
4669 rp="What libraries to use?"
4670 . ./myread
4671 case "$ans" in
4672 none) libs=' ';;
4673 *) libs="$ans";;
4674 esac
4675
4676 : determine optimization, if desired, or use for debug flag also
4677 case "$optimize" in
4678 ' '|$undef) dflt='none';;
4679 '') dflt='-O';;
4680 *) dflt="$optimize";;
4681 esac
4682 $cat <<EOH
4683
4684 By default, $package compiles with the -O flag to use the optimizer.
4685 Alternately, you might want to use the symbolic debugger, which uses
4686 the -g flag (on traditional Unix systems).  Either flag can be
4687 specified here.  To use neither flag, specify the word "none".
4688
4689 EOH
4690 rp="What optimizer/debugger flag should be used?"
4691 . ./myread
4692 optimize="$ans"
4693 case "$optimize" in
4694 'none') optimize=" ";;
4695 esac
4696
4697 dflt=''
4698 : We will not override a previous value, but we might want to
4699 : augment a hint file
4700 case "$hint" in
4701 default|recommended)
4702         case "$gccversion" in
4703         1*) dflt='-fpcc-struct-return' ;;
4704         esac
4705         case "$optimize" in
4706         *-g*) dflt="$dflt -DDEBUGGING";;
4707         esac
4708         case "$gccversion" in
4709         2*) if test -d /etc/conf/kconfig.d &&
4710                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4711                 then
4712                         dflt="$dflt -posix"
4713                 fi
4714                 ;;
4715         esac
4716         case "$gccversion" in
4717         1*) ;;
4718         2.[0-8]*) ;;
4719         ?*)     echo " "
4720                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4721                 echo 'int main(void) { return 0; }' > gcctest.c
4722                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4723                         echo "Yes, it does." 2>&1
4724                         case "$ccflags" in
4725                         *strict-aliasing*) 
4726                                 echo "Leaving current flags $ccflags alone." 2>&1
4727                                 ;;
4728                         *) dflt="$dflt -fno-strict-aliasing" ;;
4729                         esac
4730                 else
4731                         echo "Nope, it doesn't, but that's ok." 2>&1
4732                 fi
4733                 ;;
4734         esac
4735         ;;
4736 esac
4737
4738 case "$mips_type" in
4739 *BSD*|'') inclwanted="$locincpth $usrinc";;
4740 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4741 esac
4742 for thisincl in $inclwanted; do
4743         if $test -d $thisincl; then
4744                 if $test x$thisincl != x$usrinc; then
4745                         case "$dflt" in
4746                         *" -I$thisincl "*);;
4747                         *) dflt="$dflt -I$thisincl ";;
4748                         esac
4749                 fi
4750         fi
4751 done
4752
4753 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4754         xxx=true;
4755 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4756         xxx=true;
4757 else
4758         xxx=false;
4759 fi;
4760 if $xxx; then
4761         case "$dflt" in
4762         *$2*);;
4763         *) dflt="$dflt -D$2";;
4764         esac;
4765 fi'
4766
4767 set signal.h LANGUAGE_C; eval $inctest
4768
4769 case "$usesocks" in
4770 $define)
4771         ccflags="$ccflags -DSOCKS"
4772         ;;
4773 esac
4774
4775 case "$hint" in
4776 default|recommended) dflt="$ccflags $dflt" ;;
4777 *) dflt="$ccflags";;
4778 esac
4779
4780 case "$dflt" in
4781 ''|' ') dflt=none;;
4782 esac
4783
4784 $cat <<EOH
4785
4786 Your C compiler may want other flags.  For this question you should include
4787 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4788 but you should NOT include libraries or ld flags like -lwhatever.  If you
4789 want $package to honor its debug switch, you should include -DDEBUGGING here.
4790 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4791
4792 To use no flags, specify the word "none".
4793
4794 EOH
4795 set X $dflt
4796 shift
4797 dflt=${1+"$@"}
4798 rp="Any additional cc flags?"
4799 . ./myread
4800 case "$ans" in
4801 none) ccflags='';;
4802 *) ccflags="$ans";;
4803 esac
4804
4805 : the following weeds options from ccflags that are of no interest to cpp
4806 case "$cppflags" in
4807 '') cppflags="$ccflags" ;;
4808 *)  cppflags="$cppflags $ccflags" ;;
4809 esac
4810 case "$gccversion" in
4811 1*) cppflags="$cppflags -D__GNUC__"
4812 esac
4813 case "$mips_type" in
4814 '');;
4815 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4816 esac
4817 case "$cppflags" in
4818 '');;
4819 *)
4820         echo " "
4821         echo "Let me guess what the preprocessor flags are..." >&4
4822         set X $cppflags
4823         shift
4824         cppflags=''
4825         $cat >cpp.c <<'EOM'
4826 #define BLURFL foo
4827
4828 BLURFL xx LFRULB
4829 EOM
4830         previous=''
4831         for flag in $*
4832         do
4833                 case "$flag" in
4834                 -*) ftry="$flag";;
4835                 *) ftry="$previous $flag";;
4836                 esac
4837                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4838                         >cpp1.out 2>/dev/null && \
4839                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4840                         >cpp2.out 2>/dev/null && \
4841                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4842                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4843                 then
4844                         cppflags="$cppflags $ftry"
4845                         previous=''
4846                 else
4847                         previous="$flag"
4848                 fi
4849         done
4850         set X $cppflags
4851         shift
4852         cppflags=${1+"$@"}
4853         case "$cppflags" in
4854         *-*)  echo "They appear to be: $cppflags";;
4855         esac
4856         $rm -f cpp.c cpp?.out
4857         ;;
4858 esac
4859
4860 : flags used in final linking phase
4861 case "$ldflags" in
4862 '') if ./venix; then
4863                 dflt='-i -z'
4864         else
4865                 dflt=''
4866         fi
4867         case "$ccflags" in
4868         *-posix*) dflt="$dflt -posix" ;;
4869         esac
4870         ;;
4871 *) dflt="$ldflags";;
4872 esac
4873
4874 : Try to guess additional flags to pick up local libraries.
4875 for thislibdir in $libpth; do
4876         case " $loclibpth " in
4877         *" $thislibdir "*)
4878                 case "$dflt " in 
4879                 *"-L$thislibdir "*) ;;
4880                 *)  dflt="$dflt -L$thislibdir" ;;
4881                 esac
4882                 ;;
4883         esac
4884 done
4885
4886 case "$dflt" in
4887 '') dflt='none' ;;
4888 esac
4889
4890 $cat <<EOH
4891
4892 Your C linker may need flags.  For this question you should
4893 include -L/whatever and any other flags used by the C linker, but you
4894 should NOT include libraries like -lwhatever.
4895
4896 Make sure you include the appropriate -L/path flags if your C linker
4897 does not normally search all of the directories you specified above,
4898 namely
4899         $libpth
4900 To use no flags, specify the word "none".
4901
4902 EOH
4903
4904 rp="Any additional ld flags (NOT including libraries)?"
4905 . ./myread
4906 case "$ans" in
4907 none) ldflags='';;
4908 *) ldflags="$ans";;
4909 esac
4910 rmlist="$rmlist pdp11"
4911
4912 : coherency check
4913 echo " "
4914 echo "Checking your choice of C compiler and flags for coherency..." >&4
4915 $cat > try.c <<'EOF'
4916 #include <stdio.h>
4917 int main() { printf("Ok\n"); return(0); }
4918 EOF
4919 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4920 shift
4921 $cat >try.msg <<'EOM'
4922 I've tried to compile and run the following simple program:
4923
4924 EOM
4925 $cat try.c >> try.msg
4926
4927 $cat >> try.msg <<EOM
4928
4929 I used the command:
4930
4931         $*
4932         $run ./try
4933
4934 and I got the following output:
4935
4936 EOM
4937 dflt=y
4938 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4939         if $sh -c "$run ./try" >>try.msg 2>&1; then
4940                 xxx=`$run ./try`
4941                 case "$xxx" in
4942                 "Ok") dflt=n ;;
4943                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4944                         case " $libs " in
4945                         *" -lsfio "*)
4946                                 cat >> try.msg <<'EOQS'
4947 If $libs contains -lsfio, and sfio is mis-configured, then it
4948 sometimes (apparently) runs and exits with a 0 status, but with no
4949 output!  It may have to do with sfio's use of _exit vs. exit.
4950
4951 EOQS
4952                                 rp="You have a big problem.  Shall I abort Configure"
4953                                 dflt=y
4954                                 ;;
4955                         esac
4956                         ;;
4957                 esac
4958         else
4959                 echo "The program compiled OK, but exited with status $?." >>try.msg
4960                 rp="You have a problem.  Shall I abort Configure"
4961                 dflt=y
4962         fi
4963 else
4964         echo "I can't compile the test program." >>try.msg
4965         rp="You have a BIG problem.  Shall I abort Configure"
4966         dflt=y
4967 fi
4968 case "$dflt" in
4969 y)
4970         $cat try.msg >&4
4971         case "$knowitall" in
4972         '')
4973                 echo "(The supplied flags or libraries might be incorrect.)"
4974                 ;;
4975         *) dflt=n;;
4976         esac
4977         echo " "
4978         . ./myread
4979         case "$ans" in
4980         n*|N*) ;;
4981         *)      echo "Ok.  Stopping Configure." >&4
4982                 exit 1
4983                 ;;
4984         esac
4985         ;;
4986 n) echo "OK, that should do.";;
4987 esac
4988 $rm -f try try.* core
4989
4990 : define a shorthand compile call
4991 compile='
4992 mc_file=$1;
4993 shift;
4994 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4995 : define a shorthand compile call for compilations that should be ok.
4996 compile_ok='
4997 mc_file=$1;
4998 shift;
4999 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5000
5001 : determine filename position in cpp output
5002 echo " "
5003 echo "Computing filename position in cpp output for #include directives..." >&4
5004 case "$osname" in
5005 vos) testaccess=-e ;;
5006 *)   testaccess=-r ;;
5007 esac
5008 echo '#include <stdio.h>' > foo.c
5009 $cat >fieldn <<EOF
5010 $startsh
5011 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5012 $grep '^[       ]*#.*stdio\.h' | \
5013 while read cline; do
5014         pos=1
5015         set \$cline
5016         while $test \$# -gt 0; do
5017                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5018                         echo "\$pos"
5019                         exit 0
5020                 fi
5021                 shift
5022                 pos=\`expr \$pos + 1\`
5023         done
5024 done
5025 EOF
5026 chmod +x fieldn
5027 fieldn=`./fieldn`
5028 $rm -f foo.c fieldn
5029 case $fieldn in
5030 '') pos='???';;
5031 1) pos=first;;
5032 2) pos=second;;
5033 3) pos=third;;
5034 *) pos="${fieldn}th";;
5035 esac
5036 echo "Your cpp writes the filename in the $pos field of the line."
5037
5038 case "$osname" in
5039 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5040 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5041 *)   cppfilter='' ;;
5042 esac
5043 : locate header file
5044 $cat >findhdr <<EOF
5045 $startsh
5046 wanted=\$1
5047 name=''
5048 for usrincdir in $usrinc
5049 do
5050         if test -f \$usrincdir/\$wanted; then
5051                 echo "\$usrincdir/\$wanted"
5052                 exit 0
5053         fi
5054 done
5055 awkprg='{ print \$$fieldn }'
5056 echo "#include <\$wanted>" > foo\$\$.c
5057 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5058 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5059 while read cline; do
5060         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5061         case "\$name" in
5062         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5063         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5064         *) exit 2;;
5065         esac;
5066 done;
5067 #
5068 # status = 0: grep returned 0 lines, case statement not executed
5069 # status = 1: headerfile found
5070 # status = 2: while loop executed, no headerfile found
5071 #
5072 status=\$?
5073 $rm -f foo\$\$.c;
5074 if test \$status -eq 1; then
5075         exit 0;
5076 fi
5077 exit 1
5078 EOF
5079 chmod +x findhdr
5080
5081 : define an alternate in-header-list? function
5082 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5083 cont=true; xxf="echo \"<\$1> found.\" >&4";
5084 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5085 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5086 esac;
5087 case $# in 4) instead=instead;; *) instead="at last";; esac;
5088 while $test "$cont"; do
5089         xxx=`./findhdr $1`
5090         var=$2; eval "was=\$$2";
5091         if $test "$xxx" && $test -r "$xxx";
5092         then eval $xxf;
5093         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5094                 cont="";
5095         else eval $xxnf;
5096         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5097         set $yyy; shift; shift; yyy=$@;
5098         case $# in 0) cont="";;
5099         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5100                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5101         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5102                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5103         esac;
5104 done;
5105 while $test "$yyy";
5106 do set $yyy; var=$2; eval "was=\$$2";
5107         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5108         set $yyy; shift; shift; yyy=$@;
5109 done'
5110
5111 : see if stdlib is available
5112 set stdlib.h i_stdlib
5113 eval $inhdr
5114
5115 : check for lengths of integral types
5116 echo " "
5117 case "$intsize" in
5118 '')
5119         echo "Checking to see how big your integers are..." >&4
5120         $cat >try.c <<EOCP
5121 #include <stdio.h>
5122 #$i_stdlib I_STDLIB
5123 #ifdef I_STDLIB
5124 #include <stdlib.h>
5125 #endif
5126 int main()
5127 {
5128         printf("intsize=%d;\n", (int)sizeof(int));
5129         printf("longsize=%d;\n", (int)sizeof(long));
5130         printf("shortsize=%d;\n", (int)sizeof(short));
5131         exit(0);
5132 }
5133 EOCP
5134         set try
5135         if eval $compile_ok && $run ./try > /dev/null; then
5136                 eval `$run ./try`
5137                 echo "Your integers are $intsize bytes long."
5138                 echo "Your long integers are $longsize bytes long."
5139                 echo "Your short integers are $shortsize bytes long."
5140         else
5141                 $cat >&4 <<EOM
5142 !
5143 Help! I can't compile and run the intsize test program: please enlighten me!
5144 (This is probably a misconfiguration in your system or libraries, and
5145 you really ought to fix it.  Still, I'll try anyway.)
5146 !
5147 EOM
5148                 dflt=4
5149                 rp="What is the size of an integer (in bytes)?"
5150                 . ./myread
5151                 intsize="$ans"
5152                 dflt=$intsize
5153                 rp="What is the size of a long integer (in bytes)?"
5154                 . ./myread
5155                 longsize="$ans"
5156                 dflt=2
5157                 rp="What is the size of a short integer (in bytes)?"
5158                 . ./myread
5159                 shortsize="$ans"
5160         fi
5161         ;;
5162 esac
5163 $rm -f try try.*
5164
5165 : check for long long
5166 echo " "
5167 echo "Checking to see if you have long long..." >&4
5168 echo 'int main() { long long x = 7; return 0; }' > try.c
5169 set try
5170 if eval $compile; then
5171         val="$define"
5172         echo "You have long long."
5173 else
5174         val="$undef"
5175         echo "You do not have long long."
5176 fi
5177 $rm try.*
5178 set d_longlong
5179 eval $setvar
5180
5181 : check for length of long long
5182 case "${d_longlong}${longlongsize}" in
5183 $define)
5184         echo " "
5185         echo "Checking to see how big your long longs are..." >&4
5186         $cat >try.c <<'EOCP'
5187 #include <stdio.h>
5188 int main()
5189 {
5190     printf("%d\n", (int)sizeof(long long));
5191     return(0);
5192 }
5193 EOCP
5194         set try
5195         if eval $compile_ok; then
5196                 longlongsize=`$run ./try`
5197                 echo "Your long longs are $longlongsize bytes long."
5198         else
5199                 dflt='8'
5200                 echo " "
5201                 echo "(I can't seem to compile the test program.  Guessing...)"
5202                 rp="What is the size of a long long (in bytes)?"
5203                 . ./myread
5204                 longlongsize="$ans"
5205         fi
5206         if $test "X$longsize" = "X$longlongsize"; then
5207                 echo "(That isn't any different from an ordinary long.)"
5208         fi      
5209         ;;
5210 esac
5211 $rm -f try.* try
5212
5213 : see if inttypes.h is available
5214 : we want a real compile instead of Inhdr because some systems
5215 : have an inttypes.h which includes non-existent headers
5216 echo " "
5217 $cat >try.c <<EOCP
5218 #include <inttypes.h>
5219 int main() {
5220         static int32_t foo32 = 0x12345678;
5221 }
5222 EOCP
5223 set try
5224 if eval $compile; then
5225         echo "<inttypes.h> found." >&4
5226         val="$define"
5227 else
5228         echo "<inttypes.h> NOT found." >&4
5229         val="$undef"
5230 fi
5231 $rm -f try.c try
5232 set i_inttypes
5233 eval $setvar
5234
5235 : check for int64_t
5236 echo " "
5237 echo "Checking to see if you have int64_t..." >&4
5238 $cat >try.c <<EOCP
5239 #include <sys/types.h>
5240 #$i_inttypes I_INTTYPES
5241 #ifdef I_INTTYPES
5242 #include <inttypes.h>
5243 #endif
5244 int main() { int64_t x = 7; }
5245 EOCP
5246 set try
5247 if eval $compile; then
5248         val="$define"
5249         echo "You have int64_t."
5250 else
5251         val="$undef"
5252         echo "You do not have int64_t."
5253 fi
5254 $rm -f try try.*
5255 set d_int64_t
5256 eval $setvar
5257
5258
5259 echo " "
5260 echo "Checking which 64-bit integer type we could use..." >&4
5261
5262 case "$intsize" in
5263 8) val=int
5264    set quadtype
5265    eval $setvar
5266    val='"unsigned int"'
5267    set uquadtype
5268    eval $setvar
5269    quadkind=1
5270    ;;
5271 *) case "$longsize" in
5272    8) val=long
5273       set quadtype
5274       eval $setvar
5275       val='"unsigned long"'
5276       set uquadtype
5277       eval $setvar
5278       quadkind=2
5279       ;;
5280    *) case "$d_longlong:$longlongsize" in
5281       define:8)
5282         val='"long long"'
5283         set quadtype
5284         eval $setvar
5285         val='"unsigned long long"'
5286         set uquadtype
5287         eval $setvar
5288         quadkind=3
5289         ;;
5290       *) case "$d_int64_t" in
5291          define)
5292            val=int64_t
5293            set quadtype
5294            eval $setvar
5295            val=uint64_t
5296            set uquadtype
5297            eval $setvar
5298            quadkind=4
5299            ;;
5300          esac
5301          ;;
5302       esac
5303       ;;
5304    esac
5305    ;;
5306 esac
5307
5308 case "$quadtype" in
5309 '')     echo "Alas, no 64-bit integer types in sight." >&4
5310         d_quad="$undef"
5311         ;;
5312 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5313         d_quad="$define"
5314         ;;
5315 esac
5316
5317
5318 case "$uselonglong" in
5319 "$define"|true|[yY]*)
5320         cat <<EOM >&4
5321
5322 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5323 EOM
5324         use64bitint="$define"
5325         ;;
5326 esac                          
5327 case "$use64bits" in
5328 "$define"|true|[yY]*)
5329         cat <<EOM >&4
5330
5331 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5332 EOM
5333         use64bitint="$define"
5334         ;;
5335 esac                          
5336 case "$use64bitints" in
5337 "$define"|true|[yY]*)
5338         cat <<EOM >&4
5339
5340 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5341 EOM
5342         use64bitint="$define"
5343         ;;
5344 esac                          
5345 case "$use64bitsint" in
5346 "$define"|true|[yY]*)
5347         cat <<EOM >&4
5348
5349 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5350 EOM
5351         use64bitint="$define"
5352         ;;
5353 esac                          
5354 case "$uselonglongs" in
5355 "$define"|true|[yY]*)
5356         cat <<EOM >&4
5357
5358 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5359 EOM
5360         use64bitint="$define"
5361         ;;
5362 esac                          
5363 case "$use64bitsall" in
5364 "$define"|true|[yY]*)
5365         cat <<EOM >&4
5366
5367 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5368 EOM
5369         use64bitall="$define"
5370         ;;
5371 esac                          
5372
5373 case "$ccflags" in
5374 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5375 esac
5376 case "$use64bitall" in
5377 "$define"|true|[yY]*) use64bitint="$define" ;;
5378 esac
5379
5380 case "$longsize" in
5381 8) cat <<EOM
5382
5383 You have natively 64-bit long integers.
5384 EOM
5385    val="$define"
5386    ;;
5387 *) case "$use64bitint" in
5388    "$define"|true|[yY]*) dflt='y';;
5389    *) dflt='n';;
5390    esac
5391    case "$d_quad" in
5392    "$define") ;;
5393    *) dflt='n' ;;
5394    esac
5395    cat <<EOM
5396
5397 Perl can be built to take advantage of 64-bit integer types
5398 on some systems.  To do so, Configure can be run with -Duse64bitint.
5399 Choosing this option will most probably introduce binary incompatibilities.
5400
5401 If this doesn't make any sense to you, just accept the default '$dflt'.
5402 (The default has been chosen based on your configuration.)
5403 EOM
5404    rp='Try to use 64-bit integers, if available?'
5405    . ./myread
5406    case "$ans" in
5407    [yY]*) val="$define" ;;
5408    *)     val="$undef"  ;;
5409    esac
5410    ;;
5411 esac
5412 set use64bitint
5413 eval $setvar
5414
5415 case "$use64bitall" in
5416 "$define"|true|[yY]*) dflt='y' ;;
5417 *) case "$longsize" in
5418    8) dflt='y' ;;
5419    *) dflt='n' ;;
5420    esac
5421    ;;
5422 esac    
5423 cat <<EOM
5424
5425 You may also choose to try maximal 64-bitness.  It means using as much
5426 64-bitness as possible on the platform.  This in turn means even more
5427 binary incompatibilities.  On the other hand, your platform may not
5428 have any more 64-bitness available than what you already have chosen.
5429
5430 If this doesn't make any sense to you, just accept the default '$dflt'.
5431 (The default has been chosen based on your configuration.)
5432 EOM
5433 rp='Try to use maximal 64-bit support, if available?'
5434 . ./myread
5435 case "$ans" in
5436 [yY]*) val="$define" ;;
5437 *)     val="$undef"  ;;
5438 esac
5439 set use64bitall
5440 eval $setvar
5441 case "$use64bitall" in
5442 "$define")
5443         case "$use64bitint" in
5444         "$undef")
5445                 cat <<EOM
5446
5447 Since you have chosen a maximally 64-bit build, I'm also turning on
5448 the use of 64-bit integers.
5449 EOM
5450                 use64bitint="$define" ;;
5451         esac
5452         ;;
5453 esac
5454
5455 : Look for a hint-file generated 'call-back-unit'.  If the
5456 : user has specified that a 64-bit perl is to be built,
5457 : we may need to set or change some other defaults.
5458 if $test -f use64bitint.cbu; then
5459         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5460         . ./use64bitint.cbu
5461 fi
5462 case "$use64bitint" in
5463 "$define"|true|[yY]*)
5464         case "$longsize" in
5465         4) case "$archname64" in
5466            '') archname64=64int ;;
5467            esac
5468            ;;
5469         esac
5470         ;;
5471 esac
5472
5473 : Look for a hint-file generated 'call-back-unit'.  If the
5474 : user has specified that a maximally 64-bit perl is to be built,
5475 : we may need to set or change some other defaults.
5476 if $test -f use64bitall.cbu; then
5477         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5478         . ./use64bitall.cbu
5479 fi
5480 case "$use64bitall" in
5481 "$define"|true|[yY]*)
5482         case "$longsize" in
5483         4) case "$archname64" in
5484            ''|64int) archname64=64all ;;
5485            esac
5486            ;;
5487         esac
5488         ;;
5489 esac
5490
5491 case "$d_quad:$use64bitint" in
5492 $undef:$define)
5493         cat >&4 <<EOF
5494
5495 *** You have chosen to use 64-bit integers,
5496 *** but none can be found.
5497 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5498 *** Cannot continue, aborting.
5499
5500 EOF
5501         exit 1
5502         ;;
5503 esac
5504
5505 : check for length of double
5506 echo " "
5507 case "$doublesize" in
5508 '')
5509         echo "Checking to see how big your double precision numbers are..." >&4
5510         $cat >try.c <<EOCP
5511 #include <stdio.h>
5512 #$i_stdlib I_STDLIB
5513 #ifdef I_STDLIB
5514 #include <stdlib.h>
5515 #endif
5516 int main()
5517 {
5518     printf("%d\n", (int)sizeof(double));
5519     exit(0);
5520 }
5521 EOCP
5522         set try
5523         if eval $compile_ok; then
5524                 doublesize=`$run ./try`
5525                 echo "Your double is $doublesize bytes long."
5526         else
5527                 dflt='8'
5528                 echo "(I can't seem to compile the test program.  Guessing...)"
5529                 rp="What is the size of a double precision number (in bytes)?"
5530                 . ./myread
5531                 doublesize="$ans"
5532         fi
5533         ;;
5534 esac
5535 $rm -f try.c try
5536
5537 : check for long doubles
5538 echo " "
5539 echo "Checking to see if you have long double..." >&4
5540 echo 'int main() { long double x = 7.0; }' > try.c
5541 set try
5542 if eval $compile; then
5543         val="$define"
5544         echo "You have long double."
5545 else
5546         val="$undef"
5547         echo "You do not have long double."
5548 fi
5549 $rm try.*
5550 set d_longdbl
5551 eval $setvar
5552
5553 : check for length of long double
5554 case "${d_longdbl}${longdblsize}" in
5555 $define)
5556         echo " "
5557         echo "Checking to see how big your long doubles are..." >&4
5558         $cat >try.c <<'EOCP'
5559 #include <stdio.h>
5560 int main()
5561 {
5562         printf("%d\n", sizeof(long double));
5563 }
5564 EOCP
5565         set try
5566         set try
5567         if eval $compile; then
5568                 longdblsize=`$run ./try`
5569                 echo "Your long doubles are $longdblsize bytes long."
5570         else
5571                 dflt='8'
5572                 echo " "
5573                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5574                 rp="What is the size of a long double (in bytes)?"
5575                 . ./myread
5576                 longdblsize="$ans"
5577         fi
5578         if $test "X$doublesize" = "X$longdblsize"; then
5579                 echo "That isn't any different from an ordinary double."
5580                 echo "I'll keep your setting anyway, but you may see some"
5581                 echo "harmless compilation warnings."
5582         fi      
5583         ;;
5584 esac
5585 $rm -f try.* try
5586
5587 : determine the architecture name
5588 echo " "
5589 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5590         tarch=`arch`"-$osname"
5591 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5592         if uname -m > tmparch 2>&1 ; then
5593                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5594                         -e 's/$/'"-$osname/" tmparch`
5595         else
5596                 tarch="$osname"
5597         fi
5598         $rm -f tmparch
5599 else
5600         tarch="$osname"
5601 fi
5602 case "$myarchname" in
5603 ''|"$tarch") ;;
5604 *)
5605         echo "(Your architecture name used to be $myarchname.)"
5606         archname=''
5607         ;;
5608 esac
5609 case "$targetarch" in
5610 '') ;;
5611 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5612 esac
5613 myarchname="$tarch"
5614 case "$archname" in
5615 '') dflt="$tarch";;
5616 *) dflt="$archname";;
5617 esac
5618 rp='What is your architecture name'
5619 . ./myread
5620 archname="$ans"
5621 case "$usethreads" in
5622 $define)
5623         echo "Threads selected." >&4
5624         case "$archname" in
5625         *-thread*) echo "...and architecture name already has -thread." >&4
5626                 ;;
5627         *)      archname="$archname-thread"
5628                 echo "...setting architecture name to $archname." >&4
5629                 ;;
5630         esac
5631         ;;
5632 esac
5633 case "$usemultiplicity" in
5634 $define)
5635         echo "Multiplicity selected." >&4
5636         case "$archname" in
5637         *-multi*) echo "...and architecture name already has -multi." >&4
5638                 ;;
5639         *)      archname="$archname-multi"
5640                 echo "...setting architecture name to $archname." >&4
5641                 ;;
5642         esac
5643         ;;
5644 esac
5645 case "$use64bitint$use64bitall" in
5646 *"$define"*)
5647         case "$archname64" in
5648         '')
5649                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5650                 ;;
5651         *)
5652                 case "$use64bitint" in
5653                 "$define") echo "64 bit integers selected." >&4 ;;
5654                 esac
5655                 case "$use64bitall" in
5656                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5657                 esac
5658                 case "$archname" in
5659                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5660                         ;;
5661                 *)      archname="$archname-$archname64"
5662                         echo "...setting architecture name to $archname." >&4
5663                         ;;
5664                 esac
5665                 ;;
5666         esac
5667 esac
5668 case "$uselongdouble" in
5669 $define)
5670         echo "Long doubles selected." >&4
5671         case "$longdblsize" in
5672         $doublesize)
5673                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5674                 ;;
5675         *)
5676                 case "$archname" in
5677                 *-ld*) echo "...and architecture name already has -ld." >&4
5678                         ;;
5679                 *)      archname="$archname-ld"
5680                         echo "...setting architecture name to $archname." >&4
5681                         ;;
5682                 esac
5683                 ;;
5684         esac
5685         ;;
5686 esac
5687 case "$useperlio" in
5688 $define)
5689         echo "Perlio selected." >&4
5690         ;;
5691 *)
5692         echo "Perlio not selected, using stdio." >&4
5693         case "$archname" in
5694         *-stdio*) echo "...and architecture name already has -stdio." >&4
5695                 ;;
5696         *)      archname="$archname-stdio"
5697                 echo "...setting architecture name to $archname." >&4
5698                 ;;
5699         esac
5700         ;;
5701 esac
5702 if $test -f archname.cbu; then
5703         echo "Your platform has some specific hints for architecture name, using them..."
5704         . ./archname.cbu
5705 fi
5706
5707 : determine root of directory hierarchy where package will be installed.
5708 case "$prefix" in
5709 '')
5710         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5711         ;;
5712 *?/)
5713         dflt=`echo "$prefix" | sed 's/.$//'`
5714         ;;
5715 *)
5716         dflt="$prefix"
5717         ;;
5718 esac
5719 $cat <<EOM
5720
5721 By default, $package will be installed in $dflt/bin, manual pages
5722 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5723 installation directories. Typically this is something like /usr/local.
5724 If you wish to have binaries under /usr/bin but other parts of the
5725 installation under /usr/local, that's ok: you will be prompted
5726 separately for each of the installation directories, the prefix being
5727 only used to set the defaults.
5728
5729 EOM
5730 fn=d~
5731 rp='Installation prefix to use?'
5732 . ./getfile
5733 oldprefix=''
5734 case "$prefix" in
5735 '') ;;
5736 *)
5737         case "$ans" in
5738         "$prefix") ;;
5739         *) oldprefix="$prefix";;
5740         esac
5741         ;;
5742 esac
5743 prefix="$ans"
5744 prefixexp="$ansexp"
5745
5746 case "$afsroot" in
5747 '')     afsroot=/afs ;;
5748 *)      afsroot=$afsroot ;;
5749 esac
5750
5751 : is AFS running?
5752 echo " "
5753 case "$afs" in
5754 $define|true)   afs=true ;;
5755 $undef|false)   afs=false ;;
5756 *)      if test -d $afsroot; then
5757                 afs=true
5758         else
5759                 afs=false
5760         fi
5761         ;;
5762 esac
5763 if $afs; then
5764         echo "AFS may be running... I'll be extra cautious then..." >&4
5765 else
5766         echo "AFS does not seem to be running..." >&4
5767 fi
5768
5769 : determine installation prefix for where package is to be installed.
5770 if $afs; then 
5771 $cat <<EOM
5772
5773 Since you are running AFS, I need to distinguish the directory in which
5774 files will reside from the directory in which they are installed (and from
5775 which they are presumably copied to the former directory by occult means).
5776
5777 EOM
5778         case "$installprefix" in
5779         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5780         *) dflt="$installprefix";;
5781         esac
5782 else
5783 $cat <<EOM
5784
5785 In some special cases, particularly when building $package for distribution,
5786 it is convenient to distinguish the directory in which files should be
5787 installed from the directory ($prefix) in which they will
5788 eventually reside.  For most users, these two directories are the same.
5789
5790 EOM
5791         case "$installprefix" in
5792         '') dflt=$prefix ;;
5793         *) dflt=$installprefix;;
5794         esac
5795 fi
5796 fn=d~
5797 rp='What installation prefix should I use for installing files?'
5798 . ./getfile
5799 installprefix="$ans"
5800 installprefixexp="$ansexp"
5801
5802 : set the prefixit variable, to compute a suitable default value
5803 prefixit='case "$3" in
5804 ""|none)
5805         case "$oldprefix" in
5806         "") eval "$1=\"\$$2\"";;
5807         *)
5808                 case "$3" in
5809                 "") eval "$1=";;
5810                 none)
5811                         eval "tp=\"\$$2\"";
5812                         case "$tp" in
5813                         ""|" ") eval "$1=\"\$$2\"";;
5814                         *) eval "$1=";;
5815                         esac;;
5816                 esac;;
5817         esac;;
5818 *)
5819         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5820         case "$tp" in
5821         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5822         /*-$oldprefix/*|\~*-$oldprefix/*)
5823                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5824         *) eval "$1=\"\$$2\"";;
5825         esac;;
5826 esac'
5827
5828 : get the patchlevel
5829 echo " "
5830 echo "Getting the current patchlevel..." >&4
5831 if $test -r $rsrc/patchlevel.h;then
5832         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5833         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5834         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5835         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5836         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5837         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5838        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5839 else
5840         revision=0
5841         patchlevel=0
5842         subversion=0
5843         api_revision=0
5844         api_version=0
5845         api_subversion=0
5846         perl_patchlevel=0
5847         $echo "(You do not have patchlevel.h.  Eek.)"
5848 fi
5849 if $test -r $rsrc/.patch ; then  
5850         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5851                 perl_patchlevel=`cat $rsrc/.patch`
5852         fi
5853 fi
5854 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5855 version_patchlevel_string="version $patchlevel subversion $subversion"
5856 case "$perl_patchlevel" in
5857 0|'') ;;
5858 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5859 esac
5860
5861 $echo "(You have $package $version_patchlevel_string.)"
5862
5863 case "$osname" in
5864 dos|vms)
5865         : XXX Should be a Configure test for double-dots in filenames.
5866         version=`echo $revision $patchlevel $subversion | \
5867                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5868         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5869                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5870         ;;
5871 *)
5872         version=`echo $revision $patchlevel $subversion | \
5873                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5874         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5875                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5876         ;;
5877 esac
5878 : Special case the 5.005_xx maintenance series, which used 5.005
5879 : without any subversion label as a subdirectory in $sitelib
5880 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5881         api_versionstring='5.005'
5882 fi
5883
5884 : determine installation style
5885 : For now, try to deduce it from prefix unless it is already set.
5886 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5887 case "$installstyle" in
5888 '')     case "$prefix" in
5889                 *perl*) dflt='lib';;
5890                 *) dflt='lib/perl5' ;;
5891         esac
5892         ;;
5893 *)      dflt="$installstyle" ;;
5894 esac
5895 : Probably not worth prompting for this since we prompt for all
5896 : the directories individually, and the prompt would be too long and
5897 : confusing anyway.
5898 installstyle=$dflt
5899
5900 : determine where private library files go
5901 : Usual default is /usr/local/lib/perl5/$version.
5902 : Also allow things like /opt/perl/lib/$version, since 
5903 : /opt/perl/lib/perl5... would be redundant.
5904 : The default "style" setting is made in installstyle.U
5905 case "$installstyle" in
5906 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5907 *)       set dflt privlib lib/$version ;;
5908 esac
5909 eval $prefixit
5910 $cat <<EOM
5911
5912 There are some auxiliary files for $package that need to be put into a
5913 private library directory that is accessible by everyone.
5914
5915 EOM
5916 fn=d~+
5917 rp='Pathname where the private library files will reside?'
5918 . ./getfile
5919 privlib="$ans"
5920 privlibexp="$ansexp"
5921 : Change installation prefix, if necessary.
5922 if $test X"$prefix" != X"$installprefix"; then
5923         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5924 else
5925         installprivlib="$privlibexp"
5926 fi
5927
5928 : set the prefixup variable, to restore leading tilda escape
5929 prefixup='case "$prefixexp" in
5930 "$prefix") ;;
5931 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5932 esac'
5933
5934 : determine where public architecture dependent libraries go
5935 set archlib archlib
5936 eval $prefixit
5937 : privlib default is /usr/local/lib/$package/$version
5938 : archlib default is /usr/local/lib/$package/$version/$archname
5939 : privlib may have an optional trailing /share.
5940 tdflt=`echo $privlib | $sed 's,/share$,,'`
5941 tdflt=$tdflt/$archname
5942 case "$archlib" in
5943 '')     dflt=$tdflt
5944         ;;
5945 *)      dflt="$archlib"
5946     ;;
5947 esac
5948 $cat <<EOM
5949
5950 $spackage contains architecture-dependent library files.  If you are
5951 sharing libraries in a heterogeneous environment, you might store
5952 these files in a separate location.  Otherwise, you can just include
5953 them with the rest of the public library files.
5954
5955 EOM
5956 fn=d+~
5957 rp='Where do you want to put the public architecture-dependent libraries?'
5958 . ./getfile
5959 archlib="$ans"
5960 archlibexp="$ansexp"
5961 if $test X"$archlib" = X"$privlib"; then
5962         d_archlib="$undef"
5963 else
5964         d_archlib="$define"
5965 fi
5966 : Change installation prefix, if necessary.
5967 if $test X"$prefix" != X"$installprefix"; then
5968         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5969 else
5970         installarchlib="$archlibexp"
5971 fi
5972
5973 : see if setuid scripts can be secure
5974 $cat <<EOM
5975
5976 Some kernels have a bug that prevents setuid #! scripts from being
5977 secure.  Some sites have disabled setuid #! scripts because of this.
5978
5979 First let's decide if your kernel supports secure setuid #! scripts.
5980 (If setuid #! scripts would be secure but have been disabled anyway,
5981 don't say that they are secure if asked.)
5982
5983 EOM
5984
5985 val="$undef"
5986 if $test -d /dev/fd; then
5987         echo "#!$ls" >reflect
5988         chmod +x,u+s reflect
5989         ./reflect >flect 2>&1
5990         if $contains "/dev/fd" flect >/dev/null; then
5991                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5992                 val="$define"
5993         else
5994                 $cat <<EOM
5995 If you are not sure if they are secure, I can check but I'll need a
5996 username and password different from the one you are using right now.
5997 If you don't have such a username or don't want me to test, simply
5998 enter 'none'.
5999
6000 EOM
6001                 rp='Other username to test security of setuid scripts with?'
6002                 dflt='none'
6003                 . ./myread
6004                 case "$ans" in
6005                 n|none)
6006                         case "$d_suidsafe" in
6007                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6008                                 dflt=n;;
6009                         "$undef")
6010                                 echo "Well, the $hint value is *not* secure." >&4
6011                                 dflt=n;;
6012                         *)      echo "Well, the $hint value *is* secure." >&4
6013                                 dflt=y;;
6014                         esac
6015                         ;;
6016                 *)
6017                         $rm -f reflect flect
6018                         echo "#!$ls" >reflect
6019                         chmod +x,u+s reflect
6020                         echo >flect
6021                         chmod a+w flect
6022                         echo '"su" will (probably) prompt you for '"$ans's password."
6023                         su $ans -c './reflect >flect'
6024                         if $contains "/dev/fd" flect >/dev/null; then
6025                                 echo "Okay, it looks like setuid scripts are secure." >&4
6026                                 dflt=y
6027                         else
6028                                 echo "I don't think setuid scripts are secure." >&4
6029                                 dflt=n
6030                         fi
6031                         ;;
6032                 esac
6033                 rp='Does your kernel have *secure* setuid scripts?'
6034                 . ./myread
6035                 case "$ans" in
6036                 [yY]*)  val="$define";;
6037                 *)      val="$undef";;
6038                 esac
6039         fi
6040 else
6041         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6042         echo "(That's for file descriptors, not floppy disks.)"
6043         val="$undef"
6044 fi
6045 set d_suidsafe
6046 eval $setvar
6047
6048 $rm -f reflect flect
6049
6050 : now see if they want to do setuid emulation
6051 echo " "
6052 val="$undef"
6053 case "$d_suidsafe" in
6054 "$define")
6055         val="$undef"
6056         echo "No need to emulate SUID scripts since they are secure here." >&4
6057         ;;
6058 *)
6059         $cat <<EOM
6060 Some systems have disabled setuid scripts, especially systems where
6061 setuid scripts cannot be secure.  On systems where setuid scripts have
6062 been disabled, the setuid/setgid bits on scripts are currently
6063 useless.  It is possible for $package to detect those bits and emulate
6064 setuid/setgid in a secure fashion.  This emulation will only work if
6065 setuid scripts have been disabled in your kernel.
6066
6067 EOM
6068         case "$d_dosuid" in
6069         "$define") dflt=y ;;
6070         *) dflt=n ;;
6071         esac
6072         rp="Do you want to do setuid/setgid emulation?"
6073         . ./myread
6074         case "$ans" in
6075         [yY]*)  val="$define";;
6076         *)      val="$undef";;
6077         esac
6078         ;;
6079 esac
6080 set d_dosuid
6081 eval $setvar
6082
6083 : see if this is a malloc.h system
6084 : we want a real compile instead of Inhdr because some systems have a
6085 : malloc.h that just gives a compile error saying to use stdlib.h instead
6086 echo " "
6087 $cat >try.c <<EOCP
6088 #include <stdlib.h>
6089 #include <malloc.h>
6090 int main () { return 0; }
6091 EOCP
6092 set try
6093 if eval $compile; then
6094     echo "<malloc.h> found." >&4
6095     val="$define"
6096 else
6097     echo "<malloc.h> NOT found." >&4
6098     val="$undef"
6099 fi
6100 $rm -f try.c try
6101 set i_malloc
6102 eval $setvar
6103
6104 : check for void type
6105 echo " "
6106 echo "Checking to see how well your C compiler groks the void type..." >&4
6107 case "$voidflags" in
6108 '')
6109         $cat >try.c <<EOCP
6110 #$i_stdlib I_STDLIB
6111 #ifdef I_STDLIB
6112 #include <stdlib.h>
6113 #endif
6114 #if TRY & 1
6115 void sub() {
6116 #else
6117 sub() {
6118 #endif
6119         extern void moo();      /* function returning void */
6120         void (*goo)();          /* ptr to func returning void */
6121 #if TRY & 8
6122         void *hue;              /* generic ptr */
6123 #endif
6124 #if TRY & 2
6125         void (*foo[10])();
6126 #endif
6127
6128 #if TRY & 4
6129         if(goo == moo) {
6130                 exit(0);
6131         }
6132 #endif
6133         exit(0);
6134 }
6135 int main() { sub(); }
6136 EOCP
6137         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6138                 voidflags=$defvoidused
6139         echo "Good.  It appears to support void to the level $package wants.">&4
6140                 if $contains warning .out >/dev/null 2>&1; then
6141                         echo "However, you might get some warnings that look like this:"
6142                         $cat .out
6143                 fi
6144         else
6145 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6146                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6147                         echo "It supports 1..."
6148                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6149                                 echo "It also supports 2..."
6150                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6151                                         voidflags=7
6152                                         echo "And it supports 4 but not 8 definitely."
6153                                 else
6154                                         echo "It doesn't support 4..."
6155                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6156                                                 voidflags=11
6157                                                 echo "But it supports 8."
6158                                         else
6159                                                 voidflags=3
6160                                                 echo "Neither does it support 8."
6161                                         fi
6162                                 fi
6163                         else
6164                                 echo "It does not support 2..."
6165                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6166                                         voidflags=13
6167                                         echo "But it supports 4 and 8."
6168                                 else
6169                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6170                                                 voidflags=5
6171                                                 echo "And it supports 4 but has not heard about 8."
6172                                         else
6173                                                 echo "However it supports 8 but not 4."
6174                                         fi
6175                                 fi
6176                         fi
6177                 else
6178                         echo "There is no support at all for void."
6179                         voidflags=0
6180                 fi
6181         fi
6182 esac
6183 case "$voidflags" in
6184 "$defvoidused") ;;
6185 *)      $cat >&4 <<'EOM'
6186   Support flag bits are:
6187     1: basic void declarations.
6188     2: arrays of pointers to functions returning void.
6189     4: operations between pointers to and addresses of void functions.
6190     8: generic void pointers.
6191 EOM
6192         dflt="$voidflags";
6193         rp="Your void support flags add up to what?"
6194         . ./myread
6195         voidflags="$ans"
6196         ;;
6197 esac
6198 $rm -f try.* .out
6199
6200 : check for length of pointer
6201 echo " "
6202 case "$ptrsize" in
6203 '')
6204         echo "Checking to see how big your pointers are..." >&4
6205         if test "$voidflags" -gt 7; then
6206                 echo '#define VOID_PTR char *' > try.c
6207         else
6208                 echo '#define VOID_PTR void *' > try.c
6209         fi
6210         $cat >>try.c <<EOCP
6211 #include <stdio.h>
6212 #$i_stdlib I_STDLIB
6213 #ifdef I_STDLIB
6214 #include <stdlib.h>
6215 #endif
6216 int main()
6217 {
6218     printf("%d\n", (int)sizeof(VOID_PTR));
6219     exit(0);
6220 }
6221 EOCP
6222         set try
6223         if eval $compile_ok; then
6224                 ptrsize=`$run ./try`
6225                 echo "Your pointers are $ptrsize bytes long."
6226         else
6227                 dflt='4'
6228                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6229                 rp="What is the size of a pointer (in bytes)?"
6230                 . ./myread
6231                 ptrsize="$ans"
6232         fi
6233         ;;
6234 esac
6235 $rm -f try.c try
6236 case "$use64bitall" in
6237 "$define"|true|[yY]*)
6238         case "$ptrsize" in
6239         4)      cat <<EOM >&4
6240
6241 *** You have chosen a maximally 64-bit build,
6242 *** but your pointers are only 4 bytes wide.
6243 *** Please rerun Configure without -Duse64bitall.
6244 EOM
6245                 case "$d_quad" in
6246                 define)
6247                         cat <<EOM >&4
6248 *** Since you have quads, you could possibly try with -Duse64bitint.
6249 EOM
6250                         ;;
6251                 esac
6252                 cat <<EOM >&4
6253 *** Cannot continue, aborting.
6254
6255 EOM
6256
6257                 exit 1
6258                 ;;
6259         esac
6260         ;;
6261 esac
6262
6263
6264 : determine whether to use malloc wrapping
6265 echo " "
6266 case "$usemallocwrap" in
6267 [yY]*|true|$define)     dflt='y' ;;
6268 [nN]*|false|$undef)     dflt='n' ;;
6269 *)      case "$usedevel" in
6270         [yY]*|true|$define)     dflt='y' ;;
6271         *) dflt='n' ;;
6272         esac
6273         ;;
6274 esac
6275 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6276 . ./myread
6277 usemallocwrap="$ans"
6278 case "$ans" in
6279 y*|true)
6280         usemallocwrap="$define" ;;
6281 *)
6282         usemallocwrap="$undef" ;;
6283 esac
6284
6285 : determine which malloc to compile in
6286 echo " "
6287 case "$usemymalloc" in
6288 [yY]*|true|$define)     dflt='y' ;;
6289 [nN]*|false|$undef)     dflt='n' ;;
6290 *)      case "$ptrsize" in
6291         4) dflt='y' ;;
6292         *) dflt='n' ;;
6293         esac
6294         ;;
6295 esac
6296 rp="Do you wish to attempt to use the malloc that comes with $package?"
6297 . ./myread
6298 usemymalloc="$ans"
6299 case "$ans" in
6300 y*|true)
6301         usemymalloc='y'
6302         mallocsrc='malloc.c'
6303         mallocobj="malloc$_o"
6304         d_mymalloc="$define"
6305         case "$libs" in
6306         *-lmalloc*)
6307                 : Remove malloc from list of libraries to use
6308                 echo "Removing unneeded -lmalloc from library list" >&4
6309                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6310                 shift
6311                 libs="$*"
6312                 echo "libs = $libs" >&4
6313                 ;;
6314         esac
6315         ;;
6316 *)
6317         usemymalloc='n'
6318         mallocsrc=''
6319         mallocobj=''
6320         d_mymalloc="$undef"
6321         ;;
6322 esac
6323
6324 : compute the return types of malloc and free
6325 echo " "
6326 $cat >malloc.c <<END
6327 #$i_malloc I_MALLOC
6328 #$i_stdlib I_STDLIB
6329 #include <stdio.h>
6330 #include <sys/types.h>
6331 #ifdef I_MALLOC
6332 #include <malloc.h>
6333 #endif
6334 #ifdef I_STDLIB
6335 #include <stdlib.h>
6336 #endif
6337 #ifdef TRY_MALLOC
6338 void *malloc();
6339 #endif
6340 #ifdef TRY_FREE
6341 void free();
6342 #endif
6343 END
6344 case "$malloctype" in
6345 '')
6346         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6347                 malloctype='void *'
6348         else
6349                 malloctype='char *'
6350         fi
6351         ;;
6352 esac
6353 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6354
6355 case "$freetype" in
6356 '')
6357         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6358                 freetype='void'
6359         else
6360                 freetype='int'
6361         fi
6362         ;;
6363 esac
6364 echo "Your system uses $freetype free(), it would seem." >&4
6365 $rm -f malloc.[co]
6366 $cat <<EOM
6367
6368 After $package is installed, you may wish to install various
6369 add-on modules and utilities.  Typically, these add-ons will
6370 be installed under $prefix with the rest
6371 of this package.  However, you may wish to install such add-ons
6372 elsewhere under a different prefix.
6373
6374 If you do not wish to put everything under a single prefix, that's
6375 ok.  You will be prompted for the individual locations; this siteprefix
6376 is only used to suggest the defaults.
6377
6378 The default should be fine for most people.
6379
6380 EOM
6381 fn=d~+
6382 rp='Installation prefix to use for add-on modules and utilities?'
6383 : XXX Here might be another good place for an installstyle setting.
6384 case "$siteprefix" in
6385 '') dflt=$prefix ;;
6386 *)  dflt=$siteprefix ;;
6387 esac
6388 . ./getfile
6389 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6390 oldsiteprefix=''
6391 case "$siteprefix" in
6392 '') ;;
6393 *)      case "$ans" in
6394         "$prefix") ;;
6395         *) oldsiteprefix="$prefix";;
6396         esac
6397         ;;
6398 esac
6399 siteprefix="$ans"
6400 siteprefixexp="$ansexp"
6401
6402 : determine where site specific libraries go.
6403 : Usual default is /usr/local/lib/perl5/site_perl/$version
6404 : The default "style" setting is made in installstyle.U
6405 : XXX No longer works with Prefixit stuff.
6406 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6407 case "$sitelib" in
6408 '') case "$installstyle" in
6409         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6410         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6411         esac
6412         ;;
6413 *)      dflt="$sitelib"
6414         ;;
6415 esac
6416 $cat <<EOM
6417
6418 The installation process will create a directory for
6419 site-specific extensions and modules.  Most users find it convenient
6420 to place all site-specific files in this directory rather than in the
6421 main distribution directory.
6422
6423 EOM
6424 fn=d~+
6425 rp='Pathname for the site-specific library files?'
6426 . ./getfile
6427 sitelib="$ans"
6428 sitelibexp="$ansexp"
6429 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6430 : Change installation prefix, if necessary.
6431 if $test X"$prefix" != X"$installprefix"; then
6432         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6433 else
6434         installsitelib="$sitelibexp"
6435 fi
6436
6437 : determine where site specific architecture-dependent libraries go.
6438 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6439 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6440 : sitelib may have an optional trailing /share.
6441 case "$sitearch" in
6442 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6443         dflt="$dflt/$archname"
6444         ;;
6445 *)      dflt="$sitearch"
6446         ;;
6447 esac
6448 set sitearch sitearch none
6449 eval $prefixit
6450 $cat <<EOM
6451
6452 The installation process will also create a directory for
6453 architecture-dependent site-specific extensions and modules.
6454
6455 EOM
6456 fn=d~+
6457 rp='Pathname for the site-specific architecture-dependent library files?'
6458 . ./getfile
6459 sitearch="$ans"
6460 sitearchexp="$ansexp"
6461 : Change installation prefix, if necessary.
6462 if $test X"$prefix" != X"$installprefix"; then
6463         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6464 else
6465         installsitearch="$sitearchexp"
6466 fi
6467
6468 $cat <<EOM
6469
6470 The installation process will also create a directory for
6471 vendor-supplied add-ons.  Vendors who supply perl with their system
6472 may find it convenient to place all vendor-supplied files in this
6473 directory rather than in the main distribution directory.  This will
6474 ease upgrades between binary-compatible maintenance versions of perl.
6475
6476 Of course you may also use these directories in whatever way you see
6477 fit.  For example, you might use them to access modules shared over a
6478 company-wide network.
6479
6480 The default answer should be fine for most people.
6481 This causes further questions about vendor add-ons to be skipped
6482 and no vendor-specific directories will be configured for perl.
6483
6484 EOM
6485 rp='Do you want to configure vendor-specific add-on directories?'
6486 case "$usevendorprefix" in
6487 define|true|[yY]*) dflt=y ;;
6488 *)      : User may have set vendorprefix directly on Configure command line.
6489         case "$vendorprefix" in
6490         ''|' ') dflt=n ;;
6491         *)      dflt=y ;;
6492         esac
6493         ;;
6494 esac
6495 . ./myread
6496 case "$ans" in
6497 [yY]*)  fn=d~+
6498         rp='Installation prefix to use for vendor-supplied add-ons?'
6499         case "$vendorprefix" in
6500         '') dflt='' ;;
6501         *)  dflt=$vendorprefix ;;
6502         esac
6503         . ./getfile
6504         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6505         oldvendorprefix=''
6506         case "$vendorprefix" in
6507         '') ;;
6508         *)      case "$ans" in
6509                 "$prefix") ;;
6510                 *) oldvendorprefix="$prefix";;
6511                 esac
6512                 ;;
6513         esac
6514         usevendorprefix="$define"
6515         vendorprefix="$ans"
6516         vendorprefixexp="$ansexp"
6517         ;;
6518 *)      usevendorprefix="$undef"
6519         vendorprefix=''
6520         vendorprefixexp=''
6521         ;;
6522 esac
6523
6524 case "$vendorprefix" in
6525 '')     d_vendorlib="$undef"
6526         vendorlib=''
6527         vendorlibexp=''
6528         ;;
6529 *)      d_vendorlib="$define"
6530         : determine where vendor-supplied modules go.
6531         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6532         case "$vendorlib" in
6533         '')
6534                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6535                 case "$installstyle" in
6536                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6537                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6538                 esac
6539                 ;;
6540         *)      dflt="$vendorlib"
6541                 ;;
6542         esac
6543         fn=d~+
6544         rp='Pathname for the vendor-supplied library files?'
6545         . ./getfile
6546         vendorlib="$ans"
6547         vendorlibexp="$ansexp"
6548         ;;
6549 esac
6550 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6551 : Change installation prefix, if necessary.
6552 if $test X"$prefix" != X"$installprefix"; then
6553         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6554 else
6555         installvendorlib="$vendorlibexp"
6556 fi
6557
6558 case "$vendorprefix" in
6559 '')     d_vendorarch="$undef"
6560         vendorarch=''
6561         vendorarchexp=''
6562         ;;
6563 *)      d_vendorarch="$define"
6564         : determine where vendor-supplied architecture-dependent libraries go.
6565         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6566         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6567         : vendorlib may have an optional trailing /share.
6568         case "$vendorarch" in
6569         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6570                 dflt="$dflt/$archname"
6571                 ;;
6572         *)      dflt="$vendorarch" ;;
6573         esac
6574         fn=d~+
6575         rp='Pathname for vendor-supplied architecture-dependent files?'
6576         . ./getfile
6577         vendorarch="$ans"
6578         vendorarchexp="$ansexp"
6579         ;;
6580 esac
6581 : Change installation prefix, if necessary.
6582 if $test X"$prefix" != X"$installprefix"; then
6583         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6584 else
6585         installvendorarch="$vendorarchexp"
6586 fi
6587
6588 : Final catch-all directories to search
6589 $cat <<EOM
6590
6591 Lastly, you can have perl look in other directories for extensions and
6592 modules in addition to those already specified.
6593 These directories will be searched after 
6594         $sitearch 
6595         $sitelib 
6596 EOM
6597 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6598 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6599 echo ' '
6600 case "$otherlibdirs" in
6601 ''|' ') dflt='none' ;;
6602 *)      dflt="$otherlibdirs" ;;
6603 esac
6604 $cat <<EOM
6605 Enter a colon-separated set of extra paths to include in perl's @INC
6606 search path, or enter 'none' for no extra paths.
6607
6608 EOM
6609
6610 rp='Colon-separated list of additional directories for perl to search?'
6611 . ./myread
6612 case "$ans" in
6613 ' '|''|none)    otherlibdirs=' ' ;;     
6614 *)      otherlibdirs="$ans" ;;
6615 esac
6616 case "$otherlibdirs" in
6617 ' ') val=$undef ;;
6618 *)      val=$define ;;
6619 esac
6620 set d_perl_otherlibdirs
6621 eval $setvar
6622
6623 : Cruising for prototypes
6624 echo " "
6625 echo "Checking out function prototypes..." >&4
6626 $cat >prototype.c <<EOCP
6627 #$i_stdlib I_STDLIB
6628 #ifdef I_STDLIB
6629 #include <stdlib.h>
6630 #endif
6631 int main(int argc, char *argv[]) {
6632         exit(0);}
6633 EOCP
6634 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6635         echo "Your C compiler appears to support function prototypes."
6636         val="$define"
6637 else
6638         echo "Your C compiler doesn't seem to understand function prototypes."
6639         val="$undef"
6640 fi
6641 set prototype
6642 eval $setvar
6643 $rm -f prototype*
6644
6645 case "$prototype" in
6646 "$define") ;;
6647 *)      ansi2knr='ansi2knr'
6648         echo " "
6649         cat <<EOM >&4
6650
6651 $me:  FATAL ERROR:
6652 This version of $package can only be compiled by a compiler that 
6653 understands function prototypes.  Unfortunately, your C compiler 
6654         $cc $ccflags
6655 doesn't seem to understand them.  Sorry about that.
6656
6657 If GNU cc is available for your system, perhaps you could try that instead.  
6658
6659 Eventually, we hope to support building Perl with pre-ANSI compilers.
6660 If you would like to help in that effort, please contact <perlbug@perl.org>.
6661
6662 Aborting Configure now.
6663 EOM
6664         exit 2
6665         ;;
6666 esac
6667
6668 : determine where public executables go
6669 echo " "
6670 set dflt bin bin
6671 eval $prefixit
6672 fn=d~
6673 rp='Pathname where the public executables will reside?'
6674 . ./getfile
6675 if $test "X$ansexp" != "X$binexp"; then
6676         installbin=''
6677 fi
6678 bin="$ans"
6679 binexp="$ansexp"
6680 : Change installation prefix, if necessary.
6681 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6682 if $test X"$prefix" != X"$installprefix"; then
6683         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6684 else
6685         installbin="$binexp"
6686 fi
6687
6688 echo " "
6689 case "$extras" in
6690 '') dflt='n';;
6691 *) dflt='y';;
6692 esac
6693 cat <<EOM
6694 Perl can be built with extra modules or bundles of modules which
6695 will be fetched from the CPAN and installed alongside Perl.
6696
6697 Notice that you will need access to the CPAN; either via the Internet,
6698 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6699 be asked later to configure the CPAN.pm module which will in turn do
6700 the installation of the rest of the extra modules or bundles.)
6701
6702 Notice also that if the modules require any external software such as
6703 libraries and headers (the libz library and the zlib.h header for the
6704 Compress::Zlib module, for example) you MUST have any such software
6705 already installed, this configuration process will NOT install such
6706 things for you.
6707
6708 If this doesn't make any sense to you, just accept the default '$dflt'.
6709 EOM
6710 rp='Install any extra modules (y or n)?'
6711 . ./myread
6712 case "$ans" in
6713 y|Y)
6714         cat <<EOM
6715
6716 Please list any extra modules or bundles to be installed from CPAN,
6717 with spaces between the names.  The names can be in any format the
6718 'install' command of CPAN.pm will understand.  (Answer 'none',
6719 without the quotes, to install no extra modules or bundles.)
6720 EOM
6721         rp='Extras?'
6722         dflt="$extras"
6723         . ./myread
6724         extras="$ans"
6725 esac
6726 case "$extras" in
6727 ''|'none')
6728         val=''
6729         $rm -f ../extras.lst
6730         ;;
6731 *)      echo "(Saving the list of extras for later...)"
6732         echo "$extras" > ../extras.lst
6733         val="'$extras'"
6734         ;;
6735 esac
6736 set extras
6737 eval $setvar
6738 echo " "
6739
6740 : determine where html pages for programs go
6741 set html1dir html1dir none
6742 eval $prefixit
6743 $cat <<EOM
6744
6745 If you wish to install html files for programs in $spackage, indicate 
6746 the appropriate directory here.  To skip installing html files,
6747 answer "none".
6748 EOM
6749 case "$html1dir" in
6750 ''|none|$undef|' ') dflt=none ;;
6751 *) dflt=$html1dir ;;
6752 esac
6753 fn=dn+~
6754 rp="Directory for the main $spackage html pages?"
6755 . ./getfile
6756 html1dir="$ans"
6757 html1direxp="$ansexp"
6758 : Use ' ' for none so value is preserved next time through Configure
6759 $test X"$html1dir" = "X" && html1dir=' '
6760 : Change installation prefix, if necessary.
6761 if $test X"$prefix" != X"$installprefix"; then
6762         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6763 else
6764         installhtml1dir="$html1direxp"
6765 fi
6766
6767 : determine where html pages for libraries and modules go
6768 set html3dir html3dir none
6769 eval $prefixit
6770 $cat <<EOM
6771
6772 If you wish to install html files for modules associated with $spackage,
6773 indicate the appropriate directory here.  To skip installing html files,
6774 answer "none".
6775 EOM
6776 : There is no obvious default.  If they have specified html1dir, then
6777 : try to key off that, possibly changing .../html1 into .../html3.
6778 case "$html3dir" in
6779 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6780 *) dflt=$html3dir ;;
6781 esac
6782 fn=dn+~
6783 rp="Directory for the $spackage module html pages?"
6784 . ./getfile
6785 html3dir="$ans"
6786 html3direxp="$ansexp"
6787 : Use ' ' for none so value is preserved next time through Configure
6788 $test X"$html3dir" = "X" && html3dir=' '
6789 : Change installation prefix, if necessary.
6790 if $test X"$prefix" != X"$installprefix"; then
6791         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6792 else
6793         installhtml3dir="$html3direxp"
6794 fi
6795
6796 : Find perl5.005 or later.
6797 echo "Looking for a previously installed perl5.005 or later... "
6798 case "$perl5" in
6799 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6800                 : Check if this perl is recent and can load a simple module
6801                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6802                         perl5=$tdir/perl
6803                         break;
6804                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6805                         perl5=$tdir/perl5
6806                         break;
6807                 fi
6808         done
6809         ;;
6810 *)      perl5="$perl5"
6811         ;;
6812 esac
6813 case "$perl5" in
6814 '')     echo "None found.  That's ok.";;
6815 *)      echo "Using $perl5." ;;
6816 esac
6817
6818 : Determine list of previous versions to include in @INC
6819 $cat > getverlist <<EOPL
6820 #!$perl5 -w
6821 use File::Basename;
6822 \$api_versionstring = "$api_versionstring";
6823 \$version = "$version";
6824 \$stem = "$sitelib_stem";
6825 \$archname = "$archname";
6826 EOPL
6827         $cat >> getverlist <<'EOPL'
6828 # Can't have leading @ because metaconfig interprets it as a command!
6829 ;@inc_version_list=();
6830 # XXX Redo to do opendir/readdir? 
6831 if (-d $stem) {
6832     chdir($stem);
6833     ;@candidates = glob("5.*");
6834 }
6835 else {
6836     ;@candidates = ();
6837 }
6838
6839 # XXX ToDo:  These comparisons must be reworked when two-digit
6840 # subversions come along, so that 5.7.10 compares as greater than
6841 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6842 # widespread that we can use the built-in version vectors rather
6843 # than reinventing them here.  For 5.6.0, however, we must
6844 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6845 foreach $d (@candidates) {
6846     if ($d lt $version) {
6847         if ($d ge $api_versionstring) {
6848             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6849         }
6850         elsif ($d ge "5.005") {
6851             unshift(@inc_version_list, grep { -d } $d);
6852         }
6853     }
6854     else {
6855         # Skip newer version.  I.e. don't look in
6856         # 5.7.0 if we're installing 5.6.1.
6857     }
6858 }
6859
6860 if (@inc_version_list) {
6861     print join(' ', @inc_version_list);
6862 }
6863 else {
6864     # Blank space to preserve value for next Configure run.
6865     print " ";
6866 }
6867 EOPL
6868 chmod +x getverlist
6869 case "$inc_version_list" in
6870 '')     if test -x "$perl5$exe_ext"; then
6871                 dflt=`$perl5 getverlist`
6872         else
6873                 dflt='none'
6874         fi
6875         ;;
6876 $undef) dflt='none' ;;
6877 *)  eval dflt=\"$inc_version_list\" ;;
6878 esac
6879 case "$dflt" in
6880 ''|' ') dflt=none ;;
6881 esac
6882 case "$dflt" in
6883 5.005) dflt=none ;;
6884 esac
6885 $cat <<EOM
6886
6887 In order to ease the process of upgrading, this version of perl 
6888 can be configured to use modules built and installed with earlier 
6889 versions of perl that were installed under $prefix.  Specify here
6890 the list of earlier versions that this version of perl should check.
6891 If Configure detected no earlier versions of perl installed under
6892 $prefix, then the list will be empty.  Answer 'none' to tell perl
6893 to not search earlier versions.
6894
6895 The default should almost always be sensible, so if you're not sure,
6896 just accept the default.
6897 EOM
6898
6899 rp='List of earlier versions to include in @INC?'
6900 . ./myread
6901 case "$ans" in
6902 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6903 *) inc_version_list="$ans" ;;
6904 esac
6905 case "$inc_version_list" in
6906 ''|' ') 
6907         inc_version_list_init='0';;
6908 *)      inc_version_list_init=`echo $inc_version_list |
6909                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6910         ;;
6911 esac
6912 $rm -f getverlist
6913
6914 : determine whether to install perl also as /usr/bin/perl
6915
6916 echo " "
6917 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6918         $cat <<EOM
6919 Many scripts expect perl to be installed as /usr/bin/perl.
6920
6921 If you want to, I can install the perl you are about to compile
6922 as /usr/bin/perl (in addition to $bin/perl).
6923 EOM
6924         if test -f /usr/bin/perl; then
6925             $cat <<EOM
6926
6927 However, please note that because you already have a /usr/bin/perl,
6928 overwriting that with a new Perl would very probably cause problems.
6929 Therefore I'm assuming you don't want to do that (unless you insist).
6930
6931 EOM
6932             case "$installusrbinperl" in
6933             "$define"|[yY]*)    dflt='y';;
6934             *)                  dflt='n';;
6935             esac
6936         else
6937             $cat <<EOM
6938
6939 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6940
6941 EOM
6942             case "$installusrbinperl" in
6943             "$undef"|[nN]*)     dflt='n';;
6944             *)                  dflt='y';;
6945             esac
6946         fi
6947         rp="Do you want to install perl as /usr/bin/perl?"
6948         . ./myread
6949         case "$ans" in
6950         [yY]*)  val="$define";;
6951         *)      val="$undef" ;;
6952         esac
6953 else
6954         val="$undef"
6955 fi
6956 set installusrbinperl
6957 eval $setvar
6958
6959 echo " "
6960 echo "Checking for GNU C Library..." >&4
6961 cat >try.c <<'EOCP'
6962 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6963    alone are insufficient to distinguish different versions, such as
6964    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6965    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6966 */
6967 #include <stdio.h>
6968 int main(void)
6969 {
6970 #ifdef __GLIBC__
6971 #   ifdef __GLIBC_MINOR__
6972 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6973 #           include <gnu/libc-version.h>
6974             printf("%s\n",  gnu_get_libc_version());
6975 #       else
6976             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6977 #       endif
6978 #   else
6979         printf("%d\n",  __GLIBC__);
6980 #   endif
6981     return 0;
6982 #else
6983     return 1;
6984 #endif
6985 }
6986 EOCP
6987 set try
6988 if eval $compile_ok && $run ./try > glibc.ver; then
6989         val="$define"
6990         gnulibc_version=`$cat glibc.ver`
6991         echo "You are using the GNU C Library version $gnulibc_version"
6992 else
6993         val="$undef"
6994         gnulibc_version=''
6995         echo "You are not using the GNU C Library"
6996 fi
6997 $rm -f try try.* glibc.ver
6998 set d_gnulibc
6999 eval $setvar
7000
7001 : see if nm is to be used to determine whether a symbol is defined or not
7002 case "$usenm" in
7003 '')
7004         dflt=''
7005         case "$d_gnulibc" in
7006         "$define")
7007                 echo " "
7008                 echo "nm probably won't work on the GNU C Library." >&4
7009                 dflt=n
7010                 ;;
7011         esac
7012         case "$dflt" in
7013         '') 
7014                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7015                         echo " "
7016                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
7017                         echo "'nm' won't be sufficient on this sytem." >&4
7018                         dflt=n
7019                 fi
7020                 ;;
7021         esac
7022         case "$dflt" in
7023         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7024                 if $test $dflt -gt 20; then
7025                         dflt=y
7026                 else
7027                         dflt=n
7028                 fi
7029                 ;;
7030         esac
7031         ;;
7032 *)
7033         case "$usenm" in
7034         true|$define) dflt=y;;
7035         *) dflt=n;;
7036         esac
7037         ;;
7038 esac
7039 $cat <<EOM
7040
7041 I can use $nm to extract the symbols from your C libraries. This
7042 is a time consuming task which may generate huge output on the disk (up
7043 to 3 megabytes) but that should make the symbols extraction faster. The
7044 alternative is to skip the 'nm' extraction part and to compile a small
7045 test program instead to determine whether each symbol is present. If
7046 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7047 this may be the best solution.
7048
7049 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7050
7051 EOM
7052 rp="Shall I use $nm to extract C symbols from the libraries?"
7053 . ./myread
7054 case "$ans" in
7055 [Nn]*) usenm=false;;
7056 *) usenm=true;;
7057 esac
7058
7059 runnm=$usenm
7060 case "$reuseval" in
7061 true) runnm=false;;
7062 esac
7063
7064 : nm options which may be necessary
7065 case "$nm_opt" in
7066 '') if $test -f /mach_boot; then
7067                 nm_opt=''       # Mach
7068         elif $test -d /usr/ccs/lib; then
7069                 nm_opt='-p'     # Solaris (and SunOS?)
7070         elif $test -f /dgux; then
7071                 nm_opt='-p'     # DG-UX
7072         elif $test -f /lib64/rld; then
7073                 nm_opt='-p'     # 64-bit Irix
7074         else
7075                 nm_opt=''
7076         fi;;
7077 esac
7078
7079 : nm options which may be necessary for shared libraries but illegal
7080 : for archive libraries.  Thank you, Linux.
7081 case "$nm_so_opt" in
7082 '')     case "$myuname" in
7083         *linux*)
7084                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7085                         nm_so_opt='--dynamic'
7086                 fi
7087                 ;;
7088         esac
7089         ;;
7090 esac
7091
7092 case "$runnm" in
7093 true)
7094 : get list of predefined functions in a handy place
7095 echo " "
7096 case "$libc" in
7097 '') libc=unknown
7098         case "$libs" in
7099         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7100         esac
7101         ;;
7102 esac
7103 case "$libs" in
7104 '') ;;
7105 *)  for thislib in $libs; do
7106         case "$thislib" in
7107         -lc|-lc_s)
7108                 : Handle C library specially below.
7109                 ;;
7110         -l*)
7111                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7112                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7113                         :
7114                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7115                         :
7116                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7117                         :
7118                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7119                         :
7120                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7121                         :
7122                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7123                         :
7124                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7125                         :
7126                 else
7127                         try=''
7128                 fi
7129                 libnames="$libnames $try"
7130                 ;;
7131         *) libnames="$libnames $thislib" ;;
7132         esac
7133         done
7134         ;;
7135 esac
7136 xxx=normal
7137 case "$libc" in
7138 unknown)
7139         set /lib/libc.$so
7140         for xxx in $libpth; do
7141                 $test -r $1 || set $xxx/libc.$so
7142                 : The messy sed command sorts on library version numbers.
7143                 $test -r $1 || \
7144                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7145                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7146                                 h
7147                                 s/[0-9][0-9]*/0000&/g
7148                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7149                                 G
7150                                 s/\n/ /' | \
7151                          $sort | $sed -e 's/^.* //'`
7152                 eval set \$$#
7153         done
7154         $test -r $1 || set /usr/ccs/lib/libc.$so
7155         $test -r $1 || set /lib/libsys_s$_a
7156         ;;
7157 *)
7158         set blurfl
7159         ;;
7160 esac
7161 if $test -r "$1"; then
7162         echo "Your (shared) C library seems to be in $1."
7163         libc="$1"
7164 elif $test -r /lib/libc && $test -r /lib/clib; then
7165         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7166         xxx=apollo
7167         libc='/lib/clib /lib/libc'
7168         if $test -r /lib/syslib; then
7169                 echo "(Your math library is in /lib/syslib.)"
7170                 libc="$libc /lib/syslib"
7171         fi
7172 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7173         echo "Your C library seems to be in $libc, as you said before."
7174 elif $test -r $incpath/usr/lib/libc$_a; then
7175         libc=$incpath/usr/lib/libc$_a;
7176         echo "Your C library seems to be in $libc.  That's fine."
7177 elif $test -r /lib/libc$_a; then
7178         libc=/lib/libc$_a;
7179         echo "Your C library seems to be in $libc.  You're normal."
7180 else
7181         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7182                 :
7183         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7184                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7185         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7186                 :
7187         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7188                 :
7189         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7190                 :
7191         else
7192                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7193         fi
7194         if $test -r "$tans"; then
7195                 echo "Your C library seems to be in $tans, of all places."
7196                 libc=$tans
7197         else
7198                 libc='blurfl'
7199         fi
7200 fi
7201 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7202         dflt="$libc"
7203         cat <<EOM
7204
7205 If the guess above is wrong (which it might be if you're using a strange
7206 compiler, or your machine supports multiple models), you can override it here.
7207
7208 EOM
7209 else
7210         dflt=''
7211         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7212         cat >&4 <<EOM
7213 I can't seem to find your C library.  I've looked in the following places:
7214
7215 EOM
7216         $sed 's/^/      /' libpath
7217         cat <<EOM
7218
7219 None of these seems to contain your C library. I need to get its name...
7220
7221 EOM
7222 fi
7223 fn=f
7224 rp='Where is your C library?'
7225 . ./getfile
7226 libc="$ans"
7227
7228 echo " "
7229 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7230 set X `cat libnames`
7231 shift
7232 xxx=files
7233 case $# in 1) xxx=file; esac
7234 echo "Extracting names from the following $xxx for later perusal:" >&4
7235 echo " "
7236 $sed 's/^/      /' libnames >&4
7237 echo " "
7238 $echo $n "This may take a while...$c" >&4
7239
7240 for file in $*; do
7241         case $file in
7242         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7243         *) $nm $nm_opt $file 2>/dev/null;;
7244         esac
7245 done >libc.tmp
7246
7247 $echo $n ".$c"
7248 $grep fprintf libc.tmp > libc.ptf
7249 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7250 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7251 xxx='[ADTSIW]'
7252 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7253         eval $xscan;\
7254         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7255                 eval $xrun
7256 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7257         eval $xscan;\
7258         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7259                 eval $xrun
7260 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7261         eval $xscan;\
7262         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7263                 eval $xrun
7264 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7265         eval $xscan;\
7266         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7267                 eval $xrun
7268 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7269         eval $xscan;\
7270         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7271                 eval $xrun
7272 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7273         eval $xscan;\
7274         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7275                 eval $xrun
7276 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7277                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7278         eval $xscan;\
7279         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7280                 eval $xrun
7281 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7282         eval $xscan;\
7283         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7284                 eval $xrun
7285 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7286         eval $xscan;\
7287         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7288                 eval $xrun
7289 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7290         eval $xscan;\
7291         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7292                 eval $xrun
7293 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7294         eval $xscan;\
7295         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7296                 eval $xrun
7297 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7298         eval $xscan;\
7299         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7300                 eval $xrun
7301 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7302         eval $xscan;\
7303         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7304                 eval $xrun
7305 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7306         eval $xscan;\
7307         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7308                 eval $xrun
7309 else
7310         $nm -p $* 2>/dev/null >libc.tmp
7311         $grep fprintf libc.tmp > libc.ptf
7312         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7313                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7314         then
7315                 nm_opt='-p'
7316                 eval $xrun
7317         else
7318                 echo " "
7319                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7320                 com=''
7321                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7322                         for thisname in $libnames $libc; do
7323                                 $ar t $thisname >>libc.tmp
7324                         done
7325                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7326                         echo "Ok." >&4
7327                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7328                         # Repeat libc to extract forwarders to DLL entries too
7329                         for thisname in $libnames $libc; do
7330                                 $ar tv $thisname >>libc.tmp
7331                                 # Revision 50 of EMX has bug in $ar.
7332                                 # it will not extract forwarders to DLL entries
7333                                 # Use emximp which will extract exactly them.
7334                                 emximp -o tmp.imp $thisname \
7335                                     2>/dev/null && \
7336                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7337                                     < tmp.imp >>libc.tmp
7338                                 $rm tmp.imp
7339                         done
7340                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7341                         echo "Ok." >&4
7342                 else
7343                         echo "$ar didn't seem to work right." >&4
7344                         echo "Maybe this is a Cray...trying bld instead..." >&4
7345                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7346                         then
7347                                 for thisname in $libnames; do
7348                                         bld t $libnames | \
7349                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7350                                         $ar t $thisname >>libc.tmp
7351                                 done
7352                                 echo "Ok." >&4
7353                         else
7354                                 echo "That didn't work either.  Giving up." >&4
7355                                 exit 1
7356                         fi
7357                 fi
7358         fi
7359 fi
7360 nm_extract="$com"
7361 case "$PASE" in
7362 define)
7363     echo " "
7364     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7365     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7366     ;;
7367 *)  if $test -f /lib/syscalls.exp; then
7368         echo " "
7369         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7370         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7371     fi
7372     ;;
7373 esac
7374 ;;
7375 esac
7376 $rm -f libnames libpath
7377
7378 : see if dld is available
7379 set dld.h i_dld
7380 eval $inhdr
7381
7382 : is a C symbol defined?
7383 csym='tlook=$1;
7384 case "$3" in
7385 -v) tf=libc.tmp; tdc="";;
7386 -a) tf=libc.tmp; tdc="[]";;
7387 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7388 esac;
7389 tx=yes;
7390 case "$reuseval-$4" in
7391 true-) ;;
7392 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7393 esac;
7394 case "$tx" in
7395 yes)
7396         tval=false;
7397         if $test "$runnm" = true; then
7398                 if $contains $tlook $tf >/dev/null 2>&1; then
7399                         tval=true;
7400                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7401                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7402                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7403                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7404                         $rm -f try$_exe try.c core core.* try.core;
7405                 fi;
7406         else
7407                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7408                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7409                 $rm -f try$_exe try.c;
7410         fi;
7411         ;;
7412 *)
7413         case "$tval" in
7414         $define) tval=true;;
7415         *) tval=false;;
7416         esac;
7417         ;;
7418 esac;
7419 eval "$2=$tval"'
7420
7421 : define an is-in-libc? function
7422 inlibc='echo " "; td=$define; tu=$undef;
7423 sym=$1; var=$2; eval "was=\$$2";
7424 tx=yes;
7425 case "$reuseval$was" in
7426 true) ;;
7427 true*) tx=no;;
7428 esac;
7429 case "$tx" in
7430 yes)
7431         set $sym tres -f;
7432         eval $csym;
7433         case "$tres" in
7434         true)
7435                 echo "$sym() found." >&4;
7436                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7437         *)
7438                 echo "$sym() NOT found." >&4;
7439                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7440         esac;;
7441 *)
7442         case "$was" in
7443         $define) echo "$sym() found." >&4;;
7444         *) echo "$sym() NOT found." >&4;;
7445         esac;;
7446 esac'
7447
7448 : see if dlopen exists
7449 xxx_runnm="$runnm"
7450 runnm=false
7451 set dlopen d_dlopen
7452 eval $inlibc
7453 runnm="$xxx_runnm"
7454
7455 : determine which dynamic loading, if any, to compile in
7456 echo " "
7457 dldir="ext/DynaLoader"
7458 case "$usedl" in
7459 $define|y|true)
7460         dflt='y'
7461         usedl="$define"
7462         ;;
7463 $undef|n|false)
7464         dflt='n'
7465         usedl="$undef"
7466         ;;
7467 *) 
7468         dflt='n'
7469         case "$d_dlopen" in
7470             $define) dflt='y' ;;
7471         esac
7472         case "$i_dld" in
7473             $define) dflt='y' ;;
7474         esac
7475         : Does a dl_xxx.xs file exist for this operating system
7476         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7477         ;;
7478 esac
7479 rp="Do you wish to use dynamic loading?"
7480 . ./myread
7481 usedl="$ans"
7482 case "$ans" in
7483 y*) usedl="$define"
7484         case "$dlsrc" in
7485         '')
7486                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7487                         dflt="$dldir/dl_${osname}.xs"
7488                 elif $test "$d_dlopen" = "$define" ; then
7489                         dflt="$dldir/dl_dlopen.xs"
7490                 elif $test "$i_dld" = "$define" ; then
7491                         dflt="$dldir/dl_dld.xs"
7492                 else
7493                         dflt=''
7494                 fi
7495                 ;;
7496         *)      dflt="$dldir/$dlsrc"
7497                 ;;
7498         esac
7499     echo "The following dynamic loading files are available:"
7500         : Can not go over to $dldir because getfile has path hard-coded in.
7501         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7502         rp="Source file to use for dynamic loading"
7503         fn="fne"
7504         gfpth="$src"
7505         . ./getfile
7506         usedl="$define"
7507         : emulate basename
7508         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7509
7510         $cat << EOM
7511
7512 Some systems may require passing special flags to $cc -c to
7513 compile modules that will be used to create a shared library.
7514 To use no flags, say "none".
7515
7516 EOM
7517     case "$cccdlflags" in
7518     '') case "$gccversion" in
7519                 '') case "$osname" in
7520                         hpux)   dflt='+z' ;;
7521                         next)   dflt='none' ;;
7522                         irix*)  dflt='-KPIC' ;;
7523                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7524                         sunos)  dflt='-pic' ;;
7525                         *)      dflt='none' ;;
7526                     esac
7527                         ;;
7528                 *)  case "$osname" in
7529                         darwin) dflt='none' ;;
7530                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7531                         *)      dflt='-fpic' ;;
7532                     esac ;;
7533             esac ;;
7534         ' ') dflt='none' ;;
7535     *)  dflt="$cccdlflags" ;;
7536     esac
7537     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7538     . ./myread
7539     case "$ans" in
7540     none) cccdlflags=' ' ;;
7541     *) cccdlflags="$ans" ;;
7542     esac
7543
7544     cat << EOM
7545
7546 Some systems use ld to create libraries that can be dynamically loaded,
7547 while other systems (such as those using ELF) use $cc.
7548
7549 EOM
7550         case "$ld" in
7551         '')     $cat >try.c <<EOM
7552 /* Test for whether ELF binaries are produced */
7553 #include <fcntl.h>
7554 #$i_stdlib I_STDLIB
7555 #ifdef I_STDLIB
7556 #include <stdlib.h>
7557 #endif
7558 int main() {
7559         char b[4];
7560         int i = open("a.out",O_RDONLY);
7561         if(i == -1) 
7562                 exit(1); /* fail */
7563         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7564                 exit(0); /* succeed (yes, it's ELF) */
7565         else
7566                 exit(1); /* fail */
7567 }
7568 EOM
7569                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7570                         cat <<EOM
7571 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7572 EOM
7573                         dflt="$cc"
7574                 else
7575                         echo "I'll use ld to build dynamic libraries."
7576                         dflt='ld'
7577                 fi
7578                 rm -f try.c a.out
7579                 ;;
7580         *)      dflt="$ld"
7581                 ;;
7582         esac
7583
7584     rp="What command should be used to create dynamic libraries?"
7585     . ./myread
7586         ld="$ans"
7587
7588     cat << EOM
7589
7590 Some systems may require passing special flags to $ld to create a
7591 library that can be dynamically loaded.  If your ld flags include
7592 -L/other/path options to locate libraries outside your loader's normal
7593 search path, you may need to specify those -L options here as well.  To
7594 use no flags, say "none".
7595
7596 EOM
7597     case "$lddlflags" in
7598     '') case "$osname" in
7599                         beos) dflt='-nostart' ;;
7600                         hpux) dflt='-b';
7601                               case "$gccversion" in
7602                               '') dflt="$dflt +vnocompatwarnings" ;;
7603                               esac
7604                               ;;        
7605                         linux|irix*)    dflt='-shared' ;;
7606                         next)  dflt='none' ;;
7607                         solaris) dflt='-G' ;;
7608                         sunos) dflt='-assert nodefinitions' ;;
7609                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7610                 *)     dflt='none' ;;
7611                         esac
7612                         ;;
7613     *) dflt="$lddlflags" ;;
7614     esac
7615
7616         : Try to guess additional flags to pick up local libraries.
7617         : Be careful not to append to a plain 'none'
7618         case "$dflt" in
7619         none) dflt='' ;;
7620         esac
7621         for thisflag in $ldflags; do
7622                 case "$thisflag" in
7623                 -L*|-R*|-Wl,-R*)
7624                         case " $dflt " in
7625                         *" $thisflag "*) ;;
7626                         *) dflt="$dflt $thisflag" ;;
7627                         esac
7628                         ;;
7629                 esac
7630         done
7631
7632         case "$dflt" in
7633         ''|' ') dflt='none' ;;
7634         esac
7635
7636     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7637     . ./myread
7638     case "$ans" in
7639     none) lddlflags=' ' ;;
7640     *) lddlflags="$ans" ;;
7641     esac
7642
7643         cat <<EOM
7644
7645 Some systems may require passing special flags to $cc to indicate that
7646 the resulting executable will use dynamic linking.  To use no flags,
7647 say "none".
7648
7649 EOM
7650     case "$ccdlflags" in
7651     '') case "$osname" in
7652             linux|hpux) dflt='-Wl,-E' ;;
7653             next|sunos) dflt='none' ;;
7654             *)          dflt='none' ;;
7655             esac ;;
7656     ' ')  dflt='none' ;;
7657     *)  dflt="$ccdlflags" ;;
7658     esac
7659     rp="Any special flags to pass to $cc to use dynamic linking?"
7660     . ./myread
7661     case "$ans" in
7662     none) ccdlflags=' ' ;;
7663     *) ccdlflags="$ans" ;;
7664     esac
7665     ;;
7666 *)  usedl="$undef"
7667         ld='ld'
7668     dlsrc='dl_none.xs'
7669     lddlflags=''
7670     ccdlflags=''
7671     ;;
7672 esac
7673
7674 also=''
7675 case "$usedl" in
7676 $undef)
7677         # No dynamic loading being used, so don't bother even to prompt.
7678         useshrplib='false'
7679         ;;
7680 *)      case "$useshrplib" in
7681         '')     case "$osname" in
7682                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7683                         dflt=y
7684                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7685                         ;;
7686                 next*)
7687                         case "$osvers" in
7688                         4*)     dflt=y
7689                                 also='Building a shared libperl is needed for MAB support.'
7690                                 ;;
7691                         *)      dflt=n
7692                                 ;;
7693                         esac
7694                         ;;
7695                 *)      dflt=n
7696                         ;;
7697                 esac
7698                 ;;
7699         $define|true|[Yy]*)
7700                 dflt=y
7701                 ;;
7702         *)      dflt=n
7703                 ;;
7704         esac
7705         $cat << EOM
7706
7707 The perl executable is normally obtained by linking perlmain.c with
7708 libperl${_a}, any static extensions (usually just DynaLoader), and
7709 any other libraries needed on this system (such as -lm, etc.).  Since
7710 your system supports dynamic loading, it is probably possible to build
7711 a shared libperl.$so.  If you will have more than one executable linked
7712 to libperl.$so, this will significantly reduce the size of each
7713 executable, but it may have a noticeable affect on performance.  The
7714 default is probably sensible for your system.
7715 $also
7716
7717 EOM
7718         rp="Build a shared libperl.$so (y/n)"
7719         . ./myread
7720         case "$ans" in
7721         true|$define|[Yy]*)
7722                 useshrplib='true'  ;;
7723         *)      useshrplib='false' ;;
7724         esac
7725         ;;
7726 esac
7727
7728 case "$useshrplib" in
7729 true)
7730         case "$libperl" in
7731         '')
7732                 # Figure out a good name for libperl.so.  Since it gets stored in
7733                 # a version-specific architecture-dependent library, the version
7734                 # number isn't really that important, except for making cc/ld happy.
7735                 #
7736                 # A name such as libperl.so.3.1
7737                 majmin="libperl.$so.$patchlevel.$subversion"
7738                 # A name such as libperl.so.301
7739                 majonly=`echo $patchlevel $subversion |
7740                         $awk '{printf "%d%02d", $1, $2}'`
7741                 majonly=libperl.$so.$majonly
7742                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7743                 # rely on figuring it out from the naming of libc.
7744                 case "${osname}${osvers}" in
7745                 next4*)
7746                         dflt=libperl.5.$so
7747                         # XXX How handle the --version stuff for MAB?
7748                         ;;
7749                 linux*)  # ld won't link with a bare -lperl otherwise.
7750                         dflt=libperl.$so
7751                         ;;
7752                 cygwin*) # ld links against an importlib
7753                         dflt=libperl$lib_ext
7754                         ;;
7755                 *)      # Try to guess based on whether libc has major.minor.
7756                         case "$libc" in
7757                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7758                         *libc.$so.[0-9]*) dflt=$majonly ;;
7759                         *)      dflt=libperl.$so ;;
7760                         esac
7761                         ;;
7762                 esac
7763                 ;;
7764         *)      dflt=$libperl
7765                 ;;
7766         esac
7767         cat << EOM
7768
7769 I need to select a good name for the shared libperl.  If your system uses
7770 library names with major and minor numbers, then you might want something
7771 like $majmin.  Alternatively, if your system uses a single version
7772 number for shared libraries, then you might want to use $majonly.
7773 Or, your system might be quite happy with a simple libperl.$so.
7774
7775 Since the shared libperl will get installed into a version-specific
7776 architecture-dependent directory, the version number of the shared perl
7777 library probably isn't important, so the default should be o.k.
7778
7779 EOM
7780         rp='What name do you want to give to the shared libperl?'
7781         . ./myread
7782         libperl=$ans
7783         echo "Ok, I'll use $libperl"
7784         ;;
7785 *)
7786         libperl="libperl${_a}"
7787         ;;
7788 esac
7789
7790 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7791 case "$shrpdir" in
7792 '') ;;
7793 *)      $cat >&4 <<EOM
7794 WARNING:  Use of the shrpdir variable for the installation location of
7795 the shared $libperl is not supported.  It was never documented and
7796 will not work in this version.  Let me (perlbug@perl.org)
7797 know of any problems this may cause.
7798
7799 EOM
7800         case "$shrpdir" in
7801         "$archlibexp/CORE")
7802                 $cat >&4 <<EOM
7803 But your current setting of $shrpdir is
7804 the default anyway, so it's harmless.
7805 EOM
7806                 ;;
7807         *)
7808                 $cat >&4 <<EOM
7809 Further, your current attempted setting of $shrpdir
7810 conflicts with the value of $archlibexp/CORE
7811 that installperl will use.
7812 EOM
7813                 ;;
7814         esac
7815         ;;
7816 esac
7817
7818 # How will the perl executable find the installed shared $libperl?
7819 # Add $xxx to ccdlflags.
7820 # If we can't figure out a command-line option, use $shrpenv to
7821 # set env LD_RUN_PATH.  The main perl makefile uses this.
7822 shrpdir=$archlibexp/CORE
7823 xxx=''
7824 tmp_shrpenv=''
7825 if "$useshrplib"; then
7826     case "$osname" in 
7827         aix)
7828                 # We'll set it in Makefile.SH...
7829                 ;;
7830         solaris)
7831                 xxx="-R $shrpdir"
7832                 ;;
7833         freebsd|netbsd|openbsd)
7834                 xxx="-Wl,-R$shrpdir"
7835                 ;;
7836         bsdos|linux|irix*|dec_osf)
7837                 xxx="-Wl,-rpath,$shrpdir"
7838                 ;;
7839         next)
7840                 # next doesn't like the default...
7841                 ;;
7842         beos)
7843                 # beos doesn't like the default, either.
7844                 ;;
7845         hpux*)
7846                 # hpux doesn't like the default, either.
7847                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7848                 ;;
7849         *)
7850                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7851                 ;;
7852         esac
7853         case "$xxx" in
7854         '') ;;
7855         *)      
7856                 # Only add $xxx if it isn't already in ccdlflags.
7857                 case " $ccdlflags " in
7858                 *" $xxx "*)     ;;
7859                 *)      ccdlflags="$ccdlflags $xxx"
7860                         cat <<EOM >&4
7861
7862 Adding $xxx to the flags
7863 passed to $ld so that the perl executable will find the 
7864 installed shared $libperl.
7865
7866 EOM
7867                         ;;
7868                 esac
7869                 ;;
7870         esac
7871 fi
7872 # Fix ccdlflags in AIX for building external extensions.
7873 # (For building Perl itself bare -bE:perl.exp is needed,
7874 #  Makefile.SH takes care of this.)
7875 case "$osname" in
7876 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7877 esac
7878 # Respect a hint or command-line value.
7879 case "$shrpenv" in
7880 '') shrpenv="$tmp_shrpenv" ;;
7881 esac
7882 case "$ldlibpthname" in
7883 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7884 none)   ldlibpthname='' ;;
7885 esac
7886
7887 : determine where manual pages are on this system
7888 echo " "
7889 case "$sysman" in
7890 '') 
7891         syspath='/usr/share/man/man1 /usr/man/man1'
7892         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7893         syspath="$syspath /usr/man/u_man/man1"
7894         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7895         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7896         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7897         sysman=`./loc . /usr/man/man1 $syspath`
7898         ;;
7899 esac
7900 if $test -d "$sysman"; then
7901         echo "System manual is in $sysman." >&4
7902 else
7903         echo "Could not find manual pages in source form." >&4
7904 fi
7905
7906 : determine where manual pages go
7907 set man1dir man1dir none
7908 eval $prefixit
7909 $cat <<EOM
7910
7911 $spackage has manual pages available in source form.
7912 EOM
7913 case "$nroff" in
7914 nroff)
7915         echo "However, you don't have nroff, so they're probably useless to you."
7916         case "$man1dir" in
7917         '') man1dir="none";;
7918         esac;;
7919 esac
7920 echo "If you don't want the manual sources installed, answer 'none'."
7921 case "$man1dir" in
7922 ' ') dflt=none
7923         ;;
7924 '')
7925         lookpath="$prefixexp/share/man/man1"
7926         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7927         lookpath="$lookpath $prefixexp/man/p_man/man1"
7928         lookpath="$lookpath $prefixexp/man/u_man/man1"
7929         lookpath="$lookpath $prefixexp/man/man.1"
7930         case "$sysman" in
7931         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7932         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7933         esac
7934         set dflt
7935         eval $prefixup
7936         ;;
7937 *)  dflt="$man1dir"
7938         ;;
7939 esac
7940 echo " "
7941 fn=dn+~
7942 rp="Where do the main $spackage manual pages (source) go?"
7943 . ./getfile
7944 if $test "X$man1direxp" != "X$ansexp"; then
7945         installman1dir=''
7946 fi
7947 man1dir="$ans"
7948 man1direxp="$ansexp"
7949 case "$man1dir" in
7950 '')     man1dir=' '
7951         installman1dir='';;
7952 esac
7953
7954 : Change installation prefix, if necessary.
7955 if $test X"$prefix" != X"$installprefix"; then
7956         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7957 else
7958         installman1dir="$man1direxp"
7959 fi
7960
7961 : What suffix to use on installed man pages
7962
7963 case "$man1dir" in
7964 ' ')
7965         man1ext='0'
7966         ;;
7967 *)
7968         rp="What suffix should be used for the main $spackage man pages?"
7969         case "$man1ext" in
7970         '')     case "$man1dir" in
7971                 *1)  dflt=1 ;;
7972                 *1p) dflt=1p ;;
7973                 *1pm) dflt=1pm ;;
7974                 *l) dflt=l;;
7975                 *n) dflt=n;;
7976                 *o) dflt=o;;
7977                 *p) dflt=p;;
7978                 *C) dflt=C;;
7979                 *L) dflt=L;;
7980                 *L1) dflt=L1;;
7981                 *) dflt=1;;
7982                 esac
7983                 ;;
7984         *)      dflt="$man1ext";;
7985         esac
7986         . ./myread
7987         man1ext="$ans"
7988         ;;
7989 esac
7990
7991 : see if we can have long filenames
7992 echo " "
7993 first=123456789abcdef
7994 $rm -f $first
7995 if (echo hi >$first) 2>/dev/null; then
7996         if $test -f 123456789abcde; then
7997                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7998                 val="$undef"
7999         else
8000                 echo 'You can have filenames longer than 14 characters.'>&4
8001                 val="$define"
8002         fi
8003 else
8004         $cat <<'EOM'
8005 You can't have filenames longer than 14 chars.
8006 You can't even think about them!
8007 EOM
8008         val="$undef"
8009 fi 
8010 set d_flexfnam
8011 eval $setvar
8012 $rm -rf 123456789abcde*
8013
8014 : determine where library module manual pages go
8015 set man3dir man3dir none
8016 eval $prefixit
8017 $cat <<EOM
8018
8019 $spackage has manual pages for many of the library modules.
8020 EOM
8021
8022 case "$nroff" in
8023 nroff)
8024         $cat <<'EOM'
8025 However, you don't have nroff, so they're probably useless to you.
8026 EOM
8027         case "$man3dir" in
8028         '') man3dir="none";;
8029         esac;;
8030 esac
8031
8032 case "$d_flexfnam" in
8033 undef)
8034         $cat <<'EOM'
8035 However, your system can't handle the long file names like File::Basename.3. 
8036 EOM
8037         case "$man3dir" in
8038         '') man3dir="none";;
8039         esac;;
8040 esac
8041
8042 echo "If you don't want the manual sources installed, answer 'none'."
8043 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8044 case "$man3dir" in
8045 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8046         if $test -d "$privlib/man/man3"; then
8047                 cat <<EOM >&4
8048
8049 WARNING:  Previous versions of perl installed man3 pages into
8050 $privlib/man/man3.  This version will suggest a 
8051 new default of $dflt.  
8052 EOM
8053                 tdflt=$dflt
8054                 dflt='n'
8055                 rp='Do you wish to preserve the old behavior?(y/n)'
8056                 . ./myread
8057                 case "$ans" in
8058                 y*) dflt="$privlib/man/man3" ;;
8059                 *)  dflt=$tdflt ;;
8060                 esac
8061     fi
8062         ;;
8063 *)      dflt="$man3dir" ;;
8064 esac
8065 case "$dflt" in
8066 ' ') dflt=none ;;
8067 esac
8068 echo " "
8069 fn=dn+~
8070 rp="Where do the $package library man pages (source) go?"
8071 . ./getfile
8072 man3dir="$ans"
8073 man3direxp="$ansexp"
8074 case "$man3dir" in
8075 '')     man3dir=' '
8076         installman3dir='';;
8077 esac
8078
8079 : Change installation prefix, if necessary.
8080 if $test X"$prefix" != X"$installprefix"; then
8081         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8082 else
8083         installman3dir="$man3direxp"
8084 fi
8085
8086 : What suffix to use on installed man pages
8087 case "$man3dir" in
8088 ' ')
8089         man3ext='0'
8090         ;;
8091 *)
8092         rp="What suffix should be used for the $package library man pages?"
8093         case "$man3ext" in
8094         '')     case "$man3dir" in
8095                 *3)  dflt=3 ;;
8096                 *3p) dflt=3p ;;
8097                 *3pm) dflt=3pm ;;
8098                 *l) dflt=l;;
8099                 *n) dflt=n;;
8100                 *o) dflt=o;;
8101                 *p) dflt=p;;
8102                 *C) dflt=C;;
8103                 *L) dflt=L;;
8104                 *L3) dflt=L3;;
8105                 *) dflt=3;;
8106                 esac
8107                 ;;
8108         *)      dflt="$man3ext";;
8109         esac
8110         . ./myread
8111         man3ext="$ans"
8112         ;;
8113 esac
8114
8115 : see if we have to deal with yellow pages, now NIS.
8116 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8117         if $test -f /usr/etc/nibindd; then
8118                 echo " "
8119                 echo "I'm fairly confident you're on a NeXT."
8120                 echo " "
8121                 rp='Do you get the hosts file via NetInfo?'
8122                 dflt=y
8123                 case "$hostcat" in
8124                 nidump*) ;;
8125                 '') ;;
8126                 *) dflt=n;;
8127                 esac
8128                 . ./myread
8129                 case "$ans" in
8130                 y*) hostcat='nidump hosts .';;
8131                 *)      case "$hostcat" in
8132                         nidump*) hostcat='';;
8133                         esac
8134                         ;;
8135                 esac
8136         fi
8137         case "$hostcat" in
8138         nidump*) ;;
8139         *)
8140                 case "$hostcat" in
8141                 *ypcat*) dflt=y;;
8142                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8143                                 dflt=y
8144                         else
8145                                 dflt=n
8146                         fi;;
8147                 *) dflt=n;;
8148                 esac
8149                 echo " "
8150                 rp='Are you getting the hosts file via yellow pages?'
8151                 . ./myread
8152                 case "$ans" in
8153                 y*) hostcat='ypcat hosts';;
8154                 *) hostcat='cat /etc/hosts';;
8155                 esac
8156                 ;;
8157         esac
8158 fi
8159 case "$hostcat" in
8160 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8161 esac
8162 case "$groupcat" in
8163 '') test -f /etc/group && groupcat='cat /etc/group';;
8164 esac
8165 case "$passcat" in
8166 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8167 esac
8168
8169 : now get the host name
8170 echo " "
8171 echo "Figuring out host name..." >&4
8172 case "$myhostname" in
8173 '') cont=true
8174         echo 'Maybe "hostname" will work...'
8175         if tans=`sh -c hostname 2>&1` ; then
8176                 myhostname=$tans
8177                 phostname=hostname
8178                 cont=''
8179         fi
8180         ;;
8181 *) cont='';;
8182 esac
8183 if $test "$cont"; then
8184         if ./xenix; then
8185                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8186                 if tans=`cat /etc/systemid 2>&1` ; then
8187                         myhostname=$tans
8188                         phostname='cat /etc/systemid'
8189                         echo "Whadyaknow.  Xenix always was a bit strange..."
8190                         cont=''
8191                 fi
8192         elif $test -r /etc/systemid; then
8193                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8194         fi
8195 fi
8196 if $test "$cont"; then
8197         echo 'No, maybe "uuname -l" will work...'
8198         if tans=`sh -c 'uuname -l' 2>&1` ; then
8199                 myhostname=$tans
8200                 phostname='uuname -l'
8201         else
8202                 echo 'Strange.  Maybe "uname -n" will work...'
8203                 if tans=`sh -c 'uname -n' 2>&1` ; then
8204                         myhostname=$tans
8205                         phostname='uname -n'
8206                 else
8207                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8208                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8209                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8210                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8211                         else
8212                                 case "$myhostname" in
8213                                 '') echo "Does this machine have an identity crisis or something?"
8214                                         phostname='';;
8215                                 *)
8216                                         echo "Well, you said $myhostname before..."
8217                                         phostname='echo $myhostname';;
8218                                 esac
8219                         fi
8220                 fi
8221         fi
8222 fi
8223 case "$myhostname" in
8224 '') myhostname=noname ;;
8225 esac
8226 : you do not want to know about this
8227 set $myhostname
8228 myhostname=$1
8229
8230 : verify guess
8231 if $test "$myhostname" ; then
8232         dflt=y
8233         rp='Your host name appears to be "'$myhostname'".'" Right?"
8234         . ./myread
8235         case "$ans" in
8236         y*) ;;
8237         *) myhostname='';;
8238         esac
8239 fi
8240
8241 : bad guess or no guess
8242 while $test "X$myhostname" = X ; do
8243         dflt=''
8244         rp="Please type the (one word) name of your host:"
8245         . ./myread
8246         myhostname="$ans"
8247 done
8248
8249 : translate upper to lower if necessary
8250 case "$myhostname" in
8251 *[A-Z]*)
8252         echo "(Normalizing case in your host name)"
8253         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8254         ;;
8255 esac
8256
8257 case "$myhostname" in
8258 *.*)
8259         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8260         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8261         echo "(Trimming domain name from host name--host name is now $myhostname)"
8262         ;;
8263 *) case "$mydomain" in
8264         '')
8265                 {
8266                         test "X$hostcat" = "Xypcat hosts" &&
8267                         ypmatch "$myhostname" hosts 2>/dev/null |\
8268                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8269                         $test -s hosts
8270                 } || {
8271                         test "X$hostcat" != "X" &&
8272                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8273                                         /[       ]$myhostname[  . ]/p" > hosts
8274                 }
8275                 tmp_re="[       . ]"
8276                 if $test -f hosts; then
8277                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8278                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8279                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8280                                 hosts | $sort | $uniq | \
8281                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8282                         case `$echo X$dflt` in
8283                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8284                                 dflt=.
8285                                 ;;
8286                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8287                                 ;;
8288                         esac
8289                 else
8290                         echo "(I cannot locate a hosts database anywhere)"
8291                         dflt=.
8292                 fi
8293                 case "$dflt" in
8294                 .)
8295                         tans=`./loc resolv.conf X /etc /usr/etc`
8296                         if $test -f "$tans"; then
8297                                 echo "(Attempting domain name extraction from $tans)"
8298                                 dflt=.`$sed -n -e 's/   / /g' \
8299                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8300                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8301                                 case "$dflt" in
8302                                 .) dflt=.`$sed -n -e 's/        / /g' \
8303                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8304                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8305                                         ;;
8306                                 esac
8307                         fi
8308                         ;;
8309                 esac
8310                 case "$dflt" in
8311                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8312                         dflt=.`sh -c domainname 2>/dev/null`
8313                         case "$dflt" in
8314                         '') dflt='.';;
8315                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8316                         esac
8317                         ;;
8318                 esac
8319                 case "$dflt$osname" in
8320                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8321                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8322                         ;;
8323                 esac
8324                 case "$dflt" in
8325                 .) echo "(Lost all hope -- silly guess then)"
8326                         dflt='.nonet'
8327                         ;;
8328                 esac
8329                 $rm -f hosts
8330                 ;;
8331         *) dflt="$mydomain";;
8332         esac;;
8333 esac
8334 echo " "
8335 rp="What is your domain name?"
8336 . ./myread
8337 tans="$ans"
8338 case "$ans" in
8339 '') ;;
8340 .*) ;;
8341 *) tans=".$tans";;
8342 esac
8343 mydomain="$tans"
8344
8345 : translate upper to lower if necessary
8346 case "$mydomain" in
8347 *[A-Z]*)
8348         echo "(Normalizing case in your domain name)"
8349         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8350         ;;
8351 esac
8352
8353 : a little sanity check here
8354 case "$phostname" in
8355 '') ;;
8356 *)
8357         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8358         $myhostname$mydomain|$myhostname) ;;
8359         *)
8360                 case "$phostname" in
8361                 sed*)
8362                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8363                         ;;
8364                 *)
8365                         echo "(That doesn't agree with your $phostname command, by the way.)"
8366                         ;;
8367                 esac
8368         ;;
8369         esac
8370         ;;
8371 esac
8372
8373 $cat <<EOM
8374
8375 I need to get your e-mail address in Internet format if possible, i.e.
8376 something like user@host.domain. Please answer accurately since I have
8377 no easy means to double check it. The default value provided below
8378 is most probably close to reality but may not be valid from outside
8379 your organization...
8380
8381 EOM
8382 cont=x
8383 while test "$cont"; do
8384         case "$cf_email" in
8385         '') dflt="$cf_by@$myhostname$mydomain";;
8386         *) dflt="$cf_email";;
8387         esac
8388         rp='What is your e-mail address?'
8389         . ./myread
8390         cf_email="$ans"
8391         case "$cf_email" in
8392         *@*.*) cont='' ;;
8393         *)
8394                 rp='Address does not look like an Internet one.  Use it anyway?'
8395                 case "$fastread" in
8396                 yes) dflt=y ;;
8397                 *) dflt=n ;;
8398                 esac
8399                 . ./myread
8400                 case "$ans" in
8401                 y*) cont='' ;;
8402                 *) echo " " ;;
8403                 esac
8404                 ;;
8405         esac
8406 done
8407
8408 $cat <<EOM
8409
8410 If you or somebody else will be maintaining perl at your site, please
8411 fill in the correct e-mail address here so that they may be contacted
8412 if necessary. Currently, the "perlbug" program included with perl
8413 will send mail to this address in addition to perlbug@perl.org. You may
8414 enter "none" for no administrator.
8415
8416 EOM
8417 case "$perladmin" in
8418 '') dflt="$cf_email";;
8419 *) dflt="$perladmin";;
8420 esac
8421 rp='Perl administrator e-mail address'
8422 . ./myread
8423 perladmin="$ans"
8424
8425 : determine whether to only install version-specific parts.
8426 echo " "
8427 $cat <<EOM
8428 Do you want to install only the version-specific parts of the perl
8429 distribution?  Usually you do *not* want to do this.
8430 EOM
8431 case "$versiononly" in
8432 "$define"|[Yy]*|true) dflt='y' ;;
8433 *) dflt='n';
8434 esac
8435 rp="Do you want to install only the version-specific parts of perl?"
8436 . ./myread
8437 case "$ans" in
8438 [yY]*)  val="$define";;
8439 *)      val="$undef" ;;
8440 esac
8441 set versiononly
8442 eval $setvar
8443
8444 case "$versiononly" in
8445 "$define") inc_version_list=''
8446            inc_version_list_init=0
8447            ;;
8448 esac
8449
8450 : figure out how to guarantee perl startup
8451 case "$startperl" in
8452 '')
8453         case "$sharpbang" in
8454         *!)
8455                 $cat <<EOH
8456
8457 I can use the #! construct to start perl on your system. This will
8458 make startup of perl scripts faster, but may cause problems if you
8459 want to share those scripts and perl is not in a standard place
8460 ($binexp/perl) on all your platforms. The alternative is to force
8461 a shell by starting the script with a single ':' character.
8462
8463 EOH
8464                 case "$versiononly" in
8465                 "$define")      dflt="$binexp/perl$version";;  
8466                 *)              dflt="$binexp/perl";;
8467                 esac
8468                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8469                 . ./myread
8470                 case "$ans" in
8471                 none)   startperl=": # use perl";;
8472                 *)      startperl="#!$ans"
8473                         if $test 30 -lt `echo "$ans" | wc -c`; then
8474                                 $cat >&4 <<EOM
8475
8476 WARNING:  Some systems limit the #! command to 32 characters.
8477 If you experience difficulty running Perl scripts with #!, try
8478 installing Perl in a directory with a shorter pathname.
8479
8480 EOM
8481                         fi ;;
8482                 esac
8483                 ;;
8484         *) startperl=": # use perl"
8485                 ;;
8486         esac
8487         ;;
8488 esac
8489 echo "I'll use $startperl to start perl scripts."
8490
8491 : figure best path for perl in scripts
8492 case "$perlpath" in
8493 '')
8494         case "$versiononly" in
8495         "$define")      perlpath="$binexp/perl$version";;
8496         *)              perlpath="$binexp/perl";;
8497         esac
8498         case "$startperl" in
8499         *!*) ;;
8500         *)
8501                 $cat <<EOH
8502
8503 I will use the "eval 'exec'" idiom to start Perl on your system.
8504 I can use the full path of your Perl binary for this purpose, but
8505 doing so may cause problems if you want to share those scripts and
8506 Perl is not always in a standard place ($binexp/perl).
8507
8508 EOH
8509                 dflt="$binexp/perl"
8510                 rp="What path shall I use in \"eval 'exec'\"?"
8511                 . ./myread
8512                 perlpath="$ans"
8513                 ;;
8514         esac
8515         ;;
8516 esac
8517 case "$startperl" in
8518 *!*)    ;;
8519 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8520 esac
8521
8522 : determine where public executable scripts go
8523 set scriptdir scriptdir
8524 eval $prefixit
8525 case "$scriptdir" in
8526 '')
8527         dflt="$bin"
8528         : guess some guesses
8529         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8530         $test -d /usr/share/bin     && dflt=/usr/share/bin
8531         $test -d /usr/local/script  && dflt=/usr/local/script
8532         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8533         $test -d $prefixexp/script  && dflt=$prefixexp/script
8534         set dflt
8535         eval $prefixup
8536         ;;
8537 *)  dflt="$scriptdir"
8538         ;;
8539 esac
8540 $cat <<EOM
8541  
8542 Some installations have a separate directory just for executable scripts so
8543 that they can mount it across multiple architectures but keep the scripts in
8544 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8545 Or you might just lump your scripts in with all your other executables.
8546  
8547 EOM
8548 fn=d~
8549 rp='Where do you keep publicly executable scripts?'
8550 . ./getfile
8551 if $test "X$ansexp" != "X$scriptdirexp"; then
8552         installscript=''
8553 fi
8554 scriptdir="$ans"
8555 scriptdirexp="$ansexp"
8556 : Change installation prefix, if necessary.
8557 if $test X"$prefix" != X"$installprefix"; then
8558         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8559 else
8560         installscript="$scriptdirexp"
8561 fi
8562
8563 : determine where add-on public executables go
8564 case "$sitebin" in
8565 '')     dflt=$siteprefix/bin ;;
8566 *)      dflt=$sitebin ;;
8567 esac
8568 fn=d~
8569 rp='Pathname where the add-on public executables should be installed?'
8570 . ./getfile
8571 sitebin="$ans"
8572 sitebinexp="$ansexp"
8573 : Change installation prefix, if necessary.
8574 if $test X"$prefix" != X"$installprefix"; then
8575         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8576 else
8577         installsitebin="$sitebinexp"
8578 fi
8579
8580 : determine where add-on html pages go
8581 : There is no standard location, so try to copy the previously-selected
8582 : directory structure for the core html pages.
8583 case "$sitehtml1dir" in
8584 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8585 *)     dflt=$sitehtml1dir ;;
8586 esac
8587 case "$dflt" in
8588 ''|' ') dflt=none ;;
8589 esac
8590 fn=dn+~
8591 rp='Pathname where the site-specific html pages should be installed?'
8592 . ./getfile
8593 sitehtml1dir="$ans"
8594 sitehtml1direxp="$ansexp"
8595 : Change installation prefix, if necessary.
8596 if $test X"$prefix" != X"$installprefix"; then
8597         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8598 else
8599         installsitehtml1dir="$sitehtml1direxp"
8600 fi
8601
8602 : determine where add-on library html pages go
8603 : There is no standard location, so try to copy the previously-selected
8604 : directory structure for the core html pages.
8605 case "$sitehtml3dir" in
8606 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8607 *)     dflt=$sitehtml3dir ;;
8608 esac
8609 case "$dflt" in
8610 ''|' ') dflt=none ;;
8611 esac
8612 fn=dn+~
8613 rp='Pathname where the site-specific library html pages should be installed?'
8614 . ./getfile
8615 sitehtml3dir="$ans"
8616 sitehtml3direxp="$ansexp"
8617 : Change installation prefix, if necessary.
8618 if $test X"$prefix" != X"$installprefix"; then
8619         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8620 else
8621         installsitehtml3dir="$sitehtml3direxp"
8622 fi
8623
8624 : determine where add-on manual pages go
8625 case "$siteman1dir" in
8626 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8627 *)      dflt=$siteman1dir ;;
8628 esac
8629 case "$dflt" in
8630 ''|' ') dflt=none ;;
8631 esac
8632 fn=dn+~
8633 rp='Pathname where the site-specific manual pages should be installed?'
8634 . ./getfile
8635 siteman1dir="$ans"
8636 siteman1direxp="$ansexp"
8637 : Change installation prefix, if necessary.
8638 if $test X"$prefix" != X"$installprefix"; then
8639         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8640 else
8641         installsiteman1dir="$siteman1direxp"
8642 fi
8643
8644 : determine where add-on library man pages go
8645 case "$siteman3dir" in
8646 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8647 *)      dflt=$siteman3dir ;;
8648 esac
8649 case "$dflt" in
8650 ''|' ') dflt=none ;;
8651 esac
8652 fn=dn+~
8653 rp='Pathname where the site-specific library manual pages should be installed?'
8654 . ./getfile
8655 siteman3dir="$ans"
8656 siteman3direxp="$ansexp"
8657 : Change installation prefix, if necessary.
8658 if $test X"$prefix" != X"$installprefix"; then
8659         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8660 else
8661         installsiteman3dir="$siteman3direxp"
8662 fi
8663
8664 : determine where add-on public executable scripts go
8665 case "$sitescript" in
8666 '')     dflt=$siteprefix/script
8667         $test -d $dflt || dflt=$sitebin ;;
8668 *)  dflt="$sitescript" ;;
8669 esac
8670 fn=d~+
8671 rp='Pathname where add-on public executable scripts should be installed?'
8672 . ./getfile
8673 sitescript="$ans"
8674 sitescriptexp="$ansexp"
8675 : Change installation prefix, if necessary.
8676 if $test X"$prefix" != X"$installprefix"; then
8677         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8678 else
8679         installsitescript="$sitescriptexp"
8680 fi
8681
8682 case "$usefaststdio" in
8683 $define|true|[yY]*|'')
8684         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8685         case "$xversion" in
8686         [68])   dflt='y' ;;
8687         *)      dflt='n' ;;
8688         esac
8689         ;;
8690 *) dflt='n';;
8691 esac
8692 cat <<EOM
8693
8694 Perl can be built to use 'fast stdio', which means using the stdio
8695 library but also directly manipulating the stdio buffers to enable
8696 faster I/O.  Using stdio is better for backward compatibility (especially
8697 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8698 interface has been preferred instead of stdio.
8699
8700 If this doesn't make any sense to you, just accept the default '$dflt'.
8701 EOM
8702 rp='Use the "fast stdio" if available?'
8703 . ./myread
8704 case "$ans" in
8705 y|Y)    val="$define" ;;     
8706 *)      val="$undef" ;;
8707 esac
8708 set usefaststdio
8709 eval $setvar
8710
8711
8712 : define an is-a-typedef? function
8713 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8714 case "$inclist" in
8715 "") inclist="sys/types.h";;
8716 esac;
8717 eval "varval=\$$var";
8718 case "$varval" in
8719 "")
8720         $rm -f temp.c;
8721         for inc in $inclist; do
8722                 echo "#include <$inc>" >>temp.c;
8723         done;
8724         echo "#ifdef $type" >> temp.c;
8725         echo "printf(\"We have $type\");" >> temp.c;
8726         echo "#endif" >> temp.c;
8727         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8728         if $contains $type temp.E >/dev/null 2>&1; then
8729                 eval "$var=\$type";
8730         else
8731                 eval "$var=\$def";
8732         fi;
8733         $rm -f temp.?;;
8734 *) eval "$var=\$varval";;
8735 esac'
8736
8737 : define an is-a-typedef? function that prompts if the type is not available.
8738 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8739 case "$inclist" in
8740 "") inclist="sys/types.h";;
8741 esac;
8742 eval "varval=\$$var";
8743 case "$varval" in
8744 "")
8745         $rm -f temp.c;
8746         for inc in $inclist; do
8747                 echo "#include <$inc>" >>temp.c;
8748         done;
8749         echo "#ifdef $type" >> temp.c;
8750         echo "printf(\"We have $type\");" >> temp.c;
8751         echo "#endif" >> temp.c;
8752         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8753         echo " " ;
8754         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8755         if $contains $type temp.E >/dev/null 2>&1; then
8756                 echo "$type found." >&4;
8757                 eval "$var=\$type";
8758         else
8759                 echo "$type NOT found." >&4;
8760                 dflt="$def";
8761                 . ./myread ;
8762                 eval "$var=\$ans";
8763         fi;
8764         $rm -f temp.?;;
8765 *) eval "$var=\$varval";;
8766 esac'
8767
8768 : see what type lseek is declared as in the kernel
8769 rp="What is the type used for lseek's offset on this system?"
8770 set off_t lseektype long stdio.h sys/types.h
8771 eval $typedef_ask
8772
8773 echo " "
8774 echo "Checking to see how big your file offsets are..." >&4
8775 $cat >try.c <<EOCP
8776 #include <sys/types.h>
8777 #include <stdio.h>
8778 int main()
8779 {
8780     printf("%d\n", (int)sizeof($lseektype));
8781     return(0); 
8782 }
8783 EOCP
8784 set try
8785 if eval $compile_ok; then
8786         lseeksize=`$run ./try`
8787         echo "Your file offsets are $lseeksize bytes long."
8788 else
8789         dflt=$longsize
8790         echo " "
8791         echo "(I can't seem to compile the test program.  Guessing...)"
8792         rp="What is the size of your file offsets (in bytes)?"
8793         . ./myread
8794         lseeksize="$ans"
8795 fi
8796 $rm -f try.c try
8797
8798 : see what type file positions are declared as in the library
8799 rp="What is the type for file position used by fsetpos()?"
8800 set fpos_t fpostype long stdio.h sys/types.h
8801 eval $typedef_ask
8802
8803 echo " "
8804 case "$fpostype" in
8805 *_t) zzz="$fpostype"    ;;
8806 *)   zzz="fpos_t"       ;;
8807 esac
8808 echo "Checking the size of $zzz..." >&4 
8809 cat > try.c <<EOCP
8810 #include <sys/types.h>
8811 #include <stdio.h>
8812 #$i_stdlib I_STDLIB
8813 #ifdef I_STDLIB
8814 #include <stdlib.h>
8815 #endif
8816 int main() {
8817     printf("%d\n", (int)sizeof($fpostype));
8818     exit(0);
8819 }
8820 EOCP
8821 set try
8822 if eval $compile_ok; then
8823         yyy=`$run ./try`
8824         case "$yyy" in
8825         '')     fpossize=4
8826                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8827                 ;;
8828         *)      fpossize=$yyy
8829                 echo "Your $zzz is $fpossize bytes long."
8830                 ;;
8831         esac
8832 else
8833         dflt="$longsize"
8834         echo " " >&4
8835         echo "(I can't compile the test program.  Guessing...)" >&4
8836         rp="What is the size of your file positions (in bytes)?"
8837         . ./myread
8838         fpossize="$ans"
8839 fi
8840
8841 # Backward compatibility (uselfs is deprecated).
8842 case "$uselfs" in
8843 "$define"|true|[yY]*)
8844         cat <<EOM >&4
8845
8846 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8847 EOM
8848         uselargefiles="$define"
8849         ;;
8850 esac                          
8851
8852 case "$lseeksize:$fpossize" in
8853 8:8) cat <<EOM
8854
8855 You can have files larger than 2 gigabytes.
8856 EOM
8857    val="$define" ;;
8858 *)    case "$uselargefiles" in
8859    "$undef"|false|[nN]*) dflt='n' ;;
8860    *)   dflt='y' ;;
8861    esac
8862    cat <<EOM
8863
8864 Perl can be built to understand large files (files larger than 2 gigabytes)
8865 on some systems.  To do so, Configure can be run with -Duselargefiles.
8866
8867 If this doesn't make any sense to you, just accept the default '$dflt'.
8868 EOM
8869    rp='Try to understand large files, if available?'
8870    . ./myread
8871    case "$ans" in
8872    y|Y)         val="$define" ;;
8873    *)           val="$undef"  ;;
8874    esac
8875    ;;
8876 esac
8877 set uselargefiles
8878 eval $setvar
8879 : Look for a hint-file generated 'call-back-unit'.  If the
8880 : user has specified that a large files perl is to be built,
8881 : we may need to set or change some other defaults.
8882 if $test -f uselargefiles.cbu; then
8883         echo "Your platform has some specific hints regarding large file builds, using them..."
8884         . ./uselargefiles.cbu
8885 fi
8886 case "$uselargefiles" in
8887 "$define")
8888         if $test -f uselargefiles.cbu; then
8889                 echo " "
8890                 echo "Rechecking to see how big your file offsets are..." >&4
8891                 $cat >try.c <<EOCP
8892 #include <sys/types.h>
8893 #include <stdio.h>
8894 int main()
8895 {
8896     printf("%d\n", (int)sizeof($lseektype));
8897     return(0); 
8898 }
8899 EOCP
8900                 set try
8901                 if eval $compile_ok; then
8902                         lseeksize=`$run ./try`
8903                         $echo "Your file offsets are now $lseeksize bytes long."
8904                 else
8905                         dflt="$lseeksize"
8906                         echo " "
8907                         echo "(I can't seem to compile the test program.  Guessing...)"
8908                         rp="What is the size of your file offsets (in bytes)?"
8909                         . ./myread
8910                         lseeksize="$ans"
8911                 fi
8912                 case "$fpostype" in
8913                 *_t) zzz="$fpostype"    ;;
8914                 *)   zzz="fpos_t"       ;;
8915                 esac
8916                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8917                 $cat > try.c <<EOCP
8918 #include <sys/types.h>
8919 #include <stdio.h>
8920 #$i_stdlib I_STDLIB
8921 #ifdef I_STDLIB
8922 #include <stdlib.h>
8923 #endif
8924 int main() {
8925     printf("%d\n", (int)sizeof($fpostype));
8926     return(0);
8927 }
8928 EOCP
8929                 set try
8930                 if eval $compile_ok; then
8931                         yyy=`$run ./try`
8932                         dflt="$lseeksize"
8933                         case "$yyy" in
8934                         '')     echo " "
8935                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8936                                 ;;
8937                         *)      fpossize=$yyy
8938                                 echo " $fpossize bytes." >&4
8939                                 ;;
8940                         esac
8941                 else
8942                         dflt="$fpossize"
8943                         echo " "
8944                         echo "(I can't compile the test program.  Guessing...)" >&4
8945                         rp="What is the size of your file positions (in bytes)?"
8946                         . ./myread
8947                         fpossize="$ans"
8948                 fi
8949                 $rm -f try.c try
8950         fi
8951         ;;
8952 esac
8953
8954 case "$vendorprefix" in
8955 '')     d_vendorbin="$undef"
8956         vendorbin=''
8957         vendorbinexp=''
8958         ;;
8959 *)      d_vendorbin="$define"
8960         : determine where vendor-supplied executables go.
8961         case "$vendorbin" in
8962         '') dflt=$vendorprefix/bin ;;
8963         *)      dflt="$vendorbin" ;;
8964         esac
8965         fn=d~+
8966         rp='Pathname for the vendor-supplied executables directory?'
8967         . ./getfile
8968         vendorbin="$ans"
8969         vendorbinexp="$ansexp"
8970         ;;
8971 esac
8972 : Change installation prefix, if necessary.
8973 if $test X"$prefix" != X"$installprefix"; then
8974         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8975 else
8976         installvendorbin="$vendorbinexp"
8977 fi
8978
8979 case "$vendorprefix" in
8980 '')     vendorhtml1dir=''
8981         vendorhtml1direxp=''
8982         ;;
8983 *)      : determine where vendor-supplied html pages go.
8984         : There is no standard location, so try to copy the previously-selected
8985         : directory structure for the core html pages.
8986         : XXX Better default suggestions would be welcome.
8987         case "$vendorhtml1dir" in
8988         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8989         *)      dflt=$vendorhtml1dir ;;
8990         esac
8991         case "$dflt" in
8992         ''|' ') dflt=none ;;
8993         esac
8994         fn=dn+~
8995         rp='Pathname for the vendor-supplied html pages?'
8996         . ./getfile
8997         vendorhtml1dir="$ans"
8998         vendorhtml1direxp="$ansexp"
8999         ;;
9000 esac
9001 : Use ' ' for none so value is preserved next time through Configure
9002 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9003 : Change installation prefix, if necessary.
9004 if $test X"$prefix" != X"$installprefix"; then
9005         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9006 else
9007         installvendorhtml1dir="$vendorhtml1direxp"
9008 fi
9009
9010 case "$vendorprefix" in
9011 '')     vendorhtml3dir=''
9012         vendorhtml3direxp=''
9013         ;;
9014 *)      : determine where vendor-supplied module html pages go.
9015         : There is no standard location, so try to copy the previously-selected
9016         : directory structure for the core html pages.
9017         : XXX Better default suggestions would be welcome.
9018         case "$vendorhtml3dir" in
9019         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9020         *)      dflt=$vendorhtml3dir ;;
9021         esac
9022         case "$dflt" in
9023         ''|' ') dflt=none ;;
9024         esac
9025         fn=dn+~
9026         rp='Pathname for the vendor-supplied html pages?'
9027         . ./getfile
9028         vendorhtml3dir="$ans"
9029         vendorhtml3direxp="$ansexp"
9030         ;;
9031 esac
9032 : Use ' ' for none so value is preserved next time through Configure
9033 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9034 : Change installation prefix, if necessary.
9035 if $test X"$prefix" != X"$installprefix"; then
9036         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9037 else
9038         installvendorhtml3dir="$vendorhtml3direxp"
9039 fi
9040
9041 case "$vendorprefix" in
9042 '')     vendorman1dir=''
9043         vendorman1direxp=''
9044         ;;
9045 *)      : determine where vendor-supplied manual pages go.
9046         case "$vendorman1dir" in
9047         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9048         *)      dflt=$vendorman1dir ;;
9049         esac
9050         case "$dflt" in
9051         ''|' ') dflt=none ;;
9052         esac
9053         fn=nd~+
9054         rp='Pathname for the vendor-supplied manual section 1 pages?'
9055         . ./getfile
9056         vendorman1dir="$ans"
9057         vendorman1direxp="$ansexp"
9058         ;;
9059 esac
9060 : Use ' ' for none so value is preserved next time through Configure
9061 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9062 : Change installation prefix, if necessary.
9063 if $test X"$prefix" != X"$installprefix"; then
9064         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9065 else
9066         installvendorman1dir="$vendorman1direxp"
9067 fi
9068
9069 case "$vendorprefix" in
9070 '')     vendorman3dir=''
9071         vendorman3direxp=''
9072         ;;
9073 *)      : determine where vendor-supplied module manual pages go.
9074         case "$vendorman3dir" in
9075         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9076         *)      dflt=$vendorman3dir ;;
9077         esac
9078         case "$dflt" in
9079         ''|' ') dflt=none ;;
9080         esac
9081         fn=nd~+
9082         rp='Pathname for the vendor-supplied manual section 3 pages?'
9083         . ./getfile
9084         vendorman3dir="$ans"
9085         vendorman3direxp="$ansexp"
9086         ;;
9087 esac
9088 : Use ' ' for none so value is preserved next time through Configure
9089 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9090 : Change installation prefix, if necessary.
9091 if $test X"$prefix" != X"$installprefix"; then
9092         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9093 else
9094         installvendorman3dir="$vendorman3direxp"
9095 fi
9096
9097 case "$vendorprefix" in
9098 '')     d_vendorscript="$undef"
9099         vendorscript=''
9100         vendorscriptexp=''
9101         ;;
9102 *)      d_vendorscript="$define"
9103         : determine where vendor-supplied scripts go.
9104         case "$vendorscript" in
9105         '')     dflt=$vendorprefix/script
9106                 $test -d $dflt || dflt=$vendorbin ;;
9107         *)  dflt="$vendorscript" ;;
9108         esac
9109         $cat <<EOM
9110
9111 The installation process will create a directory for 
9112 vendor-supplied scripts.
9113
9114 EOM
9115         fn=d~+
9116         rp='Pathname for the vendor-supplied scripts directory?'
9117         . ./getfile
9118         vendorscript="$ans"
9119         vendorscriptexp="$ansexp"
9120         ;;
9121 esac
9122 : Change installation prefix, if necessary.
9123 if $test X"$prefix" != X"$installprefix"; then
9124         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9125 else
9126         installvendorscript="$vendorscriptexp"
9127 fi
9128
9129 : see if qgcvt exists
9130 set qgcvt d_qgcvt
9131 eval $inlibc
9132
9133 echo " "
9134
9135 if $test X"$d_longdbl" = X"$define"; then
9136
9137 echo "Checking how to print long doubles..." >&4
9138
9139 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9140         $cat >try.c <<'EOCP'
9141 #include <sys/types.h>
9142 #include <stdio.h>
9143 int main() {
9144   double d = 123.456;
9145   printf("%.3f\n", d);
9146 }
9147 EOCP
9148         set try
9149         if eval $compile; then
9150                 yyy=`$run ./try`
9151                 case "$yyy" in
9152                 123.456)
9153                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9154                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9155                         echo "We will use %f."
9156                         ;;
9157                 esac
9158         fi
9159 fi
9160
9161 if $test X"$sPRIfldbl" = X; then
9162         $cat >try.c <<'EOCP'
9163 #include <sys/types.h>
9164 #include <stdio.h>
9165 int main() {
9166   long double d = 123.456;
9167   printf("%.3Lf\n", d);
9168 }
9169 EOCP
9170         set try
9171         if eval $compile; then
9172                 yyy=`$run ./try`
9173                 case "$yyy" in
9174                 123.456)
9175                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9176                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9177                         echo "We will use %Lf."
9178                         ;;
9179                 esac
9180         fi
9181 fi
9182
9183 if $test X"$sPRIfldbl" = X; then
9184         $cat >try.c <<'EOCP'
9185 #include <sys/types.h>
9186 #include <stdio.h>
9187 int main() {
9188   long double d = 123.456;
9189   printf("%.3llf\n", d);
9190 }
9191 EOCP
9192         set try
9193         if eval $compile; then
9194                 yyy=`$run ./try`
9195                 case "$yyy" in
9196                 123.456)
9197                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9198                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9199                         echo "We will use %llf."
9200                         ;;
9201                 esac
9202         fi
9203 fi
9204
9205 if $test X"$sPRIfldbl" = X; then
9206         $cat >try.c <<'EOCP'
9207 #include <sys/types.h>
9208 #include <stdio.h>
9209 int main() {
9210   long double d = 123.456;
9211   printf("%.3lf\n", d);
9212 }
9213 EOCP
9214         set try
9215         if eval $compile; then
9216                 yyy=`$run ./try`
9217                 case "$yyy" in
9218                 123.456)
9219                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9220                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9221                         echo "We will use %lf."
9222                         ;;
9223                 esac
9224         fi
9225 fi
9226
9227 if $test X"$sPRIfldbl" = X; then
9228         echo "Cannot figure out how to print long doubles." >&4
9229 else
9230         sSCNfldbl=$sPRIfldbl    # expect consistency
9231 fi
9232
9233 $rm -f try try.*
9234
9235 fi # d_longdbl
9236
9237 case "$sPRIfldbl" in
9238 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9239         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9240         d_SCNfldbl="$undef";
9241         ;;
9242 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9243         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9244         d_SCNfldbl="$define";
9245         ;;
9246 esac
9247
9248 : Check how to convert floats to strings.
9249
9250 if test "X$d_Gconvert" = X; then
9251
9252 echo " "
9253 echo "Checking for an efficient way to convert floats to strings."
9254 echo " " > try.c
9255 case "$uselongdouble" in
9256 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9257 esac
9258 case "$d_longdbl" in
9259 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9260 esac
9261 case "$d_PRIgldbl" in
9262 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9263 esac
9264 $cat >>try.c <<EOP
9265 #ifdef TRY_gconvert
9266 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9267 char *myname = "gconvert";
9268 #endif
9269 #ifdef TRY_gcvt
9270 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9271 char *myname = "gcvt";
9272 #endif
9273 #ifdef TRY_qgcvt
9274 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9275 char *myname = "qgcvt";
9276 #define DOUBLETYPE long double
9277 #endif
9278 #ifdef TRY_sprintf
9279 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9280 #ifdef HAS_PRIgldbl
9281 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9282 #else
9283 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9284 #endif
9285 #else
9286 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9287 #endif
9288 char *myname = "sprintf";
9289 #endif
9290
9291 #ifndef DOUBLETYPE
9292 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9293 #define DOUBLETYPE long double
9294 #else
9295 #define DOUBLETYPE double
9296 #endif
9297 #endif
9298
9299 #include <stdio.h>
9300
9301 #define I_STDLIB $i_stdlib
9302 #ifdef I_STDLIB
9303 #include <stdlib.h>
9304 #endif
9305
9306 int
9307 checkit(expect, got)
9308 char *expect;
9309 char *got;
9310 {
9311     if (strcmp(expect, got)) {
9312                 printf("%s oddity:  Expected %s, got %s\n",
9313                         myname, expect, got);
9314                 exit(1);
9315         }
9316 }
9317
9318 int main()
9319
9320         char buf[64]; 
9321         buf[63] = '\0';
9322
9323         /* This must be 1st test on (which?) platform */
9324         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9325         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9326         checkit("0.1", buf);
9327
9328         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9329         checkit("0.01", buf);
9330
9331         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9332         checkit("0.001", buf);
9333
9334         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9335         checkit("0.0001", buf);
9336
9337         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9338         if (strlen(buf) > 5)
9339             checkit("9e-005", buf); /* for Microsoft ?? */
9340         else
9341             checkit("9e-05", buf);
9342
9343         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9344         checkit("1", buf);
9345
9346         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9347         checkit("1.1", buf);
9348
9349         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9350         checkit("1.01", buf);
9351
9352         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9353         checkit("1.001", buf);
9354
9355         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9356         checkit("1.0001", buf);
9357
9358         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9359         checkit("1.00001", buf);
9360
9361         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9362         checkit("1.000001", buf);
9363
9364         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9365         checkit("0", buf);
9366
9367         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9368         checkit("-1", buf);
9369
9370         /* Some Linux gcvt's give 1.e+5 here. */
9371         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9372         checkit("100000", buf);
9373         
9374         /* Some Linux gcvt's give -1.e+5 here. */
9375         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9376         checkit("-100000", buf);
9377
9378         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9379         checkit("123.456", buf);
9380
9381         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9382         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9383         /* 34 should be enough to scare even long double
9384          * places into using the e notation. */
9385         if (strlen(buf) > 5)
9386             checkit("1e+034", buf); /* for Microsoft */
9387         else
9388             checkit("1e+34", buf);
9389
9390         /* For Perl, if you add additional tests here, also add them to
9391          * t/base/num.t for benefit of platforms not using Configure or
9392          * overriding d_Gconvert */
9393
9394         exit(0);
9395 }
9396 EOP
9397 : first add preferred functions to our list
9398 xxx_list=""
9399 for xxx_convert in $gconvert_preference; do
9400     case $xxx_convert in
9401     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9402     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9403     esac 
9404 done
9405 : then add any others
9406 for xxx_convert in gconvert gcvt sprintf; do
9407     case "$xxx_list" in
9408     *$xxx_convert*) ;;
9409     *) xxx_list="$xxx_list $xxx_convert" ;;
9410     esac 
9411 done
9412
9413 case "$d_longdbl$uselongdouble" in
9414 "$define$define")
9415     : again, add prefered functions to our list first
9416     xxx_ld_list=""
9417     for xxx_convert in $gconvert_ld_preference; do
9418         case $xxx_convert in
9419         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9420         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9421         esac
9422     done
9423     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9424     for xxx_convert in qgcvt sprintf $xxx_list; do
9425         case "$xxx_ld_list" in
9426         $xxx_convert*|*" $xxx_convert"*) ;;
9427         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9428         esac
9429     done
9430     : if sprintf cannot do long doubles, move it to the end
9431     if test "$d_PRIgldbl" != "$define"; then
9432         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9433     fi
9434     : if no qgcvt, remove it
9435     if test "$d_qgcvt" != "$define"; then
9436         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9437     fi
9438     : use the ld_list
9439     xxx_list="$xxx_ld_list"
9440     ;;
9441 esac
9442
9443 for xxx_convert in $xxx_list; do
9444         echo "Trying $xxx_convert..."
9445         $rm -f try try$_o
9446         set try -DTRY_$xxx_convert
9447         if eval $compile; then
9448                 echo "$xxx_convert() found." >&4
9449                 if $run ./try; then
9450                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9451                         break;
9452                 else
9453                         echo "...But $xxx_convert didn't work as I expected."
9454                         xxx_convert=''
9455                 fi
9456         else
9457                 echo "$xxx_convert NOT found." >&4
9458         fi
9459 done
9460
9461 if test X$xxx_convert = X; then
9462     echo "*** WHOA THERE!!! ***" >&4
9463     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9464     xxx_convert=sprintf
9465 fi
9466
9467 case "$xxx_convert" in
9468 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9469 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9470 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9471 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9472    "$define$define$define")
9473       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9474    "$define$define$undef")
9475       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9476    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9477    esac
9478    ;;  
9479 esac
9480
9481 fi
9482
9483 : see if _fwalk exists
9484 set fwalk d__fwalk
9485 eval $inlibc
9486
9487 : Initialize h_fcntl
9488 h_fcntl=false
9489
9490 : Initialize h_sysfile
9491 h_sysfile=false
9492
9493 : access call always available on UNIX
9494 set access d_access
9495 eval $inlibc
9496
9497 : locate the flags for 'access()'
9498 case "$d_access" in
9499 "$define")
9500         echo " "
9501         $cat >access.c <<EOCP
9502 #include <sys/types.h>
9503 #ifdef I_FCNTL
9504 #include <fcntl.h>
9505 #endif
9506 #ifdef I_SYS_FILE
9507 #include <sys/file.h>
9508 #endif
9509 #ifdef I_UNISTD
9510 #include <unistd.h>
9511 #endif
9512 #$i_stdlib I_STDLIB
9513 #ifdef I_STDLIB
9514 #include <stdlib.h>
9515 #endif
9516 int main() {
9517         exit(R_OK);
9518 }
9519 EOCP
9520         : check sys/file.h first, no particular reason here
9521         if $test `./findhdr sys/file.h` && \
9522                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9523                 h_sysfile=true;
9524                 echo "<sys/file.h> defines the *_OK access constants." >&4
9525         elif $test `./findhdr fcntl.h` && \
9526                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9527                 h_fcntl=true;
9528                 echo "<fcntl.h> defines the *_OK access constants." >&4
9529         elif $test `./findhdr unistd.h` && \
9530                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9531                 echo "<unistd.h> defines the *_OK access constants." >&4
9532         else
9533                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9534         fi
9535         ;;
9536 esac
9537 $rm -f access*
9538
9539 : see if accessx exists
9540 set accessx d_accessx
9541 eval $inlibc
9542
9543 : see if aintl exists
9544 set aintl d_aintl
9545 eval $inlibc
9546
9547 : see if alarm exists
9548 set alarm d_alarm
9549 eval $inlibc
9550
9551 : see if POSIX threads are available
9552 set pthread.h i_pthread
9553 eval $inhdr
9554
9555 : define a fucntion to check prototypes
9556 $cat > protochk <<EOSH
9557 $startsh
9558 cc="$cc"
9559 optimize="$optimize"
9560 ccflags="$ccflags"
9561 prototype="$prototype"
9562 define="$define"
9563 rm=$rm
9564 usethreads=$usethreads
9565 i_pthread=$i_pthread
9566 pthread_h_first=$pthread_h_first
9567 EOSH
9568
9569 $cat >> protochk <<'EOSH'
9570
9571 $rm -f try.c
9572 foo="$1"
9573 shift
9574 while test $# -ge 2; do
9575         case "$1" in
9576                 $define) echo "#include <$2>" >> try.c ;;
9577                 literal) echo "$2" >> try.c ;;
9578         esac
9579     # Extra magic for the benefit of systems that need pthread.h
9580     # to be included early to correctly detect threadsafe functions.
9581     # Such functions must guarantee themselves, though, that the usethreads
9582     # and i_pthread have been defined, before calling protochk.
9583     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9584         echo "#include <pthread.h>" >> try.c
9585         pthread_h_done=yes
9586     fi
9587     shift 2
9588 done
9589 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9590 cat >> try.c <<'EOCP'
9591 #ifdef CAN_PROTOTYPE
9592 #define _(args) args
9593 #else
9594 #define _(args) ()
9595 #endif
9596 EOCP
9597 echo "$foo" >> try.c
9598 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9599 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9600 status=$?
9601 $rm -f try.[co]
9602 exit $status
9603 EOSH
9604 chmod +x protochk
9605 $eunicefix protochk
9606
9607 hasproto='varname=$1; func=$2; shift; shift;
9608 while $test $# -ge 2; do
9609         case "$1" in
9610         $define) echo "#include <$2>";;
9611         esac ;
9612     shift 2;
9613 done > try.c;
9614 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9615 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9616         echo "$func() prototype found.";
9617         val="$define";
9618 else
9619         echo "$func() prototype NOT found.";
9620         val="$undef";
9621 fi;
9622 set $varname;
9623 eval $setvar;
9624 $rm -f try.c tryout.c'
9625
9626 : see if sys/types.h has to be included
9627 set sys/types.h i_systypes
9628 eval $inhdr
9629
9630 : see if sys/select.h has to be included
9631 set sys/select.h i_sysselct
9632 eval $inhdr
9633
9634 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9635 while $test $# -ge 2; do
9636         case "$1" in
9637         $define) echo "#include <$2>";;
9638         esac ;
9639     shift 2;
9640 done > try.c;
9641 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9642 set try;
9643 if eval $compile; then
9644         val="$define";
9645 else
9646         val="$undef";
9647 fi;
9648 set $varname;
9649 eval $setvar;
9650 $rm -f try.c try.o'
9651
9652 : see if we should include time.h, sys/time.h, or both
9653 echo " "
9654 if test "X$timeincl" = X; then
9655         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9656         $echo $n "I'm now running the test program...$c"
9657         $cat >try.c <<EOCP
9658 #include <sys/types.h>
9659 #ifdef I_TIME
9660 #include <time.h>
9661 #endif
9662 #ifdef I_SYSTIME
9663 #ifdef SYSTIMEKERNEL
9664 #define KERNEL
9665 #endif
9666 #include <sys/time.h>
9667 #endif
9668 #ifdef I_SYSSELECT
9669 #include <sys/select.h>
9670 #endif
9671 #$i_stdlib I_STDLIB
9672 #ifdef I_STDLIB
9673 #include <stdlib.h>
9674 #endif
9675 int main()
9676 {
9677         struct tm foo;
9678 #ifdef S_TIMEVAL
9679         struct timeval bar;
9680 #endif
9681 #ifdef S_TIMEZONE
9682         struct timezone tzp;
9683 #endif
9684         if (foo.tm_sec == foo.tm_sec)
9685                 exit(0);
9686 #ifdef S_TIMEVAL
9687         if (bar.tv_sec == bar.tv_sec)
9688                 exit(0);
9689 #endif
9690         exit(1);
9691 }
9692 EOCP
9693         flags=''
9694         for s_timezone in '-DS_TIMEZONE' ''; do
9695         sysselect=''
9696         for s_timeval in '-DS_TIMEVAL' ''; do
9697         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9698         for i_time in '' '-DI_TIME'; do
9699         for i_systime in '-DI_SYSTIME' ''; do
9700                 case "$flags" in
9701                 '') $echo $n ".$c"
9702                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9703                         if eval $compile; then
9704                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9705                                 shift
9706                                 flags="$*"
9707                                 echo " "
9708                                 $echo $n "Succeeded with $flags$c"
9709                         fi
9710                         ;;
9711                 esac
9712         done
9713         done
9714         done
9715         done
9716         done
9717         timeincl=''
9718         echo " "
9719         case "$flags" in
9720         *SYSTIMEKERNEL*) i_systimek="$define"
9721                 timeincl=`./findhdr sys/time.h`
9722                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9723         *) i_systimek="$undef";;
9724         esac
9725         case "$flags" in
9726         *I_TIME*) i_time="$define"
9727                 timeincl=`./findhdr time.h`" $timeincl"
9728                 echo "We'll include <time.h>." >&4;;
9729         *) i_time="$undef";;
9730         esac
9731         case "$flags" in
9732         *I_SYSTIME*) i_systime="$define"
9733                 timeincl=`./findhdr sys/time.h`" $timeincl"
9734                 echo "We'll include <sys/time.h>." >&4;;
9735         *) i_systime="$undef";;
9736         esac
9737         $rm -f try.c try
9738 fi
9739 : see if struct tm knows about tm_zone
9740 case "$i_systime$i_time" in
9741 *$define*) 
9742         echo " "
9743         echo "Checking to see if your struct tm has tm_zone field..." >&4
9744         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9745         eval $hasfield
9746         ;;
9747 *)      val="$undef"
9748         set d_tm_tm_zone
9749         eval $setvar
9750         ;;
9751 esac
9752 case "$d_tm_tm_zone" in
9753 "$define")      echo "Yes, it does."   ;;
9754 *)              echo "No, it doesn't." ;;
9755 esac
9756 : see if struct tm knows about tm_gmtoff
9757 case "$i_systime$i_time" in
9758 *$define*) 
9759         echo " "
9760         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9761         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9762         eval $hasfield
9763         ;;
9764 *)      val="$undef"
9765         set d_tm_tm_gmtoff
9766         eval $setvar
9767         ;;
9768 esac
9769 case "$d_tm_tm_gmtoff" in
9770 "$define")      echo "Yes, it does."   ;;
9771 *)              echo "No, it doesn't." ;;
9772 esac
9773
9774 : see if asctime_r exists
9775 set asctime_r d_asctime_r
9776 eval $inlibc
9777 case "$d_asctime_r" in
9778 "$define")
9779         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9780         case "$d_asctime_r_proto:$usethreads" in
9781         ":define")      d_asctime_r_proto=define
9782                 set d_asctime_r_proto asctime_r $hdrs
9783                 eval $hasproto ;;
9784         *)      ;;
9785         esac
9786         case "$d_asctime_r_proto" in
9787         define)
9788         case "$asctime_r_proto" in
9789         ''|0) try='char* asctime_r(const struct tm*, char*);'
9790         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9791         esac
9792         case "$asctime_r_proto" in
9793         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9794         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9795         esac
9796         case "$asctime_r_proto" in
9797         ''|0) try='int asctime_r(const struct tm*, char*);'
9798         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9799         esac
9800         case "$asctime_r_proto" in
9801         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9802         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9803         esac
9804         case "$asctime_r_proto" in
9805         ''|0)   d_asctime_r=undef
9806                 asctime_r_proto=0
9807                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9808         * )     case "$asctime_r_proto" in
9809                 REENTRANT_PROTO*) ;;
9810                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9811                 esac
9812                 echo "Prototype: $try" ;;
9813         esac
9814         ;;
9815         *)      case "$usethreads" in
9816                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9817                 esac
9818                 d_asctime_r=undef
9819                 asctime_r_proto=0
9820                 ;;
9821         esac
9822         ;;
9823 *)      asctime_r_proto=0
9824         ;;
9825 esac
9826
9827 : see if atolf exists
9828 set atolf d_atolf
9829 eval $inlibc
9830
9831 : see if atoll exists
9832 set atoll d_atoll
9833 eval $inlibc
9834
9835 : Look for GNU-cc style attribute checking
9836 echo " "
9837 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9838 $cat >attrib.c <<'EOCP'
9839 #include <stdio.h>
9840 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9841 EOCP
9842 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9843         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9844                 echo "Your C compiler doesn't fully support __attribute__."
9845                 val="$undef"
9846         else
9847                 echo "Your C compiler supports __attribute__."
9848                 val="$define"
9849         fi
9850 else
9851         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9852         val="$undef"
9853 fi
9854 set d_attribut
9855 eval $setvar
9856 $rm -f attrib*
9857
9858 : see if bcmp exists
9859 set bcmp d_bcmp
9860 eval $inlibc
9861
9862 : see if bcopy exists
9863 set bcopy d_bcopy
9864 eval $inlibc
9865
9866 : see if this is a unistd.h system
9867 set unistd.h i_unistd
9868 eval $inhdr
9869
9870 : see if getpgrp exists
9871 set getpgrp d_getpgrp
9872 eval $inlibc
9873
9874 case "$d_getpgrp" in
9875 "$define")
9876         echo " "
9877         echo "Checking to see which flavor of getpgrp is in use..."
9878         $cat >try.c <<EOP
9879 #$i_unistd I_UNISTD
9880 #include <sys/types.h>
9881 #ifdef I_UNISTD
9882 #  include <unistd.h>
9883 #endif
9884 #$i_stdlib I_STDLIB
9885 #ifdef I_STDLIB
9886 #include <stdlib.h>
9887 #endif
9888 int main()
9889 {
9890         if (getuid() == 0) {
9891                 printf("(I see you are running Configure as super-user...)\n");
9892                 setuid(1);
9893         }
9894 #ifdef TRY_BSD_PGRP
9895         if (getpgrp(1) == 0)
9896                 exit(0);
9897 #else
9898         if (getpgrp() > 0)
9899                 exit(0);
9900 #endif
9901         exit(1);
9902 }
9903 EOP
9904         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9905                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9906                 val="$define"
9907         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9908                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9909                 val="$undef"
9910         else
9911                 echo "I can't seem to compile and run the test program."
9912                 if ./usg; then
9913                         xxx="a USG one, i.e. you use getpgrp()."
9914                 else
9915                         # SVR4 systems can appear rather BSD-ish.
9916                         case "$i_unistd" in
9917                         $undef)
9918                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9919                                 val="$define"
9920                                 ;;
9921                         $define)
9922                                 xxx="probably a USG one, i.e. you use getpgrp()."
9923                                 val="$undef"
9924                                 ;;
9925                         esac
9926                 fi
9927                 echo "Assuming your getpgrp is $xxx" >&4
9928         fi
9929         ;;
9930 *) val="$undef";;
9931 esac
9932 set d_bsdgetpgrp
9933 eval $setvar
9934 $rm -f try try.*
9935
9936 : see if setpgrp exists
9937 set setpgrp d_setpgrp
9938 eval $inlibc
9939
9940 case "$d_setpgrp" in
9941 "$define")
9942         echo " "
9943         echo "Checking to see which flavor of setpgrp is in use..."
9944         $cat >try.c <<EOP
9945 #$i_unistd I_UNISTD
9946 #include <sys/types.h>
9947 #ifdef I_UNISTD
9948 #  include <unistd.h>
9949 #endif
9950 #$i_stdlib I_STDLIB
9951 #ifdef I_STDLIB
9952 #include <stdlib.h>
9953 #endif
9954 int main()
9955 {
9956         if (getuid() == 0) {
9957                 printf("(I see you are running Configure as super-user...)\n");
9958                 setuid(1);
9959         }
9960 #ifdef TRY_BSD_PGRP
9961         if (-1 == setpgrp(1, 1))
9962                 exit(0);
9963 #else
9964         if (setpgrp() != -1)
9965                 exit(0);
9966 #endif
9967         exit(1);
9968 }
9969 EOP
9970         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9971                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9972                 val="$define"
9973         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9974                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9975                 val="$undef"
9976         else
9977                 echo "(I can't seem to compile and run the test program.)"
9978                 if ./usg; then
9979                         xxx="a USG one, i.e. you use setpgrp()."
9980                 else
9981                         # SVR4 systems can appear rather BSD-ish.
9982                         case "$i_unistd" in
9983                         $undef)
9984                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9985                                 val="$define"
9986                                 ;;
9987                         $define)
9988                                 xxx="probably a USG one, i.e. you use setpgrp()."
9989                                 val="$undef"
9990                                 ;;
9991                         esac
9992                 fi
9993                 echo "Assuming your setpgrp is $xxx" >&4
9994         fi
9995         ;;
9996 *) val="$undef";;
9997 esac
9998 set d_bsdsetpgrp
9999 eval $setvar
10000 $rm -f try try.*
10001 : see if bzero exists
10002 set bzero d_bzero
10003 eval $inlibc
10004
10005 : see if signal is declared as pointer to function returning int or void
10006 echo " "
10007 xxx=`./findhdr signal.h`
10008 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10009 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10010         echo "You have int (*signal())() instead of void." >&4
10011         val="$undef"
10012 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10013         echo "You have void (*signal())()." >&4
10014         val="$define"
10015 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10016         echo "You have int (*signal())() instead of void." >&4
10017         val="$undef"
10018 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10019         echo "You have void (*signal())()." >&4
10020         val="$define"
10021 else
10022         case "$d_voidsig" in
10023         '')
10024         echo "I can't determine whether signal handler returns void or int..." >&4
10025                 dflt=void
10026                 rp="What type does your signal handler return?"
10027                 . ./myread
10028                 case "$ans" in
10029                 v*) val="$define";;
10030                 *) val="$undef";;
10031                 esac;;
10032         "$define")
10033                 echo "As you already told me, signal handler returns void." >&4
10034                 val="$define"
10035                 ;;
10036         *)      echo "As you already told me, signal handler returns int." >&4
10037                 val="$undef"
10038                 ;;
10039         esac
10040 fi
10041 set d_voidsig
10042 eval $setvar
10043 case "$d_voidsig" in
10044 "$define") signal_t="void";;
10045 *) signal_t="int";;
10046 esac
10047 $rm -f $$.tmp
10048
10049 : check for ability to cast large floats to 32-bit ints.
10050 echo " "
10051 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10052 if $test "$intsize" -ge 4; then
10053         xxx=int
10054 else
10055         xxx=long
10056 fi
10057 $cat >try.c <<EOCP
10058 #include <stdio.h>
10059 #$i_stdlib I_STDLIB
10060 #ifdef I_STDLIB
10061 #include <stdlib.h>
10062 #endif
10063 #include <sys/types.h>
10064 #include <signal.h>
10065 $signal_t blech(s) int s; { exit(3); }
10066 int main()
10067 {
10068         $xxx i32;
10069         double f, g;
10070         int result = 0;
10071         char str[16];
10072         signal(SIGFPE, blech);
10073
10074         /* Don't let compiler optimize the test away.  Store the number 
10075            in a writable string for gcc to pass to sscanf under HP/UX.
10076         */
10077         sprintf(str, "2147483647");
10078         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10079         g = 10 * f;
10080         i32  = ($xxx) g;
10081
10082         /* x86 processors will probably give 0x8000 0000, which is a
10083            sign change.  We don't want that.  We want to mimic SPARC
10084            behavior here, which is to preserve the sign and give
10085            back 0x7fff ffff.
10086         */
10087         if (i32 != ($xxx) f)
10088                 result |= 1;
10089         exit(result);
10090 }
10091 EOCP
10092 set try
10093 if eval $compile_ok; then
10094         $run ./try
10095         yyy=$?
10096 else
10097         echo "(I can't seem to compile the test program--assuming it can't)"
10098         yyy=1
10099 fi
10100 case "$yyy" in
10101 0)      val="$define"
10102         echo "Yup, it can."
10103         ;;
10104 *)      val="$undef"
10105         echo "Nope, it can't."
10106         ;;
10107 esac
10108 set d_casti32
10109 eval $setvar
10110 $rm -f try try.*
10111
10112 : check for ability to cast negative floats to unsigned
10113 echo " "
10114 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10115 $cat >try.c <<EOCP
10116 #include <stdio.h>
10117 #$i_stdlib I_STDLIB
10118 #ifdef I_STDLIB
10119 #include <stdlib.h>
10120 #endif
10121 #include <sys/types.h>
10122 #include <signal.h>
10123 $signal_t blech(s) int s; { exit(7); }
10124 $signal_t blech_in_list(s) int s; { exit(4); }
10125 unsigned long dummy_long(p) unsigned long p; { return p; }
10126 unsigned int dummy_int(p) unsigned int p; { return p; }
10127 unsigned short dummy_short(p) unsigned short p; { return p; }
10128 int main()
10129 {
10130         double f;
10131         unsigned long along;
10132         unsigned int aint;
10133         unsigned short ashort;
10134         int result = 0;
10135         char str[16];
10136         
10137         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10138            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10139            optimized the whole file away
10140         */
10141         /* Store the number in a writable string for gcc to pass to 
10142            sscanf under HP/UX.
10143         */
10144         sprintf(str, "-123");
10145         sscanf(str, "%lf", &f);  /* f = -123.; */
10146
10147         signal(SIGFPE, blech);
10148         along = (unsigned long)f;
10149         aint = (unsigned int)f;
10150         ashort = (unsigned short)f;
10151         if (along != (unsigned long)-123)
10152                 result |= 1;
10153         if (aint != (unsigned int)-123)
10154                 result |= 1;
10155         if (ashort != (unsigned short)-123)
10156                 result |= 1;
10157         sprintf(str, "1073741824.");
10158         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10159         f = f + f;
10160         along = 0;
10161         along = (unsigned long)f;
10162         if (along != 0x80000000)
10163                 result |= 2;
10164         f -= 1.;
10165         along = 0;
10166         along = (unsigned long)f;
10167         if (along != 0x7fffffff)
10168                 result |= 1;
10169         f += 2.;
10170         along = 0;
10171         along = (unsigned long)f;
10172         if (along != 0x80000001)
10173                 result |= 2;
10174         if (result)
10175                 exit(result);
10176         signal(SIGFPE, blech_in_list);
10177         sprintf(str, "123.");
10178         sscanf(str, "%lf", &f);  /* f = 123.; */
10179         along = dummy_long((unsigned long)f);
10180         aint = dummy_int((unsigned int)f);
10181         ashort = dummy_short((unsigned short)f);
10182         if (along != (unsigned long)123)
10183                 result |= 4;
10184         if (aint != (unsigned int)123)
10185                 result |= 4;
10186         if (ashort != (unsigned short)123)
10187                 result |= 4;
10188         exit(result);
10189
10190 }
10191 EOCP
10192 set try
10193 if eval $compile_ok; then
10194         $run ./try
10195         castflags=$?
10196 else
10197         echo "(I can't seem to compile the test program--assuming it can't)"
10198         castflags=7
10199 fi
10200 case "$castflags" in
10201 0)      val="$define"
10202         echo "Yup, it can."
10203         ;;
10204 *)      val="$undef"
10205         echo "Nope, it can't."
10206         ;;
10207 esac
10208 set d_castneg
10209 eval $setvar
10210 $rm -f try.*
10211
10212 : see if vprintf exists
10213 echo " "
10214 if set vprintf val -f d_vprintf; eval $csym; $val; then
10215         echo 'vprintf() found.' >&4
10216         val="$define"
10217         $cat >try.c <<EOF
10218 #include <varargs.h>
10219 #$i_stdlib I_STDLIB
10220 #ifdef I_STDLIB
10221 #include <stdlib.h>
10222 #endif
10223
10224 int main() { xxx("foo"); }
10225
10226 xxx(va_alist)
10227 va_dcl
10228 {
10229         va_list args;
10230         char buf[10];
10231
10232         va_start(args);
10233         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10234 }
10235 EOF
10236         set try
10237         if eval $compile && $run ./try; then
10238                 echo "Your vsprintf() returns (int)." >&4
10239                 val2="$undef"
10240         else
10241                 echo "Your vsprintf() returns (char*)." >&4
10242                 val2="$define"
10243         fi
10244 else
10245         echo 'vprintf() NOT found.' >&4
10246                 val="$undef"
10247                 val2="$undef"
10248 fi
10249 $rm -f try try.*
10250 set d_vprintf
10251 eval $setvar
10252 val=$val2
10253 set d_charvspr
10254 eval $setvar
10255
10256 : see if chown exists
10257 set chown d_chown
10258 eval $inlibc
10259
10260 : see if chroot exists
10261 set chroot d_chroot
10262 eval $inlibc
10263
10264 : see if chsize exists
10265 set chsize d_chsize
10266 eval $inlibc
10267
10268 : see if class exists
10269 set class d_class
10270 eval $inlibc
10271
10272 hasstruct='varname=$1; struct=$2; shift; shift;
10273 while $test $# -ge 2; do
10274         case "$1" in
10275         $define) echo "#include <$2>";;
10276         esac ;
10277     shift 2;
10278 done > try.c;
10279 echo "int main () { struct $struct foo; }" >> try.c;
10280 set try;
10281 if eval $compile; then
10282         val="$define";
10283 else
10284         val="$undef";
10285 fi;
10286 set $varname;
10287 eval $setvar;
10288 $rm -f try.c try.o'
10289
10290 socketlib=''
10291 sockethdr=''
10292 : see whether socket exists
10293 echo " "
10294 $echo $n "Hmm... $c" >&4
10295 if set socket val -f d_socket; eval $csym; $val; then
10296         echo "Looks like you have Berkeley networking support." >&4
10297         d_socket="$define"
10298         if set setsockopt val -f; eval $csym; $val; then
10299                 d_oldsock="$undef"
10300         else
10301                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10302                 d_oldsock="$define"
10303         fi
10304 else
10305         if $contains socklib libc.list >/dev/null 2>&1; then
10306                 echo "Looks like you have Berkeley networking support." >&4
10307                 d_socket="$define"
10308                 : we will have to assume that it supports the 4.2 BSD interface
10309                 d_oldsock="$undef"
10310         else
10311                 echo "You don't have Berkeley networking in libc$_a..." >&4
10312                 if test "X$d_socket" = "X$define"; then
10313                    echo "...but you seem to believe that you have sockets." >&4
10314                 else
10315                         for net in net socket
10316                         do
10317                                 if test -f /usr/lib/lib$net$_a; then
10318                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10319                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10320                                         if $contains socket libc.list >/dev/null 2>&1; then
10321                                                 d_socket="$define"
10322                                                 socketlib="-l$net"
10323                                                 case "$net" in
10324                                                 net)
10325                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10326                                                         sockethdr="-I/usr/netinclude"
10327                                                         ;;
10328                                                 esac
10329                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10330                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10331                                                         d_oldsock="$undef"
10332                                                 else
10333                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10334                                                         d_oldsock="$define"
10335                                                 fi
10336                                                 break
10337                                         fi
10338                                 fi
10339                         done
10340                         if test "X$d_socket" != "X$define"; then
10341                            echo "or anywhere else I see." >&4
10342                            d_socket="$undef"
10343                            d_oldsock="$undef"
10344                         fi
10345                 fi
10346         fi
10347 fi
10348
10349 : see if socketpair exists
10350 set socketpair d_sockpair
10351 eval $inlibc
10352
10353
10354 echo " "
10355 echo "Checking the availability of certain socket constants..." >&4
10356 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10357         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10358         $cat >try.c <<EOF
10359 #include <sys/types.h>
10360 #include <sys/socket.h>
10361 int main() {
10362     int i = $ENUM;
10363 }
10364 EOF
10365         val="$undef"
10366         set try; if eval $compile; then
10367                 val="$define"
10368         fi
10369         set d_${enum}; eval $setvar
10370         $rm -f try.c try
10371 done
10372
10373 : see if this is a sys/uio.h system
10374 set sys/uio.h i_sysuio
10375 eval $inhdr
10376
10377
10378 echo " "
10379 echo "Checking to see if your system supports struct cmsghdr..." >&4
10380 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10381 eval $hasstruct
10382 case "$d_cmsghdr_s" in
10383 "$define")      echo "Yes, it does."   ;;
10384 *)              echo "No, it doesn't." ;;
10385 esac
10386
10387
10388 : check for const keyword
10389 echo " "
10390 echo 'Checking to see if your C compiler knows about "const"...' >&4
10391 $cat >const.c <<'EOCP'
10392 typedef struct spug { int drokk; } spug;
10393 int main()
10394 {
10395         const char *foo;
10396         const spug y;
10397 }
10398 EOCP
10399 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10400         val="$define"
10401         echo "Yup, it does."
10402 else
10403         val="$undef"
10404         echo "Nope, it doesn't."
10405 fi
10406 set d_const
10407 eval $setvar
10408
10409 : see if copysignl exists
10410 set copysignl d_copysignl
10411 eval $inlibc
10412
10413 : see if crypt exists
10414 echo " "
10415 set crypt d_crypt
10416 eval $inlibc
10417 case "$d_crypt" in
10418 $define) cryptlib='' ;;
10419 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10420                 echo 'crypt() found.' >&4
10421                 val="$define"
10422                 cryptlib=''
10423         else
10424                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10425                 if $test -z "$cryptlib"; then
10426                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10427                 else
10428                         cryptlib=-lcrypt
10429                 fi
10430                 if $test -z "$cryptlib"; then
10431                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10432                 else
10433                         cryptlib=-lcrypt
10434                 fi
10435                 if $test -z "$cryptlib"; then
10436                         cryptlib=`./loc libcrypt$_a "" $libpth`
10437                 else
10438                         cryptlib=-lcrypt
10439                 fi
10440                 if $test -z "$cryptlib"; then
10441                         echo 'crypt() NOT found.' >&4
10442                         val="$undef"
10443                 else
10444                         val="$define"
10445                 fi
10446         fi
10447         set d_crypt
10448         eval $setvar
10449         ;;
10450 esac
10451
10452 : see if this is a crypt.h system
10453 set crypt.h i_crypt
10454 eval $inhdr
10455
10456 : see if crypt_r exists
10457 set crypt_r d_crypt_r
10458 eval $inlibc
10459 case "$d_crypt_r" in
10460 "$define")
10461         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10462         case "$d_crypt_r_proto:$usethreads" in
10463         ":define")      d_crypt_r_proto=define
10464                 set d_crypt_r_proto crypt_r $hdrs
10465                 eval $hasproto ;;
10466         *)      ;;
10467         esac
10468         case "$d_crypt_r_proto" in
10469         define)
10470         case "$crypt_r_proto" in
10471         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10472         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10473         esac
10474         case "$crypt_r_proto" in
10475         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10476         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10477         esac
10478         case "$crypt_r_proto" in
10479         ''|0)   d_crypt_r=undef
10480                 crypt_r_proto=0
10481                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10482         * )     case "$crypt_r_proto" in
10483                 REENTRANT_PROTO*) ;;
10484                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10485                 esac
10486                 echo "Prototype: $try" ;;
10487         esac
10488         ;;
10489         *)      case "$usethreads" in
10490                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10491                 esac
10492                 d_crypt_r=undef
10493                 crypt_r_proto=0
10494                 ;;
10495         esac
10496         ;;
10497 *)      crypt_r_proto=0
10498         ;;
10499 esac
10500
10501 : get csh whereabouts
10502 case "$csh" in
10503 'csh') val="$undef" ;;
10504 *) val="$define" ;;
10505 esac
10506 set d_csh
10507 eval $setvar
10508 : Respect a hint or command line value for full_csh.
10509 case "$full_csh" in
10510 '') full_csh=$csh ;;
10511 esac
10512
10513 : see if ctermid_r exists
10514 set ctermid_r d_ctermid_r
10515 eval $inlibc
10516 case "$d_ctermid_r" in
10517 "$define")
10518         hdrs="$i_systypes sys/types.h define stdio.h "
10519         case "$d_ctermid_r_proto:$usethreads" in
10520         ":define")      d_ctermid_r_proto=define
10521                 set d_ctermid_r_proto ctermid_r $hdrs
10522                 eval $hasproto ;;
10523         *)      ;;
10524         esac
10525         case "$d_ctermid_r_proto" in
10526         define)
10527         case "$ctermid_r_proto" in
10528         ''|0) try='char* ctermid_r(char*);'
10529         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10530         esac
10531         case "$ctermid_r_proto" in
10532         ''|0)   d_ctermid_r=undef
10533                 ctermid_r_proto=0
10534                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10535         * )     case "$ctermid_r_proto" in
10536                 REENTRANT_PROTO*) ;;
10537                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10538                 esac
10539                 echo "Prototype: $try" ;;
10540         esac
10541         ;;
10542         *)      case "$usethreads" in
10543                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10544                 esac
10545                 d_ctermid_r=undef
10546                 ctermid_r_proto=0
10547                 ;;
10548         esac
10549         ;;
10550 *)      ctermid_r_proto=0
10551         ;;
10552 esac
10553
10554 : see if ctime_r exists
10555 set ctime_r d_ctime_r
10556 eval $inlibc
10557 case "$d_ctime_r" in
10558 "$define")
10559         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10560         case "$d_ctime_r_proto:$usethreads" in
10561         ":define")      d_ctime_r_proto=define
10562                 set d_ctime_r_proto ctime_r $hdrs
10563                 eval $hasproto ;;
10564         *)      ;;
10565         esac
10566         case "$d_ctime_r_proto" in
10567         define)
10568         case "$ctime_r_proto" in
10569         ''|0) try='char* ctime_r(const time_t*, char*);'
10570         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10571         esac
10572         case "$ctime_r_proto" in
10573         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10574         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10575         esac
10576         case "$ctime_r_proto" in
10577         ''|0) try='int ctime_r(const time_t*, char*);'
10578         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10579         esac
10580         case "$ctime_r_proto" in
10581         ''|0) try='int ctime_r(const time_t*, char*, int);'
10582         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10583         esac
10584         case "$ctime_r_proto" in
10585         ''|0)   d_ctime_r=undef
10586                 ctime_r_proto=0
10587                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10588         * )     case "$ctime_r_proto" in
10589                 REENTRANT_PROTO*) ;;
10590                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10591                 esac
10592                 echo "Prototype: $try" ;;
10593         esac
10594         ;;
10595         *)      case "$usethreads" in
10596                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10597                 esac
10598                 d_ctime_r=undef
10599                 ctime_r_proto=0
10600                 ;;
10601         esac
10602         ;;
10603 *)      ctime_r_proto=0
10604         ;;
10605 esac
10606
10607 : see if cuserid exists
10608 set cuserid d_cuserid
10609 eval $inlibc
10610
10611 : see if this is a limits.h system
10612 set limits.h i_limits
10613 eval $inhdr
10614
10615 : see if this is a float.h system
10616 set float.h i_float
10617 eval $inhdr
10618
10619 : See if number of significant digits in a double precision number is known
10620 echo " "
10621 $cat >dbl_dig.c <<EOM
10622 #$i_limits I_LIMITS
10623 #$i_float I_FLOAT
10624 #ifdef I_LIMITS
10625 #include <limits.h>
10626 #endif
10627 #ifdef I_FLOAT
10628 #include <float.h>
10629 #endif
10630 #ifdef DBL_DIG
10631 printf("Contains DBL_DIG");
10632 #endif
10633 EOM
10634 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10635 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10636         echo "DBL_DIG found." >&4
10637         val="$define"
10638 else
10639         echo "DBL_DIG NOT found." >&4
10640         val="$undef"
10641 fi
10642 $rm -f dbl_dig.?
10643 set d_dbl_dig
10644 eval $setvar
10645
10646 : see if dbm.h is available
10647 : see if dbmclose exists
10648 set dbmclose d_dbmclose
10649 eval $inlibc
10650
10651 case "$d_dbmclose" in
10652 $define)
10653         set dbm.h i_dbm
10654         eval $inhdr
10655         case "$i_dbm" in
10656         $define)
10657                 val="$undef"
10658                 set i_rpcsvcdbm
10659                 eval $setvar
10660                 ;;
10661         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10662                 eval $inhdr
10663                 ;;
10664         esac
10665         ;;
10666 *)      echo "We won't be including <dbm.h>"
10667         val="$undef"
10668         set i_dbm
10669         eval $setvar
10670         val="$undef"
10671         set i_rpcsvcdbm
10672         eval $setvar
10673         ;;
10674 esac
10675
10676 : see if prototype for dbminit is available
10677 echo " "
10678 set d_dbminitproto dbminit $i_dbm dbm.h
10679 eval $hasproto
10680
10681 : see if difftime exists
10682 set difftime d_difftime
10683 eval $inlibc
10684
10685 : see if this is a dirent system
10686 echo " "
10687 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10688         val="$define"
10689         echo "<dirent.h> found." >&4
10690 else
10691         val="$undef"
10692         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10693                 echo "<sys/dir.h> found." >&4
10694                 echo " "
10695         else
10696                 xinc=`./findhdr sys/ndir.h`
10697         fi
10698         echo "<dirent.h> NOT found." >&4
10699 fi
10700 set i_dirent
10701 eval $setvar
10702
10703 : Look for type of directory structure.
10704 echo " "
10705 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10706
10707 case "$direntrytype" in
10708 ''|' ')
10709         case "$i_dirent" in
10710         $define) guess1='struct dirent' ;;
10711         *) guess1='struct direct'  ;;
10712         esac
10713         ;;
10714 *)      guess1="$direntrytype"
10715         ;;
10716 esac
10717
10718 case "$guess1" in
10719 'struct dirent') guess2='struct direct' ;;
10720 *) guess2='struct dirent' ;;
10721 esac
10722                 
10723 if $contains "$guess1" try.c >/dev/null 2>&1; then
10724         direntrytype="$guess1"
10725         echo "Your directory entries are $direntrytype." >&4
10726 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10727         direntrytype="$guess2"
10728         echo "Your directory entries seem to be $direntrytype." >&4
10729 else
10730         echo "I don't recognize your system's directory entries." >&4
10731         rp="What type is used for directory entries on this system?"
10732         dflt="$guess1"
10733         . ./myread
10734         direntrytype="$ans"
10735 fi
10736 $rm -f try.c
10737
10738
10739 : see if the directory entry stores field length
10740 echo " "
10741 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10742 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10743         echo "Good, your directory entry keeps length information in d_namlen." >&4
10744         val="$define"
10745 else
10746         echo "Your directory entry does not know about the d_namlen field." >&4
10747         val="$undef"
10748 fi
10749 set d_dirnamlen
10750 eval $setvar
10751 $rm -f try.c
10752
10753 : see if this is an sysdir system
10754 set sys/dir.h i_sysdir
10755 eval $inhdr
10756
10757 : see if this is an sysndir system
10758 set sys/ndir.h i_sysndir
10759 eval $inhdr
10760
10761 : Look for dirfd
10762 echo " "
10763 $cat >dirfd.c <<EOM
10764 #include <stdio.h>
10765 #$i_stdlib I_STDLIB
10766 #ifdef I_STDLIB
10767 #include <stdlib.h>
10768 #endif
10769 #$i_dirent I_DIRENT             /**/
10770 #$i_sysdir I_SYS_DIR            /**/
10771 #$i_sysndir I_SYS_NDIR          /**/
10772 #$i_systypes I_SYS_TYPES        /**/
10773 #if defined(I_SYS_TYPES)
10774 #include <sys/types.h>
10775 #endif
10776 #if defined(I_DIRENT)
10777 #include <dirent.h>
10778 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10779 #include <sys/dir.h>
10780 #endif
10781 #else
10782 #ifdef I_SYS_NDIR
10783 #include <sys/ndir.h>
10784 #else
10785 #ifdef I_SYS_DIR
10786 #ifdef hp9000s500
10787 #include <ndir.h>       /* may be wrong in the future */
10788 #else
10789 #include <sys/dir.h>
10790 #endif
10791 #endif
10792 #endif
10793 #endif 
10794 int main() {
10795         DIR *dirp = opendir(".");
10796         if (dirfd(dirp) >= 0)
10797                 exit(0);
10798         else
10799                 exit(1);
10800 }
10801 EOM
10802 set dirfd
10803 if eval $compile; then
10804         val="$define"
10805 fi
10806 case "$val" in
10807 $define)        echo "dirfd() found." >&4       ;;
10808 *)              echo "dirfd() NOT found." >&4   ;;
10809 esac
10810 set d_dirfd
10811 eval $setvar
10812 $rm -f dirfd*
10813
10814 : see if dlerror exists
10815 xxx_runnm="$runnm"
10816 runnm=false
10817 set dlerror d_dlerror
10818 eval $inlibc
10819 runnm="$xxx_runnm"
10820
10821 : see if dlfcn is available
10822 set dlfcn.h i_dlfcn
10823 eval $inhdr
10824
10825 case "$usedl" in
10826 $define|y|true)
10827         $cat << EOM
10828
10829 On a few systems, the dynamically loaded modules that perl generates and uses
10830 will need a different extension than shared libs. The default will probably
10831 be appropriate.
10832
10833 EOM
10834         case "$dlext" in
10835         '')     dflt="$so" ;;
10836         *)      dflt="$dlext" ;;
10837         esac
10838         rp='What is the extension of dynamically loaded modules'
10839         . ./myread
10840         dlext="$ans"
10841         ;;
10842 *)
10843         dlext="none"
10844         ;;
10845 esac
10846
10847 : Check if dlsym need a leading underscore
10848 echo " "
10849 val="$undef"
10850
10851 case "$dlsrc" in
10852 dl_dlopen.xs)
10853         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10854         $cat >dyna.c <<'EOM'
10855 fred () { }
10856 EOM
10857
10858 $cat >fred.c<<EOM
10859
10860 #include <stdio.h>
10861 #$i_stdlib I_STDLIB
10862 #ifdef I_STDLIB
10863 #include <stdlib.h>
10864 #endif
10865 #$i_dlfcn I_DLFCN
10866 #ifdef I_DLFCN
10867 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10868 #else
10869 #include <sys/types.h>
10870 #include <nlist.h>
10871 #include <link.h>
10872 #endif
10873
10874 extern int fred() ;
10875
10876 int main()
10877 {
10878     void * handle ;
10879     void * symbol ;
10880 #ifndef RTLD_LAZY
10881     int mode = 1 ;
10882 #else
10883     int mode = RTLD_LAZY ;
10884 #endif
10885     handle = dlopen("./dyna.$dlext", mode) ;
10886     if (handle == NULL) {
10887         printf ("1\n") ;
10888         fflush (stdout) ;
10889         exit(0);
10890     }
10891     symbol = dlsym(handle, "fred") ;
10892     if (symbol == NULL) {
10893         /* try putting a leading underscore */
10894         symbol = dlsym(handle, "_fred") ;
10895         if (symbol == NULL) {
10896             printf ("2\n") ;
10897             fflush (stdout) ;
10898             exit(0);
10899         }
10900         printf ("3\n") ;
10901     }
10902     else
10903         printf ("4\n") ;
10904     fflush (stdout) ;
10905     exit(0);
10906 }
10907 EOM
10908         : Call the object file tmp-dyna.o in case dlext=o.
10909         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10910                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10911                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10912                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10913                 xxx=`$run ./fred`
10914                 case $xxx in
10915                 1)      echo "Test program failed using dlopen." >&4
10916                         echo "Perhaps you should not use dynamic loading." >&4;;
10917                 2)      echo "Test program failed using dlsym." >&4
10918                         echo "Perhaps you should not use dynamic loading." >&4;;
10919                 3)      echo "dlsym needs a leading underscore" >&4
10920                         val="$define" ;;
10921                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10922                 esac
10923         else
10924                 echo "I can't compile and run the test program." >&4
10925                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10926         fi
10927         ;;
10928 esac
10929                 
10930 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10931
10932 set d_dlsymun
10933 eval $setvar
10934
10935 : see if drand48_r exists
10936 set drand48_r d_drand48_r
10937 eval $inlibc
10938 case "$d_drand48_r" in
10939 "$define")
10940         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10941         case "$d_drand48_r_proto:$usethreads" in
10942         ":define")      d_drand48_r_proto=define
10943                 set d_drand48_r_proto drand48_r $hdrs
10944                 eval $hasproto ;;
10945         *)      ;;
10946         esac
10947         case "$d_drand48_r_proto" in
10948         define)
10949         case "$drand48_r_proto" in
10950         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10951         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10952         esac
10953         case "$drand48_r_proto" in
10954         ''|0)   d_drand48_r=undef
10955                 drand48_r_proto=0
10956                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10957         * )     case "$drand48_r_proto" in
10958                 REENTRANT_PROTO*) ;;
10959                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10960                 esac
10961                 echo "Prototype: $try" ;;
10962         esac
10963         ;;
10964         *)      case "$usethreads" in
10965                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10966                 esac
10967                 d_drand48_r=undef
10968                 drand48_r_proto=0
10969                 ;;
10970         esac
10971         ;;
10972 *)      drand48_r_proto=0
10973         ;;
10974 esac
10975
10976 : see if prototype for drand48 is available
10977 echo " "
10978 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10979 eval $hasproto
10980
10981 : see if dup2 exists
10982 set dup2 d_dup2
10983 eval $inlibc
10984
10985 : see if eaccess exists
10986 set eaccess d_eaccess
10987 eval $inlibc
10988
10989 : see if endgrent exists
10990 set endgrent d_endgrent
10991 eval $inlibc
10992
10993 : see if this is an grp system
10994 set grp.h i_grp
10995 eval $inhdr
10996
10997 case "$i_grp" in
10998 $define)
10999         xxx=`./findhdr grp.h`
11000         $cppstdin $cppflags $cppminus < $xxx >$$.h
11001
11002         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11003                 val="$define"
11004         else
11005                 val="$undef"
11006         fi
11007         set d_grpasswd
11008         eval $setvar
11009
11010         $rm -f $$.h
11011         ;;
11012 *)
11013         val="$undef";
11014         set d_grpasswd; eval $setvar
11015         ;;
11016 esac
11017
11018 : see if endgrent_r exists
11019 set endgrent_r d_endgrent_r
11020 eval $inlibc
11021 case "$d_endgrent_r" in
11022 "$define")
11023         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11024         case "$d_endgrent_r_proto:$usethreads" in
11025         ":define")      d_endgrent_r_proto=define
11026                 set d_endgrent_r_proto endgrent_r $hdrs
11027                 eval $hasproto ;;
11028         *)      ;;
11029         esac
11030         case "$d_endgrent_r_proto" in
11031         define)
11032         case "$endgrent_r_proto" in
11033         ''|0) try='int endgrent_r(FILE**);'
11034         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11035         esac
11036         case "$endgrent_r_proto" in
11037         ''|0) try='void endgrent_r(FILE**);'
11038         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11039         esac
11040         case "$endgrent_r_proto" in
11041         ''|0)   d_endgrent_r=undef
11042                 endgrent_r_proto=0
11043                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11044         * )     case "$endgrent_r_proto" in
11045                 REENTRANT_PROTO*) ;;
11046                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11047                 esac
11048                 echo "Prototype: $try" ;;
11049         esac
11050         ;;
11051         *)      case "$usethreads" in
11052                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11053                 esac
11054                 d_endgrent_r=undef
11055                 endgrent_r_proto=0
11056                 ;;
11057         esac
11058         ;;
11059 *)      endgrent_r_proto=0
11060         ;;
11061 esac
11062
11063 : see if endhostent exists
11064 set endhostent d_endhent
11065 eval $inlibc
11066
11067 : see if this is a netdb.h system
11068 set netdb.h i_netdb
11069 eval $inhdr
11070
11071 : see if endhostent_r exists
11072 set endhostent_r d_endhostent_r
11073 eval $inlibc
11074 case "$d_endhostent_r" in
11075 "$define")
11076         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11077         case "$d_endhostent_r_proto:$usethreads" in
11078         ":define")      d_endhostent_r_proto=define
11079                 set d_endhostent_r_proto endhostent_r $hdrs
11080                 eval $hasproto ;;
11081         *)      ;;
11082         esac
11083         case "$d_endhostent_r_proto" in
11084         define)
11085         case "$endhostent_r_proto" in
11086         ''|0) try='int endhostent_r(struct hostent_data*);'
11087         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11088         esac
11089         case "$endhostent_r_proto" in
11090         ''|0) try='void endhostent_r(struct hostent_data*);'
11091         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11092         esac
11093         case "$endhostent_r_proto" in
11094         ''|0)   d_endhostent_r=undef
11095                 endhostent_r_proto=0
11096                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11097         * )     case "$endhostent_r_proto" in
11098                 REENTRANT_PROTO*) ;;
11099                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11100                 esac
11101                 echo "Prototype: $try" ;;
11102         esac
11103         ;;
11104         *)      case "$usethreads" in
11105                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11106                 esac
11107                 d_endhostent_r=undef
11108                 endhostent_r_proto=0
11109                 ;;
11110         esac
11111         ;;
11112 *)      endhostent_r_proto=0
11113         ;;
11114 esac
11115
11116 : see if endnetent exists
11117 set endnetent d_endnent
11118 eval $inlibc
11119
11120 : see if endnetent_r exists
11121 set endnetent_r d_endnetent_r
11122 eval $inlibc
11123 case "$d_endnetent_r" in
11124 "$define")
11125         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11126         case "$d_endnetent_r_proto:$usethreads" in
11127         ":define")      d_endnetent_r_proto=define
11128                 set d_endnetent_r_proto endnetent_r $hdrs
11129                 eval $hasproto ;;
11130         *)      ;;
11131         esac
11132         case "$d_endnetent_r_proto" in
11133         define)
11134         case "$endnetent_r_proto" in
11135         ''|0) try='int endnetent_r(struct netent_data*);'
11136         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11137         esac
11138         case "$endnetent_r_proto" in
11139         ''|0) try='void endnetent_r(struct netent_data*);'
11140         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11141         esac
11142         case "$endnetent_r_proto" in
11143         ''|0)   d_endnetent_r=undef
11144                 endnetent_r_proto=0
11145                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11146         * )     case "$endnetent_r_proto" in
11147                 REENTRANT_PROTO*) ;;
11148                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11149                 esac
11150                 echo "Prototype: $try" ;;
11151         esac
11152         ;;
11153         *)      case "$usethreads" in
11154                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11155                 esac
11156                 d_endnetent_r=undef
11157                 endnetent_r_proto=0
11158                 ;;
11159         esac
11160         ;;
11161 *)      endnetent_r_proto=0
11162         ;;
11163 esac
11164
11165 : see if endprotoent exists
11166 set endprotoent d_endpent
11167 eval $inlibc
11168
11169 : see if endprotoent_r exists
11170 set endprotoent_r d_endprotoent_r
11171 eval $inlibc
11172 case "$d_endprotoent_r" in
11173 "$define")
11174         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11175         case "$d_endprotoent_r_proto:$usethreads" in
11176         ":define")      d_endprotoent_r_proto=define
11177                 set d_endprotoent_r_proto endprotoent_r $hdrs
11178                 eval $hasproto ;;
11179         *)      ;;
11180         esac
11181         case "$d_endprotoent_r_proto" in
11182         define)
11183         case "$endprotoent_r_proto" in
11184         ''|0) try='int endprotoent_r(struct protoent_data*);'
11185         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11186         esac
11187         case "$endprotoent_r_proto" in
11188         ''|0) try='void endprotoent_r(struct protoent_data*);'
11189         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11190         esac
11191         case "$endprotoent_r_proto" in
11192         ''|0)   d_endprotoent_r=undef
11193                 endprotoent_r_proto=0
11194                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11195         * )     case "$endprotoent_r_proto" in
11196                 REENTRANT_PROTO*) ;;
11197                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11198                 esac
11199                 echo "Prototype: $try" ;;
11200         esac
11201         ;;
11202         *)      case "$usethreads" in
11203                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11204                 esac
11205                 d_endprotoent_r=undef
11206                 endprotoent_r_proto=0
11207                 ;;
11208         esac
11209         ;;
11210 *)      endprotoent_r_proto=0
11211         ;;
11212 esac
11213
11214 : see if endpwent exists
11215 set endpwent d_endpwent
11216 eval $inlibc
11217
11218 : see if this is a pwd.h system
11219 set pwd.h i_pwd
11220 eval $inhdr
11221
11222 case "$i_pwd" in
11223 $define)
11224         xxx=`./findhdr pwd.h`
11225         $cppstdin $cppflags $cppminus < $xxx >$$.h
11226
11227         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11228                 val="$define"
11229         else
11230                 val="$undef"
11231         fi
11232         set d_pwquota
11233         eval $setvar
11234
11235         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11236                 val="$define"
11237         else
11238                 val="$undef"
11239         fi
11240         set d_pwage
11241         eval $setvar
11242
11243         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11244                 val="$define"
11245         else
11246                 val="$undef"
11247         fi
11248         set d_pwchange
11249         eval $setvar
11250
11251         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11252                 val="$define"
11253         else
11254                 val="$undef"
11255         fi
11256         set d_pwclass
11257         eval $setvar
11258
11259         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11260                 val="$define"
11261         else
11262                 val="$undef"
11263         fi
11264         set d_pwexpire
11265         eval $setvar
11266
11267         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11268                 val="$define"
11269         else
11270                 val="$undef"
11271         fi
11272         set d_pwcomment
11273         eval $setvar
11274
11275         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11276                 val="$define"
11277         else
11278                 val="$undef"
11279         fi
11280         set d_pwgecos
11281         eval $setvar
11282
11283         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11284                 val="$define"
11285         else
11286                 val="$undef"
11287         fi
11288         set d_pwpasswd
11289         eval $setvar
11290
11291         $rm -f $$.h
11292         ;;
11293 *)
11294         val="$undef"; 
11295         set d_pwquota; eval $setvar
11296         set d_pwage; eval $setvar
11297         set d_pwchange; eval $setvar
11298         set d_pwclass; eval $setvar
11299         set d_pwexpire; eval $setvar
11300         set d_pwcomment; eval $setvar
11301         set d_pwgecos; eval $setvar
11302         set d_pwpasswd; eval $setvar
11303         ;;
11304 esac
11305
11306 : see if endpwent_r exists
11307 set endpwent_r d_endpwent_r
11308 eval $inlibc
11309 case "$d_endpwent_r" in
11310 "$define")
11311         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11312         case "$d_endpwent_r_proto:$usethreads" in
11313         ":define")      d_endpwent_r_proto=define
11314                 set d_endpwent_r_proto endpwent_r $hdrs
11315                 eval $hasproto ;;
11316         *)      ;;
11317         esac
11318         case "$d_endpwent_r_proto" in
11319         define)
11320         case "$endpwent_r_proto" in
11321         ''|0) try='int endpwent_r(FILE**);'
11322         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11323         esac
11324         case "$endpwent_r_proto" in
11325         ''|0) try='void endpwent_r(FILE**);'
11326         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11327         esac
11328         case "$endpwent_r_proto" in
11329         ''|0)   d_endpwent_r=undef
11330                 endpwent_r_proto=0
11331                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11332         * )     case "$endpwent_r_proto" in
11333                 REENTRANT_PROTO*) ;;
11334                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11335                 esac
11336                 echo "Prototype: $try" ;;
11337         esac
11338         ;;
11339         *)      case "$usethreads" in
11340                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11341                 esac
11342                 d_endpwent_r=undef
11343                 endpwent_r_proto=0
11344                 ;;
11345         esac
11346         ;;
11347 *)      endpwent_r_proto=0
11348         ;;
11349 esac
11350
11351 : see if endservent exists
11352 set endservent d_endsent
11353 eval $inlibc
11354
11355 : see if endservent_r exists
11356 set endservent_r d_endservent_r
11357 eval $inlibc
11358 case "$d_endservent_r" in
11359 "$define")
11360         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11361         case "$d_endservent_r_proto:$usethreads" in
11362         ":define")      d_endservent_r_proto=define
11363                 set d_endservent_r_proto endservent_r $hdrs
11364                 eval $hasproto ;;
11365         *)      ;;
11366         esac
11367         case "$d_endservent_r_proto" in
11368         define)
11369         case "$endservent_r_proto" in
11370         ''|0) try='int endservent_r(struct servent_data*);'
11371         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11372         esac
11373         case "$endservent_r_proto" in
11374         ''|0) try='void endservent_r(struct servent_data*);'
11375         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11376         esac
11377         case "$endservent_r_proto" in
11378         ''|0)   d_endservent_r=undef
11379                 endservent_r_proto=0
11380                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11381         * )     case "$endservent_r_proto" in
11382                 REENTRANT_PROTO*) ;;
11383                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11384                 esac
11385                 echo "Prototype: $try" ;;
11386         esac
11387         ;;
11388         *)      case "$usethreads" in
11389                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11390                 esac
11391                 d_endservent_r=undef
11392                 endservent_r_proto=0
11393                 ;;
11394         esac
11395         ;;
11396 *)      endservent_r_proto=0
11397         ;;
11398 esac
11399
11400 : Locate the flags for 'open()'
11401 echo " "
11402 $cat >try.c <<EOCP
11403 #include <sys/types.h>
11404 #ifdef I_FCNTL
11405 #include <fcntl.h>
11406 #endif
11407 #ifdef I_SYS_FILE
11408 #include <sys/file.h>
11409 #endif
11410 #$i_stdlib I_STDLIB
11411 #ifdef I_STDLIB
11412 #include <stdlib.h>
11413 #endif
11414 int main() {
11415         if(O_RDONLY);
11416 #ifdef O_TRUNC
11417         exit(0);
11418 #else
11419         exit(1);
11420 #endif
11421 }
11422 EOCP
11423 : check sys/file.h first to get FREAD on Sun
11424 if $test `./findhdr sys/file.h` && \
11425                 set try -DI_SYS_FILE && eval $compile; then
11426         h_sysfile=true;
11427         echo "<sys/file.h> defines the O_* constants..." >&4
11428         if $run ./try; then
11429                 echo "and you have the 3 argument form of open()." >&4
11430                 val="$define"
11431         else
11432                 echo "but not the 3 argument form of open().  Oh, well." >&4
11433                 val="$undef"
11434         fi
11435 elif $test `./findhdr fcntl.h` && \
11436                 set try -DI_FCNTL && eval $compile; then
11437         h_fcntl=true;
11438         echo "<fcntl.h> defines the O_* constants..." >&4
11439         if $run ./try; then
11440                 echo "and you have the 3 argument form of open()." >&4
11441                 val="$define"
11442         else
11443                 echo "but not the 3 argument form of open().  Oh, well." >&4
11444                 val="$undef"
11445         fi
11446 else
11447         val="$undef"
11448         echo "I can't find the O_* constant definitions!  You got problems." >&4
11449 fi
11450 set d_open3
11451 eval $setvar
11452 $rm -f try try.*
11453
11454 : see which of string.h or strings.h is needed
11455 echo " "
11456 strings=`./findhdr string.h`
11457 if $test "$strings" && $test -r "$strings"; then
11458         echo "Using <string.h> instead of <strings.h>." >&4
11459         val="$define"
11460 else
11461         val="$undef"
11462         strings=`./findhdr strings.h`
11463         if $test "$strings" && $test -r "$strings"; then
11464                 echo "Using <strings.h> instead of <string.h>." >&4
11465         else
11466                 echo "No string header found -- You'll surely have problems." >&4
11467         fi
11468 fi
11469 set i_string
11470 eval $setvar
11471 case "$i_string" in
11472 "$undef") strings=`./findhdr strings.h`;;
11473 *)        strings=`./findhdr string.h`;;
11474 esac
11475
11476 : see if this is a sys/file.h system
11477 val=''
11478 set sys/file.h val
11479 eval $inhdr
11480
11481 : do we need to include sys/file.h ?
11482 case "$val" in
11483 "$define")
11484         echo " "
11485         if $h_sysfile; then
11486                 val="$define"
11487                 echo "We'll be including <sys/file.h>." >&4
11488         else
11489                 val="$undef"
11490                 echo "We won't be including <sys/file.h>." >&4
11491         fi
11492         ;;
11493 *)
11494         h_sysfile=false
11495         ;;
11496 esac
11497 set i_sysfile
11498 eval $setvar
11499
11500 : see if fcntl.h is there
11501 val=''
11502 set fcntl.h val
11503 eval $inhdr
11504
11505 : see if we can include fcntl.h
11506 case "$val" in
11507 "$define")
11508         echo " "
11509         if $h_fcntl; then
11510                 val="$define"
11511                 echo "We'll be including <fcntl.h>." >&4
11512         else
11513                 val="$undef"
11514                 if $h_sysfile; then
11515         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11516                 else
11517                         echo "We won't be including <fcntl.h>." >&4
11518                 fi
11519         fi
11520         ;;
11521 *)
11522         h_fcntl=false
11523         val="$undef"
11524         ;;
11525 esac
11526 set i_fcntl
11527 eval $setvar
11528
11529 : check for non-blocking I/O stuff
11530 case "$h_sysfile" in
11531 true) echo "#include <sys/file.h>" > head.c;;
11532 *)
11533        case "$h_fcntl" in
11534        true) echo "#include <fcntl.h>" > head.c;;
11535        *) echo "#include <sys/fcntl.h>" > head.c;;
11536        esac
11537        ;;
11538 esac
11539 echo " "
11540 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11541 case "$o_nonblock" in
11542 '')
11543         $cat head.c > try.c
11544         $cat >>try.c <<EOCP
11545 #include <stdio.h>
11546 #$i_stdlib I_STDLIB
11547 #ifdef I_STDLIB
11548 #include <stdlib.h>
11549 #endif
11550 #$i_fcntl I_FCNTL
11551 #ifdef I_FCNTL
11552 #include <fcntl.h>
11553 #endif
11554 int main() {
11555 #ifdef O_NONBLOCK
11556         printf("O_NONBLOCK\n");
11557         exit(0);
11558 #endif
11559 #ifdef O_NDELAY
11560         printf("O_NDELAY\n");
11561         exit(0);
11562 #endif
11563 #ifdef FNDELAY
11564         printf("FNDELAY\n");
11565         exit(0);
11566 #endif
11567         exit(0);
11568 }
11569 EOCP
11570         set try
11571         if eval $compile_ok; then
11572                 o_nonblock=`$run ./try`
11573                 case "$o_nonblock" in
11574                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11575                 *) echo "Seems like we can use $o_nonblock.";;
11576                 esac
11577         else
11578                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11579         fi
11580         ;;
11581 *) echo "Using $hint value $o_nonblock.";;
11582 esac
11583 $rm -f try try.* .out core
11584
11585 echo " "
11586 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11587 case "$eagain" in
11588 '')
11589         $cat head.c > try.c
11590         $cat >>try.c <<EOCP
11591 #include <errno.h>
11592 #include <sys/types.h>
11593 #include <signal.h>
11594 #include <stdio.h> 
11595 #$i_stdlib I_STDLIB
11596 #ifdef I_STDLIB
11597 #include <stdlib.h>
11598 #endif
11599 #$i_fcntl I_FCNTL
11600 #ifdef I_FCNTL
11601 #include <fcntl.h>
11602 #endif
11603 #define MY_O_NONBLOCK $o_nonblock
11604 #ifndef errno  /* XXX need better Configure test */
11605 extern int errno;
11606 #endif
11607 #$i_unistd I_UNISTD
11608 #ifdef I_UNISTD
11609 #include <unistd.h>
11610 #endif
11611 #$i_string I_STRING
11612 #ifdef I_STRING
11613 #include <string.h>
11614 #else
11615 #include <strings.h>
11616 #endif
11617 $signal_t blech(x) int x; { exit(3); }
11618 EOCP
11619         $cat >> try.c <<'EOCP'
11620 int main()
11621 {
11622         int pd[2];
11623         int pu[2];
11624         char buf[1];
11625         char string[100];
11626
11627         pipe(pd);       /* Down: child -> parent */
11628         pipe(pu);       /* Up: parent -> child */
11629         if (0 != fork()) {
11630                 int ret;
11631                 close(pd[1]);   /* Parent reads from pd[0] */
11632                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11633 #ifdef F_SETFL
11634                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11635                         exit(1);
11636 #else
11637                 exit(4);
11638 #endif
11639                 signal(SIGALRM, blech);
11640                 alarm(5);
11641                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11642                         exit(2);
11643                 sprintf(string, "%d\n", ret);
11644                 write(2, string, strlen(string));
11645                 alarm(0);
11646 #ifdef EAGAIN
11647                 if (errno == EAGAIN) {
11648                         printf("EAGAIN\n");
11649                         goto ok;
11650                 }
11651 #endif
11652 #ifdef EWOULDBLOCK
11653                 if (errno == EWOULDBLOCK)
11654                         printf("EWOULDBLOCK\n");
11655 #endif
11656         ok:
11657                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11658                 sleep(2);                               /* Give it time to close our pipe */
11659                 alarm(5);
11660                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11661                 alarm(0);
11662                 sprintf(string, "%d\n", ret);
11663                 write(4, string, strlen(string));
11664                 exit(0);
11665         }
11666
11667         close(pd[0]);                   /* We write to pd[1] */
11668         close(pu[1]);                   /* We read from pu[0] */
11669         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11670         close(pd[1]);                   /* Pipe pd is now fully closed! */
11671         exit(0);                                /* Bye bye, thank you for playing! */
11672 }
11673 EOCP
11674         set try
11675         if eval $compile_ok; then
11676                 echo "$startsh" >mtry
11677                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11678                 chmod +x mtry
11679                 ./mtry >/dev/null 2>&1
11680                 case $? in
11681                 0) eagain=`$cat try.out`;;
11682                 1) echo "Could not perform non-blocking setting!";;
11683                 2) echo "I did a successful read() for something that was not there!";;
11684                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11685                 4) echo "Could not find F_SETFL!";;
11686                 *) echo "Something terribly wrong happened during testing.";;
11687                 esac
11688                 rd_nodata=`$cat try.ret`
11689                 echo "A read() system call with no data present returns $rd_nodata."
11690                 case "$rd_nodata" in
11691                 0|-1) ;;
11692                 *)
11693                         echo "(That's peculiar, fixing that to be -1.)"
11694                         rd_nodata=-1
11695                         ;;
11696                 esac
11697                 case "$eagain" in
11698                 '')
11699                         echo "Forcing errno EAGAIN on read() with no data available."
11700                         eagain=EAGAIN
11701                         ;;
11702                 *)
11703                         echo "Your read() sets errno to $eagain when no data is available."
11704                         ;;
11705                 esac
11706                 status=`$cat try.err`
11707                 case "$status" in
11708                 0) echo "And it correctly returns 0 to signal EOF.";;
11709                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11710                 *) echo "However, your read() returns '$status' on EOF??";;
11711                 esac
11712                 val="$define"
11713                 if test "$status" = "$rd_nodata"; then
11714                         echo "WARNING: you can't distinguish between EOF and no data!"
11715                         val="$undef"
11716                 fi
11717         else
11718                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11719                 eagain=EAGAIN
11720         fi
11721         set d_eofnblk
11722         eval $setvar
11723         ;;
11724 *)
11725         echo "Using $hint value $eagain."
11726         echo "Your read() returns $rd_nodata when no data is present."
11727         case "$d_eofnblk" in
11728         "$define") echo "And you can see EOF because read() returns 0.";;
11729         "$undef") echo "But you can't see EOF status from read() returned value.";;
11730         *)
11731                 echo "(Assuming you can't see EOF status from read anyway.)"
11732                 d_eofnblk=$undef
11733                 ;;
11734         esac
11735         ;;
11736 esac
11737 $rm -f try try.* .out core head.c mtry
11738
11739 : see if _ptr and _cnt from stdio act std
11740 echo " "
11741
11742 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11743         echo "(Looks like you have stdio.h from BSD.)"
11744         case "$stdio_ptr" in
11745         '') stdio_ptr='((fp)->_p)'
11746                 ptr_lval=$define
11747                 ;;
11748         *)      ptr_lval=$d_stdio_ptr_lval;;
11749         esac
11750         case "$stdio_cnt" in
11751         '') stdio_cnt='((fp)->_r)'
11752                 cnt_lval=$define
11753                 ;;
11754         *)      cnt_lval=$d_stdio_cnt_lval;;
11755         esac
11756         case "$stdio_base" in
11757         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11758         esac
11759         case "$stdio_bufsiz" in
11760         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11761         esac
11762 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11763         echo "(Looks like you have stdio.h from Linux.)"
11764         case "$stdio_ptr" in
11765         '') stdio_ptr='((fp)->_IO_read_ptr)'
11766                 ptr_lval=$define
11767                 ;;
11768         *)      ptr_lval=$d_stdio_ptr_lval;;
11769         esac
11770         case "$stdio_cnt" in
11771         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11772                 cnt_lval=$undef
11773                 ;;
11774         *)      cnt_lval=$d_stdio_cnt_lval;;
11775         esac
11776         case "$stdio_base" in
11777         '') stdio_base='((fp)->_IO_read_base)';;
11778         esac
11779         case "$stdio_bufsiz" in
11780         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11781         esac
11782 else
11783         case "$stdio_ptr" in
11784         '') stdio_ptr='((fp)->_ptr)'
11785                 ptr_lval=$define
11786                 ;;
11787         *)      ptr_lval=$d_stdio_ptr_lval;;
11788         esac
11789         case "$stdio_cnt" in
11790         '') stdio_cnt='((fp)->_cnt)'
11791                 cnt_lval=$define
11792                 ;;
11793         *)      cnt_lval=$d_stdio_cnt_lval;;
11794         esac
11795         case "$stdio_base" in
11796         '') stdio_base='((fp)->_base)';;
11797         esac
11798         case "$stdio_bufsiz" in
11799         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11800         esac
11801 fi
11802
11803 : test whether _ptr and _cnt really work
11804 echo "Checking how std your stdio is..." >&4
11805 $cat >try.c <<EOP
11806 #include <stdio.h>
11807 #$i_stdlib I_STDLIB
11808 #ifdef I_STDLIB
11809 #include <stdlib.h>
11810 #endif
11811 #define FILE_ptr(fp)    $stdio_ptr
11812 #define FILE_cnt(fp)    $stdio_cnt
11813 int main() {
11814         FILE *fp = fopen("try.c", "r");
11815         char c = getc(fp);
11816         if (
11817                 18 <= FILE_cnt(fp) &&
11818                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11819         )
11820                 exit(0);
11821         exit(1);
11822 }
11823 EOP
11824 val="$undef"
11825 set try
11826 if eval $compile && $to try.c; then
11827         if $run ./try; then
11828                 echo "Your stdio acts pretty std."
11829                 val="$define"
11830         else
11831                 echo "Your stdio isn't very std."
11832         fi
11833 else
11834         echo "Your stdio doesn't appear very std."
11835 fi
11836 $rm -f try.c try
11837
11838 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11839 # direct buffer manipulation no longer works.  The Configure tests
11840 # should be changed to correctly detect this, but until then,
11841 # the following check should at least let perl compile and run.
11842 # (This quick fix should be updated before 5.8.1.)
11843 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11844 # A. Dougherty, June 3, 2002.
11845 case "$d_gnulibc" in
11846 $define)
11847         case "$gnulibc_version" in
11848         2.[01]*)  ;;
11849         2.2) ;;
11850         2.2.[0-9]) ;;
11851         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11852                 val="$undef"
11853                 ;;
11854         esac
11855         ;;
11856 esac
11857 set d_stdstdio
11858 eval $setvar
11859
11860 : Can _ptr be used as an lvalue?
11861 case "$d_stdstdio$ptr_lval" in
11862 $define$define) val=$define ;;
11863 *) val=$undef ;;
11864 esac
11865 set d_stdio_ptr_lval
11866 eval $setvar
11867
11868 : Can _cnt be used as an lvalue?
11869 case "$d_stdstdio$cnt_lval" in
11870 $define$define) val=$define ;;
11871 *) val=$undef ;;
11872 esac
11873 set d_stdio_cnt_lval
11874 eval $setvar
11875
11876
11877 : test whether setting _ptr sets _cnt as a side effect
11878 d_stdio_ptr_lval_sets_cnt="$undef"
11879 d_stdio_ptr_lval_nochange_cnt="$undef"
11880 case "$d_stdio_ptr_lval$d_stdstdio" in
11881 $define$define)
11882         echo "Checking to see what happens if we set the stdio ptr..." >&4
11883 $cat >try.c <<EOP
11884 #include <stdio.h>
11885 /* Can we scream? */
11886 /* Eat dust sed :-) */
11887 /* In the buffer space, no one can hear you scream. */
11888 #$i_stdlib I_STDLIB
11889 #ifdef I_STDLIB
11890 #include <stdlib.h>
11891 #endif
11892 #define FILE_ptr(fp)    $stdio_ptr
11893 #define FILE_cnt(fp)    $stdio_cnt
11894 #include <sys/types.h>
11895 int main() {
11896         FILE *fp = fopen("try.c", "r");
11897         int c;
11898         char *ptr;
11899         size_t cnt;
11900         if (!fp) {
11901             puts("Fail even to read");
11902             exit(1);
11903         }
11904         c = getc(fp); /* Read away the first # */
11905         if (c == EOF) {
11906             puts("Fail even to read");
11907             exit(1);
11908         }
11909         if (!(
11910                 18 <= FILE_cnt(fp) &&
11911                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11912         )) {
11913                 puts("Fail even to read");
11914                 exit (1);
11915         }
11916         ptr = (char*) FILE_ptr(fp);
11917         cnt = (size_t)FILE_cnt(fp);
11918
11919         FILE_ptr(fp) += 42;
11920
11921         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11922                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11923                 exit (1);
11924         }
11925         if (FILE_cnt(fp) <= 20) {
11926                 printf ("Fail (<20 chars to test)");
11927                 exit (1);
11928         }
11929         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11930                 puts("Fail compare");
11931                 exit (1);
11932         }
11933         if (cnt == FILE_cnt(fp)) {
11934                 puts("Pass_unchanged");
11935                 exit (0);
11936         }       
11937         if (FILE_cnt(fp) == (cnt - 42)) {
11938                 puts("Pass_changed");
11939                 exit (0);
11940         }
11941         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11942         return 1;
11943
11944 }
11945 EOP
11946         set try
11947         if eval $compile && $to try.c; then
11948                 case `$run ./try` in
11949                 Pass_changed)
11950                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11951                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11952                 Pass_unchanged)
11953                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11954                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11955                 Fail*)
11956                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11957                 *)
11958                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11959         esac
11960         else
11961                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11962         fi
11963         $rm -f try.c try
11964         ;;
11965 esac
11966
11967 : see if _base is also standard
11968 val="$undef"
11969 case "$d_stdstdio" in
11970 $define)
11971         $cat >try.c <<EOP
11972 #include <stdio.h>
11973 #$i_stdlib I_STDLIB
11974 #ifdef I_STDLIB
11975 #include <stdlib.h>
11976 #endif
11977 #define FILE_base(fp)   $stdio_base
11978 #define FILE_bufsiz(fp) $stdio_bufsiz
11979 int main() {
11980         FILE *fp = fopen("try.c", "r");
11981         char c = getc(fp);
11982         if (
11983                 19 <= FILE_bufsiz(fp) &&
11984                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11985         )
11986                 exit(0);
11987         exit(1);
11988 }
11989 EOP
11990         set try
11991         if eval $compile && $to try.c; then
11992                 if $run ./try; then
11993                         echo "And its _base field acts std."
11994                         val="$define"
11995                 else
11996                         echo "But its _base field isn't std."
11997                 fi
11998         else
11999                 echo "However, it seems to be lacking the _base field."
12000         fi
12001         $rm -f try.c try
12002         ;;
12003 esac
12004 set d_stdiobase
12005 eval $setvar
12006
12007 : see if fast_stdio exists
12008 val="$undef"
12009 case "$d_stdstdio:$d_stdio_ptr_lval" in
12010 "$define:$define")
12011         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12012         *$define*)
12013                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12014                 val="$define"
12015                 ;;
12016         esac
12017         ;;
12018 esac
12019 set d_faststdio
12020 eval $setvar
12021
12022
12023
12024 : see if fchdir exists
12025 set fchdir d_fchdir
12026 eval $inlibc
12027
12028 : see if fchmod exists
12029 set fchmod d_fchmod
12030 eval $inlibc
12031
12032 : see if fchown exists
12033 set fchown d_fchown
12034 eval $inlibc
12035
12036 : see if this is an fcntl system
12037 set fcntl d_fcntl
12038 eval $inlibc
12039
12040 echo " "
12041 : See if fcntl-based locking works.
12042 $cat >try.c <<EOCP
12043 #$i_stdlib I_STDLIB
12044 #ifdef I_STDLIB
12045 #include <stdlib.h>
12046 #endif
12047 #include <unistd.h>
12048 #include <fcntl.h>
12049 #include <signal.h>
12050 $signal_t blech(x) int x; { exit(3); }
12051 int main() {
12052 #if defined(F_SETLK) && defined(F_SETLKW)
12053      struct flock flock;
12054      int retval, fd;
12055      fd = open("try.c", O_RDONLY);
12056      flock.l_type = F_RDLCK;
12057      flock.l_whence = SEEK_SET;
12058      flock.l_start = flock.l_len = 0;
12059      signal(SIGALRM, blech);
12060      alarm(10);
12061      retval = fcntl(fd, F_SETLK, &flock);
12062      close(fd);
12063      (retval < 0 ? exit(2) : exit(0));
12064 #else
12065      exit(2);
12066 #endif
12067 }
12068 EOCP
12069 echo "Checking if fcntl-based file locking works... "
12070 case "$d_fcntl" in
12071 "$define")
12072         set try
12073         if eval $compile_ok; then
12074                 if $run ./try; then
12075                         echo "Yes, it seems to work."
12076                         val="$define"
12077                 else
12078                         echo "Nope, it didn't work."
12079                         val="$undef"
12080                         case "$?" in
12081                         3) $cat >&4 <<EOM
12082 ***
12083 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12084 *** This is (almost) impossible.
12085 *** If your NFS lock daemons are not feeling well, something like
12086 *** this may happen, please investigate.  Cannot continue, aborting.
12087 ***
12088 EOM
12089                                 exit 1
12090                                 ;;
12091                         esac
12092                 fi
12093         else
12094                 echo "I'm unable to compile the test program, so I'll assume not."
12095                 val="$undef"
12096         fi
12097         ;;
12098 *) val="$undef";
12099         echo "Nope, since you don't even have fcntl()."
12100         ;;
12101 esac
12102 set d_fcntl_can_lock
12103 eval $setvar
12104 $rm -f try*
12105
12106
12107 : check for fd_set items
12108 $cat <<EOM
12109
12110 Checking to see how well your C compiler handles fd_set and friends ...
12111 EOM
12112 $cat >try.c <<EOCP
12113 #$i_stdlib I_STDLIB
12114 #ifdef I_STDLIB
12115 #include <stdlib.h>
12116 #endif
12117 #$i_systime I_SYS_TIME
12118 #$i_sysselct I_SYS_SELECT
12119 #$d_socket HAS_SOCKET
12120 #include <sys/types.h>
12121 #ifdef HAS_SOCKET
12122 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12123 #endif
12124 #ifdef I_SYS_TIME
12125 #include <sys/time.h>
12126 #endif
12127 #ifdef I_SYS_SELECT
12128 #include <sys/select.h>
12129 #endif
12130 int main() {
12131         fd_set fds;
12132
12133 #ifdef TRYBITS
12134         if(fds.fds_bits);
12135 #endif
12136
12137 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12138         exit(0);
12139 #else
12140         exit(1);
12141 #endif
12142 }
12143 EOCP
12144 set try -DTRYBITS
12145 if eval $compile; then
12146         d_fds_bits="$define"
12147         d_fd_set="$define"
12148         echo "Well, your system knows about the normal fd_set typedef..." >&4
12149         if $run ./try; then
12150                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12151                 d_fd_macros="$define"
12152         else
12153                 $cat >&4 <<'EOM'
12154 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12155 EOM
12156                 d_fd_macros="$undef"
12157         fi
12158 else
12159         $cat <<'EOM'
12160 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12161 EOM
12162         set try
12163         if eval $compile; then
12164                 d_fds_bits="$undef"
12165                 d_fd_set="$define"
12166                 echo "Well, your system has some sort of fd_set available..." >&4
12167                 if $run ./try; then
12168                         echo "and you have the normal fd_set macros." >&4
12169                         d_fd_macros="$define"
12170                 else
12171                         $cat <<'EOM'
12172 but not the normal fd_set macros!  Gross!  More work for me...
12173 EOM
12174                         d_fd_macros="$undef"
12175                 fi
12176         else
12177         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12178                 d_fd_set="$undef"
12179                 d_fds_bits="$undef"
12180                 d_fd_macros="$undef"
12181         fi
12182 fi
12183 $rm -f try try.*
12184
12185 : see if fgetpos exists
12186 set fgetpos d_fgetpos
12187 eval $inlibc
12188
12189 : see if finite exists
12190 set finite d_finite
12191 eval $inlibc
12192
12193 : see if finitel exists
12194 set finitel d_finitel
12195 eval $inlibc
12196
12197 : see if flock exists
12198 set flock d_flock
12199 eval $inlibc
12200
12201 : see if prototype for flock is available
12202 echo " "
12203 set d_flockproto flock $i_sysfile sys/file.h
12204 eval $hasproto
12205
12206 : see if fork exists
12207 set fork d_fork
12208 eval $inlibc
12209
12210 : see if fp_class exists
12211 set fp_class d_fp_class
12212 eval $inlibc
12213
12214 : see if pathconf exists
12215 set pathconf d_pathconf
12216 eval $inlibc
12217
12218 : see if fpathconf exists
12219 set fpathconf d_fpathconf
12220 eval $inlibc
12221
12222 : see if fpclass exists
12223 set fpclass d_fpclass
12224 eval $inlibc
12225
12226 : see if fpclassify exists
12227 set fpclassify d_fpclassify
12228 eval $inlibc
12229
12230 : see if fpclassl exists
12231 set fpclassl d_fpclassl
12232 eval $inlibc
12233
12234
12235 : check for fpos64_t
12236 echo " "
12237 echo "Checking to see if you have fpos64_t..." >&4
12238 $cat >try.c <<EOCP
12239 #include <stdio.h>
12240 int main() { fpos64_t x = 7; }
12241 EOCP
12242 set try
12243 if eval $compile; then
12244         val="$define"
12245         echo "You have fpos64_t."
12246 else
12247         val="$undef"
12248         echo "You do not have fpos64_t."
12249         case "$fpossize" in
12250         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12251         esac
12252 fi
12253 $rm -f try.* try
12254 set d_fpos64_t
12255 eval $setvar
12256
12257 : see if frexpl exists
12258 set frexpl d_frexpl
12259 eval $inlibc
12260
12261 : see if this is a sys/param system
12262 set sys/param.h i_sysparam
12263 eval $inhdr
12264
12265 : see if this is a sys/mount.h system
12266 set sys/mount.h i_sysmount
12267 eval $inhdr
12268
12269
12270 echo " "
12271 echo "Checking to see if your system supports struct fs_data..." >&4
12272 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12273 eval $hasstruct
12274 case "$d_fs_data_s" in
12275 "$define")      echo "Yes, it does."   ;;
12276 *)              echo "No, it doesn't." ;;
12277 esac
12278
12279 : see if fseeko exists
12280 set fseeko d_fseeko
12281 eval $inlibc
12282 case "$longsize" in
12283 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12284 esac
12285
12286 : see if fsetpos exists
12287 set fsetpos d_fsetpos
12288 eval $inlibc
12289
12290
12291 : see if fstatfs exists
12292 set fstatfs d_fstatfs
12293 eval $inlibc
12294
12295
12296 : see if statvfs exists
12297 set statvfs d_statvfs
12298 eval $inlibc
12299
12300 : see if fstatvfs exists
12301 set fstatvfs d_fstatvfs
12302 eval $inlibc
12303
12304
12305 : see if fsync exists
12306 set fsync d_fsync
12307 eval $inlibc
12308
12309 : see if ftello exists
12310 set ftello d_ftello
12311 eval $inlibc
12312 case "$longsize" in
12313 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12314 esac
12315
12316 : see if getcwd exists
12317 set getcwd d_getcwd
12318 eval $inlibc
12319
12320 : see if getespwnam exists
12321 set getespwnam d_getespwnam
12322 eval $inlibc
12323
12324
12325 : see if getfsstat exists
12326 set getfsstat d_getfsstat
12327 eval $inlibc
12328
12329 : see if getgrent exists
12330 set getgrent d_getgrent
12331 eval $inlibc
12332
12333 : see if getgrent_r exists
12334 set getgrent_r d_getgrent_r
12335 eval $inlibc
12336 case "$d_getgrent_r" in
12337 "$define")
12338         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12339         case "$d_getgrent_r_proto:$usethreads" in
12340         ":define")      d_getgrent_r_proto=define
12341                 set d_getgrent_r_proto getgrent_r $hdrs
12342                 eval $hasproto ;;
12343         *)      ;;
12344         esac
12345         case "$d_getgrent_r_proto" in
12346         define)
12347         case "$getgrent_r_proto" in
12348         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12349         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12350         esac
12351         case "$getgrent_r_proto" in
12352         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12353         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12354         esac
12355         case "$getgrent_r_proto" in
12356         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12357         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12358         esac
12359         case "$getgrent_r_proto" in
12360         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12361         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12362         esac
12363         case "$getgrent_r_proto" in
12364         ''|0) try='int getgrent_r(struct group*, char*, int);'
12365         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12366         esac
12367         case "$getgrent_r_proto" in
12368         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12369         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12370         esac
12371         case "$getgrent_r_proto" in
12372         ''|0)   d_getgrent_r=undef
12373                 getgrent_r_proto=0
12374                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12375         * )     case "$getgrent_r_proto" in
12376                 REENTRANT_PROTO*) ;;
12377                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12378                 esac
12379                 echo "Prototype: $try" ;;
12380         esac
12381         ;;
12382         *)      case "$usethreads" in
12383                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12384                 esac
12385                 d_getgrent_r=undef
12386                 getgrent_r_proto=0
12387                 ;;
12388         esac
12389         ;;
12390 *)      getgrent_r_proto=0
12391         ;;
12392 esac
12393
12394 : see if getgrgid_r exists
12395 set getgrgid_r d_getgrgid_r
12396 eval $inlibc
12397 case "$d_getgrgid_r" in
12398 "$define")
12399         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12400         case "$d_getgrgid_r_proto:$usethreads" in
12401         ":define")      d_getgrgid_r_proto=define
12402                 set d_getgrgid_r_proto getgrgid_r $hdrs
12403                 eval $hasproto ;;
12404         *)      ;;
12405         esac
12406         case "$d_getgrgid_r_proto" in
12407         define)
12408         case "$getgrgid_r_proto" in
12409         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12410         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12411         esac
12412         case "$getgrgid_r_proto" in
12413         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12414         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12415         esac
12416         case "$getgrgid_r_proto" in
12417         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12418         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12419         esac
12420         case "$getgrgid_r_proto" in
12421         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12422         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12423         esac
12424         case "$getgrgid_r_proto" in
12425         ''|0)   d_getgrgid_r=undef
12426                 getgrgid_r_proto=0
12427                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12428         * )     case "$getgrgid_r_proto" in
12429                 REENTRANT_PROTO*) ;;
12430                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12431                 esac
12432                 echo "Prototype: $try" ;;
12433         esac
12434         ;;
12435         *)      case "$usethreads" in
12436                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12437                 esac
12438                 d_getgrgid_r=undef
12439                 getgrgid_r_proto=0
12440                 ;;
12441         esac
12442         ;;
12443 *)      getgrgid_r_proto=0
12444         ;;
12445 esac
12446
12447 : see if getgrnam_r exists
12448 set getgrnam_r d_getgrnam_r
12449 eval $inlibc
12450 case "$d_getgrnam_r" in
12451 "$define")
12452         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12453         case "$d_getgrnam_r_proto:$usethreads" in
12454         ":define")      d_getgrnam_r_proto=define
12455                 set d_getgrnam_r_proto getgrnam_r $hdrs
12456                 eval $hasproto ;;
12457         *)      ;;
12458         esac
12459         case "$d_getgrnam_r_proto" in
12460         define)
12461         case "$getgrnam_r_proto" in
12462         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12463         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12464         esac
12465         case "$getgrnam_r_proto" in
12466         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12467         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12468         esac
12469         case "$getgrnam_r_proto" in
12470         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12471         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12472         esac
12473         case "$getgrnam_r_proto" in
12474         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12475         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12476         esac
12477         case "$getgrnam_r_proto" in
12478         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12479         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12480         esac
12481         case "$getgrnam_r_proto" in
12482         ''|0)   d_getgrnam_r=undef
12483                 getgrnam_r_proto=0
12484                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12485         * )     case "$getgrnam_r_proto" in
12486                 REENTRANT_PROTO*) ;;
12487                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12488                 esac
12489                 echo "Prototype: $try" ;;
12490         esac
12491         ;;
12492         *)      case "$usethreads" in
12493                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12494                 esac
12495                 d_getgrnam_r=undef
12496                 getgrnam_r_proto=0
12497                 ;;
12498         esac
12499         ;;
12500 *)      getgrnam_r_proto=0
12501         ;;
12502 esac
12503
12504 : see if gethostbyaddr exists
12505 set gethostbyaddr d_gethbyaddr
12506 eval $inlibc
12507
12508 : see if gethostbyname exists
12509 set gethostbyname d_gethbyname
12510 eval $inlibc
12511
12512 : see if gethostent exists
12513 set gethostent d_gethent
12514 eval $inlibc
12515
12516 : see how we will look up host name
12517 echo " "
12518 call=''
12519 if set gethostname val -f d_gethname; eval $csym; $val; then
12520         echo 'gethostname() found.' >&4
12521         d_gethname="$define"
12522         call=gethostname
12523 fi
12524 if set uname val -f d_uname; eval $csym; $val; then
12525         if ./xenix; then
12526                 $cat <<'EOM'
12527 uname() was found, but you're running xenix, and older versions of xenix
12528 have a broken uname(). If you don't really know whether your xenix is old
12529 enough to have a broken system call, use the default answer.
12530
12531 EOM
12532                 dflt=y
12533                 case "$d_uname" in
12534                 "$define") dflt=n;;
12535                 esac
12536                 rp='Is your uname() broken?'
12537                 . ./myread
12538                 case "$ans" in
12539                 n*) d_uname="$define"; call=uname;;
12540                 esac
12541         else
12542                 echo 'uname() found.' >&4
12543                 d_uname="$define"
12544                 case "$call" in
12545                 '') call=uname ;;
12546                 esac
12547         fi
12548 fi
12549 case "$d_gethname" in
12550 '') d_gethname="$undef";;
12551 esac
12552 case "$d_uname" in
12553 '') d_uname="$undef";;
12554 esac
12555 case "$d_uname$d_gethname" in
12556 *define*)
12557         dflt=n
12558         cat <<EOM
12559  
12560 Every now and then someone has a $call() that lies about the hostname
12561 but can't be fixed for political or economic reasons.  If you wish, I can
12562 pretend $call() isn't there and maybe compute hostname at run-time
12563 thanks to the '$phostname' command.
12564
12565 EOM
12566         rp="Shall I ignore $call() from now on?"
12567         . ./myread
12568         case "$ans" in
12569         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12570         esac;;
12571 esac
12572 case "$phostname" in
12573 '') aphostname='';;
12574 *) case "$aphostname" in
12575         /*) ;;
12576         *) set X $phostname
12577                 shift
12578                 file=$1
12579                 shift
12580                 file=`./loc $file $file $pth`
12581                 aphostname=`echo $file $*`
12582                 ;;
12583         esac
12584         ;;
12585 esac
12586 case "$d_uname$d_gethname" in
12587 *define*) ;;
12588 *)
12589         case "$phostname" in
12590         '')
12591                 echo "There will be no way for $package to get your hostname." >&4;;
12592         *)
12593         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12594                 ;;
12595         esac;;
12596 esac
12597 case "$d_phostname" in
12598 '') d_phostname="$undef";;
12599 esac
12600
12601 : see if gethostbyaddr_r exists
12602 set gethostbyaddr_r d_gethostbyaddr_r
12603 eval $inlibc
12604 case "$d_gethostbyaddr_r" in
12605 "$define")
12606         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12607         case "$d_gethostbyaddr_r_proto:$usethreads" in
12608         ":define")      d_gethostbyaddr_r_proto=define
12609                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12610                 eval $hasproto ;;
12611         *)      ;;
12612         esac
12613         case "$d_gethostbyaddr_r_proto" in
12614         define)
12615         case "$gethostbyaddr_r_proto" in
12616         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12617         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12618         esac
12619         case "$gethostbyaddr_r_proto" in
12620         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12621         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12622         esac
12623         case "$gethostbyaddr_r_proto" in
12624         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12625         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12626         esac
12627         case "$gethostbyaddr_r_proto" in
12628         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12629         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12630         esac
12631         case "$gethostbyaddr_r_proto" in
12632         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12633         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12634         esac
12635         case "$gethostbyaddr_r_proto" in
12636         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12637         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12638         esac
12639         case "$gethostbyaddr_r_proto" in
12640         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12641         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12642         esac
12643         case "$gethostbyaddr_r_proto" in
12644         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12645         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12646         esac
12647         case "$gethostbyaddr_r_proto" in
12648         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12649         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12650         esac
12651         case "$gethostbyaddr_r_proto" in
12652         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12653         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12654         esac
12655         case "$gethostbyaddr_r_proto" in
12656         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12657         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12658         esac
12659         case "$gethostbyaddr_r_proto" in
12660         ''|0)   d_gethostbyaddr_r=undef
12661                 gethostbyaddr_r_proto=0
12662                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12663         * )     case "$gethostbyaddr_r_proto" in
12664                 REENTRANT_PROTO*) ;;
12665                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12666                 esac
12667                 echo "Prototype: $try" ;;
12668         esac
12669         ;;
12670         *)      case "$usethreads" in
12671                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12672                 esac
12673                 d_gethostbyaddr_r=undef
12674                 gethostbyaddr_r_proto=0
12675                 ;;
12676         esac
12677         ;;
12678 *)      gethostbyaddr_r_proto=0
12679         ;;
12680 esac
12681
12682 : see if gethostbyname_r exists
12683 set gethostbyname_r d_gethostbyname_r
12684 eval $inlibc
12685 case "$d_gethostbyname_r" in
12686 "$define")
12687         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12688         case "$d_gethostbyname_r_proto:$usethreads" in
12689         ":define")      d_gethostbyname_r_proto=define
12690                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12691                 eval $hasproto ;;
12692         *)      ;;
12693         esac
12694         case "$d_gethostbyname_r_proto" in
12695         define)
12696         case "$gethostbyname_r_proto" in
12697         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12698         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12699         esac
12700         case "$gethostbyname_r_proto" in
12701         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12702         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12703         esac
12704         case "$gethostbyname_r_proto" in
12705         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12706         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12707         esac
12708         case "$gethostbyname_r_proto" in
12709         ''|0)   d_gethostbyname_r=undef
12710                 gethostbyname_r_proto=0
12711                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12712         * )     case "$gethostbyname_r_proto" in
12713                 REENTRANT_PROTO*) ;;
12714                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12715                 esac
12716                 echo "Prototype: $try" ;;
12717         esac
12718         ;;
12719         *)      case "$usethreads" in
12720                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12721                 esac
12722                 d_gethostbyname_r=undef
12723                 gethostbyname_r_proto=0
12724                 ;;
12725         esac
12726         ;;
12727 *)      gethostbyname_r_proto=0
12728         ;;
12729 esac
12730
12731 : see if gethostent_r exists
12732 set gethostent_r d_gethostent_r
12733 eval $inlibc
12734 case "$d_gethostent_r" in
12735 "$define")
12736         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12737         case "$d_gethostent_r_proto:$usethreads" in
12738         ":define")      d_gethostent_r_proto=define
12739                 set d_gethostent_r_proto gethostent_r $hdrs
12740                 eval $hasproto ;;
12741         *)      ;;
12742         esac
12743         case "$d_gethostent_r_proto" in
12744         define)
12745         case "$gethostent_r_proto" in
12746         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12747         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12748         esac
12749         case "$gethostent_r_proto" in
12750         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12751         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12752         esac
12753         case "$gethostent_r_proto" in
12754         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12755         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12756         esac
12757         case "$gethostent_r_proto" in
12758         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12759         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12760         esac
12761         case "$gethostent_r_proto" in
12762         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12763         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12764         esac
12765         case "$gethostent_r_proto" in
12766         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12767         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12768         esac
12769         case "$gethostent_r_proto" in
12770         ''|0)   d_gethostent_r=undef
12771                 gethostent_r_proto=0
12772                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12773         * )     case "$gethostent_r_proto" in
12774                 REENTRANT_PROTO*) ;;
12775                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12776                 esac
12777                 echo "Prototype: $try" ;;
12778         esac
12779         ;;
12780         *)      case "$usethreads" in
12781                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12782                 esac
12783                 d_gethostent_r=undef
12784                 gethostent_r_proto=0
12785                 ;;
12786         esac
12787         ;;
12788 *)      gethostent_r_proto=0
12789         ;;
12790 esac
12791
12792 : see if prototypes for various gethostxxx netdb.h functions are available
12793 echo " "
12794 set d_gethostprotos gethostent $i_netdb netdb.h
12795 eval $hasproto
12796
12797 : see if getitimer exists
12798 set getitimer d_getitimer
12799 eval $inlibc
12800
12801 : see if getlogin exists
12802 set getlogin d_getlogin
12803 eval $inlibc
12804
12805 : see if getlogin_r exists
12806 set getlogin_r d_getlogin_r
12807 eval $inlibc
12808 case "$d_getlogin_r" in
12809 "$define")
12810         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12811         case "$d_getlogin_r_proto:$usethreads" in
12812         ":define")      d_getlogin_r_proto=define
12813                 set d_getlogin_r_proto getlogin_r $hdrs
12814                 eval $hasproto ;;
12815         *)      ;;
12816         esac
12817         case "$d_getlogin_r_proto" in
12818         define)
12819         case "$getlogin_r_proto" in
12820         ''|0) try='int getlogin_r(char*, size_t);'
12821         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12822         esac
12823         case "$getlogin_r_proto" in
12824         ''|0) try='int getlogin_r(char*, int);'
12825         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12826         esac
12827         case "$getlogin_r_proto" in
12828         ''|0) try='char* getlogin_r(char*, size_t);'
12829         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12830         esac
12831         case "$getlogin_r_proto" in
12832         ''|0) try='char* getlogin_r(char*, int);'
12833         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12834         esac
12835         case "$getlogin_r_proto" in
12836         ''|0)   d_getlogin_r=undef
12837                 getlogin_r_proto=0
12838                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12839         * )     case "$getlogin_r_proto" in
12840                 REENTRANT_PROTO*) ;;
12841                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12842                 esac
12843                 echo "Prototype: $try" ;;
12844         esac
12845         ;;
12846         *)      case "$usethreads" in
12847                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12848                 esac
12849                 d_getlogin_r=undef
12850                 getlogin_r_proto=0
12851                 ;;
12852         esac
12853         ;;
12854 *)      getlogin_r_proto=0
12855         ;;
12856 esac
12857
12858 : see if getmnt exists
12859 set getmnt d_getmnt
12860 eval $inlibc
12861
12862 : see if getmntent exists
12863 set getmntent d_getmntent
12864 eval $inlibc
12865
12866 : see if getnetbyaddr exists
12867 set getnetbyaddr d_getnbyaddr
12868 eval $inlibc
12869
12870 : see if getnetbyname exists
12871 set getnetbyname d_getnbyname
12872 eval $inlibc
12873
12874 : see if getnetent exists
12875 set getnetent d_getnent
12876 eval $inlibc
12877
12878 : see if getnetbyaddr_r exists
12879 set getnetbyaddr_r d_getnetbyaddr_r
12880 eval $inlibc
12881 case "$d_getnetbyaddr_r" in
12882 "$define")
12883         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12884         case "$d_getnetbyaddr_r_proto:$usethreads" in
12885         ":define")      d_getnetbyaddr_r_proto=define
12886                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12887                 eval $hasproto ;;
12888         *)      ;;
12889         esac
12890         case "$d_getnetbyaddr_r_proto" in
12891         define)
12892         case "$getnetbyaddr_r_proto" in
12893         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12894         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12895         esac
12896         case "$getnetbyaddr_r_proto" in
12897         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12898         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12899         esac
12900         case "$getnetbyaddr_r_proto" in
12901         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12902         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12903         esac
12904         case "$getnetbyaddr_r_proto" in
12905         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12906         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12907         esac
12908         case "$getnetbyaddr_r_proto" in
12909         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12910         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12911         esac
12912         case "$getnetbyaddr_r_proto" in
12913         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12914         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12915         esac
12916         case "$getnetbyaddr_r_proto" in
12917         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12918         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12919         esac
12920         case "$getnetbyaddr_r_proto" in
12921         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12922         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12923         esac
12924         case "$getnetbyaddr_r_proto" in
12925         ''|0)   d_getnetbyaddr_r=undef
12926                 getnetbyaddr_r_proto=0
12927                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12928         * )     case "$getnetbyaddr_r_proto" in
12929                 REENTRANT_PROTO*) ;;
12930                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12931                 esac
12932                 echo "Prototype: $try" ;;
12933         esac
12934         ;;
12935         *)      case "$usethreads" in
12936                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12937                 esac
12938                 d_getnetbyaddr_r=undef
12939                 getnetbyaddr_r_proto=0
12940                 ;;
12941         esac
12942         ;;
12943 *)      getnetbyaddr_r_proto=0
12944         ;;
12945 esac
12946
12947 : see if getnetbyname_r exists
12948 set getnetbyname_r d_getnetbyname_r
12949 eval $inlibc
12950 case "$d_getnetbyname_r" in
12951 "$define")
12952         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12953         case "$d_getnetbyname_r_proto:$usethreads" in
12954         ":define")      d_getnetbyname_r_proto=define
12955                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12956                 eval $hasproto ;;
12957         *)      ;;
12958         esac
12959         case "$d_getnetbyname_r_proto" in
12960         define)
12961         case "$getnetbyname_r_proto" in
12962         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12963         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12964         esac
12965         case "$getnetbyname_r_proto" in
12966         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12967         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12968         esac
12969         case "$getnetbyname_r_proto" in
12970         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12971         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12972         esac
12973         case "$getnetbyname_r_proto" in
12974         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12975         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12976         esac
12977         case "$getnetbyname_r_proto" in
12978         ''|0)   d_getnetbyname_r=undef
12979                 getnetbyname_r_proto=0
12980                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12981         * )     case "$getnetbyname_r_proto" in
12982                 REENTRANT_PROTO*) ;;
12983                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12984                 esac
12985                 echo "Prototype: $try" ;;
12986         esac
12987         ;;
12988         *)      case "$usethreads" in
12989                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12990                 esac
12991                 d_getnetbyname_r=undef
12992                 getnetbyname_r_proto=0
12993                 ;;
12994         esac
12995         ;;
12996 *)      getnetbyname_r_proto=0
12997         ;;
12998 esac
12999
13000 : see if getnetent_r exists
13001 set getnetent_r d_getnetent_r
13002 eval $inlibc
13003 case "$d_getnetent_r" in
13004 "$define")
13005         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13006         case "$d_getnetent_r_proto:$usethreads" in
13007         ":define")      d_getnetent_r_proto=define
13008                 set d_getnetent_r_proto getnetent_r $hdrs
13009                 eval $hasproto ;;
13010         *)      ;;
13011         esac
13012         case "$d_getnetent_r_proto" in
13013         define)
13014         case "$getnetent_r_proto" in
13015         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13016         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13017         esac
13018         case "$getnetent_r_proto" in
13019         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13020         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13021         esac
13022         case "$getnetent_r_proto" in
13023         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13024         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13025         esac
13026         case "$getnetent_r_proto" in
13027         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13028         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13029         esac
13030         case "$getnetent_r_proto" in
13031         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13032         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13033         esac
13034         case "$getnetent_r_proto" in
13035         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13036         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13037         esac
13038         case "$getnetent_r_proto" in
13039         ''|0)   d_getnetent_r=undef
13040                 getnetent_r_proto=0
13041                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13042         * )     case "$getnetent_r_proto" in
13043                 REENTRANT_PROTO*) ;;
13044                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13045                 esac
13046                 echo "Prototype: $try" ;;
13047         esac
13048         ;;
13049         *)      case "$usethreads" in
13050                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13051                 esac
13052                 d_getnetent_r=undef
13053                 getnetent_r_proto=0
13054                 ;;
13055         esac
13056         ;;
13057 *)      getnetent_r_proto=0
13058         ;;
13059 esac
13060
13061 : see if prototypes for various getnetxxx netdb.h functions are available
13062 echo " "
13063 set d_getnetprotos getnetent $i_netdb netdb.h
13064 eval $hasproto
13065
13066 : see if getpagesize exists
13067 set getpagesize d_getpagsz
13068 eval $inlibc
13069
13070
13071 : see if getprotobyname exists
13072 set getprotobyname d_getpbyname
13073 eval $inlibc
13074
13075 : see if getprotobynumber exists
13076 set getprotobynumber d_getpbynumber
13077 eval $inlibc
13078
13079 : see if getprotoent exists
13080 set getprotoent d_getpent
13081 eval $inlibc
13082
13083 : see if getpgid exists
13084 set getpgid d_getpgid
13085 eval $inlibc
13086
13087 : see if getpgrp2 exists
13088 set getpgrp2 d_getpgrp2
13089 eval $inlibc
13090
13091 : see if getppid exists
13092 set getppid d_getppid
13093 eval $inlibc
13094
13095 : see if getpriority exists
13096 set getpriority d_getprior
13097 eval $inlibc
13098
13099 : see if getprotobyname_r exists
13100 set getprotobyname_r d_getprotobyname_r
13101 eval $inlibc
13102 case "$d_getprotobyname_r" in
13103 "$define")
13104         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13105         case "$d_getprotobyname_r_proto:$usethreads" in
13106         ":define")      d_getprotobyname_r_proto=define
13107                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13108                 eval $hasproto ;;
13109         *)      ;;
13110         esac
13111         case "$d_getprotobyname_r_proto" in
13112         define)
13113         case "$getprotobyname_r_proto" in
13114         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13115         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13116         esac
13117         case "$getprotobyname_r_proto" in
13118         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13119         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13120         esac
13121         case "$getprotobyname_r_proto" in
13122         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13123         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13124         esac
13125         case "$getprotobyname_r_proto" in
13126         ''|0)   d_getprotobyname_r=undef
13127                 getprotobyname_r_proto=0
13128                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13129         * )     case "$getprotobyname_r_proto" in
13130                 REENTRANT_PROTO*) ;;
13131                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13132                 esac
13133                 echo "Prototype: $try" ;;
13134         esac
13135         ;;
13136         *)      case "$usethreads" in
13137                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13138                 esac
13139                 d_getprotobyname_r=undef
13140                 getprotobyname_r_proto=0
13141                 ;;
13142         esac
13143         ;;
13144 *)      getprotobyname_r_proto=0
13145         ;;
13146 esac
13147
13148 : see if getprotobynumber_r exists
13149 set getprotobynumber_r d_getprotobynumber_r
13150 eval $inlibc
13151 case "$d_getprotobynumber_r" in
13152 "$define")
13153         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13154         case "$d_getprotobynumber_r_proto:$usethreads" in
13155         ":define")      d_getprotobynumber_r_proto=define
13156                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13157                 eval $hasproto ;;
13158         *)      ;;
13159         esac
13160         case "$d_getprotobynumber_r_proto" in
13161         define)
13162         case "$getprotobynumber_r_proto" in
13163         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13164         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13165         esac
13166         case "$getprotobynumber_r_proto" in
13167         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13168         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13169         esac
13170         case "$getprotobynumber_r_proto" in
13171         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13172         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13173         esac
13174         case "$getprotobynumber_r_proto" in
13175         ''|0)   d_getprotobynumber_r=undef
13176                 getprotobynumber_r_proto=0
13177                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13178         * )     case "$getprotobynumber_r_proto" in
13179                 REENTRANT_PROTO*) ;;
13180                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13181                 esac
13182                 echo "Prototype: $try" ;;
13183         esac
13184         ;;
13185         *)      case "$usethreads" in
13186                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13187                 esac
13188                 d_getprotobynumber_r=undef
13189                 getprotobynumber_r_proto=0
13190                 ;;
13191         esac
13192         ;;
13193 *)      getprotobynumber_r_proto=0
13194         ;;
13195 esac
13196
13197 : see if getprotoent_r exists
13198 set getprotoent_r d_getprotoent_r
13199 eval $inlibc
13200 case "$d_getprotoent_r" in
13201 "$define")
13202         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13203         case "$d_getprotoent_r_proto:$usethreads" in
13204         ":define")      d_getprotoent_r_proto=define
13205                 set d_getprotoent_r_proto getprotoent_r $hdrs
13206                 eval $hasproto ;;
13207         *)      ;;
13208         esac
13209         case "$d_getprotoent_r_proto" in
13210         define)
13211         case "$getprotoent_r_proto" in
13212         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13213         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13214         esac
13215         case "$getprotoent_r_proto" in
13216         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13217         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13218         esac
13219         case "$getprotoent_r_proto" in
13220         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13221         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13222         esac
13223         case "$getprotoent_r_proto" in
13224         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13225         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13226         esac
13227         case "$getprotoent_r_proto" in
13228         ''|0)   d_getprotoent_r=undef
13229                 getprotoent_r_proto=0
13230                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13231         * )     case "$getprotoent_r_proto" in
13232                 REENTRANT_PROTO*) ;;
13233                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13234                 esac
13235                 echo "Prototype: $try" ;;
13236         esac
13237         ;;
13238         *)      case "$usethreads" in
13239                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13240                 esac
13241                 d_getprotoent_r=undef
13242                 getprotoent_r_proto=0
13243                 ;;
13244         esac
13245         ;;
13246 *)      getprotoent_r_proto=0
13247         ;;
13248 esac
13249
13250 : see if prototypes for various getprotoxxx netdb.h functions are available
13251 echo " "
13252 set d_getprotoprotos getprotoent $i_netdb netdb.h
13253 eval $hasproto
13254
13255 : see if getprpwnam exists
13256 set getprpwnam d_getprpwnam
13257 eval $inlibc
13258
13259 : see if getpwent exists
13260 set getpwent d_getpwent
13261 eval $inlibc
13262
13263 : see if getpwent_r exists
13264 set getpwent_r d_getpwent_r
13265 eval $inlibc
13266 case "$d_getpwent_r" in
13267 "$define")
13268         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13269         case "$d_getpwent_r_proto:$usethreads" in
13270         ":define")      d_getpwent_r_proto=define
13271                 set d_getpwent_r_proto getpwent_r $hdrs
13272                 eval $hasproto ;;
13273         *)      ;;
13274         esac
13275         case "$d_getpwent_r_proto" in
13276         define)
13277         case "$getpwent_r_proto" in
13278         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13279         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13280         esac
13281         case "$getpwent_r_proto" in
13282         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13283         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13284         esac
13285         case "$getpwent_r_proto" in
13286         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13287         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13288         esac
13289         case "$getpwent_r_proto" in
13290         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13291         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13292         esac
13293         case "$getpwent_r_proto" in
13294         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13295         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13296         esac
13297         case "$getpwent_r_proto" in
13298         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13299         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13300         esac
13301         case "$getpwent_r_proto" in
13302         ''|0)   d_getpwent_r=undef
13303                 getpwent_r_proto=0
13304                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13305         * )     case "$getpwent_r_proto" in
13306                 REENTRANT_PROTO*) ;;
13307                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13308                 esac
13309                 echo "Prototype: $try" ;;
13310         esac
13311         ;;
13312         *)      case "$usethreads" in
13313                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13314                 esac
13315                 d_getpwent_r=undef
13316                 getpwent_r_proto=0
13317                 ;;
13318         esac
13319         ;;
13320 *)      getpwent_r_proto=0
13321         ;;
13322 esac
13323
13324 : see if getpwnam_r exists
13325 set getpwnam_r d_getpwnam_r
13326 eval $inlibc
13327 case "$d_getpwnam_r" in
13328 "$define")
13329         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13330         case "$d_getpwnam_r_proto:$usethreads" in
13331         ":define")      d_getpwnam_r_proto=define
13332                 set d_getpwnam_r_proto getpwnam_r $hdrs
13333                 eval $hasproto ;;
13334         *)      ;;
13335         esac
13336         case "$d_getpwnam_r_proto" in
13337         define)
13338         case "$getpwnam_r_proto" in
13339         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13340         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13341         esac
13342         case "$getpwnam_r_proto" in
13343         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13344         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13345         esac
13346         case "$getpwnam_r_proto" in
13347         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13348         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13349         esac
13350         case "$getpwnam_r_proto" in
13351         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13352         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13353         esac
13354         case "$getpwnam_r_proto" in
13355         ''|0)   d_getpwnam_r=undef
13356                 getpwnam_r_proto=0
13357                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13358         * )     case "$getpwnam_r_proto" in
13359                 REENTRANT_PROTO*) ;;
13360                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13361                 esac
13362                 echo "Prototype: $try" ;;
13363         esac
13364         ;;
13365         *)      case "$usethreads" in
13366                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13367                 esac
13368                 d_getpwnam_r=undef
13369                 getpwnam_r_proto=0
13370                 ;;
13371         esac
13372         ;;
13373 *)      getpwnam_r_proto=0
13374         ;;
13375 esac
13376
13377 : see if getpwuid_r exists
13378 set getpwuid_r d_getpwuid_r
13379 eval $inlibc
13380 case "$d_getpwuid_r" in
13381 "$define")
13382         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13383         case "$d_getpwuid_r_proto:$usethreads" in
13384         ":define")      d_getpwuid_r_proto=define
13385                 set d_getpwuid_r_proto getpwuid_r $hdrs
13386                 eval $hasproto ;;
13387         *)      ;;
13388         esac
13389         case "$d_getpwuid_r_proto" in
13390         define)
13391         case "$getpwuid_r_proto" in
13392         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13393         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13394         esac
13395         case "$getpwuid_r_proto" in
13396         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13397         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13398         esac
13399         case "$getpwuid_r_proto" in
13400         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13401         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13402         esac
13403         case "$getpwuid_r_proto" in
13404         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13405         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13406         esac
13407         case "$getpwuid_r_proto" in
13408         ''|0)   d_getpwuid_r=undef
13409                 getpwuid_r_proto=0
13410                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13411         * )     case "$getpwuid_r_proto" in
13412                 REENTRANT_PROTO*) ;;
13413                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13414                 esac
13415                 echo "Prototype: $try" ;;
13416         esac
13417         ;;
13418         *)      case "$usethreads" in
13419                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13420                 esac
13421                 d_getpwuid_r=undef
13422                 getpwuid_r_proto=0
13423                 ;;
13424         esac
13425         ;;
13426 *)      getpwuid_r_proto=0
13427         ;;
13428 esac
13429
13430
13431 : see if getservbyname exists
13432 set getservbyname d_getsbyname
13433 eval $inlibc
13434
13435 : see if getservbyport exists
13436 set getservbyport d_getsbyport
13437 eval $inlibc
13438
13439 : see if getservent exists
13440 set getservent d_getsent
13441 eval $inlibc
13442
13443 : see if getservbyname_r exists
13444 set getservbyname_r d_getservbyname_r
13445 eval $inlibc
13446 case "$d_getservbyname_r" in
13447 "$define")
13448         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13449         case "$d_getservbyname_r_proto:$usethreads" in
13450         ":define")      d_getservbyname_r_proto=define
13451                 set d_getservbyname_r_proto getservbyname_r $hdrs
13452                 eval $hasproto ;;
13453         *)      ;;
13454         esac
13455         case "$d_getservbyname_r_proto" in
13456         define)
13457         case "$getservbyname_r_proto" in
13458         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13459         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13460         esac
13461         case "$getservbyname_r_proto" in
13462         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13463         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13464         esac
13465         case "$getservbyname_r_proto" in
13466         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13467         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13468         esac
13469         case "$getservbyname_r_proto" in
13470         ''|0)   d_getservbyname_r=undef
13471                 getservbyname_r_proto=0
13472                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13473         * )     case "$getservbyname_r_proto" in
13474                 REENTRANT_PROTO*) ;;
13475                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13476                 esac
13477                 echo "Prototype: $try" ;;
13478         esac
13479         ;;
13480         *)      case "$usethreads" in
13481                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13482                 esac
13483                 d_getservbyname_r=undef
13484                 getservbyname_r_proto=0
13485                 ;;
13486         esac
13487         ;;
13488 *)      getservbyname_r_proto=0
13489         ;;
13490 esac
13491
13492 : see if getservbyport_r exists
13493 set getservbyport_r d_getservbyport_r
13494 eval $inlibc
13495 case "$d_getservbyport_r" in
13496 "$define")
13497         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13498         case "$d_getservbyport_r_proto:$usethreads" in
13499         ":define")      d_getservbyport_r_proto=define
13500                 set d_getservbyport_r_proto getservbyport_r $hdrs
13501                 eval $hasproto ;;
13502         *)      ;;
13503         esac
13504         case "$d_getservbyport_r_proto" in
13505         define)
13506         case "$getservbyport_r_proto" in
13507         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13508         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13509         esac
13510         case "$getservbyport_r_proto" in
13511         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13512         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13513         esac
13514         case "$getservbyport_r_proto" in
13515         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13516         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13517         esac
13518         case "$getservbyport_r_proto" in
13519         ''|0)   d_getservbyport_r=undef
13520                 getservbyport_r_proto=0
13521                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13522         * )     case "$getservbyport_r_proto" in
13523                 REENTRANT_PROTO*) ;;
13524                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13525                 esac
13526                 echo "Prototype: $try" ;;
13527         esac
13528         ;;
13529         *)      case "$usethreads" in
13530                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13531                 esac
13532                 d_getservbyport_r=undef
13533                 getservbyport_r_proto=0
13534                 ;;
13535         esac
13536         ;;
13537 *)      getservbyport_r_proto=0
13538         ;;
13539 esac
13540
13541 : see if getservent_r exists
13542 set getservent_r d_getservent_r
13543 eval $inlibc
13544 case "$d_getservent_r" in
13545 "$define")
13546         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13547         case "$d_getservent_r_proto:$usethreads" in
13548         ":define")      d_getservent_r_proto=define
13549                 set d_getservent_r_proto getservent_r $hdrs
13550                 eval $hasproto ;;
13551         *)      ;;
13552         esac
13553         case "$d_getservent_r_proto" in
13554         define)
13555         case "$getservent_r_proto" in
13556         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13557         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13558         esac
13559         case "$getservent_r_proto" in
13560         ''|0) try='int getservent_r(struct servent*, char*, int);'
13561         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13562         esac
13563         case "$getservent_r_proto" in
13564         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13565         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13566         esac
13567         case "$getservent_r_proto" in
13568         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13569         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13570         esac
13571         case "$getservent_r_proto" in
13572         ''|0)   d_getservent_r=undef
13573                 getservent_r_proto=0
13574                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13575         * )     case "$getservent_r_proto" in
13576                 REENTRANT_PROTO*) ;;
13577                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13578                 esac
13579                 echo "Prototype: $try" ;;
13580         esac
13581         ;;
13582         *)      case "$usethreads" in
13583                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13584                 esac
13585                 d_getservent_r=undef
13586                 getservent_r_proto=0
13587                 ;;
13588         esac
13589         ;;
13590 *)      getservent_r_proto=0
13591         ;;
13592 esac
13593
13594 : see if prototypes for various getservxxx netdb.h functions are available
13595 echo " "
13596 set d_getservprotos getservent $i_netdb netdb.h
13597 eval $hasproto
13598
13599 : see if getspnam exists
13600 set getspnam d_getspnam
13601 eval $inlibc
13602
13603 : see if this is a shadow.h system
13604 set shadow.h i_shadow
13605 eval $inhdr
13606
13607 : see if getspnam_r exists
13608 set getspnam_r d_getspnam_r
13609 eval $inlibc
13610 case "$d_getspnam_r" in
13611 "$define")
13612         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13613         case "$d_getspnam_r_proto:$usethreads" in
13614         ":define")      d_getspnam_r_proto=define
13615                 set d_getspnam_r_proto getspnam_r $hdrs
13616                 eval $hasproto ;;
13617         *)      ;;
13618         esac
13619         case "$d_getspnam_r_proto" in
13620         define)
13621         case "$getspnam_r_proto" in
13622         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13623         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13624         esac
13625         case "$getspnam_r_proto" in
13626         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13627         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13628         esac
13629         case "$getspnam_r_proto" in
13630         ''|0)   d_getspnam_r=undef
13631                 getspnam_r_proto=0
13632                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13633         * )     case "$getspnam_r_proto" in
13634                 REENTRANT_PROTO*) ;;
13635                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13636                 esac
13637                 echo "Prototype: $try" ;;
13638         esac
13639         ;;
13640         *)      case "$usethreads" in
13641                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13642                 esac
13643                 d_getspnam_r=undef
13644                 getspnam_r_proto=0
13645                 ;;
13646         esac
13647         ;;
13648 *)      getspnam_r_proto=0
13649         ;;
13650 esac
13651
13652 : see if gettimeofday or ftime exists
13653 set gettimeofday d_gettimeod
13654 eval $inlibc
13655 case "$d_gettimeod" in
13656 "$undef")
13657         set ftime d_ftime 
13658         eval $inlibc
13659         ;;
13660 *)
13661         val="$undef"; set d_ftime; eval $setvar
13662         ;;
13663 esac
13664 case "$d_gettimeod$d_ftime" in
13665 "$undef$undef")
13666         echo " "
13667         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13668         ;;
13669 esac
13670
13671 : see if gmtime_r exists
13672 set gmtime_r d_gmtime_r
13673 eval $inlibc
13674 case "$d_gmtime_r" in
13675 "$define")
13676         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13677         case "$d_gmtime_r_proto:$usethreads" in
13678         ":define")      d_gmtime_r_proto=define
13679                 set d_gmtime_r_proto gmtime_r $hdrs
13680                 eval $hasproto ;;
13681         *)      ;;
13682         esac
13683         case "$d_gmtime_r_proto" in
13684         define)
13685         case "$gmtime_r_proto" in
13686         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13687         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13688         esac
13689         case "$gmtime_r_proto" in
13690         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13691         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13692         esac
13693         case "$gmtime_r_proto" in
13694         ''|0)   d_gmtime_r=undef
13695                 gmtime_r_proto=0
13696                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13697         * )     case "$gmtime_r_proto" in
13698                 REENTRANT_PROTO*) ;;
13699                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13700                 esac
13701                 echo "Prototype: $try" ;;
13702         esac
13703         ;;
13704         *)      case "$usethreads" in
13705                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13706                 esac
13707                 d_gmtime_r=undef
13708                 gmtime_r_proto=0
13709                 ;;
13710         esac
13711         ;;
13712 *)      gmtime_r_proto=0
13713         ;;
13714 esac
13715
13716 : see if hasmntopt exists
13717 set hasmntopt d_hasmntopt
13718 eval $inlibc
13719
13720 : see if this is a netinet/in.h or sys/in.h system
13721 set netinet/in.h i_niin sys/in.h i_sysin
13722 eval $inhdr
13723
13724 : see if arpa/inet.h has to be included
13725 set arpa/inet.h i_arpainet
13726 eval $inhdr
13727
13728 : see if htonl --and friends-- exists
13729 val=''
13730 set htonl val
13731 eval $inlibc
13732
13733 : Maybe they are macros.
13734 case "$val" in
13735 $undef)
13736         $cat >htonl.c <<EOM
13737 #include <stdio.h>
13738 #include <sys/types.h>
13739 #$i_niin I_NETINET_IN
13740 #$i_sysin I_SYS_IN
13741 #$i_arpainet I_ARPA_INET
13742 #ifdef I_NETINET_IN
13743 #include <netinet/in.h>
13744 #endif
13745 #ifdef I_SYS_IN
13746 #include <sys/in.h>
13747 #endif
13748 #ifdef I_ARPA_INET
13749 #include <arpa/inet.h>
13750 #endif
13751 #ifdef htonl
13752 printf("Defined as a macro.");
13753 #endif
13754 EOM
13755         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13756         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13757                 val="$define"
13758                 echo "But it seems to be defined as a macro." >&4
13759         fi
13760         $rm -f htonl.?
13761         ;;
13762 esac
13763 set d_htonl
13764 eval $setvar
13765
13766 : see if ilogbl exists
13767 set ilogbl d_ilogbl
13768 eval $inlibc
13769
13770 : index or strchr
13771 echo " "
13772 if set index val -f; eval $csym; $val; then
13773         if set strchr val -f d_strchr; eval $csym; $val; then
13774                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13775                         val="$define"
13776                         vali="$undef"
13777                         echo "strchr() found." >&4
13778                 else
13779                         val="$undef"
13780                         vali="$define"
13781                         echo "index() found." >&4
13782                 fi
13783         else
13784                 val="$undef"
13785                 vali="$define"
13786                 echo "index() found." >&4
13787         fi
13788 else
13789         if set strchr val -f d_strchr; eval $csym; $val; then
13790                 val="$define"
13791                 vali="$undef"
13792                 echo "strchr() found." >&4
13793         else
13794                 echo "No index() or strchr() found!" >&4
13795                 val="$undef"
13796                 vali="$undef"
13797         fi
13798 fi
13799 set d_strchr; eval $setvar
13800 val="$vali"
13801 set d_index; eval $setvar
13802
13803 : check whether inet_aton exists
13804 set inet_aton d_inetaton
13805 eval $inlibc
13806
13807 : Look for isascii
13808 echo " "
13809 $cat >isascii.c <<EOCP
13810 #include <stdio.h>
13811 #include <ctype.h>
13812 #$i_stdlib I_STDLIB
13813 #ifdef I_STDLIB
13814 #include <stdlib.h>
13815 #endif
13816 int main() {
13817         int c = 'A';
13818         if (isascii(c))
13819                 exit(0);
13820         else
13821                 exit(1);
13822 }
13823 EOCP
13824 set isascii
13825 if eval $compile; then
13826         echo "isascii() found." >&4
13827         val="$define"
13828 else
13829         echo "isascii() NOT found." >&4
13830         val="$undef"
13831 fi
13832 set d_isascii
13833 eval $setvar
13834 $rm -f isascii*
13835
13836 : see if isfinite exists
13837 set isfinite d_isfinite
13838 eval $inlibc
13839
13840 : see if isinf exists
13841 set isinf d_isinf
13842 eval $inlibc
13843
13844 : see if isnan exists
13845 set isnan d_isnan
13846 eval $inlibc
13847
13848 : see if isnanl exists
13849 set isnanl d_isnanl
13850 eval $inlibc
13851
13852 : see if killpg exists
13853 set killpg d_killpg
13854 eval $inlibc
13855
13856 : see if lchown exists
13857 echo " "
13858 $cat > try.c <<'EOCP'
13859 /* System header to define __stub macros and hopefully few prototypes,
13860     which can conflict with char lchown(); below.  */
13861 #include <assert.h>
13862 /* Override any gcc2 internal prototype to avoid an error.  */
13863 /* We use char because int might match the return type of a gcc2
13864    builtin and then its argument prototype would still apply.  */
13865 char lchown();
13866 int main() {
13867     /*  The GNU C library defines this for functions which it implements
13868         to always fail with ENOSYS.  Some functions are actually named
13869         something starting with __ and the normal name is an alias.  */
13870 #if defined (__stub_lchown) || defined (__stub___lchown)
13871 choke me
13872 #else
13873 lchown();
13874 #endif
13875 ; return 0; }
13876 EOCP
13877 set try
13878 if eval $compile; then
13879     $echo "lchown() found." >&4
13880     val="$define"
13881 else
13882     $echo "lchown() NOT found." >&4
13883     val="$undef"
13884 fi
13885 set d_lchown
13886 eval $setvar
13887
13888 : See if number of significant digits in a double precision number is known
13889 echo " "
13890 $cat >ldbl_dig.c <<EOM
13891 #$i_limits I_LIMITS
13892 #$i_float I_FLOAT
13893 #ifdef I_LIMITS
13894 #include <limits.h>
13895 #endif
13896 #ifdef I_FLOAT
13897 #include <float.h>
13898 #endif
13899 #ifdef LDBL_DIG
13900 printf("Contains LDBL_DIG");
13901 #endif
13902 EOM
13903 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13904 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13905         echo "LDBL_DIG found." >&4
13906         val="$define"
13907 else
13908         echo "LDBL_DIG NOT found." >&4
13909         val="$undef"
13910 fi
13911 $rm -f ldbl_dig.?
13912 set d_ldbl_dig
13913 eval $setvar
13914
13915 : see if link exists
13916 set link d_link
13917 eval $inlibc
13918
13919 : see if localtime_r exists
13920 set localtime_r d_localtime_r
13921 eval $inlibc
13922 case "$d_localtime_r" in
13923 "$define")
13924         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13925         case "$d_localtime_r_proto:$usethreads" in
13926         ":define")      d_localtime_r_proto=define
13927                 set d_localtime_r_proto localtime_r $hdrs
13928                 eval $hasproto ;;
13929         *)      ;;
13930         esac
13931         case "$d_localtime_r_proto" in
13932         define)
13933         case "$localtime_r_proto" in
13934         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13935         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13936         esac
13937         case "$localtime_r_proto" in
13938         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13939         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13940         esac
13941         case "$localtime_r_proto" in
13942         ''|0)   d_localtime_r=undef
13943                 localtime_r_proto=0
13944                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13945         * )     case "$localtime_r_proto" in
13946                 REENTRANT_PROTO*) ;;
13947                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13948                 esac
13949                 echo "Prototype: $try" ;;
13950         esac
13951         ;;
13952         *)      case "$usethreads" in
13953                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13954                 esac
13955                 d_localtime_r=undef
13956                 localtime_r_proto=0
13957                 ;;
13958         esac
13959         ;;
13960 *)      localtime_r_proto=0
13961         ;;
13962 esac
13963
13964 : see if localeconv exists
13965 set localeconv d_locconv
13966 eval $inlibc
13967
13968 : see if lockf exists
13969 set lockf d_lockf
13970 eval $inlibc
13971
13972 : see if prototype for lseek is available
13973 echo " "
13974 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13975 eval $hasproto
13976
13977 : see if lstat exists
13978 set lstat d_lstat
13979 eval $inlibc
13980
13981 : see if madvise exists
13982 set madvise d_madvise
13983 eval $inlibc
13984
13985 : see if mblen exists
13986 set mblen d_mblen
13987 eval $inlibc
13988
13989 : see if mbstowcs exists
13990 set mbstowcs d_mbstowcs
13991 eval $inlibc
13992
13993 : see if mbtowc exists
13994 set mbtowc d_mbtowc
13995 eval $inlibc
13996
13997 : see if memchr exists
13998 set memchr d_memchr
13999 eval $inlibc
14000
14001 : see if memcmp exists
14002 set memcmp d_memcmp
14003 eval $inlibc
14004
14005 : see if memcpy exists
14006 set memcpy d_memcpy
14007 eval $inlibc
14008
14009 : see if memmove exists
14010 set memmove d_memmove
14011 eval $inlibc
14012
14013 : see if memset exists
14014 set memset d_memset
14015 eval $inlibc
14016
14017 : see if mkdir exists
14018 set mkdir d_mkdir
14019 eval $inlibc
14020
14021 : see if mkdtemp exists
14022 set mkdtemp d_mkdtemp
14023 eval $inlibc
14024
14025 : see if mkfifo exists
14026 set mkfifo d_mkfifo
14027 eval $inlibc
14028
14029 : see if mkstemp exists
14030 set mkstemp d_mkstemp
14031 eval $inlibc
14032
14033 : see if mkstemps exists
14034 set mkstemps d_mkstemps
14035 eval $inlibc
14036
14037 : see if mktime exists
14038 set mktime d_mktime
14039 eval $inlibc
14040
14041 : see if this is a sys/mman.h system
14042 set sys/mman.h i_sysmman
14043 eval $inhdr
14044
14045 : see if mmap exists
14046 set mmap d_mmap
14047 eval $inlibc
14048 : see what shmat returns
14049 : default to something harmless
14050 mmaptype='void *'
14051 case "$i_sysmman$d_mmap" in
14052 "$define$define")
14053         $cat >mmap.c <<'END'
14054 #include <sys/mman.h>
14055 void *mmap();
14056 END
14057         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14058                 mmaptype='void *'
14059         else
14060                 mmaptype='caddr_t'
14061         fi
14062         echo "and it returns ($mmaptype)." >&4
14063         ;;
14064 esac
14065
14066
14067
14068 : see if sqrtl exists
14069 set sqrtl d_sqrtl
14070 eval $inlibc
14071
14072 : see if scalbnl exists
14073 set scalbnl d_scalbnl
14074 eval $inlibc
14075
14076 : see if modfl exists
14077 set modfl d_modfl
14078 eval $inlibc
14079
14080 : see if prototype for modfl is available
14081 echo " "
14082 set d_modflproto modfl math.h
14083 eval $hasproto
14084
14085 d_modfl_pow32_bug="$undef"
14086
14087 case "$d_longdbl$d_modfl" in
14088 $define$define)
14089         $cat <<EOM
14090 Checking to see whether your modfl() is okay for large values...
14091 EOM
14092 $cat >try.c <<EOCP
14093 #include <math.h> 
14094 #include <stdio.h>
14095 EOCP
14096 if $test "X$d_modflproto" != "X$define"; then
14097         $cat >>try.c <<EOCP
14098 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14099 long double modfl (long double, long double *);
14100 EOCP
14101 fi
14102 $cat >>try.c <<EOCP
14103 int main() {
14104     long double nv = 4294967303.15;
14105     long double v, w;
14106     v = modfl(nv, &w);         
14107 #ifdef __GLIBC__
14108     printf("glibc");
14109 #endif
14110     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14111     return 0;
14112 }
14113 EOCP
14114         case "$osname:$gccversion" in
14115         aix:)   saveccflags="$ccflags"
14116                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14117         esac
14118         set try
14119         if eval $compile; then
14120                 foo=`$run ./try`
14121                 case "$foo" in
14122                 *" 4294967303.150000 1.150000 4294967302.000000")
14123                         echo >&4 "Your modfl() is broken for large values."
14124                         d_modfl_pow32_bug="$define"
14125                         case "$foo" in
14126                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14127                         ;;
14128                         esac
14129                         ;;
14130                 *" 4294967303.150000 0.150000 4294967303.000000")
14131                         echo >&4 "Your modfl() seems okay for large values."
14132                         ;;
14133                 *)      echo >&4 "I don't understand your modfl() at all."
14134                         d_modfl="$undef"
14135                         ;;
14136                 esac
14137                 $rm -f try.* try core core.try.*
14138         else
14139                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14140                 d_modfl="$undef"
14141         fi
14142         case "$osname:$gccversion" in
14143         aix:)   ccflags="$saveccflags" ;; # restore
14144         esac
14145         ;;
14146 esac
14147
14148 if $test "$uselongdouble" = "$define"; then
14149     message=""
14150     if $test "$d_sqrtl" != "$define"; then
14151         message="$message sqrtl"
14152     fi
14153     if $test "$d_modfl" != "$define"; then
14154         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14155             echo "You have both aintl and copysignl, so I can emulate modfl."
14156         else
14157             message="$message modfl"
14158         fi
14159     fi
14160     if $test "$d_frexpl" != "$define"; then
14161         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14162             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14163         else
14164             message="$message frexpl"
14165         fi
14166     fi
14167
14168     if $test "$message" != ""; then
14169         $cat <<EOM >&4
14170
14171 *** You requested the use of long doubles but you do not seem to have
14172 *** the following mathematical functions needed for long double support:
14173 ***    $message
14174 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14175 *** Cannot continue, aborting.
14176
14177 EOM
14178
14179         exit 1
14180     fi
14181 fi
14182
14183 : see if mprotect exists
14184 set mprotect d_mprotect
14185 eval $inlibc
14186
14187 : see if msgctl exists
14188 set msgctl d_msgctl
14189 eval $inlibc
14190
14191 : see if msgget exists
14192 set msgget d_msgget
14193 eval $inlibc
14194
14195 : see if msgsnd exists
14196 set msgsnd d_msgsnd
14197 eval $inlibc
14198
14199 : see if msgrcv exists
14200 set msgrcv d_msgrcv
14201 eval $inlibc
14202
14203 : see how much of the 'msg*(2)' library is present.
14204 h_msg=true
14205 echo " "
14206 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14207 *"$undef"*) h_msg=false;;
14208 esac
14209 case "$osname" in
14210 freebsd)
14211     case "`ipcs 2>&1`" in
14212     "SVID messages"*"not configured"*)
14213         echo "Your $osname does not have the msg*(2) configured." >&4
14214         h_msg=false
14215         val="$undef"
14216         set msgctl d_msgctl
14217         eval $setvar
14218         set msgget d_msgget
14219         eval $setvar
14220         set msgsnd d_msgsnd
14221         eval $setvar
14222         set msgrcv d_msgrcv
14223         eval $setvar
14224         ;;
14225     esac
14226     ;;
14227 esac
14228 : we could also check for sys/ipc.h ...
14229 if $h_msg && $test `./findhdr sys/msg.h`; then
14230         echo "You have the full msg*(2) library." >&4
14231         val="$define"
14232 else
14233         echo "You don't have the full msg*(2) library." >&4
14234         val="$undef"
14235 fi
14236 set d_msg
14237 eval $setvar
14238
14239
14240 echo " "
14241 echo "Checking to see if your system supports struct msghdr..." >&4
14242 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14243 eval $hasstruct
14244 case "$d_msghdr_s" in
14245 "$define")      echo "Yes, it does."   ;;
14246 *)              echo "No, it doesn't." ;;
14247 esac
14248
14249
14250 : see if msync exists
14251 set msync d_msync
14252 eval $inlibc
14253
14254 : see if munmap exists
14255 set munmap d_munmap
14256 eval $inlibc
14257
14258 : see if nice exists
14259 set nice d_nice
14260 eval $inlibc
14261
14262 : see if this is a langinfo.h system
14263 set langinfo.h i_langinfo
14264 eval $inhdr
14265
14266 : see if nl_langinfo exists
14267 set nl_langinfo d_nl_langinfo
14268 eval $inlibc
14269
14270 : check for length of character
14271 echo " "
14272 case "$charsize" in
14273 '')
14274         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14275         $cat >try.c <<EOCP
14276 #include <stdio.h>
14277 #$i_stdlib I_STDLIB
14278 #ifdef I_STDLIB
14279 #include <stdlib.h>
14280 #endif
14281 int main()
14282 {
14283     printf("%d\n", (int)sizeof(char));
14284     exit(0);
14285 }
14286 EOCP
14287         set try
14288         if eval $compile_ok; then
14289                 dflt=`$run ./try`
14290         else
14291                 dflt='1'
14292                 echo "(I can't seem to compile the test program.  Guessing...)"
14293         fi
14294         ;;
14295 *)
14296         dflt="$charsize"
14297         ;;
14298 esac
14299 rp="What is the size of a character (in bytes)?"
14300 . ./myread
14301 charsize="$ans"
14302 $rm -f try.c try
14303
14304 : check for volatile keyword
14305 echo " "
14306 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14307 $cat >try.c <<'EOCP'
14308 int main()
14309 {
14310         typedef struct _goo_struct goo_struct;
14311         goo_struct * volatile goo = ((goo_struct *)0);
14312         struct _goo_struct {
14313                 long long_int;
14314                 int reg_int;
14315                 char char_var;
14316         };
14317         typedef unsigned short foo_t;
14318         char *volatile foo;
14319         volatile int bar;
14320         volatile foo_t blech;
14321         foo = foo;
14322 }
14323 EOCP
14324 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14325         val="$define"
14326         echo "Yup, it does."
14327 else
14328         val="$undef"
14329         echo "Nope, it doesn't."
14330 fi
14331 set d_volatile
14332 eval $setvar
14333 $rm -f try.*
14334
14335
14336 echo " "
14337 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14338
14339 case "$use64bitint:$d_quad:$quadtype" in
14340 define:define:?*)
14341         ivtype="$quadtype"
14342         uvtype="$uquadtype"
14343         ivsize=8
14344         uvsize=8
14345         ;;
14346 *)      ivtype="long"
14347         uvtype="unsigned long"
14348         ivsize=$longsize
14349         uvsize=$longsize
14350         ;;
14351 esac
14352
14353 case "$uselongdouble:$d_longdbl" in
14354 define:define)
14355         nvtype="long double"
14356         nvsize=$longdblsize
14357         ;;
14358 *)      nvtype=double
14359         nvsize=$doublesize
14360         ;;
14361 esac
14362
14363 $echo "(IV will be "$ivtype", $ivsize bytes)"
14364 $echo "(UV will be "$uvtype", $uvsize bytes)"
14365 $echo "(NV will be "$nvtype", $nvsize bytes)"
14366
14367 $cat >try.c <<EOCP
14368 #$i_inttypes I_INTTYPES
14369 #ifdef I_INTTYPES
14370 #include <inttypes.h>
14371 #endif
14372 #include <stdio.h>
14373 int main() {
14374 #ifdef INT8
14375    int8_t i =  INT8_MAX;
14376   uint8_t u = UINT8_MAX;
14377   printf("int8_t\n");
14378 #endif
14379 #ifdef INT16
14380    int16_t i =  INT16_MAX;
14381   uint16_t i = UINT16_MAX;
14382   printf("int16_t\n");
14383 #endif
14384 #ifdef INT32
14385    int32_t i =  INT32_MAX;
14386   uint32_t u = UINT32_MAX;
14387   printf("int32_t\n");
14388 #endif
14389 }
14390 EOCP
14391
14392 case "$i8type" in
14393 '')     case "$charsize" in
14394         1)      i8type=char
14395                 u8type="unsigned char"
14396                 i8size=$charsize
14397                 u8size=$charsize
14398                 ;;
14399         esac
14400         ;;
14401 esac
14402 case "$i8type" in
14403 '')     set try -DINT8
14404         if eval $compile; then
14405                 case "`$run ./try`" in
14406                 int8_t) i8type=int8_t
14407                         u8type=uint8_t
14408                         i8size=1
14409                         u8size=1
14410                         ;;
14411                 esac
14412         fi
14413         ;;
14414 esac
14415 case "$i8type" in
14416 '')     if $test $charsize -ge 1; then
14417                 i8type=char
14418                 u8type="unsigned char"
14419                 i8size=$charsize
14420                 u8size=$charsize
14421         fi
14422         ;;
14423 esac
14424
14425 case "$i16type" in
14426 '')     case "$shortsize" in
14427         2)      i16type=short
14428                 u16type="unsigned short"
14429                 i16size=$shortsize
14430                 u16size=$shortsize
14431                 ;;
14432         esac
14433         ;;
14434 esac
14435 case "$i16type" in
14436 '')     set try -DINT16
14437         if eval $compile; then
14438                 case "`$run ./try`" in
14439                 int16_t)
14440                         i16type=int16_t
14441                         u16type=uint16_t
14442                         i16size=2
14443                         u16size=2
14444                         ;;
14445                 esac
14446         fi
14447         ;;
14448 esac
14449 case "$i16type" in
14450 '')     if $test $shortsize -ge 2; then
14451                 i16type=short
14452                 u16type="unsigned short"
14453                 i16size=$shortsize
14454                 u16size=$shortsize
14455         fi
14456         ;;
14457 esac
14458
14459 case "$i32type" in
14460 '')     case "$longsize" in
14461         4)      i32type=long
14462                 u32type="unsigned long"
14463                 i32size=$longsize
14464                 u32size=$longsize
14465                 ;;
14466         *)      case "$intsize" in
14467                 4)      i32type=int
14468                         u32type="unsigned int"
14469                         i32size=$intsize
14470                         u32size=$intsize
14471                         ;;
14472                 esac
14473                 ;;
14474         esac
14475         ;;
14476 esac
14477 case "$i32type" in
14478 '')     set try -DINT32
14479         if eval $compile; then
14480                 case "`$run ./try`" in
14481                 int32_t)
14482                         i32type=int32_t
14483                         u32type=uint32_t
14484                         i32size=4
14485                         u32size=4
14486                         ;;
14487                 esac
14488         fi
14489         ;;
14490 esac
14491 case "$i32type" in
14492 '')     if $test $intsize -ge 4; then
14493                 i32type=int
14494                 u32type="unsigned int"
14495                 i32size=$intsize
14496                 u32size=$intsize
14497         fi
14498         ;;
14499 esac
14500
14501 case "$i64type" in
14502 '')     case "$d_quad:$quadtype" in
14503         define:?*)
14504                 i64type="$quadtype"
14505                 u64type="$uquadtype"
14506                 i64size=8
14507                 u64size=8
14508                 ;;
14509         esac
14510         ;;
14511 esac
14512
14513 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14514 : volatile so that the compiler has to store it out to memory.
14515 if test X"$d_volatile" = X"$define"; then
14516         volatile=volatile
14517 fi
14518 $cat <<EOP >try.c
14519 #include <stdio.h>
14520 #$i_stdlib I_STDLIB
14521 #ifdef I_STDLIB
14522 #include <stdlib.h>
14523 #endif
14524 #include <sys/types.h>
14525 #include <signal.h>
14526 #ifdef SIGFPE
14527 $volatile int bletched = 0;
14528 $signal_t blech(s) int s; { bletched = 1; }
14529 #endif
14530 int main() {
14531     $uvtype u = 0;
14532     $nvtype d;
14533     int     n = 8 * $uvsize;
14534     int     i;
14535 #ifdef SIGFPE
14536     signal(SIGFPE, blech);
14537 #endif
14538
14539     for (i = 0; i < n; i++) {
14540       u = u << 1 | ($uvtype)1;
14541       d = ($nvtype)u;
14542       if (($uvtype)d != u)
14543         break;
14544       if (d <= 0)
14545         break;
14546       d = ($nvtype)(u - 1);
14547       if (($uvtype)d != (u - 1))
14548         break;
14549 #ifdef SIGFPE
14550       if (bletched) {
14551         break;
14552 #endif
14553       } 
14554     }
14555     printf("%d\n", ((i == n) ? -n : i));
14556     exit(0);
14557 }
14558 EOP
14559 set try
14560
14561 d_nv_preserves_uv="$undef"
14562 if eval $compile; then
14563         nv_preserves_uv_bits="`$run ./try`"
14564 fi
14565 case "$nv_preserves_uv_bits" in
14566 \-[1-9]*)       
14567         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14568         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14569         d_nv_preserves_uv="$define"
14570         ;;
14571 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14572         d_nv_preserves_uv="$undef" ;;
14573 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14574         nv_preserves_uv_bits="$undef" ;;
14575 esac
14576
14577 $rm -f try.* try
14578
14579
14580 : check for off64_t
14581 echo " "
14582 echo "Checking to see if you have off64_t..." >&4
14583 $cat >try.c <<EOCP
14584 #include <sys/types.h>
14585 #include <unistd.h>
14586 int main() { off64_t x = 7; }
14587 EOCP
14588 set try
14589 if eval $compile; then
14590         val="$define"
14591         echo "You have off64_t."
14592 else
14593         val="$undef"
14594         echo "You do not have off64_t."
14595         case "$lseeksize" in
14596         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14597         esac
14598 fi
14599 $rm -f try.* try
14600 set d_off64_t
14601 eval $setvar
14602
14603 : how to create joinable pthreads
14604 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14605         echo " "
14606         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14607         $cat >try.c <<'EOCP'
14608 #include <pthread.h>
14609 int main() {
14610     int detachstate = JOINABLE;
14611 }
14612 EOCP
14613         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14614         if eval $compile; then
14615                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14616                 val="$undef" # Yes, undef.
14617                 set d_old_pthread_create_joinable
14618                 eval $setvar
14619                 val=""
14620                 set old_pthread_create_joinable
14621                 eval $setvar
14622         else
14623                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14624                 if eval $compile; then
14625                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14626                         val="$define"
14627                         set d_old_pthread_create_joinable
14628                         eval $setvar
14629                         val=PTHREAD_CREATE_UNDETACHED
14630                         set old_pthread_create_joinable
14631                         eval $setvar
14632                 else            
14633                         set try -DJOINABLE=__UNDETACHED
14634                         if eval $compile; then
14635                                 echo "You seem to use __UNDETACHED." >&4
14636                                 val="$define"
14637                                 set d_old_pthread_create_joinable
14638                                 eval $setvar
14639                                 val=__UNDETACHED
14640                                 set old_pthread_create_joinable
14641                                 eval $setvar
14642                         else
14643                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14644                                 val="$define"
14645                                 set d_old_pthread_create_joinable
14646                                 eval $setvar
14647                                 val=0
14648                                 set old_pthread_create_joinable
14649                                 eval $setvar
14650                         fi
14651                 fi
14652         fi
14653         $rm -f try try.*
14654 else
14655     d_old_pthread_create_joinable="$undef"
14656     old_pthread_create_joinable=""
14657 fi
14658
14659 : see if pause exists
14660 set pause d_pause
14661 eval $inlibc
14662
14663 : see if pipe exists
14664 set pipe d_pipe
14665 eval $inlibc
14666
14667 : see if poll exists
14668 set poll d_poll
14669 eval $inlibc
14670
14671 : see if readlink exists
14672 set readlink d_readlink
14673 eval $inlibc
14674
14675 echo " "
14676 procselfexe=''
14677 val="$undef"
14678 case "$d_readlink" in
14679 "$define")
14680         if $issymlink /proc/self/exe ; then
14681                 $ls -l /proc/self/exe > reflect
14682                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14683                         echo "You have Linux-like /proc/self/exe."
14684                         procselfexe='"/proc/self/exe"'
14685                         val="$define"
14686                 fi
14687         fi
14688         if $issymlink /proc/curproc/file ; then
14689                 $ls -l /proc/curproc/file > reflect
14690                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14691                         echo "You have BSD-like /proc/curproc/file."
14692                         procselfexe='"/proc/curproc/file"'
14693                         val="$define"
14694                 fi
14695         fi
14696         ;;
14697 esac
14698 $rm -f reflect
14699 set d_procselfexe
14700 eval $setvar
14701
14702 : see whether the pthread_atfork exists
14703 $cat >try.c <<EOP
14704 #include <pthread.h>
14705 #include <stdio.h>
14706 int main() {
14707 #ifdef  PTHREAD_ATFORK
14708         pthread_atfork(NULL,NULL,NULL);
14709 #endif
14710 }
14711 EOP
14712
14713 : see if pthread_atfork exists
14714 set try -DPTHREAD_ATFORK
14715 if eval $compile; then
14716     val="$define"
14717 else
14718     val="$undef"
14719 fi
14720 case "$usethreads" in
14721 $define)
14722         case "$val" in
14723         $define) echo 'pthread_atfork found.' >&4        ;;
14724         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14725         esac
14726 esac
14727 set d_pthread_atfork
14728 eval $setvar
14729
14730 : see if pthread_attr_setscope exists
14731 set pthread_attr_setscope d_pthread_attr_setscope
14732 eval $inlibc
14733
14734
14735 : see whether the various POSIXish _yields exist
14736 $cat >try.c <<EOP
14737 #include <pthread.h>
14738 #include <stdio.h>
14739 int main() {
14740 #ifdef SCHED_YIELD
14741         sched_yield();
14742 #else
14743 #ifdef PTHREAD_YIELD
14744         pthread_yield();
14745 #else
14746 #ifdef PTHREAD_YIELD_NULL
14747         pthread_yield(NULL);
14748 #endif
14749 #endif
14750 #endif
14751 }
14752 EOP
14753 : see if sched_yield exists
14754 set try -DSCHED_YIELD
14755 if eval $compile; then
14756     val="$define"
14757     sched_yield='sched_yield()'
14758 else
14759     val="$undef"
14760 fi
14761 case "$usethreads" in
14762 $define)
14763         case "$val" in
14764         $define) echo 'sched_yield() found.' >&4        ;;
14765         *)       echo 'sched_yield() NOT found.' >&4    ;;
14766         esac
14767 esac
14768 set d_sched_yield
14769 eval $setvar
14770
14771 : see if pthread_yield exists
14772 set try -DPTHREAD_YIELD
14773 if eval $compile; then
14774     val="$define"
14775     case "$sched_yield" in
14776     '') sched_yield='pthread_yield()' ;;
14777     esac
14778 else
14779     set try -DPTHREAD_YIELD_NULL
14780     if eval $compile; then
14781         val="$define"
14782         case "$sched_yield" in
14783         '') sched_yield='pthread_yield(NULL)' ;;
14784         esac
14785     else
14786         val="$undef"
14787     fi
14788 fi
14789 case "$usethreads" in
14790 $define)
14791         case "$val" in
14792         $define) echo 'pthread_yield() found.' >&4      ;;
14793         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14794         esac
14795         ;;
14796 esac
14797 set d_pthread_yield
14798 eval $setvar
14799
14800 case "$sched_yield" in
14801 '') sched_yield=undef ;;
14802 esac
14803
14804 $rm -f try try.*
14805
14806 : see if random_r exists
14807 set random_r d_random_r
14808 eval $inlibc
14809 case "$d_random_r" in
14810 "$define")
14811         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14812         case "$d_random_r_proto:$usethreads" in
14813         ":define")      d_random_r_proto=define
14814                 set d_random_r_proto random_r $hdrs
14815                 eval $hasproto ;;
14816         *)      ;;
14817         esac
14818         case "$d_random_r_proto" in
14819         define)
14820         case "$random_r_proto" in
14821         ''|0) try='int random_r(int*, struct random_data*);'
14822         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14823         esac
14824         case "$random_r_proto" in
14825         ''|0) try='int random_r(long*, struct random_data*);'
14826         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14827         esac
14828         case "$random_r_proto" in
14829         ''|0) try='int random_r(struct random_data*, int32_t*);'
14830         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14831         esac
14832         case "$random_r_proto" in
14833         ''|0)   d_random_r=undef
14834                 random_r_proto=0
14835                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14836         * )     case "$random_r_proto" in
14837                 REENTRANT_PROTO*) ;;
14838                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14839                 esac
14840                 echo "Prototype: $try" ;;
14841         esac
14842         ;;
14843         *)      case "$usethreads" in
14844                 define) echo "random_r has no prototype, not using it." >&4 ;;
14845                 esac
14846                 d_random_r=undef
14847                 random_r_proto=0
14848                 ;;
14849         esac
14850         ;;
14851 *)      random_r_proto=0
14852         ;;
14853 esac
14854
14855 : see if readdir and friends exist
14856 set readdir d_readdir
14857 eval $inlibc
14858 set seekdir d_seekdir
14859 eval $inlibc
14860 set telldir d_telldir
14861 eval $inlibc
14862 set rewinddir d_rewinddir
14863 eval $inlibc
14864
14865 : see if readdir64_r exists
14866 set readdir64_r d_readdir64_r
14867 eval $inlibc
14868 case "$d_readdir64_r" in
14869 "$define")
14870         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14871         case "$d_readdir64_r_proto:$usethreads" in
14872         ":define")      d_readdir64_r_proto=define
14873                 set d_readdir64_r_proto readdir64_r $hdrs
14874                 eval $hasproto ;;
14875         *)      ;;
14876         esac
14877         case "$d_readdir64_r_proto" in
14878         define)
14879         case "$readdir64_r_proto" in
14880         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14881         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14882         esac
14883         case "$readdir64_r_proto" in
14884         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14885         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14886         esac
14887         case "$readdir64_r_proto" in
14888         ''|0)   d_readdir64_r=undef
14889                 readdir64_r_proto=0
14890                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14891         * )     case "$readdir64_r_proto" in
14892                 REENTRANT_PROTO*) ;;
14893                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14894                 esac
14895                 echo "Prototype: $try" ;;
14896         esac
14897         ;;
14898         *)      case "$usethreads" in
14899                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14900                 esac
14901                 d_readdir64_r=undef
14902                 readdir64_r_proto=0
14903                 ;;
14904         esac
14905         ;;
14906 *)      readdir64_r_proto=0
14907         ;;
14908 esac
14909
14910 : see if readdir_r exists
14911 set readdir_r d_readdir_r
14912 eval $inlibc
14913 case "$d_readdir_r" in
14914 "$define")
14915         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14916         case "$d_readdir_r_proto:$usethreads" in
14917         ":define")      d_readdir_r_proto=define
14918                 set d_readdir_r_proto readdir_r $hdrs
14919                 eval $hasproto ;;
14920         *)      ;;
14921         esac
14922         case "$d_readdir_r_proto" in
14923         define)
14924         case "$readdir_r_proto" in
14925         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14926         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14927         esac
14928         case "$readdir_r_proto" in
14929         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14930         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14931         esac
14932         case "$readdir_r_proto" in
14933         ''|0)   d_readdir_r=undef
14934                 readdir_r_proto=0
14935                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14936         * )     case "$readdir_r_proto" in
14937                 REENTRANT_PROTO*) ;;
14938                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14939                 esac
14940                 echo "Prototype: $try" ;;
14941         esac
14942         ;;
14943         *)      case "$usethreads" in
14944                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14945                 esac
14946                 d_readdir_r=undef
14947                 readdir_r_proto=0
14948                 ;;
14949         esac
14950         ;;
14951 *)      readdir_r_proto=0
14952         ;;
14953 esac
14954
14955 : see if readv exists
14956 set readv d_readv
14957 eval $inlibc
14958
14959 : see if recvmsg exists
14960 set recvmsg d_recvmsg
14961 eval $inlibc
14962
14963 : see if rename exists
14964 set rename d_rename
14965 eval $inlibc
14966
14967 : see if rmdir exists
14968 set rmdir d_rmdir
14969 eval $inlibc
14970
14971 : see if memory.h is available.
14972 val=''
14973 set memory.h val
14974 eval $inhdr
14975
14976 : See if it conflicts with string.h
14977 case "$val" in
14978 $define)
14979         case "$strings" in
14980         '') ;;
14981         *)
14982                 $cppstdin $cppflags $cppminus < $strings > mem.h
14983                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14984                         echo " "
14985                         echo "We won't be including <memory.h>."
14986                         val="$undef"
14987                 fi
14988                 $rm -f mem.h
14989                 ;;
14990         esac
14991 esac
14992 set i_memory
14993 eval $setvar
14994
14995 : can bcopy handle overlapping blocks?
14996 echo " "
14997 val="$undef"
14998 case "$d_memmove" in
14999 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15000 *)      case "$d_bcopy" in
15001         "$define")
15002                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15003                 $cat >try.c <<EOCP
15004 #$i_memory I_MEMORY
15005 #$i_stdlib I_STDLIB
15006 #$i_string I_STRING
15007 #$i_unistd I_UNISTD
15008 EOCP
15009         $cat >>try.c <<'EOCP'
15010 #include <stdio.h>
15011 #ifdef I_MEMORY
15012 #  include <memory.h>
15013 #endif
15014 #ifdef I_STDLIB
15015 #  include <stdlib.h>
15016 #endif
15017 #ifdef I_STRING
15018 #  include <string.h>
15019 #else
15020 #  include <strings.h>
15021 #endif
15022 #ifdef I_UNISTD
15023 #  include <unistd.h>  /* Needed for NetBSD */
15024 #endif
15025 int main()
15026 {
15027 char buf[128], abc[128];
15028 char *b;
15029 int len;
15030 int off;
15031 int align;
15032
15033 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15034    try to store the string in read-only memory. */
15035 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15036
15037 for (align = 7; align >= 0; align--) {
15038         for (len = 36; len; len--) {
15039                 b = buf+align;
15040                 bcopy(abc, b, len);
15041                 for (off = 1; off <= len; off++) {
15042                         bcopy(b, b+off, len);
15043                         bcopy(b+off, b, len);
15044                         if (bcmp(b, abc, len))
15045                                 exit(1);
15046                 }
15047         }
15048 }
15049 exit(0);
15050 }
15051 EOCP
15052                 set try
15053                 if eval $compile_ok; then
15054                         if ./try 2>/dev/null; then
15055                                 echo "Yes, it can."
15056                                 val="$define"
15057                         else
15058                                 echo "It can't, sorry."
15059                         fi
15060                 else
15061                         echo "(I can't compile the test program, so we'll assume not...)"
15062                 fi
15063                 ;;
15064         esac
15065         $rm -f try.* try core
15066         ;;
15067 esac
15068 set d_safebcpy
15069 eval $setvar
15070
15071 : can memcpy handle overlapping blocks?
15072 echo " "
15073 val="$undef"
15074 case "$d_memmove" in
15075 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15076 *)      case "$d_memcpy" in
15077         "$define")
15078                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15079                 $cat >try.c <<EOCP
15080 #$i_memory I_MEMORY
15081 #$i_stdlib I_STDLIB
15082 #$i_string I_STRING
15083 #$i_unistd I_UNISTD
15084 EOCP
15085         $cat >>try.c <<'EOCP'
15086 #include <stdio.h>
15087 #ifdef I_MEMORY
15088 #  include <memory.h>
15089 #endif
15090 #ifdef I_STDLIB
15091 #  include <stdlib.h>
15092 #endif
15093 #ifdef I_STRING
15094 #  include <string.h>
15095 #else
15096 #  include <strings.h>
15097 #endif
15098 #ifdef I_UNISTD
15099 #  include <unistd.h>  /* Needed for NetBSD */
15100 #endif
15101 int main()
15102 {
15103 char buf[128], abc[128];
15104 char *b;
15105 int len;
15106 int off;
15107 int align;
15108
15109 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15110    try to store the string in read-only memory. */
15111 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15112
15113 for (align = 7; align >= 0; align--) {
15114         for (len = 36; len; len--) {
15115                 b = buf+align;
15116                 memcpy(b, abc, len);
15117                 for (off = 1; off <= len; off++) {
15118                         memcpy(b+off, b, len);
15119                         memcpy(b, b+off, len);
15120                         if (memcmp(b, abc, len))
15121                                 exit(1);
15122                 }
15123         }
15124 }
15125 exit(0);
15126 }
15127 EOCP
15128                 set try
15129                 if eval $compile_ok; then
15130                         if ./try 2>/dev/null; then
15131                                 echo "Yes, it can."
15132                                 val="$define"
15133                         else
15134                                 echo "It can't, sorry."
15135                         fi
15136                 else
15137                         echo "(I can't compile the test program, so we'll assume not...)"
15138                 fi
15139                 ;;
15140         esac
15141         $rm -f try.* try core
15142         ;;
15143 esac
15144 set d_safemcpy
15145 eval $setvar
15146
15147 : can memcmp be trusted to compare relative magnitude?
15148 val="$undef"
15149 case "$d_memcmp" in
15150 "$define")
15151         echo " "
15152         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15153         $cat >try.c <<EOCP
15154 #$i_memory I_MEMORY
15155 #$i_stdlib I_STDLIB
15156 #$i_string I_STRING
15157 #$i_unistd I_UNISTD
15158 EOCP
15159         $cat >>try.c <<'EOCP'
15160 #include <stdio.h>
15161 #ifdef I_MEMORY
15162 #  include <memory.h>
15163 #endif
15164 #ifdef I_STDLIB
15165 #  include <stdlib.h>
15166 #endif
15167 #ifdef I_STRING
15168 #  include <string.h>
15169 #else
15170 #  include <strings.h>
15171 #endif
15172 #ifdef I_UNISTD
15173 #  include <unistd.h>  /* Needed for NetBSD */
15174 #endif
15175 int main()
15176 {
15177 char a = -1;
15178 char b = 0;
15179 if ((a < b) && memcmp(&a, &b, 1) < 0)
15180         exit(1);
15181 exit(0);
15182 }
15183 EOCP
15184         set try
15185         if eval $compile_ok; then
15186                 if $run ./try 2>/dev/null; then
15187                         echo "Yes, it can."
15188                         val="$define"
15189                 else
15190                         echo "No, it can't (it uses signed chars)."
15191                 fi
15192         else
15193                 echo "(I can't compile the test program, so we'll assume not...)"
15194         fi
15195         ;;
15196 esac
15197 $rm -f try.* try core
15198 set d_sanemcmp
15199 eval $setvar
15200
15201 : see if prototype for sbrk is available
15202 echo " "
15203 set d_sbrkproto sbrk $i_unistd unistd.h
15204 eval $hasproto
15205
15206 : see if select exists
15207 set select d_select
15208 eval $inlibc
15209
15210 : see if semctl exists
15211 set semctl d_semctl
15212 eval $inlibc
15213
15214 : see if semget exists
15215 set semget d_semget
15216 eval $inlibc
15217
15218 : see if semop exists
15219 set semop d_semop
15220 eval $inlibc
15221
15222 : see how much of the 'sem*(2)' library is present.
15223 h_sem=true
15224 echo " "
15225 case "$d_semctl$d_semget$d_semop" in
15226 *"$undef"*) h_sem=false;;
15227 esac
15228 case "$osname" in
15229 freebsd)
15230     case "`ipcs 2>&1`" in
15231     "SVID messages"*"not configured"*)
15232         echo "Your $osname does not have the sem*(2) configured." >&4
15233         h_sem=false
15234         val="$undef"
15235         set semctl d_semctl
15236         eval $setvar
15237         set semget d_semget
15238         eval $setvar
15239         set semop d_semop
15240         eval $setvar
15241         ;;
15242     esac
15243     ;;
15244 esac
15245 : we could also check for sys/ipc.h ...
15246 if $h_sem && $test `./findhdr sys/sem.h`; then
15247         echo "You have the full sem*(2) library." >&4
15248         val="$define"
15249 else
15250         echo "You don't have the full sem*(2) library." >&4
15251         val="$undef"
15252 fi
15253 set d_sem
15254 eval $setvar
15255
15256 : see whether sys/sem.h defines union semun
15257 echo " "
15258 $cat > try.c <<'END'
15259 #include <sys/types.h>
15260 #include <sys/ipc.h>
15261 #include <sys/sem.h>
15262 int main () { union semun semun; semun.buf = 0; }
15263 END
15264 set try
15265 if eval $compile; then
15266     echo "You have union semun in <sys/sem.h>." >&4
15267     val="$define"
15268 else
15269     echo "You do not have union semun in <sys/sem.h>." >&4
15270     val="$undef"
15271 fi
15272 $rm -f try try.c
15273 set d_union_semun
15274 eval $setvar
15275
15276 : see how to do semctl IPC_STAT
15277 case "$d_sem" in
15278 $define)
15279     echo " "
15280     $cat > try.h <<END
15281 #ifndef S_IRUSR
15282 #   ifdef S_IREAD
15283 #       define S_IRUSR S_IREAD
15284 #       define S_IWUSR S_IWRITE
15285 #       define S_IXUSR S_IEXEC
15286 #   else
15287 #       define S_IRUSR 0400
15288 #       define S_IWUSR 0200
15289 #       define S_IXUSR 0100
15290 #   endif
15291 #   define S_IRGRP (S_IRUSR>>3)
15292 #   define S_IWGRP (S_IWUSR>>3)
15293 #   define S_IXGRP (S_IXUSR>>3)
15294 #   define S_IROTH (S_IRUSR>>6)
15295 #   define S_IWOTH (S_IWUSR>>6)
15296 #   define S_IXOTH (S_IXUSR>>6)
15297 #endif
15298 #ifndef S_IRWXU
15299 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15300 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15301 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15302 #endif
15303 END
15304     : see whether semctl IPC_STAT can use union semun
15305     val="$undef"
15306     case "$d_semctl_semun" in
15307     '')
15308       $cat > try.c <<END
15309 #include <sys/types.h>
15310 #include <sys/ipc.h>
15311 #include <sys/sem.h>
15312 #include <sys/stat.h>
15313 #include <stdio.h>
15314 #include <errno.h>
15315 #include "try.h"
15316 #ifndef errno
15317 extern int errno;
15318 #endif
15319 #$d_union_semun HAS_UNION_SEMUN
15320 int main() {
15321     union semun
15322 #ifndef HAS_UNION_SEMUN
15323     {
15324         int val;
15325         struct semid_ds *buf;
15326         unsigned short *array;
15327     }
15328 #endif
15329     arg;
15330     int sem, st;
15331
15332 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15333     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15334     if (sem > -1) {
15335         struct semid_ds argbuf;
15336         arg.buf = &argbuf;
15337 #       ifdef IPC_STAT
15338         st = semctl(sem, 0, IPC_STAT, arg);
15339         if (st == 0)
15340             printf("semun\n");
15341         else
15342 #       endif /* IPC_STAT */
15343             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15344 #       ifdef IPC_RMID
15345         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15346 #       endif /* IPC_RMID */
15347             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15348     } else
15349 #endif /* IPC_PRIVATE && ... */
15350         printf("semget failed: errno = %d\n", errno);
15351   return 0;
15352 }
15353 END
15354       set try
15355       if eval $compile; then
15356           xxx=`$run ./try`
15357           case "$xxx" in
15358           semun) val="$define" ;;
15359           esac
15360       fi
15361       $rm -f try try.c
15362       ;;
15363     esac
15364     set d_semctl_semun
15365     eval $setvar
15366     case "$d_semctl_semun" in
15367     $define)
15368         echo "You can use union semun for semctl IPC_STAT." >&4
15369         also='also'
15370         ;;
15371     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15372         also=''
15373         ;;
15374     esac
15375
15376     : see whether semctl IPC_STAT can use struct semid_ds pointer
15377     val="$undef"
15378     case "$d_semctl_semid_ds" in
15379     '')
15380       $cat > try.c <<'END'
15381 #include <sys/types.h>
15382 #include <sys/ipc.h>
15383 #include <sys/sem.h>
15384 #include <sys/stat.h>
15385 #include "try.h"
15386 #include <stdio.h>
15387 #include <errno.h>
15388 #ifndef errno
15389 extern int errno;
15390 #endif
15391 int main() {
15392     struct semid_ds arg;
15393     int sem, st;
15394
15395 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15396     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15397     if (sem > -1) {
15398 #       ifdef IPC_STAT
15399         st = semctl(sem, 0, IPC_STAT, &arg);
15400         if (st == 0)
15401             printf("semid_ds\n");
15402         else
15403 #       endif /* IPC_STAT */
15404             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15405 #       ifdef IPC_RMID
15406         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15407 #       endif /* IPC_RMID */
15408             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15409     } else
15410 #endif /* IPC_PRIVATE && ... */
15411         printf("semget failed: errno = %d\n", errno);
15412
15413     return 0;
15414 }
15415 END
15416       set try
15417       if eval $compile; then
15418           xxx=`$run ./try`
15419           case "$xxx" in
15420           semid_ds) val="$define" ;;
15421           esac
15422       fi
15423       $rm -f try try.c
15424       ;;
15425     esac
15426     set d_semctl_semid_ds
15427     eval $setvar
15428     case "$d_semctl_semid_ds" in
15429     $define)
15430         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15431         ;;
15432     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15433         ;;
15434     esac
15435     $rm -f try.h
15436     ;;
15437 *)  val="$undef"
15438
15439     # We do not have the full sem*(2) library, so assume we can not
15440     # use either.
15441
15442     set d_semctl_semun
15443     eval $setvar
15444
15445     set d_semctl_semid_ds
15446     eval $setvar
15447     ;;
15448 esac
15449
15450 : see if sendmsg exists
15451 set sendmsg d_sendmsg
15452 eval $inlibc
15453
15454 : see if setegid exists
15455 set setegid d_setegid
15456 eval $inlibc
15457
15458 : see if seteuid exists
15459 set seteuid d_seteuid
15460 eval $inlibc
15461
15462 : see if setgrent exists
15463 set setgrent d_setgrent
15464 eval $inlibc
15465
15466 : see if setgrent_r exists
15467 set setgrent_r d_setgrent_r
15468 eval $inlibc
15469 case "$d_setgrent_r" in
15470 "$define")
15471         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15472         case "$d_setgrent_r_proto:$usethreads" in
15473         ":define")      d_setgrent_r_proto=define
15474                 set d_setgrent_r_proto setgrent_r $hdrs
15475                 eval $hasproto ;;
15476         *)      ;;
15477         esac
15478         case "$d_setgrent_r_proto" in
15479         define)
15480         case "$setgrent_r_proto" in
15481         ''|0) try='int setgrent_r(FILE**);'
15482         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15483         esac
15484         case "$setgrent_r_proto" in
15485         ''|0) try='void setgrent_r(FILE**);'
15486         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15487         esac
15488         case "$setgrent_r_proto" in
15489         ''|0)   d_setgrent_r=undef
15490                 setgrent_r_proto=0
15491                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15492         * )     case "$setgrent_r_proto" in
15493                 REENTRANT_PROTO*) ;;
15494                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15495                 esac
15496                 echo "Prototype: $try" ;;
15497         esac
15498         ;;
15499         *)      case "$usethreads" in
15500                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15501                 esac
15502                 d_setgrent_r=undef
15503                 setgrent_r_proto=0
15504                 ;;
15505         esac
15506         ;;
15507 *)      setgrent_r_proto=0
15508         ;;
15509 esac
15510
15511 : see if sethostent exists
15512 set sethostent d_sethent
15513 eval $inlibc
15514
15515 : see if sethostent_r exists
15516 set sethostent_r d_sethostent_r
15517 eval $inlibc
15518 case "$d_sethostent_r" in
15519 "$define")
15520         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15521         case "$d_sethostent_r_proto:$usethreads" in
15522         ":define")      d_sethostent_r_proto=define
15523                 set d_sethostent_r_proto sethostent_r $hdrs
15524                 eval $hasproto ;;
15525         *)      ;;
15526         esac
15527         case "$d_sethostent_r_proto" in
15528         define)
15529         case "$sethostent_r_proto" in
15530         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15531         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15532         esac
15533         case "$sethostent_r_proto" in
15534         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15535         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15536         esac
15537         case "$sethostent_r_proto" in
15538         ''|0)   d_sethostent_r=undef
15539                 sethostent_r_proto=0
15540                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15541         * )     case "$sethostent_r_proto" in
15542                 REENTRANT_PROTO*) ;;
15543                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15544                 esac
15545                 echo "Prototype: $try" ;;
15546         esac
15547         ;;
15548         *)      case "$usethreads" in
15549                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15550                 esac
15551                 d_sethostent_r=undef
15552                 sethostent_r_proto=0
15553                 ;;
15554         esac
15555         ;;
15556 *)      sethostent_r_proto=0
15557         ;;
15558 esac
15559
15560 : see if setitimer exists
15561 set setitimer d_setitimer
15562 eval $inlibc
15563
15564 : see if setlinebuf exists
15565 set setlinebuf d_setlinebuf
15566 eval $inlibc
15567
15568 : see if setlocale exists
15569 set setlocale d_setlocale
15570 eval $inlibc
15571
15572 : see if locale.h is available
15573 set locale.h i_locale
15574 eval $inhdr
15575
15576 : see if setlocale_r exists
15577 set setlocale_r d_setlocale_r
15578 eval $inlibc
15579 case "$d_setlocale_r" in
15580 "$define")
15581         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15582         case "$d_setlocale_r_proto:$usethreads" in
15583         ":define")      d_setlocale_r_proto=define
15584                 set d_setlocale_r_proto setlocale_r $hdrs
15585                 eval $hasproto ;;
15586         *)      ;;
15587         esac
15588         case "$d_setlocale_r_proto" in
15589         define)
15590         case "$setlocale_r_proto" in
15591         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15592         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15593         esac
15594         case "$setlocale_r_proto" in
15595         ''|0)   d_setlocale_r=undef
15596                 setlocale_r_proto=0
15597                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15598         * )     case "$setlocale_r_proto" in
15599                 REENTRANT_PROTO*) ;;
15600                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15601                 esac
15602                 echo "Prototype: $try" ;;
15603         esac
15604         ;;
15605         *)      case "$usethreads" in
15606                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15607                 esac
15608                 d_setlocale_r=undef
15609                 setlocale_r_proto=0
15610                 ;;
15611         esac
15612         ;;
15613 *)      setlocale_r_proto=0
15614         ;;
15615 esac
15616
15617 : see if setnetent exists
15618 set setnetent d_setnent
15619 eval $inlibc
15620
15621 : see if setnetent_r exists
15622 set setnetent_r d_setnetent_r
15623 eval $inlibc
15624 case "$d_setnetent_r" in
15625 "$define")
15626         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15627         case "$d_setnetent_r_proto:$usethreads" in
15628         ":define")      d_setnetent_r_proto=define
15629                 set d_setnetent_r_proto setnetent_r $hdrs
15630                 eval $hasproto ;;
15631         *)      ;;
15632         esac
15633         case "$d_setnetent_r_proto" in
15634         define)
15635         case "$setnetent_r_proto" in
15636         ''|0) try='int setnetent_r(int, struct netent_data*);'
15637         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15638         esac
15639         case "$setnetent_r_proto" in
15640         ''|0) try='void setnetent_r(int, struct netent_data*);'
15641         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15642         esac
15643         case "$setnetent_r_proto" in
15644         ''|0)   d_setnetent_r=undef
15645                 setnetent_r_proto=0
15646                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15647         * )     case "$setnetent_r_proto" in
15648                 REENTRANT_PROTO*) ;;
15649                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15650                 esac
15651                 echo "Prototype: $try" ;;
15652         esac
15653         ;;
15654         *)      case "$usethreads" in
15655                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15656                 esac
15657                 d_setnetent_r=undef
15658                 setnetent_r_proto=0
15659                 ;;
15660         esac
15661         ;;
15662 *)      setnetent_r_proto=0
15663         ;;
15664 esac
15665
15666 : see if setprotoent exists
15667 set setprotoent d_setpent
15668 eval $inlibc
15669
15670 : see if setpgid exists
15671 set setpgid d_setpgid
15672 eval $inlibc
15673
15674 : see if setpgrp2 exists
15675 set setpgrp2 d_setpgrp2
15676 eval $inlibc
15677
15678 : see if setpriority exists
15679 set setpriority d_setprior
15680 eval $inlibc
15681
15682 : see if setproctitle exists
15683 set setproctitle d_setproctitle
15684 eval $inlibc
15685
15686 : see if setprotoent_r exists
15687 set setprotoent_r d_setprotoent_r
15688 eval $inlibc
15689 case "$d_setprotoent_r" in
15690 "$define")
15691         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15692         case "$d_setprotoent_r_proto:$usethreads" in
15693         ":define")      d_setprotoent_r_proto=define
15694                 set d_setprotoent_r_proto setprotoent_r $hdrs
15695                 eval $hasproto ;;
15696         *)      ;;
15697         esac
15698         case "$d_setprotoent_r_proto" in
15699         define)
15700         case "$setprotoent_r_proto" in
15701         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15702         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15703         esac
15704         case "$setprotoent_r_proto" in
15705         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15706         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15707         esac
15708         case "$setprotoent_r_proto" in
15709         ''|0)   d_setprotoent_r=undef
15710                 setprotoent_r_proto=0
15711                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15712         * )     case "$setprotoent_r_proto" in
15713                 REENTRANT_PROTO*) ;;
15714                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15715                 esac
15716                 echo "Prototype: $try" ;;
15717         esac
15718         ;;
15719         *)      case "$usethreads" in
15720                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15721                 esac
15722                 d_setprotoent_r=undef
15723                 setprotoent_r_proto=0
15724                 ;;
15725         esac
15726         ;;
15727 *)      setprotoent_r_proto=0
15728         ;;
15729 esac
15730
15731 : see if setpwent exists
15732 set setpwent d_setpwent
15733 eval $inlibc
15734
15735 : see if setpwent_r exists
15736 set setpwent_r d_setpwent_r
15737 eval $inlibc
15738 case "$d_setpwent_r" in
15739 "$define")
15740         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15741         case "$d_setpwent_r_proto:$usethreads" in
15742         ":define")      d_setpwent_r_proto=define
15743                 set d_setpwent_r_proto setpwent_r $hdrs
15744                 eval $hasproto ;;
15745         *)      ;;
15746         esac
15747         case "$d_setpwent_r_proto" in
15748         define)
15749         case "$setpwent_r_proto" in
15750         ''|0) try='int setpwent_r(FILE**);'
15751         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15752         esac
15753         case "$setpwent_r_proto" in
15754         ''|0) try='void setpwent_r(FILE**);'
15755         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15756         esac
15757         case "$setpwent_r_proto" in
15758         ''|0)   d_setpwent_r=undef
15759                 setpwent_r_proto=0
15760                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15761         * )     case "$setpwent_r_proto" in
15762                 REENTRANT_PROTO*) ;;
15763                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15764                 esac
15765                 echo "Prototype: $try" ;;
15766         esac
15767         ;;
15768         *)      case "$usethreads" in
15769                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15770                 esac
15771                 d_setpwent_r=undef
15772                 setpwent_r_proto=0
15773                 ;;
15774         esac
15775         ;;
15776 *)      setpwent_r_proto=0
15777         ;;
15778 esac
15779
15780 : see if setregid exists
15781 set setregid d_setregid
15782 eval $inlibc
15783 set setresgid d_setresgid
15784 eval $inlibc
15785
15786 : see if setreuid exists
15787 set setreuid d_setreuid
15788 eval $inlibc
15789 set setresuid d_setresuid
15790 eval $inlibc
15791
15792 : see if setrgid exists
15793 set setrgid d_setrgid
15794 eval $inlibc
15795
15796 : see if setruid exists
15797 set setruid d_setruid
15798 eval $inlibc
15799
15800 : see if setservent exists
15801 set setservent d_setsent
15802 eval $inlibc
15803
15804 : see if setservent_r exists
15805 set setservent_r d_setservent_r
15806 eval $inlibc
15807 case "$d_setservent_r" in
15808 "$define")
15809         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15810         case "$d_setservent_r_proto:$usethreads" in
15811         ":define")      d_setservent_r_proto=define
15812                 set d_setservent_r_proto setservent_r $hdrs
15813                 eval $hasproto ;;
15814         *)      ;;
15815         esac
15816         case "$d_setservent_r_proto" in
15817         define)
15818         case "$setservent_r_proto" in
15819         ''|0) try='int setservent_r(int, struct servent_data*);'
15820         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15821         esac
15822         case "$setservent_r_proto" in
15823         ''|0) try='void setservent_r(int, struct servent_data*);'
15824         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15825         esac
15826         case "$setservent_r_proto" in
15827         ''|0)   d_setservent_r=undef
15828                 setservent_r_proto=0
15829                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15830         * )     case "$setservent_r_proto" in
15831                 REENTRANT_PROTO*) ;;
15832                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15833                 esac
15834                 echo "Prototype: $try" ;;
15835         esac
15836         ;;
15837         *)      case "$usethreads" in
15838                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15839                 esac
15840                 d_setservent_r=undef
15841                 setservent_r_proto=0
15842                 ;;
15843         esac
15844         ;;
15845 *)      setservent_r_proto=0
15846         ;;
15847 esac
15848
15849 : see if setsid exists
15850 set setsid d_setsid
15851 eval $inlibc
15852
15853 : see if setvbuf exists
15854 set setvbuf d_setvbuf
15855 eval $inlibc
15856
15857 : see if sfio.h is available
15858 set sfio.h i_sfio
15859 eval $inhdr
15860
15861
15862 : see if sfio library is available
15863 case "$i_sfio" in
15864 $define)
15865         val=''
15866         set sfreserve val
15867         eval $inlibc
15868         ;;
15869 *)
15870         val="$undef"
15871         ;;
15872 esac
15873 : Ok, but do we want to use it.
15874 case "$val" in
15875 $define)
15876         case "$usesfio" in
15877         true|$define|[yY]*) dflt='y';;
15878         *) dflt='n';;
15879         esac
15880         echo "$package can use the sfio library, but it is experimental."
15881         case "$useperlio" in
15882         "$undef")
15883             echo "For sfio also the PerlIO abstraction layer is needed."
15884             echo "Earlier you said you wouldn't want that."
15885             ;;
15886         esac
15887         rp="You seem to have sfio available, do you want to try using it?"
15888         . ./myread
15889         case "$ans" in
15890         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15891                 useperlio="$define"
15892                 val="$define"
15893                 ;;
15894         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15895                 val="$undef"
15896                 ;;
15897         esac
15898         ;;
15899 *)      case "$usesfio" in
15900         true|$define|[yY]*)
15901                 echo "Sorry, cannot find sfio on this machine." >&4
15902                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15903                 val="$undef"
15904                 ;;
15905         esac
15906         ;;
15907 esac
15908 set d_sfio
15909 eval $setvar
15910 case "$d_sfio" in
15911 $define) usesfio='true';;
15912 *) usesfio='false';;
15913 esac
15914 case "$d_sfio" in
15915 $define) ;;
15916 *)      : Remove sfio from list of libraries to use
15917         case "$libs" in
15918         *-lsfio*)
15919                 echo "Removing unneeded -lsfio from library list" >&4
15920                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15921                 shift
15922                 libs="$*"
15923                 echo "libs = $libs" >&4
15924                 ;;
15925         esac
15926 ;;
15927 esac
15928
15929
15930 : see if shmctl exists
15931 set shmctl d_shmctl
15932 eval $inlibc
15933
15934 : see if shmget exists
15935 set shmget d_shmget
15936 eval $inlibc
15937
15938 : see if shmat exists
15939 set shmat d_shmat
15940 eval $inlibc
15941 : see what shmat returns
15942 case "$d_shmat" in
15943 "$define")
15944         $cat >shmat.c <<'END'
15945 #include <sys/shm.h>
15946 void *shmat();
15947 END
15948         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15949                 shmattype='void *'
15950         else
15951                 shmattype='char *'
15952         fi
15953         echo "and it returns ($shmattype)." >&4
15954         : see if a prototype for shmat is available
15955         xxx=`./findhdr sys/shm.h`
15956         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15957         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15958                 val="$define"
15959         else
15960                 val="$undef"
15961         fi
15962         $rm -f shmat.[co]
15963         ;;
15964 *)
15965         val="$undef"
15966         ;;
15967 esac
15968 set d_shmatprototype
15969 eval $setvar
15970
15971 : see if shmdt exists
15972 set shmdt d_shmdt
15973 eval $inlibc
15974
15975 : see how much of the 'shm*(2)' library is present.
15976 h_shm=true
15977 echo " "
15978 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15979 *"$undef"*) h_shm=false;;
15980 esac
15981 case "$osname" in
15982 freebsd)
15983     case "`ipcs 2>&1`" in
15984     "SVID shared memory"*"not configured"*)
15985         echo "Your $osname does not have the shm*(2) configured." >&4
15986         h_shm=false
15987         val="$undef"
15988         set shmctl d_shmctl
15989         evat $setvar
15990         set shmget d_shmget
15991         evat $setvar
15992         set shmat d_shmat
15993         evat $setvar
15994         set shmdt d_shmdt
15995         evat $setvar
15996         ;;
15997     esac
15998     ;;
15999 esac
16000 : we could also check for sys/ipc.h ...
16001 if $h_shm && $test `./findhdr sys/shm.h`; then
16002         echo "You have the full shm*(2) library." >&4
16003         val="$define"
16004 else
16005         echo "You don't have the full shm*(2) library." >&4
16006         val="$undef"
16007 fi
16008 set d_shm
16009 eval $setvar
16010
16011 echo " "
16012 : see if we have sigaction
16013 if set sigaction val -f d_sigaction; eval $csym; $val; then
16014         echo 'sigaction() found.' >&4
16015         $cat > try.c <<EOP
16016 #include <stdio.h>
16017 #include <sys/types.h>
16018 #include <signal.h>
16019 #$i_stdlib I_STDLIB
16020 #ifdef I_STDLIB
16021 #include <stdlib.h>
16022 #endif
16023 int main()
16024 {
16025     struct sigaction act, oact;
16026     act.sa_flags = 0;
16027     oact.sa_handler = 0;
16028     /* so that act and oact are used */
16029     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16030 }
16031 EOP
16032         set try
16033         if eval $compile_ok; then
16034                 val="$define"
16035         else
16036                 echo "But you don't seem to have a useable struct sigaction." >&4
16037                 val="$undef"
16038         fi
16039 else
16040         echo 'sigaction NOT found.' >&4
16041         val="$undef"
16042 fi
16043 set d_sigaction; eval $setvar
16044 $rm -f try try$_o try.c
16045
16046 : see if sigprocmask exists
16047 set sigprocmask d_sigprocmask
16048 eval $inlibc
16049
16050 : see if sigsetjmp exists
16051 echo " "
16052 case "$d_sigsetjmp" in
16053 '')
16054         $cat >try.c <<EOP
16055 #include <setjmp.h>
16056 #$i_stdlib I_STDLIB
16057 #ifdef I_STDLIB
16058 #include <stdlib.h>
16059 #endif
16060 sigjmp_buf env;
16061 int set = 1;
16062 int main()
16063 {
16064         if (sigsetjmp(env,1))
16065                 exit(set);
16066         set = 0;
16067         siglongjmp(env, 1);
16068         exit(1);
16069 }
16070 EOP
16071         set try
16072         if eval $compile; then
16073                 if $run ./try >/dev/null 2>&1; then
16074                         echo "POSIX sigsetjmp found." >&4
16075                         val="$define"
16076                 else
16077                         $cat >&4 <<EOM
16078 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16079 I'll ignore them.
16080 EOM
16081                         val="$undef"
16082                 fi
16083         else
16084                 echo "sigsetjmp not found." >&4
16085                 val="$undef"
16086         fi
16087         ;;
16088 *) val="$d_sigsetjmp"
16089         case "$d_sigsetjmp" in
16090         $define) echo "POSIX sigsetjmp found." >&4;;
16091         $undef) echo "sigsetjmp not found." >&4;;
16092         esac
16093         ;;
16094 esac
16095 set d_sigsetjmp
16096 eval $setvar
16097 $rm -f try.c try
16098
16099 : see if sockatmark exists
16100 set sockatmark d_sockatmark
16101 eval $inlibc
16102
16103 : see if prototype for sockatmark is available
16104 echo " "
16105 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16106 eval $hasproto
16107
16108 : see if socks5_init exists
16109 set socks5_init d_socks5_init
16110 eval $inlibc
16111
16112 : see if srand48_r exists
16113 set srand48_r d_srand48_r
16114 eval $inlibc
16115 case "$d_srand48_r" in
16116 "$define")
16117         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16118         case "$d_srand48_r_proto:$usethreads" in
16119         ":define")      d_srand48_r_proto=define
16120                 set d_srand48_r_proto srand48_r $hdrs
16121                 eval $hasproto ;;
16122         *)      ;;
16123         esac
16124         case "$d_srand48_r_proto" in
16125         define)
16126         case "$srand48_r_proto" in
16127         ''|0) try='int srand48_r(long, struct drand48_data*);'
16128         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16129         esac
16130         case "$srand48_r_proto" in
16131         ''|0)   d_srand48_r=undef
16132                 srand48_r_proto=0
16133                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16134         * )     case "$srand48_r_proto" in
16135                 REENTRANT_PROTO*) ;;
16136                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16137                 esac
16138                 echo "Prototype: $try" ;;
16139         esac
16140         ;;
16141         *)      case "$usethreads" in
16142                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16143                 esac
16144                 d_srand48_r=undef
16145                 srand48_r_proto=0
16146                 ;;
16147         esac
16148         ;;
16149 *)      srand48_r_proto=0
16150         ;;
16151 esac
16152
16153 : see if srandom_r exists
16154 set srandom_r d_srandom_r
16155 eval $inlibc
16156 case "$d_srandom_r" in
16157 "$define")
16158         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16159         case "$d_srandom_r_proto:$usethreads" in
16160         ":define")      d_srandom_r_proto=define
16161                 set d_srandom_r_proto srandom_r $hdrs
16162                 eval $hasproto ;;
16163         *)      ;;
16164         esac
16165         case "$d_srandom_r_proto" in
16166         define)
16167         case "$srandom_r_proto" in
16168         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16169         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16170         esac
16171         case "$srandom_r_proto" in
16172         ''|0)   d_srandom_r=undef
16173                 srandom_r_proto=0
16174                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16175         * )     case "$srandom_r_proto" in
16176                 REENTRANT_PROTO*) ;;
16177                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16178                 esac
16179                 echo "Prototype: $try" ;;
16180         esac
16181         ;;
16182         *)      case "$usethreads" in
16183                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16184                 esac
16185                 d_srandom_r=undef
16186                 srandom_r_proto=0
16187                 ;;
16188         esac
16189         ;;
16190 *)      srandom_r_proto=0
16191         ;;
16192 esac
16193
16194 : see if prototype for setresgid is available
16195 echo " "
16196 set d_sresgproto setresgid $i_unistd unistd.h
16197 eval $hasproto
16198
16199 : see if prototype for setresuid is available
16200 echo " "
16201 set d_sresuproto setresuid $i_unistd unistd.h
16202 eval $hasproto
16203
16204 : see if sys/stat.h is available
16205 set sys/stat.h i_sysstat
16206 eval $inhdr
16207
16208
16209 : see if stat knows about block sizes
16210 echo " "
16211 echo "Checking to see if your struct stat has st_blocks field..." >&4
16212 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16213 eval $hasfield
16214
16215
16216 : see if this is a sys/vfs.h system
16217 set sys/vfs.h i_sysvfs
16218 eval $inhdr
16219
16220
16221 : see if this is a sys/statfs.h system
16222 set sys/statfs.h i_sysstatfs
16223 eval $inhdr
16224
16225
16226 echo " "
16227 echo "Checking to see if your system supports struct statfs..." >&4
16228 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
16229 eval $hasstruct
16230 case "$d_statfs_s" in
16231 "$define")      echo "Yes, it does."   ;;
16232 *)              echo "No, it doesn't." ;;
16233 esac
16234
16235
16236
16237 : see if struct statfs knows about f_flags
16238 case "$d_statfs_s" in
16239 define) 
16240         echo " "
16241         echo "Checking to see if your struct statfs has f_flags field..." >&4
16242         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
16243         eval $hasfield
16244         ;;
16245 *)      val="$undef"
16246         set d_statfs_f_flags
16247         eval $setvar
16248         ;;
16249 esac
16250 case "$d_statfs_f_flags" in
16251 "$define")      echo "Yes, it does."   ;;
16252 *)              echo "No, it doesn't." ;;
16253 esac
16254
16255 $cat >&4 <<EOM
16256 Checking how to access stdio streams by file descriptor number...
16257 EOM
16258 case "$stdio_stream_array" in
16259 '')     $cat >try.c <<EOCP
16260 #include <stdio.h>
16261 int main() {
16262   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16263     printf("yes\n");
16264 }
16265 EOCP
16266         for s in _iob __iob __sF
16267         do
16268                 set try -DSTDIO_STREAM_ARRAY=$s
16269                 if eval $compile; then
16270                         case "`$run ./try`" in
16271                         yes)    stdio_stream_array=$s; break ;;
16272                         esac
16273                 fi
16274         done
16275         $rm -f try.* try$exe_ext
16276 esac
16277 case "$stdio_stream_array" in
16278 '')     $cat >&4 <<EOM
16279 I can't figure out how to access stdio streams by file descriptor number.
16280 EOM
16281         d_stdio_stream_array="$undef"
16282         ;;
16283 *)      $cat >&4 <<EOM
16284 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16285 EOM
16286         d_stdio_stream_array="$define"
16287         ;;
16288 esac
16289
16290 : see if strcoll exists
16291 set strcoll d_strcoll
16292 eval $inlibc
16293
16294 : check for structure copying
16295 echo " "
16296 echo "Checking to see if your C compiler can copy structs..." >&4
16297 $cat >try.c <<'EOCP'
16298 int main()
16299 {
16300         struct blurfl {
16301                 int dyick;
16302         } foo, bar;
16303
16304         foo = bar;
16305 }
16306 EOCP
16307 if $cc -c try.c >/dev/null 2>&1 ; then
16308         val="$define"
16309         echo "Yup, it can."
16310 else
16311         val="$undef"
16312         echo "Nope, it can't."
16313 fi
16314 set d_strctcpy
16315 eval $setvar
16316 $rm -f try.*
16317
16318 : see if strerror and/or sys_errlist[] exist
16319 echo " "
16320 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16321     if set strerror val -f d_strerror; eval $csym; $val; then
16322                 echo 'strerror() found.' >&4
16323                 d_strerror="$define"
16324                 d_strerrm='strerror(e)'
16325                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16326                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16327                         d_syserrlst="$define"
16328                 else
16329                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16330                         d_syserrlst="$undef"
16331                 fi
16332     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16333                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16334                 echo 'strerror() found in string header.' >&4
16335                 d_strerror="$define"
16336                 d_strerrm='strerror(e)'
16337                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16338                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16339                                 d_syserrlst="$define"
16340                 else
16341                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16342                         d_syserrlst="$undef"
16343                 fi
16344     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16345                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16346                 d_strerror="$undef"
16347                 d_syserrlst="$define"
16348                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16349     else
16350                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16351                 d_strerror="$undef"
16352                 d_syserrlst="$undef"
16353                 d_strerrm='"unknown"'
16354     fi
16355 fi
16356
16357 : see if strerror_r exists
16358 set strerror_r d_strerror_r
16359 eval $inlibc
16360 case "$d_strerror_r" in
16361 "$define")
16362         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16363         case "$d_strerror_r_proto:$usethreads" in
16364         ":define")      d_strerror_r_proto=define
16365                 set d_strerror_r_proto strerror_r $hdrs
16366                 eval $hasproto ;;
16367         *)      ;;
16368         esac
16369         case "$d_strerror_r_proto" in
16370         define)
16371         case "$strerror_r_proto" in
16372         ''|0) try='int strerror_r(int, char*, size_t);'
16373         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16374         esac
16375         case "$strerror_r_proto" in
16376         ''|0) try='int strerror_r(int, char*, int);'
16377         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16378         esac
16379         case "$strerror_r_proto" in
16380         ''|0) try='char* strerror_r(int, char*, size_t);'
16381         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16382         esac
16383         case "$strerror_r_proto" in
16384         ''|0)   d_strerror_r=undef
16385                 strerror_r_proto=0
16386                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16387         * )     case "$strerror_r_proto" in
16388                 REENTRANT_PROTO*) ;;
16389                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16390                 esac
16391                 echo "Prototype: $try" ;;
16392         esac
16393         ;;
16394         *)      case "$usethreads" in
16395                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16396                 esac
16397                 d_strerror_r=undef
16398                 strerror_r_proto=0
16399                 ;;
16400         esac
16401         ;;
16402 *)      strerror_r_proto=0
16403         ;;
16404 esac
16405
16406 : see if strftime exists
16407 set strftime d_strftime
16408 eval $inlibc
16409
16410 : see if strtod exists
16411 set strtod d_strtod
16412 eval $inlibc
16413
16414 : see if strtol exists
16415 set strtol d_strtol
16416 eval $inlibc
16417
16418 : see if strtold exists
16419 set strtold d_strtold
16420 eval $inlibc
16421
16422 : see if strtoll exists
16423 set strtoll d_strtoll
16424 eval $inlibc
16425
16426 case "$d_longlong-$d_strtoll" in
16427 "$define-$define")
16428         $cat <<EOM
16429 Checking whether your strtoll() works okay...
16430 EOM
16431         $cat >try.c <<'EOCP'
16432 #include <errno.h>
16433 #ifdef __hpux
16434 #define strtoll __strtoll
16435 #endif
16436 #ifdef __EMX__
16437 #define strtoll _strtoll
16438 #endif
16439 #include <stdio.h>
16440 extern long long int strtoll(char *s, char **, int); 
16441 static int bad = 0;
16442 int check(char *s, long long ell, int een) {
16443         long long gll;
16444         errno = 0;
16445         gll = strtoll(s, 0, 10);
16446         if (!((gll == ell) && (errno == een)))
16447                 bad++;
16448 }
16449 int main() {
16450         check(" 1",                                      1LL, 0);
16451         check(" 0",                                      0LL, 0);
16452         check("-1",                                     -1LL, 0);
16453         check("-9223372036854775808", -9223372036854775808LL, 0);
16454         check("-9223372036854775808", -9223372036854775808LL, 0);
16455         check(" 9223372036854775807",  9223372036854775807LL, 0);
16456         check("-9223372036854775808", -9223372036854775808LL, 0);
16457         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16458         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16459         if (!bad)
16460                 printf("ok\n");
16461 }
16462 EOCP
16463         set try
16464         if eval $compile; then
16465                 yyy=`$run ./try`
16466                 case "$yyy" in
16467                 ok) echo "Your strtoll() seems to be working okay." ;;
16468                 *) cat <<EOM >&4
16469 Your strtoll() doesn't seem to be working okay.
16470 EOM
16471                    d_strtoll="$undef"
16472                    ;;
16473                 esac
16474         else
16475                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16476                 d_strtoll="$undef"
16477         fi
16478         ;;
16479 esac
16480
16481 : see if strtoq exists
16482 set strtoq d_strtoq
16483 eval $inlibc
16484
16485 : see if strtoul exists
16486 set strtoul d_strtoul
16487 eval $inlibc
16488
16489 case "$d_strtoul" in
16490 "$define")
16491         $cat <<EOM
16492 Checking whether your strtoul() works okay...
16493 EOM
16494         $cat >try.c <<'EOCP'
16495 #include <errno.h>
16496 #include <stdio.h>
16497 extern unsigned long int strtoul(char *s, char **, int); 
16498 static int bad = 0;
16499 void check(char *s, unsigned long eul, int een) {
16500         unsigned long gul;
16501         errno = 0;
16502         gul = strtoul(s, 0, 10);
16503         if (!((gul == eul) && (errno == een)))
16504                 bad++;
16505 }
16506 int main() {
16507         check(" 1", 1L, 0);
16508         check(" 0", 0L, 0);
16509 EOCP
16510         case "$longsize" in
16511         8)
16512             $cat >>try.c <<'EOCP'
16513         check("18446744073709551615", 18446744073709551615UL, 0);
16514         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16515 #if 0 /* strtoul() for /^-/ strings is undefined. */
16516         check("-1", 18446744073709551615UL, 0);
16517         check("-18446744073709551614", 2, 0);
16518         check("-18446744073709551615", 1, 0);
16519         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16520         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16521 #endif
16522 EOCP
16523                 ;;
16524         4)
16525                     $cat >>try.c <<'EOCP'
16526         check("4294967295", 4294967295UL, 0);
16527         check("4294967296", 4294967295UL, ERANGE);
16528 #if 0 /* strtoul() for /^-/ strings is undefined. */
16529         check("-1", 4294967295UL, 0);
16530         check("-4294967294", 2, 0);
16531         check("-4294967295", 1, 0);
16532         check("-4294967296", 4294967295UL, ERANGE);
16533         check("-4294967297", 4294967295UL, ERANGE);
16534 #endif
16535 EOCP
16536                 ;;
16537         *)
16538 : Should we write these tests to be more portable by sprintf-ing
16539 : ~0 and then manipulating that char string as input for strtol?
16540                 ;;
16541         esac
16542         $cat >>try.c <<'EOCP'
16543         if (!bad)
16544                 printf("ok\n");
16545         return 0;
16546 }
16547 EOCP
16548         set try
16549         if eval $compile; then
16550                 case "`$run ./try`" in
16551                 ok) echo "Your strtoul() seems to be working okay." ;;
16552                 *) cat <<EOM >&4
16553 Your strtoul() doesn't seem to be working okay.
16554 EOM
16555                    d_strtoul="$undef"
16556                    ;;
16557                 esac
16558         fi
16559         ;;
16560 esac
16561
16562 : see if strtoull exists
16563 set strtoull d_strtoull
16564 eval $inlibc
16565
16566 case "$d_longlong-$d_strtoull" in
16567 "$define-$define")
16568         $cat <<EOM
16569 Checking whether your strtoull() works okay...
16570 EOM
16571         $cat >try.c <<'EOCP'
16572 #include <errno.h>
16573 #ifdef __hpux
16574 #define strtoull __strtoull
16575 #endif
16576 #include <stdio.h>
16577 extern unsigned long long int strtoull(char *s, char **, int); 
16578 static int bad = 0;
16579 int check(char *s, long long eull, int een) {
16580         long long gull;
16581         errno = 0;
16582         gull = strtoull(s, 0, 10);
16583         if (!((gull == eull) && (errno == een)))
16584                 bad++;
16585 }
16586 int main() {
16587         check(" 1",                                        1LL, 0);
16588         check(" 0",                                        0LL, 0);
16589         check("18446744073709551615",  18446744073709551615ULL, 0);
16590         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16591 #if 0 /* strtoull() for /^-/ strings is undefined. */
16592         check("-1",                    18446744073709551615ULL, 0);
16593         check("-18446744073709551614",                     2LL, 0);
16594         check("-18446744073709551615",                     1LL, 0);
16595         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16596         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16597 #endif
16598         if (!bad)
16599                 printf("ok\n");
16600 }
16601 EOCP
16602         set try
16603         if eval $compile; then
16604                 case "`$run ./try`" in
16605                 ok) echo "Your strtoull() seems to be working okay." ;;
16606                 *) cat <<EOM >&4
16607 Your strtoull() doesn't seem to be working okay.
16608 EOM
16609                    d_strtoull="$undef"
16610                    ;;
16611                 esac
16612         fi
16613         ;;
16614 esac
16615
16616 : see if strtouq exists
16617 set strtouq d_strtouq
16618 eval $inlibc
16619
16620 case "$d_strtouq" in
16621 "$define")
16622         $cat <<EOM
16623 Checking whether your strtouq() works okay...
16624 EOM
16625         $cat >try.c <<'EOCP'
16626 #include <errno.h>
16627 #include <stdio.h>
16628 extern unsigned long long int strtouq(char *s, char **, int); 
16629 static int bad = 0;
16630 void check(char *s, unsigned long long eull, int een) {
16631         unsigned long long gull;
16632         errno = 0;
16633         gull = strtouq(s, 0, 10);
16634         if (!((gull == eull) && (errno == een)))
16635                 bad++;
16636 }
16637 int main() {
16638         check(" 1",                                        1LL, 0);
16639         check(" 0",                                        0LL, 0);
16640         check("18446744073709551615",  18446744073709551615ULL, 0);
16641         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16642 #if 0 /* strtouq() for /^-/ strings is undefined. */
16643         check("-1",                    18446744073709551615ULL, 0);
16644         check("-18446744073709551614",                     2LL, 0);
16645         check("-18446744073709551615",                     1LL, 0);
16646         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16647         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16648 #endif
16649         if (!bad)
16650                 printf("ok\n");
16651         return 0;
16652 }
16653 EOCP
16654         set try
16655         if eval $compile; then
16656                 case "`$run ./try`" in
16657                 ok) echo "Your strtouq() seems to be working okay." ;;
16658                 *) cat <<EOM >&4
16659 Your strtouq() doesn't seem to be working okay.
16660 EOM
16661                    d_strtouq="$undef"
16662                    ;;
16663                 esac
16664         fi
16665         ;;
16666 esac
16667
16668 : see if strxfrm exists
16669 set strxfrm d_strxfrm
16670 eval $inlibc
16671
16672 : see if symlink exists
16673 set symlink d_symlink
16674 eval $inlibc
16675
16676 : see if syscall exists
16677 set syscall d_syscall
16678 eval $inlibc
16679
16680 : see if prototype for syscall is available
16681 echo " "
16682 set d_syscallproto syscall $i_unistd unistd.h
16683 eval $hasproto
16684
16685 : see if sysconf exists
16686 set sysconf d_sysconf
16687 eval $inlibc
16688
16689 : see if system exists
16690 set system d_system
16691 eval $inlibc
16692
16693 : see if tcgetpgrp exists
16694 set tcgetpgrp d_tcgetpgrp
16695 eval $inlibc
16696
16697 : see if tcsetpgrp exists
16698 set tcsetpgrp d_tcsetpgrp
16699 eval $inlibc
16700
16701 : see if prototype for telldir is available
16702 echo " "
16703 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16704 eval $hasproto
16705
16706 : see if time exists
16707 echo " "
16708 if test "X$d_time" = X -o X"$timetype" = X; then
16709     if set time val -f d_time; eval $csym; $val; then
16710                 echo 'time() found.' >&4
16711                 val="$define"
16712                 rp="What is the type returned by time() on this system?"
16713                 set time_t timetype long stdio.h sys/types.h
16714                 eval $typedef_ask
16715     else
16716                 echo 'time() not found, hope that will do.' >&4
16717                 val="$undef"
16718                 timetype='int';
16719     fi
16720     set d_time
16721     eval $setvar
16722 fi
16723
16724 : see if this is a sys/times.h system
16725 set sys/times.h i_systimes
16726 eval $inhdr
16727
16728 : see if times exists
16729 echo " "
16730 if set times val -f d_times; eval $csym; $val; then
16731         echo 'times() found.' >&4
16732         d_times="$define"
16733         inc=''
16734         case "$i_systimes" in
16735         "$define") inc='sys/times.h';;
16736         esac
16737         rp="What is the type returned by times() on this system?"
16738         set clock_t clocktype long stdio.h sys/types.h $inc
16739         eval $typedef_ask
16740 else
16741         echo 'times() NOT found, hope that will do.' >&4
16742         d_times="$undef"
16743         clocktype='int'
16744 fi
16745
16746 : see if tmpnam_r exists
16747 set tmpnam_r d_tmpnam_r
16748 eval $inlibc
16749 case "$d_tmpnam_r" in
16750 "$define")
16751         hdrs="$i_systypes sys/types.h define stdio.h "
16752         case "$d_tmpnam_r_proto:$usethreads" in
16753         ":define")      d_tmpnam_r_proto=define
16754                 set d_tmpnam_r_proto tmpnam_r $hdrs
16755                 eval $hasproto ;;
16756         *)      ;;
16757         esac
16758         case "$d_tmpnam_r_proto" in
16759         define)
16760         case "$tmpnam_r_proto" in
16761         ''|0) try='char* tmpnam_r(char*);'
16762         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16763         esac
16764         case "$tmpnam_r_proto" in
16765         ''|0)   d_tmpnam_r=undef
16766                 tmpnam_r_proto=0
16767                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16768         * )     case "$tmpnam_r_proto" in
16769                 REENTRANT_PROTO*) ;;
16770                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16771                 esac
16772                 echo "Prototype: $try" ;;
16773         esac
16774         ;;
16775         *)      case "$usethreads" in
16776                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16777                 esac
16778                 d_tmpnam_r=undef
16779                 tmpnam_r_proto=0
16780                 ;;
16781         esac
16782         ;;
16783 *)      tmpnam_r_proto=0
16784         ;;
16785 esac
16786
16787 : see if truncate exists
16788 set truncate d_truncate
16789 eval $inlibc
16790
16791 : see if ttyname_r exists
16792 set ttyname_r d_ttyname_r
16793 eval $inlibc
16794 case "$d_ttyname_r" in
16795 "$define")
16796         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16797         case "$d_ttyname_r_proto:$usethreads" in
16798         ":define")      d_ttyname_r_proto=define
16799                 set d_ttyname_r_proto ttyname_r $hdrs
16800                 eval $hasproto ;;
16801         *)      ;;
16802         esac
16803         case "$d_ttyname_r_proto" in
16804         define)
16805         case "$ttyname_r_proto" in
16806         ''|0) try='int ttyname_r(int, char*, size_t);'
16807         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16808         esac
16809         case "$ttyname_r_proto" in
16810         ''|0) try='int ttyname_r(int, char*, int);'
16811         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16812         esac
16813         case "$ttyname_r_proto" in
16814         ''|0) try='char* ttyname_r(int, char*, int);'
16815         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16816         esac
16817         case "$ttyname_r_proto" in
16818         ''|0)   d_ttyname_r=undef
16819                 ttyname_r_proto=0
16820                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16821         * )     case "$ttyname_r_proto" in
16822                 REENTRANT_PROTO*) ;;
16823                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16824                 esac
16825                 echo "Prototype: $try" ;;
16826         esac
16827         ;;
16828         *)      case "$usethreads" in
16829                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16830                 esac
16831                 d_ttyname_r=undef
16832                 ttyname_r_proto=0
16833                 ;;
16834         esac
16835         ;;
16836 *)      ttyname_r_proto=0
16837         ;;
16838 esac
16839
16840 : see if tzname[] exists
16841 echo " "
16842 if set tzname val -a d_tzname; eval $csym; $val; then
16843         val="$define"
16844         echo 'tzname[] found.' >&4
16845 else
16846         val="$undef"
16847         echo 'tzname[] NOT found.' >&4
16848 fi
16849 set d_tzname
16850 eval $setvar
16851
16852 case "$osname" in
16853 next|rhapsody|darwin) multiarch="$define" ;;
16854 esac
16855 case "$multiarch" in
16856 ''|[nN]*) multiarch="$undef" ;;
16857 esac
16858
16859 : check for ordering of bytes in a UV
16860 echo " "
16861 case "$usecrosscompile$multiarch" in
16862 *$define*)
16863         $cat <<EOM
16864 You seem to be either cross-compiling or doing a multiarchitecture build,
16865 skipping the byteorder check.
16866
16867 EOM
16868         byteorder='ffff'
16869         ;;
16870 *)
16871         case "$byteorder" in
16872         '')
16873                 $cat <<'EOM'
16874 In the following, larger digits indicate more significance.  A big-endian
16875 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16876 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16877 machines may have weird orders like 3412.  A Cray will report 87654321,
16878 an Alpha will report 12345678. If the test program works the default is
16879 probably right.
16880 I'm now running the test program...
16881 EOM
16882                 $cat >try.c <<EOCP
16883 #include <stdio.h>
16884 #$i_stdlib I_STDLIB
16885 #ifdef I_STDLIB
16886 #include <stdlib.h>
16887 #endif
16888 #include <sys/types.h>
16889 typedef $uvtype UV;
16890 int main()
16891 {
16892         int i;
16893         union {
16894                 UV l;
16895                 char c[$uvsize];
16896         } u;
16897
16898         if ($uvsize > 4)
16899                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16900         else
16901                 u.l = (UV)0x04030201;
16902         for (i = 0; i < $uvsize; i++)
16903                 printf("%c", u.c[i]+'0');
16904         printf("\n");
16905         exit(0);
16906 }
16907 EOCP
16908                 xxx_prompt=y
16909                 set try
16910                 if eval $compile && ./try > /dev/null; then
16911                         dflt=`$run ./try`
16912                         case "$dflt" in
16913                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16914                                 echo "(The test program ran ok.)"
16915                                 echo "byteorder=$dflt"
16916                                 xxx_prompt=n
16917                         ;;
16918                         ????|????????) echo "(The test program ran ok.)" ;;
16919                         *) echo "(The test program didn't run right for some reason.)" ;;
16920                         esac
16921                 else
16922                         dflt='4321'
16923                         cat <<'EOM'
16924 (I can't seem to compile the test program.  Guessing big-endian...)
16925 EOM
16926                 fi
16927                 case "$xxx_prompt" in
16928                 y)
16929                         rp="What is the order of bytes in $uvtype?"
16930                         . ./myread
16931                         byteorder="$ans"
16932                         ;;
16933                 *)      byteorder=$dflt
16934                         ;;
16935                 esac
16936                 ;;
16937         esac
16938         $rm -f try.c try
16939         ;;
16940 esac
16941
16942
16943 $cat <<EOM
16944
16945 Checking to see whether you can access character data unalignedly...
16946 EOM
16947 case "$d_u32align" in
16948 '')   $cat >try.c <<EOCP
16949 #include <stdio.h>
16950 #$i_stdlib I_STDLIB
16951 #ifdef I_STDLIB
16952 #include <stdlib.h>
16953 #endif
16954 #define U32 $u32type
16955 #define BYTEORDER 0x$byteorder
16956 #define U8 $u8type
16957 #include <signal.h>
16958 #ifdef SIGBUS
16959 $signal_t bletch(s) int s; { exit(4); }
16960 #endif
16961 int main() {
16962 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16963     U8 buf[8];
16964     U32 *up;
16965     int i;
16966
16967     if (sizeof(U32) != 4) {
16968         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16969         exit(1);
16970     }
16971
16972     fflush(stdout);
16973
16974 #ifdef SIGBUS
16975     signal(SIGBUS, bletch);
16976 #endif
16977
16978     buf[0] = 0;
16979     buf[1] = 0;
16980     buf[2] = 0;
16981     buf[3] = 1;
16982     buf[4] = 0;
16983     buf[5] = 0;
16984     buf[6] = 0;
16985     buf[7] = 1;
16986
16987     for (i = 0; i < 4; i++) {
16988         up = (U32*)(buf + i);
16989         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16990                (*up == 1 << (8*(3-i)))  /* little-endian */
16991               )
16992            )
16993         {
16994             printf("read failed (%x)\n", *up);
16995             exit(2);
16996         }
16997     }
16998
16999     /* write test */
17000     for (i = 0; i < 4; i++) {
17001         up = (U32*)(buf + i);
17002         *up = 0xBeef;
17003         if (*up != 0xBeef) {
17004             printf("write failed (%x)\n", *up);
17005             exit(3);
17006         }
17007     }
17008
17009     exit(0);
17010 #else
17011     printf("1\n");
17012     exit(1);
17013 #endif
17014     return 0;
17015 }
17016 EOCP
17017 set try
17018 if eval $compile_ok; then
17019         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
17020         $run ./try 2>&1 >/dev/null
17021         case "$?" in
17022         0)      cat >&4 <<EOM
17023 You can access character data pretty unalignedly.
17024 EOM
17025                 d_u32align="$undef"
17026                 ;;
17027         *)      cat >&4 <<EOM
17028 It seems that you must access character data in an aligned manner.
17029 EOM
17030                 d_u32align="$define"
17031                 ;;
17032         esac
17033 else
17034         rp='Can you access character data at unaligned addresses?'
17035         dflt='n'
17036         . ./myread
17037         case "$ans" in
17038         [yY]*)  d_u32align="$undef"  ;;
17039         *)      d_u32align="$define" ;;
17040         esac
17041 fi
17042 $rm -f core core.try.* try.core
17043 ;;
17044 esac
17045
17046 : see if ualarm exists
17047 set ualarm d_ualarm
17048 eval $inlibc
17049
17050 : see if umask exists
17051 set umask d_umask
17052 eval $inlibc
17053
17054 : see if unordered exists
17055 set unordered d_unordered
17056 eval $inlibc
17057
17058 : see if usleep exists
17059 set usleep d_usleep
17060 eval $inlibc
17061
17062 : see if prototype for usleep is available
17063 echo " "
17064 set d_usleepproto usleep $i_unistd unistd.h
17065 eval $hasproto
17066
17067 : see if ustat exists
17068 set ustat d_ustat
17069 eval $inlibc
17070
17071 : backward compatibility for d_hvfork
17072 if test X$d_hvfork != X; then
17073         d_vfork="$d_hvfork"
17074         d_hvfork=''
17075 fi
17076 : see if there is a vfork
17077 val=''
17078 set vfork val
17079 eval $inlibc
17080
17081 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17082 : perl on Solaris 2.x, and probably elsewhere.
17083 case "$val" in
17084 $define)
17085         echo " "
17086         case "$usevfork" in
17087         false) dflt='n';;
17088         *) dflt='y';;
17089         esac
17090         cat <<'EOM'
17091  
17092 Perl can only use a vfork() that doesn't suffer from strict
17093 restrictions on calling functions or modifying global data in
17094 the child.  For example, glibc-2.1 contains such a vfork()
17095 that is unsuitable.  If your system provides a proper fork()
17096 call, chances are that you do NOT want perl to use vfork().
17097
17098 EOM
17099         rp="Do you still want to use vfork()?"
17100         . ./myread
17101         case "$ans" in
17102         y|Y) ;;
17103         *)
17104                 echo "Ok, we won't use vfork()."
17105                 val="$undef"
17106                 ;;
17107         esac
17108         ;;
17109 esac
17110 set d_vfork
17111 eval $setvar
17112 case "$d_vfork" in
17113 $define) usevfork='true';;
17114 *) usevfork='false';;
17115 esac
17116
17117 : see if closedir exists
17118 set closedir d_closedir
17119 eval $inlibc
17120
17121 case "$d_closedir" in
17122 "$define")
17123         echo " "
17124         echo "Checking whether closedir() returns a status..." >&4
17125         cat > try.c <<EOM
17126 #$i_dirent I_DIRENT             /**/
17127 #$i_sysdir I_SYS_DIR            /**/
17128 #$i_sysndir I_SYS_NDIR          /**/
17129 #$i_systypes I_SYS_TYPES        /**/
17130
17131 #if defined(I_SYS_TYPES)
17132 #include <sys/types.h>
17133 #endif
17134 #if defined(I_DIRENT)
17135 #include <dirent.h>
17136 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17137 #include <sys/dir.h>
17138 #endif
17139 #else
17140 #ifdef I_SYS_NDIR
17141 #include <sys/ndir.h>
17142 #else
17143 #ifdef I_SYS_DIR
17144 #ifdef hp9000s500
17145 #include <ndir.h>       /* may be wrong in the future */
17146 #else
17147 #include <sys/dir.h>
17148 #endif
17149 #endif
17150 #endif
17151 #endif 
17152 int main() { return closedir(opendir(".")); }
17153 EOM
17154         set try
17155         if eval $compile_ok; then
17156                 if $run ./try > /dev/null 2>&1 ; then
17157                         echo "Yes, it does."
17158                         val="$undef"
17159                 else
17160                         echo "No, it doesn't."
17161                         val="$define"
17162                 fi
17163         else
17164                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17165                 val="$define"
17166         fi
17167         ;;
17168 *)
17169         val="$undef";
17170         ;;
17171 esac
17172 set d_void_closedir
17173 eval $setvar
17174 $rm -f try try.*
17175 : see if there is a wait4
17176 set wait4 d_wait4
17177 eval $inlibc
17178
17179 : see if waitpid exists
17180 set waitpid d_waitpid
17181 eval $inlibc
17182
17183 : see if wcstombs exists
17184 set wcstombs d_wcstombs
17185 eval $inlibc
17186
17187 : see if wctomb exists
17188 set wctomb d_wctomb
17189 eval $inlibc
17190
17191 : see if writev exists
17192 set writev d_writev
17193 eval $inlibc
17194
17195 : preserve RCS keywords in files with variable substitution, grrr
17196 Date='$Date'
17197 Id='$Id'
17198 Log='$Log'
17199 RCSfile='$RCSfile'
17200 Revision='$Revision'
17201
17202 : check for alignment requirements
17203 echo " "
17204 case "$usecrosscompile$multiarch" in
17205 *$define*)
17206         $cat <<EOM
17207 You seem to be either cross-compiling or doing a multiarchitecture build,
17208 skipping the memory alignment check.
17209
17210 EOM
17211         case "$alignbytes" in
17212         '') alignbytes=8 ;;
17213         esac
17214         ;;
17215 *)
17216         case "$alignbytes" in
17217         '') echo "Checking alignment constraints..." >&4
17218                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17219                         $cat >try.c <<'EOCP'
17220 typedef long double NV;
17221 EOCP
17222                 else
17223                         $cat >try.c <<'EOCP'
17224 typedef double NV;
17225 EOCP
17226                 fi
17227                 $cat >>try.c <<'EOCP'
17228 #include <stdio.h>
17229 struct foobar {
17230         char foo;
17231         NV bar;
17232 } try_algn;
17233 int main()
17234 {
17235     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17236     return(0);
17237 }
17238 EOCP
17239                 set try
17240                 if eval $compile_ok; then
17241                         dflt=`$run ./try`
17242                 else
17243                         dflt='8'
17244                         echo "(I can't seem to compile the test program...)"
17245                 fi
17246                 ;;
17247         *) dflt="$alignbytes"
17248                 ;;
17249         esac
17250         rp="Doubles must be aligned on a how-many-byte boundary?"
17251         . ./myread
17252         alignbytes="$ans"
17253         $rm -f try.c try
17254         ;;
17255 esac
17256
17257
17258 : set the base revision
17259 baserev=5.0
17260
17261 : how do we concatenate cpp tokens here?
17262 echo " "
17263 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17264 $cat >cpp_stuff.c <<'EOCP'
17265 #define RCAT(a,b)a/**/b
17266 #define ACAT(a,b)a ## b
17267 RCAT(Rei,ser)
17268 ACAT(Cir,cus)
17269 EOCP
17270 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17271 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17272         echo "Oh!  Smells like ANSI's been here." >&4
17273         echo "We can catify or stringify, separately or together!"
17274         cpp_stuff=42
17275 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17276         echo "Ah, yes!  The good old days!" >&4
17277         echo "However, in the good old days we don't know how to stringify and"
17278         echo "catify at the same time."
17279         cpp_stuff=1
17280 else
17281         $cat >&4 <<EOM
17282 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17283 You're going to have to edit the values of CAT[2-5] in config.h...
17284 EOM
17285         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17286 fi
17287 $rm -f cpp_stuff.*
17288
17289 : see if this is a db.h system
17290 set db.h i_db
17291 eval $inhdr
17292
17293 case "$i_db" in
17294 $define)
17295         : Check db version.
17296         echo " "
17297         echo "Checking Berkeley DB version ..." >&4
17298         $cat >try.c <<EOCP
17299 #$d_const HASCONST
17300 #ifndef HASCONST
17301 #define const
17302 #endif
17303 #include <sys/types.h>
17304 #include <stdio.h>
17305 #$i_stdlib I_STDLIB
17306 #ifdef I_STDLIB
17307 #include <stdlib.h>
17308 #endif
17309 #include <db.h>
17310 int main(int argc, char *argv[])
17311 {
17312 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17313     int Major, Minor, Patch ;
17314     unsigned long Version ;
17315     (void)db_version(&Major, &Minor, &Patch) ;
17316     if (argc == 2) {
17317         printf("%d %d %d %d %d %d\n",
17318                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17319                Major, Minor, Patch);
17320         exit(0);
17321     }
17322     printf("You have Berkeley DB Version 2 or greater.\n");
17323
17324     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17325                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17326     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17327                 Major, Minor, Patch) ;
17328
17329     /* check that db.h & libdb are compatible */
17330     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17331         printf("db.h and libdb are incompatible.\n") ;
17332         exit(3);        
17333     }
17334
17335     printf("db.h and libdb are compatible.\n") ;
17336
17337     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17338                 + DB_VERSION_PATCH ;
17339
17340     /* needs to be >= 2.3.4 */
17341     if (Version < 2003004) {
17342     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17343         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17344         exit(2);        
17345     }
17346
17347     exit(0);
17348 #else
17349 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17350     if (argc == 2) {
17351         printf("1 0 0\n");
17352         exit(0);
17353     }
17354     printf("You have Berkeley DB Version 1.\n");
17355     exit(0);    /* DB version < 2: the coast is clear. */
17356 #else
17357     exit(1);    /* <db.h> not Berkeley DB? */
17358 #endif
17359 #endif
17360 }
17361 EOCP
17362         set try
17363         if eval $compile_ok && $run ./try; then
17364                 echo 'Looks OK.' >&4
17365                 set `$run ./try 1`
17366                 db_version_major=$1
17367                 db_version_minor=$2
17368                 db_version_patch=$3
17369         else
17370                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17371                 i_db=$undef
17372                 case " $libs " in
17373                 *"-ldb "*)
17374                         : Remove db from list of libraries to use
17375                         echo "Removing unusable -ldb from library list" >&4
17376                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17377                         shift
17378                         libs="$*"
17379                         echo "libs = $libs" >&4
17380                         ;;
17381                 esac
17382         fi
17383         $rm -f try.*
17384         ;;
17385 esac
17386
17387 case "$i_db" in
17388 define)
17389         : Check the return type needed for hash 
17390         echo " "
17391         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17392         $cat >try.c <<EOCP
17393 #$d_const HASCONST
17394 #ifndef HASCONST
17395 #define const
17396 #endif
17397 #include <sys/types.h>
17398 #include <db.h>
17399
17400 #ifndef DB_VERSION_MAJOR
17401 u_int32_t hash_cb (ptr, size)
17402 const void *ptr;
17403 size_t size;
17404 {
17405 }
17406 HASHINFO info;
17407 int main()
17408 {
17409         info.hash = hash_cb;
17410 }
17411 #endif
17412 EOCP
17413         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17414                 if $contains warning try.out >>/dev/null 2>&1 ; then
17415                         db_hashtype='int'
17416                 else
17417                         db_hashtype='u_int32_t'
17418                 fi
17419         else
17420                 : XXX Maybe we should just give up here.
17421                 db_hashtype=u_int32_t
17422                 $cat try.out >&4
17423                 echo "Help:  I can't seem to compile the db test program." >&4
17424                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17425         fi
17426         $rm -f try.*
17427         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17428         ;;
17429 *)      db_hashtype=u_int32_t
17430         ;;
17431 esac
17432 case "$i_db" in
17433 define)
17434         : Check the return type needed for prefix 
17435         echo " "
17436         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17437         cat >try.c <<EOCP
17438 #$d_const HASCONST
17439 #ifndef HASCONST
17440 #define const
17441 #endif
17442 #include <sys/types.h>
17443 #include <db.h>
17444
17445 #ifndef DB_VERSION_MAJOR
17446 size_t prefix_cb (key1, key2)
17447 const DBT *key1;
17448 const DBT *key2;
17449 {
17450 }
17451 BTREEINFO info;
17452 int main()
17453 {
17454         info.prefix = prefix_cb;
17455 }
17456 #endif
17457 EOCP
17458         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17459                 if $contains warning try.out >>/dev/null 2>&1 ; then
17460                         db_prefixtype='int'
17461                 else
17462                         db_prefixtype='size_t'
17463                 fi
17464         else
17465                 db_prefixtype='size_t'
17466                 : XXX Maybe we should just give up here.
17467                 $cat try.out >&4
17468                 echo "Help:  I can't seem to compile the db test program." >&4
17469                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17470         fi
17471         $rm -f try.*
17472         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17473         ;;
17474 *)      db_prefixtype='size_t'
17475         ;;
17476 esac
17477
17478
17479 : How can we generate normalized random numbers ?
17480 echo " "
17481 echo "Looking for a random number function..." >&4
17482 case "$randfunc" in
17483 '')
17484         if set drand48 val -f; eval $csym; $val; then
17485                 dflt="drand48"
17486                 echo "Good, found drand48()." >&4
17487         elif set random val -f; eval $csym; $val; then
17488                 dflt="random"
17489                 echo "OK, found random()." >&4
17490         else
17491                 dflt="rand"
17492                 echo "Yick, looks like I have to use rand()." >&4
17493         fi
17494         echo " "
17495         ;;
17496 *)
17497         dflt="$randfunc"
17498         ;;
17499 esac
17500 cont=true
17501
17502 case "$ccflags" in
17503 *-Dmy_rand=*|*-Dmy_srand=*)
17504         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17505         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17506         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17507         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17508         ;;
17509 esac
17510
17511 while $test "$cont"; do
17512         rp="Use which function to generate random numbers?"
17513         . ./myread
17514         if $test "$ans" = "$dflt"; then
17515                 : null
17516         else
17517                 randbits=''
17518         fi
17519         randfunc="$ans"
17520         if set $ans val -f; eval $csym; $val; then
17521                 cont=''
17522         else
17523                 dflt=y
17524                 rp="I cannot find function $ans. Use that name anyway?"
17525                 . ./myread
17526                 dflt=rand
17527                 case "$ans" in
17528                         [yY]*) cont='';;
17529                 esac
17530         fi
17531         case "$cont" in
17532         '')
17533                 case "$randfunc" in
17534                 drand48)
17535                         drand01="drand48()"
17536                         seedfunc="srand48"
17537                         randbits=48
17538                         randseedtype=long
17539                         ;;
17540                 rand|random)
17541                         case "$randbits" in
17542                         '')
17543 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17544                                 $cat >try.c <<EOCP
17545 #$i_unistd I_UNISTD
17546 #$i_stdlib I_STDLIB
17547 #include <stdio.h>
17548 #ifdef I_UNISTD
17549 #  include <unistd.h>
17550 #endif
17551 #ifdef I_STDLIB
17552 #  include <stdlib.h>
17553 #endif
17554 int main()
17555 {
17556         register int i;
17557         register unsigned long tmp;
17558         register unsigned long max = 0L;
17559
17560         for (i = 1000; i; i--) {
17561                 tmp = (unsigned long) $randfunc();
17562                 if (tmp > max) max = tmp;
17563         }
17564         for (i = 0; max; i++)
17565                 max /= 2;
17566         printf("%d\n",i);
17567 }
17568 EOCP
17569                                 set try
17570                                 if eval $compile_ok; then
17571                                         dflt=`try`
17572                                 else
17573                                         dflt='?'
17574                                         echo "(I can't seem to compile the test program...)"
17575                                 fi
17576                                 ;;
17577                         *)
17578                                 dflt="$randbits"
17579                                 ;;
17580                         esac
17581                         rp="How many bits does your $randfunc() function produce?"
17582                         . ./myread
17583                         randbits="$ans"
17584                         $rm -f try.c try
17585                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17586                         seedfunc="s$randfunc"
17587                         randseedtype=unsigned
17588                         ;;
17589                 *)
17590                         dflt="31"
17591                         rp="How many bits does your $randfunc() function produce?"
17592                         . ./myread
17593                         randbits="$ans"
17594                         seedfunc="s$randfunc"
17595                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17596                         if set $seedfunc val -f; eval $csym; $val; then
17597                                 echo "(Using $seedfunc() to seed random generator)"
17598                         else
17599                                 echo "(Warning: no $seedfunc() to seed random generator)"
17600                                 seedfunc=rand
17601                         fi
17602                         randseedtype=unsigned
17603                         ;;
17604                 esac
17605                 ;;
17606         esac
17607 done
17608
17609 echo " "
17610 echo "Determining whether or not we are on an EBCDIC system..." >&4
17611 $cat >try.c <<'EOM'
17612 int main()
17613 {
17614   if ('M'==0xd4) return 0;
17615   return 1;
17616 }
17617 EOM
17618
17619 val=$undef
17620 set try
17621 if eval $compile_ok; then
17622         if $run ./try; then
17623                 echo "You seem to speak EBCDIC." >&4
17624                 val="$define"
17625         else
17626                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17627         fi
17628 else
17629         echo "I'm unable to compile the test program." >&4
17630         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17631 fi
17632 $rm -f try try.*
17633 set ebcdic
17634 eval $setvar
17635
17636 echo " "
17637 $cat >&4 <<EOM
17638 Checking how to flush all pending stdio output...
17639 EOM
17640 # I only know how to find the first 32 possibly open files on SunOS.
17641 # See also hints/sunos_4_1.sh and util.c  --AD
17642 case "$osname" in
17643 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17644 esac
17645 $cat >>try.c <<EOCP
17646 #include <stdio.h>
17647 #$i_stdlib I_STDLIB
17648 #ifdef I_STDLIB
17649 #include <stdlib.h>
17650 #endif
17651 #$i_unistd I_UNISTD
17652 #ifdef I_UNISTD
17653 # include <unistd.h>
17654 #endif
17655 #$d_sysconf HAS_SYSCONF
17656 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17657 #ifdef HAS_STDIO_STREAM_ARRAY
17658 # define STDIO_STREAM_ARRAY $stdio_stream_array
17659 #endif
17660 int main() {
17661   FILE* p;
17662   unlink("try.out");
17663   p = fopen("try.out", "w");
17664 #ifdef TRY_FPUTC
17665   fputc('x', p);
17666 #else
17667 # ifdef TRY_FPRINTF
17668   fprintf(p, "x");
17669 # endif
17670 #endif
17671 #ifdef TRY_FFLUSH_NULL
17672   fflush(NULL);
17673 #endif
17674 #ifdef TRY_FFLUSH_ALL
17675   {
17676     long open_max = -1;
17677 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17678     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17679 # else
17680 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17681     open_max = sysconf(_SC_OPEN_MAX);
17682 #  else
17683 #   ifdef FOPEN_MAX
17684     open_max = FOPEN_MAX;
17685 #   else
17686 #    ifdef OPEN_MAX
17687     open_max = OPEN_MAX;
17688 #    else
17689 #     ifdef _NFILE
17690     open_max = _NFILE;
17691 #     endif
17692 #    endif
17693 #   endif
17694 #  endif
17695 # endif 
17696 # ifdef HAS_STDIO_STREAM_ARRAY
17697     if (open_max > 0) {
17698       long i;
17699       for (i = 0; i < open_max; i++)
17700             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17701                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17702                 STDIO_STREAM_ARRAY[i]._flag)
17703                 fflush(&STDIO_STREAM_ARRAY[i]);
17704     }   
17705   }
17706 # endif
17707 #endif
17708   _exit(42);
17709 }
17710 EOCP
17711 : first we have to find out how _not_ to flush
17712 $to try.c
17713 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17714     output=''
17715     set try -DTRY_FPUTC
17716     if eval $compile; then
17717             $run ./try 2>/dev/null
17718             code="$?"
17719             $from try.out
17720             if $test ! -s try.out -a "X$code" = X42; then
17721                 output=-DTRY_FPUTC
17722             fi
17723     fi
17724     case "$output" in
17725     '')
17726             set try -DTRY_FPRINTF
17727             if eval $compile; then
17728                     $run ./try 2>/dev/null
17729                     code="$?"
17730                     $from try.out
17731                     if $test ! -s try.out -a "X$code" = X42; then
17732                         output=-DTRY_FPRINTF
17733                     fi
17734             fi
17735         ;;
17736     esac
17737 fi
17738 : check for fflush NULL behaviour
17739 case "$fflushNULL" in
17740 '')     set try -DTRY_FFLUSH_NULL $output
17741         if eval $compile; then
17742                 $run ./try 2>/dev/null
17743                 code="$?"
17744                 $from try.out
17745                 if $test -s try.out -a "X$code" = X42; then
17746                         fflushNULL="`$cat try.out`"
17747                 else
17748                         if $test "X$code" != X42; then
17749                                 $cat >&4 <<EOM
17750 (If this test failed, don't worry, we'll try another method shortly.)
17751 EOM
17752                         fi
17753                 fi
17754         fi
17755         $rm -f core try.core core.try.*
17756         case "$fflushNULL" in
17757         x)      $cat >&4 <<EOM
17758 Your fflush(NULL) works okay for output streams.
17759 Let's see if it clobbers input pipes...
17760 EOM
17761 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17762 # bug that improperly flushes the input end of pipes.  So we avoid the
17763 # autoflush on fork/system/exec support for now. :-(
17764 $cat >tryp.c <<EOCP
17765 #include <stdio.h>
17766 int
17767 main(int argc, char **argv)
17768 {
17769     char buf[1024];
17770     int i;
17771     char *bp = buf;
17772     while (1) {
17773         while ((i = getc(stdin)) != -1
17774                && (*bp++ = i) != '\n'
17775                && bp < &buf[1024])
17776         /* DO NOTHING */ ;
17777         *bp = '\0';
17778         fprintf(stdout, "%s", buf);
17779         fflush(NULL);
17780         if (i == -1)
17781             return 0;
17782         bp = buf;
17783     }
17784 }
17785 EOCP
17786                 fflushNULL="$define"
17787                 set tryp
17788                 if eval $compile; then
17789                     $rm -f tryp.out
17790                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17791                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17792                        $cat >&4 <<EOM
17793 fflush(NULL) seems to behave okay with input streams.
17794 EOM
17795                         fflushNULL="$define"
17796                     else
17797                         $cat >&4 <<EOM
17798 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17799 EOM
17800                         fflushNULL="$undef"
17801                     fi
17802                 fi
17803                 $rm -f core tryp.c tryp.core core.tryp.*
17804                 ;;
17805         '')     $cat >&4 <<EOM
17806 Your fflush(NULL) isn't working (contrary to ANSI C).
17807 EOM
17808                 fflushNULL="$undef"
17809                 ;;
17810         *)      $cat >&4 <<EOM
17811 Cannot figure out whether your fflush(NULL) works or not.
17812 I'm assuming it doesn't (contrary to ANSI C).
17813 EOM
17814                 fflushNULL="$undef"
17815                 ;;
17816         esac
17817         ;;
17818 $define|true|[yY]*)
17819         fflushNULL="$define"
17820         ;;
17821 *)
17822         fflushNULL="$undef"
17823         ;;
17824 esac
17825 : check explicit looping only if NULL did not work, and if the pipe
17826 : bug does not show up on an explicit flush too
17827 case "$fflushNULL" in
17828 "$undef")
17829         $cat >tryp.c <<EOCP
17830 #include <stdio.h>
17831 int
17832 main(int argc, char **argv)
17833 {
17834     char buf[1024];
17835     int i;
17836     char *bp = buf;
17837     while (1) {
17838         while ((i = getc(stdin)) != -1
17839                && (*bp++ = i) != '\n'
17840                && bp < &buf[1024])
17841         /* DO NOTHING */ ;
17842         *bp = '\0';
17843         fprintf(stdout, "%s", buf);
17844         fflush(stdin);
17845         if (i == -1)
17846             return 0;
17847         bp = buf;
17848     }
17849 }
17850 EOCP
17851         set tryp
17852         if eval $compile; then
17853             $rm -f tryp.out
17854             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17855             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17856                $cat >&4 <<EOM
17857 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17858 EOM
17859                 : now check for fflushall behaviour
17860                 case "$fflushall" in
17861                 '')     set try -DTRY_FFLUSH_ALL $output
17862                         if eval $compile; then
17863                                 $cat >&4 <<EOM
17864 (Now testing the other method--but note that this also may fail.)
17865 EOM
17866                                 $run ./try 2>/dev/null
17867                                 code=$?
17868                                 $from try.out
17869                                 if $test -s try.out -a "X$code" = X42; then
17870                                         fflushall="`$cat try.out`"
17871                                 fi
17872                         fi
17873                         $rm -f core try.core core.try.*
17874                         case "$fflushall" in
17875                         x)      $cat >&4 <<EOM
17876 Whew. Flushing explicitly all the stdio streams works.
17877 EOM
17878                                 fflushall="$define"
17879                                 ;;
17880                         '')     $cat >&4 <<EOM
17881 Sigh. Flushing explicitly all the stdio streams doesn't work.
17882 EOM
17883                                 fflushall="$undef"
17884                                 ;;
17885                         *)      $cat >&4 <<EOM
17886 Cannot figure out whether flushing stdio streams explicitly works or not.
17887 I'm assuming it doesn't.
17888 EOM
17889                                 fflushall="$undef"
17890                                 ;;
17891                         esac
17892                         ;;
17893                 "$define"|true|[yY]*)
17894                         fflushall="$define"
17895                         ;;
17896                 *)
17897                         fflushall="$undef"
17898                         ;;
17899                 esac
17900             else
17901                 $cat >&4 <<EOM
17902 All is futile.  Even fflush(stdin) clobbers input pipes!
17903 EOM
17904                 fflushall="$undef"
17905             fi
17906         else
17907             fflushall="$undef"
17908         fi
17909         $rm -f core tryp.c tryp.core core.tryp.*
17910         ;;
17911 *)      fflushall="$undef"
17912         ;;
17913 esac
17914
17915 case "$fflushNULL$fflushall" in
17916 undefundef)
17917         $cat <<EOM
17918 OK, I give up.  I cannot figure out how to flush pending stdio output.
17919 We won't be flushing handles at all before fork/exec/popen.
17920 EOM
17921         ;;
17922 esac
17923 $rm -f try.* try$exe_ext
17924
17925 : Store the full pathname to the ar program for use in the C program
17926 : Respect a hint or command line value for full_ar.
17927 case "$full_ar" in
17928 '') full_ar=$ar ;;
17929 esac
17930
17931 : Store the full pathname to the sed program for use in the C program
17932 full_sed=$sed
17933
17934 : see what type gids are declared as in the kernel
17935 echo " "
17936 echo "Looking for the type for group ids returned by getgid()."
17937 set gid_t gidtype xxx stdio.h sys/types.h
17938 eval $typedef
17939 case "$gidtype" in
17940 xxx)
17941         xxx=`./findhdr sys/user.h`
17942         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17943         case $1 in
17944         unsigned) dflt="$1 $2" ;;
17945         *) dflt="$1" ;;
17946         esac
17947         ;;
17948 *) dflt="$gidtype";;
17949 esac
17950 case "$gidtype" in
17951 gid_t) echo "gid_t found." ;;
17952 *)      rp="What is the type for group ids returned by getgid()?"
17953         . ./myread
17954         gidtype="$ans"
17955         ;;
17956 esac
17957
17958 echo " "
17959 case "$gidtype" in
17960 *_t) zzz="$gidtype"     ;;
17961 *)   zzz="gid"          ;;
17962 esac
17963 echo "Checking the size of $zzz..." >&4 
17964 cat > try.c <<EOCP
17965 #include <sys/types.h>
17966 #include <stdio.h>
17967 #$i_stdlib I_STDLIB
17968 #ifdef I_STDLIB
17969 #include <stdlib.h>
17970 #endif
17971 int main() {
17972     printf("%d\n", (int)sizeof($gidtype));
17973     exit(0);
17974 }
17975 EOCP
17976 set try
17977 if eval $compile_ok; then
17978         yyy=`$run ./try`
17979         case "$yyy" in
17980         '')     gidsize=4
17981                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17982                 ;;
17983         *)      gidsize=$yyy
17984                 echo "Your $zzz is $gidsize bytes long."
17985                 ;;
17986         esac
17987 else
17988         gidsize=4
17989         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17990 fi
17991
17992
17993 echo " "
17994 case "$gidtype" in
17995 *_t) zzz="$gidtype"     ;;
17996 *)   zzz="gid"          ;;
17997 esac
17998 echo "Checking the sign of $zzz..." >&4 
17999 cat > try.c <<EOCP
18000 #include <sys/types.h>
18001 #include <stdio.h>
18002 int main() {
18003         $gidtype foo = -1;
18004         if (foo < 0)
18005                 printf("-1\n");
18006         else
18007                 printf("1\n");
18008 }
18009 EOCP
18010 set try
18011 if eval $compile; then
18012         yyy=`$run ./try`
18013         case "$yyy" in
18014         '')     gidsign=1
18015                 echo "(I can't execute the test program--guessing unsigned.)" >&4
18016                 ;;
18017         *)      gidsign=$yyy
18018                 case "$gidsign" in
18019                  1) echo "Your $zzz is unsigned." ;;
18020                 -1) echo "Your $zzz is signed."   ;;
18021                 esac
18022                 ;;
18023         esac
18024 else
18025         gidsign=1
18026         echo "(I can't compile the test program--guessing unsigned.)" >&4
18027 fi
18028
18029
18030 echo " "
18031
18032 if $test X"$quadtype" != X; then
18033
18034 echo "Checking how to print 64-bit integers..." >&4
18035
18036 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18037         $cat >try.c <<'EOCP'
18038 #include <sys/types.h>
18039 #include <stdio.h>
18040 int main() {
18041   int q = 12345678901;
18042   printf("%ld\n", q);
18043 }
18044 EOCP
18045         set try
18046         if eval $compile; then
18047                 yyy=`$run ./try`
18048                 case "$yyy" in
18049                 12345678901)
18050                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18051                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18052                         echo "We will use %d."
18053                         ;;
18054                 esac
18055         fi
18056 fi
18057
18058 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18059         $cat >try.c <<'EOCP'
18060 #include <sys/types.h>
18061 #include <stdio.h>
18062 int main() {
18063   long q = 12345678901;
18064   printf("%ld\n", q);
18065 }
18066 EOCP
18067         set try
18068         if eval $compile; then
18069                 yyy=`$run ./try`
18070                 case "$yyy" in
18071                 12345678901)
18072                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18073                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18074                         echo "We will use %ld."
18075                         ;;
18076                 esac
18077         fi
18078 fi
18079
18080 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18081         $cat >try.c <<'EOCP'
18082 #include <sys/types.h>
18083 #include <inttypes.h>
18084 #include <stdio.h>
18085 int main() {
18086   int64_t q = 12345678901;
18087   printf("%" PRId64 "\n", q);
18088 }
18089 EOCP
18090         set try
18091         if eval $compile; then
18092                 yyy=`$run ./try`
18093                 case "$yyy" in
18094                 12345678901)
18095                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18096                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18097                         echo "We will use the C9X style."
18098                         ;;
18099                 esac
18100         fi
18101 fi
18102
18103 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18104         $cat >try.c <<EOCP
18105 #include <sys/types.h>
18106 #include <stdio.h>
18107 int main() {
18108   $quadtype q = 12345678901;
18109   printf("%Ld\n", q);
18110 }
18111 EOCP
18112         set try
18113         if eval $compile; then
18114                 yyy=`$run ./try`
18115                 case "$yyy" in
18116                 12345678901)
18117                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18118                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18119                         echo "We will use %Ld."
18120                         ;;
18121                 esac
18122         fi
18123 fi
18124
18125 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18126         $cat >try.c <<'EOCP'
18127 #include <sys/types.h>
18128 #include <stdio.h>
18129 int main() {
18130   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18131   printf("%lld\n", q);
18132 }
18133 EOCP
18134         set try
18135         if eval $compile; then
18136                 yyy=`$run ./try`
18137                 case "$yyy" in
18138                 12345678901)
18139                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18140                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18141                         echo "We will use the %lld style."
18142                         ;;
18143                 esac
18144         fi
18145 fi
18146
18147 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18148         $cat >try.c <<EOCP
18149 #include <sys/types.h>
18150 #include <stdio.h>
18151 int main() {
18152   $quadtype q = 12345678901;
18153   printf("%qd\n", q);
18154 }
18155 EOCP
18156         set try
18157         if eval $compile; then
18158                 yyy=`$run ./try`
18159                 case "$yyy" in
18160                 12345678901)
18161                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18162                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18163                         echo "We will use %qd."
18164                         ;;
18165                 esac
18166         fi
18167 fi
18168
18169 if $test X"$sPRId64" = X; then
18170         echo "Cannot figure out how to print 64-bit integers." >&4
18171 fi
18172
18173 $rm -f try try.*
18174
18175 fi
18176
18177 case "$sPRId64" in
18178 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18179         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18180         ;;
18181 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18182         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18183         ;;
18184 esac
18185
18186
18187 echo " "
18188 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18189
18190 if $test X"$ivsize" = X8; then
18191         ivdformat="$sPRId64"
18192         uvuformat="$sPRIu64"
18193         uvoformat="$sPRIo64"
18194         uvxformat="$sPRIx64"
18195         uvXUformat="$sPRIXU64"
18196 else
18197         if $test X"$ivsize" = X"$longsize"; then
18198                 ivdformat='"ld"'
18199                 uvuformat='"lu"'
18200                 uvoformat='"lo"'
18201                 uvxformat='"lx"'
18202                 uvXUformat='"lX"'
18203         else
18204                 if $test X"$ivsize" = X"$intsize"; then
18205                         ivdformat='"d"'
18206                         uvuformat='"u"'
18207                         uvoformat='"o"'
18208                         uvxformat='"x"'
18209                         uvXUformat='"X"'
18210                 else
18211                         : far out
18212                         if $test X"$ivsize" = X"$shortsize"; then
18213                                 ivdformat='"hd"'
18214                                 uvuformat='"hu"'
18215                                 uvoformat='"ho"'
18216                                 uvxformat='"hx"'
18217                                 uvXUformat='"hX"'
18218                         fi
18219                 fi
18220         fi
18221 fi
18222
18223 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18224         nveformat="$sPRIeldbl"
18225         nvfformat="$sPRIfldbl"
18226         nvgformat="$sPRIgldbl"
18227         nvEUformat="$sPRIEUldbl"
18228         nvFUformat="$sPRIFUldbl"
18229         nvGUformat="$sPRIGUldbl"
18230 else
18231         nveformat='"e"'
18232         nvfformat='"f"'
18233         nvgformat='"g"'
18234         nvEUformat='"E"'
18235         nvFUformat='"F"'
18236         nvGUformat='"G"'
18237 fi
18238
18239 case "$ivdformat" in
18240 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18241     exit 1
18242     ;;
18243 esac
18244
18245
18246 echo " "
18247 $echo "Checking the format string to be used for gids..." >&4
18248
18249 case "$gidsign" in
18250 -1)     if $test X"$gidsize" = X"$ivsize"; then
18251                 gidformat="$ivdformat"
18252         else
18253                 if $test X"$gidsize" = X"$longsize"; then
18254                         gidformat='"ld"'
18255                 else
18256                         if $test X"$gidsize" = X"$intsize"; then
18257                                 gidformat='"d"'
18258                         else
18259                                 if $test X"$gidsize" = X"$shortsize"; then
18260                                         gidformat='"hd"'
18261                                 fi
18262                         fi
18263                 fi
18264         fi
18265         ;;
18266 *)      if $test X"$gidsize" = X"$uvsize"; then
18267                 gidformat="$uvuformat"
18268         else
18269                 if $test X"$gidsize" = X"$longsize"; then
18270                         gidformat='"lu"'
18271                 else
18272                         if $test X"$gidsize" = X"$intsize"; then
18273                                 gidformat='"u"'
18274                         else
18275                                 if $test X"$gidsize" = X"$shortsize"; then
18276                                         gidformat='"hu"'
18277                                 fi
18278                         fi
18279                 fi
18280         fi
18281         ;;
18282 esac
18283
18284 : see if getgroups exists
18285 set getgroups d_getgrps
18286 eval $inlibc
18287
18288 : see if setgroups exists
18289 set setgroups d_setgrps
18290 eval $inlibc
18291
18292
18293 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18294 echo " "
18295 case "$d_getgrps$d_setgrps" in
18296 *define*)
18297         case "$groupstype" in
18298         '') dflt="$gidtype" ;;
18299         *)  dflt="$groupstype" ;;
18300         esac
18301         $cat <<EOM
18302 What type of pointer is the second argument to getgroups() and setgroups()?
18303 Usually this is the same as group ids, $gidtype, but not always.
18304
18305 EOM
18306         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18307         . ./myread
18308         groupstype="$ans"
18309         ;;
18310 *)  groupstype="$gidtype";;
18311 esac
18312
18313 echo " "
18314 echo "Checking if your $make program sets \$(MAKE)..." >&4
18315 case "$make_set_make" in
18316 '')
18317         $sed 's/^X //' > testmake.mak << 'EOF'
18318 Xall:
18319 X       @echo 'maketemp="$(MAKE)"'
18320 EOF
18321         case "`$make -f testmake.mak 2>/dev/null`" in
18322         *maketemp=*) make_set_make='#' ;;
18323         *)      make_set_make="MAKE=$make" ;;
18324         esac
18325         $rm -f testmake.mak
18326         ;;
18327 esac
18328 case "$make_set_make" in
18329 '#') echo "Yup, it does.";;
18330 *) echo "Nope, it doesn't.";;
18331 esac
18332
18333 : see what type is used for mode_t
18334 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18335 set mode_t modetype int stdio.h sys/types.h
18336 eval $typedef_ask
18337
18338 : see if stdarg is available
18339 echo " "
18340 if $test `./findhdr stdarg.h`; then
18341         echo "<stdarg.h> found." >&4
18342         valstd="$define"
18343 else
18344         echo "<stdarg.h> NOT found." >&4
18345         valstd="$undef"
18346 fi
18347
18348 : see if varags is available
18349 echo " "
18350 if $test `./findhdr varargs.h`; then
18351         echo "<varargs.h> found." >&4
18352 else
18353         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18354 fi
18355
18356 : set up the varargs testing programs
18357 $cat > varargs.c <<EOP
18358 #ifdef I_STDARG
18359 #include <stdarg.h>
18360 #endif
18361 #ifdef I_VARARGS
18362 #include <varargs.h>
18363 #endif
18364
18365 #ifdef I_STDARG
18366 int f(char *p, ...)
18367 #else
18368 int f(va_alist)
18369 va_dcl
18370 #endif
18371 {
18372         va_list ap;
18373 #ifndef I_STDARG
18374         char *p;
18375 #endif
18376 #ifdef I_STDARG
18377         va_start(ap,p);
18378 #else
18379         va_start(ap);
18380         p = va_arg(ap, char *);
18381 #endif
18382         va_end(ap);
18383 }
18384 EOP
18385 $cat > varargs <<EOP
18386 $startsh
18387 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18388         echo "true"
18389 else
18390         echo "false"
18391 fi
18392 $rm -f varargs$_o
18393 EOP
18394 chmod +x varargs
18395
18396 : now check which varargs header should be included
18397 echo " "
18398 i_varhdr=''
18399 case "$valstd" in
18400 "$define")
18401         if `./varargs I_STDARG`; then
18402                 val='stdarg.h'
18403         elif `./varargs I_VARARGS`; then
18404                 val='varargs.h'
18405         fi
18406         ;;
18407 *)
18408         if `./varargs I_VARARGS`; then
18409                 val='varargs.h'
18410         fi
18411         ;;
18412 esac
18413 case "$val" in
18414 '')
18415 echo "I could not find the definition for va_dcl... You have problems..." >&4
18416         val="$undef"; set i_stdarg; eval $setvar
18417         val="$undef"; set i_varargs; eval $setvar
18418         ;;
18419 *) 
18420         set i_varhdr
18421         eval $setvar
18422         case "$i_varhdr" in
18423         stdarg.h)
18424                 val="$define"; set i_stdarg; eval $setvar
18425                 val="$undef"; set i_varargs; eval $setvar
18426                 ;;
18427         varargs.h)
18428                 val="$undef"; set i_stdarg; eval $setvar
18429                 val="$define"; set i_varargs; eval $setvar
18430                 ;;
18431         esac
18432         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18433 esac
18434 $rm -f varargs*
18435
18436 : see if we need va_copy
18437 echo " "
18438 case "$i_stdarg" in
18439 "$define")
18440         $cat >try.c <<EOCP
18441 #include <stdarg.h>
18442 #include <stdio.h>
18443 #$i_stdlib I_STDLIB
18444 #ifdef I_STDLIB
18445 #include <stdlib.h>
18446 #endif
18447 #include <signal.h>
18448
18449 int
18450 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18451 {
18452   return vfprintf(f, fmt, *valp);
18453 }
18454  
18455 int    
18456 myvfprintf(FILE *f, const  char *fmt, va_list val)
18457 {
18458   return ivfprintf(f, fmt, &val);
18459 }
18460       
18461 int
18462 myprintf(char *fmt, ...) 
18463 {
18464   va_list val;
18465   va_start(val, fmt);
18466   return myvfprintf(stdout, fmt, val); 
18467 }         
18468
18469 int
18470 main(int ac, char **av)
18471 {
18472   signal(SIGSEGV, exit);
18473
18474   myprintf("%s%cs all right, then\n", "that", '\'');                            
18475   exit(0);      
18476 }
18477 EOCP
18478         set try
18479         if eval $compile && $run ./try 2>&1 >/dev/null; then
18480                 case "`$run ./try`" in
18481                 "that's all right, then")
18482                         okay=yes
18483                         ;;
18484                 esac
18485         fi
18486         case "$okay" in
18487         yes)    echo "It seems that you don't need va_copy()." >&4
18488                 need_va_copy="$undef"
18489                 ;;
18490         *)      echo "It seems that va_copy() or similar will be needed." >&4
18491                 need_va_copy="$define"
18492                 ;;
18493         esac
18494         $rm -f try.* core core.* *.core *.core.*
18495         ;;
18496 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18497         ;;
18498 esac
18499
18500 : see what type is used for size_t
18501 rp="What is the type used for the length parameter for string functions?"
18502 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18503 eval $typedef_ask
18504
18505 : check for type of arguments to gethostbyaddr. 
18506 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18507         case "$d_gethbyaddr" in
18508         $define)
18509                 $cat <<EOM
18510
18511 Checking to see what type of arguments are accepted by gethostbyaddr().
18512 EOM
18513                 hdrs="$define sys/types.h
18514                         $d_socket sys/socket.h 
18515                         $i_niin netinet/in.h 
18516                         $i_netdb netdb.h
18517                         $i_unistd unistd.h"
18518                 : The first arg can 'char *' or 'void *'
18519                 : The second arg is some of integral type
18520                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18521                         for yyy in size_t long int; do
18522                                 case "$netdb_host_type" in
18523                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18524                                         if ./protochk "$try" $hdrs; then
18525                                                 echo "Your system accepts $xxx for the first arg."
18526                                                 echo "...and $yyy for the second arg."
18527                                                 netdb_host_type="$xxx"
18528                                                 netdb_hlen_type="$yyy"
18529                                         fi
18530                                         ;;
18531                                 esac
18532                         done
18533                 done
18534                 : In case none of those worked, prompt the user.
18535                 case "$netdb_host_type" in
18536                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18537                         dflt='char *'
18538                         . ./myread
18539                         netdb_host_type=$ans
18540                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18541                         dflt="$sizetype"
18542                         . ./myread
18543                         netdb_hlen_type=$ans
18544                         ;;
18545                 esac
18546                 ;;
18547         *)      : no gethostbyaddr, so pick harmless defaults
18548                 netdb_host_type='char *'
18549                 netdb_hlen_type="$sizetype"
18550                 ;;
18551         esac
18552         # Remove the "const" if needed. -- but then we'll have a 
18553         # prototype clash!
18554         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18555 fi
18556
18557 : check for type of argument to gethostbyname. 
18558 if test "X$netdb_name_type" = X ; then
18559         case "$d_gethbyname" in
18560         $define)
18561                 $cat <<EOM
18562
18563 Checking to see what type of argument is accepted by gethostbyname().
18564 EOM
18565                 hdrs="$define sys/types.h
18566                         $d_socket sys/socket.h 
18567                         $i_niin netinet/in.h 
18568                         $i_netdb netdb.h
18569                         $i_unistd unistd.h"
18570                 for xxx in "const char *" "char *"; do
18571                         case "$netdb_name_type" in
18572                         '')     try="extern struct hostent *gethostbyname($xxx);"
18573                                 if ./protochk "$try" $hdrs; then
18574                                         echo "Your system accepts $xxx."
18575                                         netdb_name_type="$xxx"
18576                                 fi
18577                                 ;;
18578                         esac
18579                 done
18580                 : In case none of those worked, prompt the user.
18581                 case "$netdb_name_type" in
18582                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18583                         dflt='char *'
18584                         . ./myread
18585                         netdb_name_type=$ans
18586                         ;;
18587                 esac
18588                 ;;
18589         *)      : no gethostbyname, so pick harmless default
18590                 netdb_name_type='char *'
18591                 ;;
18592         esac
18593 fi
18594
18595 : check for type of 1st argument to getnetbyaddr. 
18596 if test "X$netdb_net_type" = X ; then
18597         case "$d_getnbyaddr" in
18598         $define)
18599                 $cat <<EOM
18600
18601 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18602 EOM
18603                 hdrs="$define sys/types.h
18604                         $d_socket sys/socket.h 
18605                         $i_niin netinet/in.h 
18606                         $i_netdb netdb.h
18607                         $i_unistd unistd.h"
18608                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18609                         case "$netdb_net_type" in
18610                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18611                                 if ./protochk "$try" $hdrs; then
18612                                         echo "Your system accepts $xxx."
18613                                         netdb_net_type="$xxx"
18614                                 fi
18615                                 ;;
18616                         esac
18617                 done
18618                 : In case none of those worked, prompt the user.
18619                 case "$netdb_net_type" in
18620                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18621                         dflt='long'
18622                         . ./myread
18623                         netdb_net_type=$ans
18624                         ;;
18625                 esac
18626                 ;;
18627         *)      : no getnetbyaddr, so pick harmless default
18628                 netdb_net_type='long'
18629                 ;;
18630         esac
18631 fi
18632 : locate the preferred pager for this system
18633 fn=f/
18634 case "$pager" in
18635 '')
18636         dflt=''
18637         case "$pg" in
18638         /*) dflt=$pg;;
18639         [a-zA-Z]:/*) dflt=$pg;;
18640         esac
18641         case "$more" in
18642         /*) dflt=$more;;
18643         [a-zA-Z]:/*) dflt=$more;;
18644         esac
18645         case "$less" in
18646         /*) dflt=$less;;
18647         [a-zA-Z]:/*) dflt=$less;;
18648         esac
18649         case "$dflt" in
18650         '') dflt=/usr/ucb/more;;
18651         esac
18652         ;;
18653 *)      dflt="$pager"
18654         : Instruct ./getfile to trust the hinted or previous pager value,
18655         : even if it does not begin with a slash.  For example, on os2,
18656         : pager might be cmd /c more.  See comments in UU/getfile.
18657         fn="f/($pager)"
18658         ;;
18659 esac
18660 echo " "
18661 rp='What pager is used on your system?'
18662 . ./getfile
18663 pager="$ans"
18664
18665 : see what type pids are declared as in the kernel
18666 rp="What is the type of process ids on this system?"
18667 set pid_t pidtype int stdio.h sys/types.h
18668 eval $typedef_ask
18669
18670 : see if ar generates random libraries by itself
18671 echo " "
18672 echo "Checking how to generate random libraries on your machine..." >&4
18673 echo 'int bar1() { return bar2(); }' > bar1.c
18674 echo 'int bar2() { return 2; }' > bar2.c
18675 $cat > foo.c <<EOP
18676 #$i_stdlib I_STDLIB
18677 #ifdef I_STDLIB
18678 #include <stdlib.h>
18679 #endif
18680 int main() { printf("%d\n", bar1()); exit(0); }
18681 EOP
18682 $cc $ccflags -c bar1.c >/dev/null 2>&1
18683 $cc $ccflags -c bar2.c >/dev/null 2>&1
18684 $cc $ccflags -c foo.c >/dev/null 2>&1
18685 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18686 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18687         $run ./foobar >/dev/null 2>&1; then
18688         echo "$ar appears to generate random libraries itself."
18689         orderlib=false
18690         ranlib=":"
18691 elif $ar ts bar$_a >/dev/null 2>&1 &&
18692         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18693         $run ./foobar >/dev/null 2>&1; then
18694                 echo "a table of contents needs to be added with '$ar ts'."
18695                 orderlib=false
18696                 ranlib="$ar ts"
18697 else
18698         case "$ranlib" in
18699         :) ranlib='';;
18700         '')
18701                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18702                 $test -f $ranlib || ranlib=''
18703                 ;;
18704         esac
18705         if $test -n "$ranlib"; then
18706                 echo "your system has '$ranlib'; we'll use that."
18707                 orderlib=false
18708         else
18709                 echo "your system doesn't seem to support random libraries"
18710                 echo "so we'll use lorder and tsort to order the libraries."
18711                 orderlib=true
18712                 ranlib=":"
18713         fi
18714 fi
18715 $rm -f foo* bar* 
18716
18717 : check for type of arguments to select. 
18718 case "$selecttype" in
18719 '') case "$d_select" in
18720         $define)
18721                 echo " "
18722                 $cat <<EOM
18723 Checking to see what type of arguments are accepted by select().
18724 EOM
18725                 hdrs="$define sys/types.h
18726                         $i_systime sys/time.h 
18727                         $i_sysselct sys/select.h
18728                         $d_socket sys/socket.h"
18729                 : The first arg can be int, unsigned, or size_t
18730                 : The last arg may or may not be 'const'
18731                 val=''
18732                 : void pointer has been seen but using that
18733                 : breaks the selectminbits test
18734                 for xxx in 'fd_set *' 'int *'; do
18735                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18736                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18737                                         case "$val" in
18738                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18739                                                 if ./protochk "$try" $hdrs; then
18740                                                         echo "Your system accepts $xxx."
18741                                                         val="$xxx"
18742                                                 fi
18743                                                 ;;
18744                                         esac
18745                                 done
18746                         done
18747                 done
18748                 case "$val" in
18749                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18750                         case "$d_fd_set" in
18751                                 $define) dflt="fd_set *" ;;
18752                                 *)              dflt="int *" ;;
18753                         esac
18754                         . ./myread
18755                         val=$ans
18756                         ;;
18757                 esac
18758                 selecttype="$val"
18759                 ;;
18760         *)      : no select, so pick a harmless default
18761                 selecttype='int *'
18762                 ;;
18763         esac
18764         ;;
18765 esac
18766
18767 : check for the select 'width'
18768 case "$selectminbits" in
18769 '') safebits=`expr $ptrsize \* 8`
18770     case "$d_select" in
18771         $define)
18772                 $cat <<EOM
18773
18774 Checking to see on how many bits at a time your select() operates...
18775 EOM
18776                 $cat >try.c <<EOCP
18777 #include <sys/types.h>
18778 #$i_time I_TIME
18779 #$i_systime I_SYS_TIME
18780 #$i_systimek I_SYS_TIME_KERNEL
18781 #ifdef I_TIME
18782 #   include <time.h>
18783 #endif
18784 #ifdef I_SYS_TIME
18785 #   ifdef I_SYS_TIME_KERNEL
18786 #       define KERNEL
18787 #   endif
18788 #   include <sys/time.h>
18789 #   ifdef I_SYS_TIME_KERNEL
18790 #       undef KERNEL
18791 #   endif
18792 #endif
18793 #$i_sysselct I_SYS_SELECT
18794 #ifdef I_SYS_SELECT
18795 #include <sys/select.h>
18796 #endif
18797 #$d_socket HAS_SOCKET
18798 #ifdef HAS_SOCKET
18799 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18800 #endif
18801 #include <stdio.h>
18802 #$i_stdlib I_STDLIB
18803 #ifdef I_STDLIB
18804 #include <stdlib.h>
18805 #endif
18806 $selecttype b;
18807 #define S sizeof(*(b))
18808 #define MINBITS 64
18809 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18810 #define NBITS  (NBYTES * 8)
18811 int main() {
18812     char *s = malloc(NBYTES);
18813     struct timeval t;
18814     int i;
18815     FILE* fp;
18816     int fd;
18817
18818     if (!s)
18819         exit(1);
18820     fclose(stdin);
18821     fp = fopen("try.c", "r");
18822     if (fp == 0)
18823       exit(2);
18824     fd = fileno(fp);
18825     if (fd < 0)
18826       exit(3);
18827     b = ($selecttype)s;
18828     for (i = 0; i < NBITS; i++)
18829         FD_SET(i, b);
18830     t.tv_sec  = 0;
18831     t.tv_usec = 0;
18832     select(fd + 1, b, 0, 0, &t);
18833     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18834     free(s);
18835     printf("%d\n", i + 1);
18836     return 0;
18837 }
18838 EOCP
18839                 set try
18840                 if eval $compile_ok; then
18841                         selectminbits=`$run ./try`
18842                         case "$selectminbits" in
18843                         '')     cat >&4 <<EOM
18844 Cannot figure out on how many bits at a time your select() operates.
18845 I'll play safe and guess it is $safebits bits.
18846 EOM
18847                                 selectminbits=$safebits
18848                                 bits="$safebits bits"
18849                                 ;;
18850                         1)      bits="1 bit" ;;
18851                         *)      bits="$selectminbits bits" ;;
18852                         esac
18853                         echo "Your select() operates on $bits at a time." >&4
18854                 else
18855                         rp='What is the minimum number of bits your select() operates on?'
18856                         case "$byteorder" in
18857                         12345678)       dflt=64 ;;
18858                         1234)           dflt=32 ;;
18859                         *)              dflt=1  ;;
18860                         esac
18861                         . ./myread
18862                         val=$ans
18863                         selectminbits="$val"
18864                 fi
18865                 $rm -f try.* try
18866                 ;;
18867         *)      : no select, so pick a harmless default
18868                 selectminbits=$safebits
18869                 ;;
18870         esac
18871         ;;
18872 esac
18873
18874 : Trace out the files included by signal.h, then look for SIGxxx names.
18875 : Remove SIGARRAYSIZE used by HPUX.
18876 : Remove SIGSTKSIZE used by Linux.
18877 : Remove SIGSTKSZ used by Posix.
18878 : Remove SIGTYP void lines used by OS2.
18879 : Some cpps, like os390, dont give the file name anywhere
18880 if [ "X$fieldn" = X ]; then
18881         : Just make some guesses.  We check them later.
18882         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18883 else
18884         xxx=`echo '#include <signal.h>' |
18885         $cppstdin $cppminus $cppflags 2>/dev/null |
18886         $grep '^[       ]*#.*include' | 
18887         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18888 fi
18889 : Check this list of files to be sure we have parsed the cpp output ok.
18890 : This will also avoid potentially non-existent files, such 
18891 : as ../foo/bar.h
18892 xxxfiles=''
18893 for xx in $xxx /dev/null ; do
18894         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18895 done
18896 : If we have found no files, at least try signal.h
18897 case "$xxxfiles" in
18898 '')     xxxfiles=`./findhdr signal.h` ;;
18899 esac
18900 xxx=`awk '
18901 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18902         print substr($2, 4, 20)
18903 }
18904 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18905         print substr($3, 4, 20)
18906 }' $xxxfiles`
18907 : Append some common names just in case the awk scan failed.
18908 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18909 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18910 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18911 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18912 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18913
18914 : generate a few handy files for later
18915 $cat > signal.c <<EOCP
18916 #include <sys/types.h>
18917 #include <signal.h>
18918 #$i_stdlib I_STDLIB
18919 #ifdef I_STDLIB
18920 #include <stdlib.h>
18921 #endif
18922 #include <stdio.h>
18923 int main() {
18924
18925 /* Strange style to avoid deeply-nested #if/#else/#endif */
18926 #ifndef NSIG
18927 #  ifdef _NSIG
18928 #    define NSIG (_NSIG)
18929 #  endif
18930 #endif
18931
18932 #ifndef NSIG
18933 #  ifdef SIGMAX
18934 #    define NSIG (SIGMAX+1)
18935 #  endif
18936 #endif
18937
18938 #ifndef NSIG
18939 #  ifdef SIG_MAX
18940 #    define NSIG (SIG_MAX+1)
18941 #  endif
18942 #endif
18943
18944 #ifndef NSIG
18945 #  ifdef MAXSIG
18946 #    define NSIG (MAXSIG+1)
18947 #  endif
18948 #endif
18949
18950 #ifndef NSIG
18951 #  ifdef MAX_SIG
18952 #    define NSIG (MAX_SIG+1)
18953 #  endif
18954 #endif
18955
18956 #ifndef NSIG
18957 #  ifdef SIGARRAYSIZE
18958 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18959 #  endif
18960 #endif
18961
18962 #ifndef NSIG
18963 #  ifdef _sys_nsig
18964 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18965 #  endif
18966 #endif
18967
18968 /* Default to some arbitrary number that's big enough to get most
18969    of the common signals.
18970 */
18971 #ifndef NSIG
18972 #    define NSIG 50
18973 #endif
18974
18975 printf("NSIG %d\n", NSIG);
18976
18977 #ifndef JUST_NSIG
18978
18979 EOCP
18980
18981 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18982 {
18983         printf "#ifdef SIG"; printf $1; printf "\n"
18984         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18985         printf $1; printf ");\n"
18986         printf "#endif\n"
18987 }
18988 END {
18989         printf "#endif /* JUST_NSIG */\n";
18990         printf "exit(0);\n}\n";
18991 }
18992 ' >>signal.c
18993 $cat >signal.awk <<'EOP'
18994 BEGIN { ndups = 0 }
18995 $1 ~ /^NSIG$/ { nsig = $2 }
18996 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18997     if ($2 > maxsig) { maxsig = $2 }
18998     if (sig_name[$2]) {
18999         dup_name[ndups] = $1
19000         dup_num[ndups] = $2
19001         ndups++ 
19002     }
19003     else {
19004         sig_name[$2] = $1
19005         sig_num[$2] = $2
19006     }
19007 }
19008 END { 
19009     if (nsig == 0) {
19010         nsig = maxsig + 1
19011     }
19012     printf("NSIG %d\n", nsig);
19013     for (n = 1; n < nsig; n++) {
19014         if (sig_name[n]) {
19015             printf("%s %d\n", sig_name[n], sig_num[n])
19016         }
19017         else {
19018             printf("NUM%d %d\n", n, n) 
19019         }
19020     }
19021     for (n = 0; n < ndups; n++) {
19022         printf("%s %d\n", dup_name[n], dup_num[n])
19023     }
19024 }
19025 EOP
19026 $cat >signal_cmd <<EOS
19027 $startsh
19028 if $test -s signal.lst; then
19029     echo "Using your existing signal.lst file"
19030         exit 0
19031 fi
19032 xxx="$xxx"
19033 EOS
19034 $cat >>signal_cmd <<'EOS'
19035
19036 set signal
19037 if eval $compile_ok; then
19038         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19039 else
19040         echo "(I can't seem be able to compile the whole test program)" >&4
19041         echo "(I'll try it in little pieces.)" >&4
19042         set signal -DJUST_NSIG
19043         if eval $compile_ok; then
19044                 $run ./signal$_exe > signal.nsg
19045                 $cat signal.nsg
19046         else
19047                 echo "I can't seem to figure out how many signals you have." >&4
19048                 echo "Guessing 50." >&4
19049                 echo 'NSIG 50' > signal.nsg
19050         fi
19051         : Now look at all the signal names, one at a time.
19052         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19053                 $cat > signal.c <<EOCP
19054 #include <sys/types.h>
19055 #include <signal.h>
19056 #include <stdio.h>
19057 int main() {
19058 printf("$xx %d\n", SIG${xx});
19059 return 0;
19060 }
19061 EOCP
19062                 set signal
19063                 if eval $compile; then
19064                         echo "SIG${xx} found."
19065                         $run ./signal$_exe  >> signal.ls1
19066                 else
19067                         echo "SIG${xx} NOT found."
19068                 fi
19069         done
19070         if $test -s signal.ls1; then
19071                 $cat signal.nsg signal.ls1 |
19072                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19073         fi
19074
19075 fi
19076 if $test -s signal.lst; then
19077         :
19078 else
19079         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19080         echo 'kill -l' >signal
19081         set X `csh -f <signal`
19082         $rm -f signal
19083         shift
19084         case $# in
19085         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19086         esac
19087         echo $@ | $tr ' ' $trnl | \
19088             $awk '{ printf "%s %d\n", $1, ++s; }
19089                   END { printf "NSIG %d\n", ++s }' >signal.lst
19090 fi
19091 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19092 EOS
19093 chmod a+x signal_cmd
19094 $eunicefix signal_cmd
19095
19096 : generate list of signal names
19097 echo " "
19098 case "$sig_name_init" in
19099 '') doinit=yes ;;
19100 *)  case "$sig_num_init" in
19101     ''|*,*) doinit=yes ;;
19102     esac ;;
19103 esac
19104 case "$doinit" in
19105 yes)
19106         echo "Generating a list of signal names and numbers..." >&4
19107         . ./signal_cmd
19108         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19109         sig_name=`$awk 'BEGIN { printf "ZERO " }
19110                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19111         sig_num=`$awk  'BEGIN { printf "0 " }
19112                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19113         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19114                              !/^NSIG/   { printf "\"%s\", ", $1 }
19115                              END        { printf "0\n" }' signal.lst`
19116         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19117                              !/^NSIG/   { printf "%d, ", $2}
19118                              END        { printf "0\n"}' signal.lst`
19119         ;;
19120 esac
19121 echo "The following $sig_count signals are available:"
19122 echo " "
19123 echo $sig_name | $awk \
19124 'BEGIN { linelen = 0 }
19125 {
19126         for (i = 1; i <= NF; i++) {
19127                 name = "SIG" $i " "
19128                 linelen = linelen + length(name)
19129                 if (linelen > 70) {
19130                         printf "\n"
19131                         linelen = length(name)
19132                 }
19133                 printf "%s", name
19134         }
19135         printf "\n"
19136 }'
19137 sig_size=`echo $sig_name | awk '{print NF}'`
19138 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19139
19140 echo " "
19141 case "$sizetype" in
19142 *_t) zzz="$sizetype"    ;;
19143 *)   zzz="filesize"     ;;
19144 esac
19145 echo "Checking the size of $zzz..." >&4 
19146 cat > try.c <<EOCP
19147 #include <sys/types.h>
19148 #include <stdio.h>
19149 #$i_stdlib I_STDLIB
19150 #ifdef I_STDLIB
19151 #include <stdlib.h>
19152 #endif
19153 int main() {
19154     printf("%d\n", (int)sizeof($sizetype));
19155     exit(0);
19156 }
19157 EOCP
19158 set try
19159 if eval $compile_ok; then
19160         yyy=`$run ./try`
19161         case "$yyy" in
19162         '')     sizesize=4
19163                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19164                 ;;
19165         *)      sizesize=$yyy
19166                 echo "Your $zzz size is $sizesize bytes."
19167                 ;;
19168         esac
19169 else
19170         sizesize=4
19171         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19172 fi
19173
19174
19175 : check for socklen_t
19176 echo " "
19177 echo "Checking to see if you have socklen_t..." >&4
19178 $cat >try.c <<EOCP
19179 #include <sys/types.h>
19180 #$d_socket HAS_SOCKET
19181 #ifdef HAS_SOCKET
19182 #include <sys/socket.h>
19183 #endif
19184 int main() { socklen_t x = 16; }
19185 EOCP
19186 set try
19187 if eval $compile; then
19188         val="$define"
19189         echo "You have socklen_t."
19190 else
19191         val="$undef"
19192         echo "You do not have socklen_t."
19193         case "$sizetype" in
19194         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19195         esac
19196 fi
19197 $rm -f try try.*
19198 set d_socklen_t
19199 eval $setvar
19200
19201 : see if this is a socks.h system
19202 set socks.h i_socks
19203 eval $inhdr
19204
19205 : check for type of the size argument to socket calls
19206 case "$d_socket" in
19207 "$define")
19208         $cat <<EOM
19209
19210 Checking to see what type is the last argument of accept().
19211 EOM
19212         yyy=''
19213         case "$d_socklen_t" in
19214         "$define") yyy="$yyy socklen_t"
19215         esac
19216         yyy="$yyy $sizetype int long unsigned"
19217         for xxx in $yyy; do
19218                 case "$socksizetype" in
19219                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19220                         case "$usesocks" in
19221                         "$define")
19222                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19223                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19224                                         socksizetype="$xxx"
19225                                 fi
19226                                 ;;
19227                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19228                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19229                                         socksizetype="$xxx"
19230                                 fi
19231                                 ;;
19232                         esac
19233                         ;;
19234                 esac
19235         done
19236 : In case none of those worked, prompt the user.
19237         case "$socksizetype" in
19238         '')     rp='What is the type for socket address structure sizes?'
19239                 dflt='int'
19240                 . ./myread
19241                 socksizetype=$ans
19242                 ;;
19243         esac
19244         ;;
19245 *)      : no sockets, so pick relatively harmless default
19246         socksizetype='int'
19247         ;;
19248 esac
19249
19250 : see what type is used for signed size_t
19251 set ssize_t ssizetype int stdio.h sys/types.h
19252 eval $typedef
19253 dflt="$ssizetype"
19254 $cat > try.c <<EOM
19255 #include <stdio.h>
19256 #$i_stdlib I_STDLIB
19257 #ifdef I_STDLIB
19258 #include <stdlib.h>
19259 #endif
19260 #include <sys/types.h>
19261 #define Size_t $sizetype
19262 #define SSize_t $dflt
19263 int main()
19264 {
19265         if (sizeof(Size_t) == sizeof(SSize_t))
19266                 printf("$dflt\n");
19267         else if (sizeof(Size_t) == sizeof(int))
19268                 printf("int\n");
19269         else 
19270                 printf("long\n");
19271         exit(0);
19272 }
19273 EOM
19274 echo " "
19275 set try
19276 if eval $compile_ok && $run ./try > /dev/null; then
19277         ssizetype=`$run ./try`
19278         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19279 else
19280         $cat >&4 <<EOM
19281 Help! I can't compile and run the ssize_t test program: please enlighten me!
19282 (This is probably a misconfiguration in your system or libraries, and
19283 you really ought to fix it.  Still, I'll try anyway.)
19284
19285 I need a type that is the same size as $sizetype, but is guaranteed to
19286 be signed.  Common values are ssize_t, int and long.
19287
19288 EOM
19289         rp="What signed type is the same size as $sizetype?"
19290         . ./myread
19291         ssizetype="$ans"
19292 fi
19293 $rm -f try try.*
19294
19295 : see what type of char stdio uses.
19296 echo " "
19297 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19298 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19299         echo "Your stdio uses unsigned chars." >&4
19300         stdchar="unsigned char"
19301 else
19302         echo "Your stdio uses signed chars." >&4
19303         stdchar="char"
19304 fi
19305 $rm -f stdioh
19306
19307
19308
19309 : see what type uids are declared as in the kernel
19310 echo " "
19311 echo "Looking for the type for user ids returned by getuid()."
19312 set uid_t uidtype xxx stdio.h sys/types.h
19313 eval $typedef
19314 case "$uidtype" in
19315 xxx)
19316         xxx=`./findhdr sys/user.h`
19317         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19318         case $1 in
19319         unsigned) dflt="$1 $2" ;;
19320         *) dflt="$1" ;;
19321         esac
19322         ;;
19323 *) dflt="$uidtype";;
19324 esac
19325 case "$uidtype" in
19326 uid_t)  echo "uid_t found." ;;
19327 *)      rp="What is the type for user ids returned by getuid()?"
19328         . ./myread
19329         uidtype="$ans"
19330         ;;
19331 esac
19332
19333 echo " "
19334 case "$uidtype" in
19335 *_t) zzz="$uidtype"     ;;
19336 *)   zzz="uid"          ;;
19337 esac
19338 echo "Checking the size of $zzz..." >&4 
19339 cat > try.c <<EOCP
19340 #include <sys/types.h>
19341 #include <stdio.h>
19342 #$i_stdlib I_STDLIB
19343 #ifdef I_STDLIB
19344 #include <stdlib.h>
19345 #endif
19346 int main() {
19347     printf("%d\n", (int)sizeof($uidtype));
19348     exit(0);
19349 }
19350 EOCP
19351 set try
19352 if eval $compile_ok; then
19353         yyy=`$run ./try`
19354         case "$yyy" in
19355         '')     uidsize=4
19356                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19357                 ;;
19358         *)      uidsize=$yyy
19359                 echo "Your $zzz is $uidsize bytes long."
19360                 ;;
19361         esac
19362 else
19363         uidsize=4
19364         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19365 fi
19366
19367 echo " "
19368 case "$uidtype" in
19369 *_t) zzz="$uidtype"     ;;
19370 *)   zzz="uid"          ;;
19371 esac
19372 echo "Checking the sign of $zzz..." >&4
19373 cat > try.c <<EOCP
19374 #include <sys/types.h>
19375 #include <stdio.h>
19376 int main() {
19377         $uidtype foo = -1;
19378         if (foo < 0)
19379                 printf("-1\n");
19380         else
19381                 printf("1\n");
19382 }
19383 EOCP
19384 set try
19385 if eval $compile; then
19386         yyy=`$run ./try`
19387         case "$yyy" in
19388         '')     uidsign=1
19389                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19390                 ;;
19391         *)      uidsign=$yyy
19392                 case "$uidsign" in
19393                  1) echo "Your $zzz is unsigned." ;;
19394                 -1) echo "Your $zzz is signed."   ;;
19395                 esac
19396                 ;;
19397         esac
19398 else
19399         uidsign=1
19400         echo "(I can't compile the test program--guessing unsigned.)" >&4
19401 fi
19402
19403
19404
19405 echo " "
19406 $echo "Checking the format string to be used for uids..." >&4
19407
19408 case "$uidsign" in
19409 -1)     if $test X"$uidsize" = X"$ivsize"; then
19410                 uidformat="$ivdformat"
19411         else
19412                 if $test X"$uidsize" = X"$longsize"; then
19413                         uidformat='"ld"'
19414                 else
19415                         if $test X"$uidsize" = X"$intsize"; then
19416                                 uidformat='"d"'
19417                         else
19418                                 if $test X"$uidsize" = X"$shortsize"; then
19419                                         uidformat='"hd"'
19420                                 fi
19421                         fi
19422                 fi
19423         fi
19424         ;;
19425 *)      if $test X"$uidsize" = X"$uvsize"; then
19426                 uidformat="$uvuformat"
19427         else
19428                 if $test X"$uidsize" = X"$longsize"; then
19429                         uidformat='"lu"'
19430                 else
19431                         if $test X"$uidsize" = X"$intsize"; then
19432                                 uidformat='"u"'
19433                         else
19434                                 if $test X"$uidsize" = X"$shortsize"; then
19435                                         uidformat='"hu"'
19436                                 fi
19437                         fi
19438                 fi
19439         fi
19440         ;;
19441 esac
19442
19443 : determine compiler compiler
19444 case "$yacc" in
19445 '')
19446         dflt=yacc;;
19447 *)
19448         dflt="$yacc";;
19449 esac
19450 echo " "
19451 comp='yacc'
19452 if $test -f "$byacc$_exe"; then
19453         dflt="$byacc"
19454         comp="byacc or $comp"
19455 fi
19456 if $test -f "$bison$_exe"; then
19457         comp="$comp or bison -y"
19458 fi
19459 rp="Which compiler compiler ($comp) shall I use?"
19460 . ./myread
19461 yacc="$ans"
19462 case "$yacc" in
19463 *bis*)
19464         case "$yacc" in
19465         *-y*) ;;
19466         *)
19467                 yacc="$yacc -y"
19468                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19469                 ;;
19470         esac
19471         ;;
19472 esac
19473
19474 : see if this is a fp.h system
19475 set fp.h i_fp
19476 eval $inhdr
19477
19478 : see if this is a fp_class.h system
19479 set fp_class.h i_fp_class
19480 eval $inhdr
19481
19482 : see if this is a ieeefp.h system
19483 case "$i_ieeefp" in
19484 '' ) set ieeefp.h i_ieeefp
19485      eval $inhdr
19486      ;;
19487 esac
19488
19489 : see if this is a libutil.h system
19490 set libutil.h i_libutil
19491 eval $inhdr
19492
19493 : see if mach cthreads are available
19494 if test "X$usethreads" = "X$define"; then
19495         set mach/cthreads.h i_machcthr
19496         eval $inhdr
19497 else
19498         i_machcthr="$undef"
19499 fi
19500
19501
19502
19503 : see if this is a math.h system
19504 set math.h i_math
19505 eval $inhdr
19506
19507 : see if this is a mntent.h system
19508 set mntent.h i_mntent
19509 eval $inhdr
19510
19511 : see if ndbm.h is available
19512 set ndbm.h t_ndbm
19513 eval $inhdr
19514
19515 case "$t_ndbm" in
19516 $undef)
19517     # Some Linux distributions such as RedHat 7.1 put the
19518     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19519     if $test -f /usr/include/gdbm/ndbm.h; then
19520         echo '<gdbm/ndbm.h> found.'
19521         ccflags="$ccflags -I/usr/include/gdbm"
19522         cppflags="$cppflags -I/usr/include/gdbm"
19523         t_ndbm=$define
19524     fi
19525     ;;
19526 esac
19527
19528 case "$t_ndbm" in
19529 $define)
19530         : see if dbm_open exists
19531         set dbm_open d_dbm_open
19532         eval $inlibc
19533         case "$d_dbm_open" in
19534         $undef)
19535                 t_ndbm="$undef"
19536                 echo "We won't be including <ndbm.h>"
19537                 ;;
19538         esac
19539         ;;
19540 esac
19541 val="$t_ndbm"
19542 set i_ndbm
19543 eval $setvar
19544
19545 : see if net/errno.h is available
19546 val=''
19547 set net/errno.h val
19548 eval $inhdr
19549
19550 : Unfortunately, it causes problems on some systems.  Arrgh.
19551 case "$val" in
19552 $define)
19553         cat > try.c <<'EOM'
19554 #include <stdio.h>
19555 #include <errno.h>
19556 #include <net/errno.h>
19557 int func()
19558 {
19559         return ENOTSOCK;
19560 }
19561 EOM
19562         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19563                 echo "We'll be including <net/errno.h>." >&4
19564         else
19565                 echo "We won't be including <net/errno.h>." >&4
19566                 val="$undef"
19567         fi
19568         $rm -f try.* try
19569         ;;
19570 esac
19571 set i_neterrno
19572 eval $setvar
19573
19574 : see if netinet/tcp.h is available
19575 set netinet/tcp.h i_netinettcp
19576 eval $inhdr
19577
19578 : see if this is a poll.h system
19579 set poll.h i_poll
19580 eval $inhdr
19581
19582 : see if this is a prot.h system
19583 set prot.h i_prot
19584 eval $inhdr
19585
19586 echo " "
19587 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19588 $cat <<'EOSH' > Cppsym.know
19589 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19590 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19591 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19592 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19593 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19594 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19595 bull c cadmus clipper CMU COFF COMPILER_VERSION
19596 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19597 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19598 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19599 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19600 GLIBC GLIBC_MINOR
19601 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19602 H3050R H3050RX hbullx20 hcx host_mips
19603 hp200 hp300 hp700 HP700 hp800 hp9000
19604 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19605 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19606 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19607 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19608 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19609 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19610 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19611 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19612 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19613 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19614 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19615 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19616 MATH_HAS_NO_SIDE_EFFECTS
19617 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19618 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19619 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19620 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19621 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19622 NetBSD news1500 news1700 news1800 news1900 news3700
19623 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19624 ns32016 ns32332 ns32k nsc32000
19625 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19626 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19627 pc532 pdp11 PGC PIC plexus PORTAR posix
19628 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19629 POSIX_C_SOURCE POSIX_SOURCE POWER
19630 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19631 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19632 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19633 sony sony_news sonyrisc sparc sparclite spectrum
19634 stardent stdc STDC_EXT stratos sun sun3 sun386
19635 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19636 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19637 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19638 sysV68 sysV88 Tek4132 Tek4300 titan
19639 TM3200 TM5400 TM5600
19640 tower tower32 tower32_200 tower32_600 tower32_700
19641 tower32_800 tower32_850 tss
19642 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19643 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19644 unix UNIX95 UNIX99 unixpc unos
19645 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19646 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19647 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19648 USGr4 USGr4_2
19649 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19650 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19651 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19652 z8000
19653 EOSH
19654 # Maybe put other stuff here too.
19655 cat <<EOSH >>Cppsym.know
19656 $osname
19657 EOSH
19658 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19659 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19660 $cat Cppsym.know > Cppsym.c
19661 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19662 $rm -f Cppsym.a Cppsym.b Cppsym.c
19663 cat <<EOSH > Cppsym
19664 $startsh
19665 if $test \$# -gt 0; then
19666     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19667     if $test -s Cppsym.got; then
19668         $rm -f Cppsym.got
19669         exit 0
19670     fi
19671     $rm -f Cppsym.got
19672     exit 1
19673 else
19674     $tr " " "$trnl" | ./Cppsym.try
19675     exit 0
19676 fi
19677 EOSH
19678 chmod +x Cppsym
19679 $eunicefix Cppsym
19680 cat <<EOSH > Cppsym.try
19681 $startsh
19682 cat <<'EOCP' > try.c
19683 #include <stdio.h>
19684 int main() {
19685 EOCP
19686 $awk \\
19687 EOSH
19688 cat <<'EOSH' >> Cppsym.try
19689 'length($1) > 0 {
19690     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19691     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19692     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19693     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19694 }'       >> try.c
19695 echo 'return 0;}' >> try.c
19696 EOSH
19697 cat <<EOSH >> Cppsym.try
19698 ccflags="$ccflags"
19699 case "$osname-$gccversion" in
19700 irix-) ccflags="\$ccflags -woff 1178" ;;
19701 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19702 esac
19703 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19704 EOSH
19705 chmod +x Cppsym.try
19706 $eunicefix Cppsym.try
19707 ./Cppsym < Cppsym.know > Cppsym.true
19708 : now check the C compiler for additional symbols
19709 postprocess_cc_v=''
19710 case "$osname" in
19711 aix) postprocess_cc_v="|$tr , ' '" ;;
19712 esac
19713 $cat >ccsym <<EOS
19714 $startsh
19715 $cat >tmp.c <<EOF
19716 extern int foo;
19717 EOF
19718 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19719 do
19720         case "\$i" in
19721         -D*) echo "\$i" | $sed 's/^-D//';;
19722         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19723         esac
19724 done
19725 $rm -f try.c
19726 EOS
19727 postprocess_cc_v=''
19728 chmod +x ccsym
19729 $eunicefix ccsym
19730 ./ccsym > ccsym1.raw
19731 if $test -s ccsym1.raw; then
19732        $sort ccsym1.raw | $uniq >ccsym.raw
19733 else
19734        mv ccsym1.raw ccsym.raw
19735 fi
19736
19737 $awk '/\=/ { print $0; next }
19738         { print $0"=1" }' ccsym.raw >ccsym.list
19739 $awk '/\=/ { print $0; next }
19740         { print $0"=1" }' Cppsym.true >ccsym.true
19741 $comm -13 ccsym.true ccsym.list >ccsym.own
19742 $comm -12 ccsym.true ccsym.list >ccsym.com
19743 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19744 also=''
19745 if $test -z ccsym.raw; then
19746         echo "Your C compiler doesn't seem to define any symbols!" >&4
19747         echo " "
19748         echo "However, your C preprocessor defines the following symbols:"
19749         $cat Cppsym.true
19750         ccsymbols=''
19751         cppsymbols=`$cat Cppsym.true`
19752         cppsymbols=`echo $cppsymbols`
19753         cppccsymbols="$cppsymbols"
19754 else
19755         if $test -s ccsym.com; then
19756                 echo "Your C compiler and pre-processor define these symbols:"
19757                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19758                 also='also '
19759                 symbols='ones'
19760                 cppccsymbols=`$cat ccsym.com`
19761                 cppccsymbols=`echo $cppccsymbols`
19762                 $test "$silent" || sleep 1
19763         fi
19764         if $test -s ccsym.cpp; then
19765                 $test "$also" && echo " "
19766                 echo "Your C pre-processor ${also}defines the following symbols:"
19767                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19768                 also='further '
19769                 cppsymbols=`$cat ccsym.cpp`
19770                 cppsymbols=`echo $cppsymbols`
19771                 $test "$silent" || sleep 1
19772         fi
19773         if $test -s ccsym.own; then
19774                 $test "$also" && echo " "
19775                 echo "Your C compiler ${also}defines the following cpp symbols:"
19776                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19777                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19778                 ccsymbols=`$cat ccsym.own`
19779                 ccsymbols=`echo $ccsymbols`
19780                 $test "$silent" || sleep 1
19781         fi
19782 fi
19783
19784 : see if this is a termio system
19785 val="$undef"
19786 val2="$undef"
19787 val3="$undef"
19788 if $test `./findhdr termios.h`; then
19789         set tcsetattr i_termios
19790         eval $inlibc
19791         val3="$i_termios"
19792 fi
19793 echo " "
19794 case "$val3" in
19795 "$define") echo "You have POSIX termios.h... good!" >&4;;
19796 *) if ./Cppsym pyr; then
19797                 case "`/bin/universe`" in
19798                 ucb) if $test `./findhdr sgtty.h`; then
19799                                 val2="$define"
19800                                 echo "<sgtty.h> found." >&4
19801                         else
19802                                 echo "System is pyramid with BSD universe."
19803                                 echo "<sgtty.h> not found--you could have problems." >&4
19804                         fi;;
19805                 *) if $test `./findhdr termio.h`; then
19806                                 val="$define"
19807                                 echo "<termio.h> found." >&4
19808                         else
19809                                 echo "System is pyramid with USG universe."
19810                                 echo "<termio.h> not found--you could have problems." >&4
19811                         fi;;
19812                 esac
19813         elif ./usg; then
19814                 if $test `./findhdr termio.h`; then
19815                         echo "<termio.h> found." >&4
19816                         val="$define"
19817                 elif $test `./findhdr sgtty.h`; then
19818                         echo "<sgtty.h> found." >&4
19819                         val2="$define"
19820                 else
19821 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19822                 fi
19823         else
19824                 if $test `./findhdr sgtty.h`; then
19825                         echo "<sgtty.h> found." >&4
19826                         val2="$define"
19827                 elif $test `./findhdr termio.h`; then
19828                         echo "<termio.h> found." >&4
19829                         val="$define"
19830                 else
19831 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19832                 fi
19833         fi;;
19834 esac
19835 set i_termio; eval $setvar
19836 val=$val2; set i_sgtty; eval $setvar
19837 val=$val3; set i_termios; eval $setvar
19838
19839 : see if stddef is available
19840 set stddef.h i_stddef
19841 eval $inhdr
19842
19843 : see if this is a sunmath.h system
19844 set sunmath.h i_sunmath
19845 eval $inhdr
19846
19847 : see if sys/access.h is available
19848 set sys/access.h i_sysaccess
19849 eval $inhdr
19850
19851 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19852 set sys/filio.h i_sysfilio
19853 eval $inhdr
19854 echo " "
19855 if $test `./findhdr sys/ioctl.h`; then
19856         val="$define"
19857         echo '<sys/ioctl.h> found.' >&4
19858 else
19859         val="$undef"
19860         if $test $i_sysfilio = "$define"; then
19861             echo '<sys/ioctl.h> NOT found.' >&4
19862         else
19863                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19864                 $test $i_termio = "$define" && xxx="termio.h"
19865                 $test $i_termios = "$define" && xxx="termios.h"
19866 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19867         fi
19868 fi
19869 set i_sysioctl
19870 eval $setvar
19871
19872 : see if socket ioctl defs are in sys/sockio.h
19873 echo " "
19874 xxx=`./findhdr sys/sockio.h`
19875 if $test "$xxx"; then
19876         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19877                 val="$define"
19878                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19879         else
19880                 val="$undef"
19881                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19882         fi
19883 else
19884         val="$undef"
19885         $cat <<EOM
19886 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19887 EOM
19888 fi
19889 set i_syssockio
19890 eval $setvar
19891
19892
19893 : see if this is a syslog.h system
19894 set syslog.h i_syslog
19895 eval $inhdr
19896
19897
19898 : see if this is a sys/mode.h system
19899 set sys/mode.h i_sysmode
19900 eval $inhdr
19901
19902 : see if sys/resource.h has to be included
19903 set sys/resource.h i_sysresrc
19904 eval $inhdr
19905
19906 : see if sys/security.h is available
19907 set sys/security.h i_syssecrt
19908 eval $inhdr
19909
19910 : see if this is a sys/statvfs.h system
19911 set sys/statvfs.h i_sysstatvfs
19912 eval $inhdr
19913
19914 : see if this is a sys/un.h system
19915 set sys/un.h i_sysun
19916 eval $inhdr
19917
19918
19919 : see if this is a sys/utsname.h system
19920 set sys/utsname.h i_sysutsname
19921 eval $inhdr
19922
19923 : see if this is a syswait system
19924 set sys/wait.h i_syswait
19925 eval $inhdr
19926
19927 : see if this is a ustat.h system
19928 set ustat.h i_ustat
19929 eval $inhdr
19930
19931 : see if this is an utime system
19932 set utime.h i_utime
19933 eval $inhdr
19934
19935 : see if this is a values.h system
19936 set values.h i_values
19937 eval $inhdr
19938
19939 : see if this is a vfork system
19940 case "$d_vfork" in
19941 "$define")
19942         set vfork.h i_vfork
19943         eval $inhdr
19944         ;;
19945 *)
19946         i_vfork="$undef"
19947         ;;
19948 esac
19949
19950 : see if gdbm.h is available
19951 set gdbm.h t_gdbm
19952 eval $inhdr
19953 case "$t_gdbm" in
19954 $define)
19955         : see if gdbm_open exists
19956         set gdbm_open d_gdbm_open
19957         eval $inlibc
19958         case "$d_gdbm_open" in
19959         $undef)
19960                 t_gdbm="$undef"
19961                 echo "We won't be including <gdbm.h>"
19962                 ;;
19963         esac
19964         ;;
19965 esac
19966 val="$t_gdbm"
19967 set i_gdbm
19968 eval $setvar
19969
19970 echo " "
19971 echo "Looking for extensions..." >&4
19972 : If we are using the old config.sh, known_extensions may contain
19973 : old or inaccurate or duplicate values.
19974 known_extensions=''
19975 nonxs_extensions=''
19976 : We do not use find because it might not be available.
19977 : We do not just use MANIFEST because the user may have dropped
19978 : some additional extensions into the source tree and expect them
19979 : to be built.
19980
19981 : Function to recursively find available extensions, ignoring DynaLoader
19982 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19983 find_extensions='
19984     for xxx in *; do
19985        case "$xxx" in
19986            DynaLoader|dynaload) ;;
19987            *)
19988            if $test -f $xxx/$xxx.xs; then
19989                known_extensions="$known_extensions $1$xxx";
19990            elif $test -f $xxx/Makefile.PL; then
19991                nonxs_extensions="$nonxs_extensions $1$xxx";
19992            else
19993                if $test -d $xxx -a $# -lt 10; then
19994                    set $1$xxx/ $*;
19995                    cd "$xxx";
19996                    eval $find_extensions;
19997                    cd ..;
19998                    shift;
19999                fi;
20000            fi
20001            ;;
20002        esac;
20003     done'
20004 tdir=`pwd`
20005 cd "$rsrc/ext"
20006 set X
20007 shift
20008 eval $find_extensions
20009 # Special case:  Add in threads/shared since it is not picked up by the
20010 # recursive find above (and adding in general recursive finding breaks
20011 # SDBM_File/sdbm).  A.D.  10/25/2001.
20012 known_extensions="$known_extensions threads/shared"
20013 set X $nonxs_extensions
20014 shift
20015 nonxs_extensions="$*"
20016 set X $known_extensions
20017 shift
20018 known_extensions="$*"
20019 cd "$tdir"
20020
20021 : Now see which are supported on this system.
20022 avail_ext=''
20023 for xxx in $known_extensions ; do
20024         case "$xxx" in
20025         DB_File|db_file)
20026                 case "$i_db" in
20027                 $define) avail_ext="$avail_ext $xxx" ;;
20028                 esac
20029                 ;;
20030         GDBM_File|gdbm_fil)
20031                 case "$i_gdbm" in 
20032                 $define) avail_ext="$avail_ext $xxx" ;;
20033                 esac
20034                 ;;
20035         I18N/Langinfo|i18n_lan)
20036                 case "$i_langinfo$d_nl_langinfo" in 
20037                 $define$define) avail_ext="$avail_ext $xxx" ;;
20038                 esac
20039                 ;;
20040         NDBM_File|ndbm_fil)
20041                 case "$i_ndbm" in
20042                 $define)
20043                     case "$osname-$use64bitint" in
20044                     hpux-define)
20045                         case "$libs" in
20046                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20047                         esac
20048                         ;;
20049                     *) avail_ext="$avail_ext $xxx" ;;
20050                     esac
20051                     ;;
20052                 esac
20053                 ;;
20054         ODBM_File|odbm_fil) 
20055                 case "${i_dbm}${i_rpcsvcdbm}" in
20056                 *"${define}"*)
20057                     case "$osname-$use64bitint" in
20058                     hpux-define)
20059                         case "$libs" in
20060                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20061                         esac
20062                         ;;
20063                     *) avail_ext="$avail_ext $xxx" ;;
20064                     esac
20065                     ;;
20066                 esac
20067                 ;;
20068         POSIX|posix)
20069                 case "$useposix" in
20070                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20071                 esac
20072                 ;;
20073         Opcode|opcode)
20074                 case "$useopcode" in
20075                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20076                 esac
20077                 ;;
20078         Socket|socket)
20079                 case "$d_socket" in 
20080                 true|$define|y)
20081                     case "$osname" in
20082                     beos) ;; # not unless BONE
20083                     *) avail_ext="$avail_ext $xxx" ;;
20084                     esac
20085                     ;;
20086                 esac
20087                 ;;
20088         Sys/Syslog|sys/syslog)
20089                 : XXX syslog requires socket
20090                 case "$d_socket" in 
20091                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20092                 esac
20093                 ;;
20094         Thread|thread)
20095                 case "$usethreads" in
20096                 true|$define|y)
20097                         case "$useithreads" in
20098                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20099                         esac
20100                 esac
20101                 ;;
20102         XS/APItest|xs/apitest)
20103                 # This is just for testing.  Skip it unless we have dynamic loading.
20104
20105                 case "$usedl" in
20106                 $define) avail_ext="$avail_ext $xxx" ;;
20107                 esac
20108                 ;;
20109         XS/Typemap|xs/typemap)
20110                 # This is just for testing.  Skip it unless we have dynamic loading.
20111                 case "$usedl" in
20112                 $define) avail_ext="$avail_ext $xxx" ;;
20113                 esac
20114                 ;;
20115         threads|threads/shared)
20116                 # threads and threads::shared are special cases.
20117                 # To stop people from asking "Perl 5.8.0 was supposed
20118                 # to have this new fancy threads implementation but my
20119                 # perl doesn't have it" and from people trying to
20120                 # (re)install the threads module using CPAN.pm and
20121                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20122                 # the threads.pm and threads/shared.pm will always be
20123                 # there, croaking informatively ("you need to rebuild
20124                 # all of Perl with threads, sorry") when threads haven't
20125                 # been compiled in.
20126                 # --jhi
20127                 avail_ext="$avail_ext $xxx"
20128                 ;;
20129         IPC/SysV|ipc/sysv)
20130                 : XXX Do we need a useipcsysv variable here
20131                 case "${d_msg}${d_sem}${d_shm}" in 
20132                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20133                 esac
20134                 ;;
20135         *)      avail_ext="$avail_ext $xxx"
20136                 ;;
20137         esac
20138 done
20139
20140 set X $avail_ext
20141 shift
20142 avail_ext="$*"
20143
20144 case "$onlyextensions" in
20145 '') ;;
20146 *)  keepextensions=''
20147     echo "You have requested that only certains extensions be included..." >&4
20148     for i in $onlyextensions; do
20149         case " $avail_ext " in
20150         *" $i "*)
20151             echo "Keeping extension $i."
20152             keepextensions="$keepextensions $i"
20153             ;;
20154         *) echo "Ignoring extension $i." ;;
20155         esac
20156     done
20157     avail_ext="$keepextensions"
20158     ;;
20159 esac
20160
20161 case "$noextensions" in
20162 '') ;;
20163 *)  keepextensions=''
20164     echo "You have requested that certain extensions be ignored..." >&4
20165     for i in $avail_ext; do
20166         case " $noextensions " in
20167         *" $i "*) echo "Ignoring extension $i." ;;
20168         *) echo "Keeping extension $i.";
20169            keepextensions="$keepextensions $i"
20170            ;;
20171         esac
20172     done
20173     avail_ext="$keepextensions"
20174     ;;
20175 esac
20176
20177 : Now see which nonxs extensions are supported on this system.
20178 : For now assume all are.
20179 nonxs_ext=''
20180 for xxx in $nonxs_extensions ; do
20181         case "$xxx" in
20182         *)      nonxs_ext="$nonxs_ext $xxx"
20183                 ;;
20184         esac
20185 done
20186
20187 set X $nonxs_ext
20188 shift
20189 nonxs_ext="$*"
20190
20191 case $usedl in
20192 $define)
20193         $cat <<EOM
20194 A number of extensions are supplied with $package.  You may choose to
20195 compile these extensions for dynamic loading (the default), compile
20196 them into the $package executable (static loading), or not include
20197 them at all.  Answer "none" to include no extensions.
20198 Note that DynaLoader is always built and need not be mentioned here.
20199
20200 EOM
20201         case "$dynamic_ext" in
20202         '')
20203                 : Exclude those listed in static_ext
20204                 dflt=''
20205                 for xxx in $avail_ext; do
20206                         case " $static_ext " in
20207                         *" $xxx "*) ;;
20208                         *) dflt="$dflt $xxx" ;;
20209                         esac
20210                 done
20211                 set X $dflt
20212                 shift
20213                 dflt="$*"
20214                 ;;
20215         *)      dflt="$dynamic_ext"
20216                 # Perhaps we are reusing an old out-of-date config.sh.
20217                 case "$hint" in
20218                 previous)
20219                         if test X"$dynamic_ext" != X"$avail_ext"; then
20220                                 $cat <<EOM
20221 NOTICE:  Your previous config.sh list may be incorrect. 
20222 The extensions now available to you are 
20223         ${avail_ext}
20224 but the default list from your previous config.sh is
20225         ${dynamic_ext} 
20226
20227 EOM
20228                         fi
20229                         ;;
20230                 esac
20231                 ;;
20232         esac
20233         case "$dflt" in
20234         '')     dflt=none;;
20235         esac
20236         rp="What extensions do you wish to load dynamically?"
20237         . ./myread
20238         case "$ans" in
20239         none) dynamic_ext=' ' ;;
20240         *) dynamic_ext="$ans" ;;
20241         esac
20242
20243         case "$static_ext" in
20244         '')
20245                 : Exclude those already listed in dynamic linking
20246                 dflt=''
20247                 for xxx in $avail_ext; do
20248                         case " $dynamic_ext " in
20249                         *" $xxx "*) ;;
20250                         *) dflt="$dflt $xxx" ;;
20251                         esac
20252                 done
20253                 set X $dflt
20254                 shift
20255                 dflt="$*"
20256                 ;;
20257         *)  dflt="$static_ext" 
20258                 ;;
20259         esac
20260
20261         case "$dflt" in
20262         '')     dflt=none;;
20263         esac
20264         rp="What extensions do you wish to load statically?"
20265         . ./myread
20266         case "$ans" in
20267         none) static_ext=' ' ;;
20268         *) static_ext="$ans" ;;
20269         esac
20270         ;;
20271 *)
20272         $cat <<EOM
20273 A number of extensions are supplied with $package.  Answer "none" 
20274 to include no extensions. 
20275 Note that DynaLoader is always built and need not be mentioned here.
20276
20277 EOM
20278         case "$static_ext" in
20279         '') dflt="$avail_ext" ;;
20280         *)      dflt="$static_ext"
20281                 # Perhaps we are reusing an old out-of-date config.sh.
20282                 case "$hint" in
20283                 previous)
20284                         if test X"$static_ext" != X"$avail_ext"; then
20285                                 $cat <<EOM
20286 NOTICE:  Your previous config.sh list may be incorrect. 
20287 The extensions now available to you are 
20288         ${avail_ext}
20289 but the default list from your previous config.sh is
20290         ${static_ext} 
20291
20292 EOM
20293                         fi
20294                         ;;
20295                 esac
20296                 ;;
20297         esac
20298         : Exclude those that are not xs extensions
20299         case "$dflt" in
20300         '')     dflt=none;;
20301         esac
20302         rp="What extensions do you wish to include?"
20303         . ./myread
20304         case "$ans" in
20305         none) static_ext=' ' ;;
20306         *) static_ext="$ans" ;;
20307         esac
20308         ;;
20309 esac
20310 #        
20311 # Encode is a special case.  If we are building Encode as a static
20312 # extension, we need to explicitly list its subextensions as well.
20313 # For other nested extensions, this is handled automatically by
20314 # the appropriate Makefile.PL.
20315 case " $static_ext " in
20316         *" Encode "*) # Add the subextensions of Encode
20317         cd "$rsrc/ext"
20318         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20319                 static_ext="$static_ext Encode/$xxx"
20320         done
20321         cd "$tdir"
20322         ;;
20323 esac
20324
20325 set X $dynamic_ext $static_ext $nonxs_ext
20326 shift
20327 extensions="$*"
20328
20329 # Sanity check:  We require an extension suitable for use with
20330 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20331 # should show up as failures in the test suite, but it's helpful to
20332 # catch them now.) The 'extensions' list is normally sorted
20333 # alphabetically, so we need to accept either
20334 #    DB_File ... Fcntl ... IO  ....
20335 # or something like
20336 #    Fcntl ... NDBM_File ... IO  ....
20337 case " $extensions"  in
20338 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20339 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20340 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20341 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20342    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20343    ;;
20344 esac
20345
20346 : Remove libraries needed only for extensions
20347 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20348 : The exception is SunOS 4.x, which needs them.
20349 case "${osname}X${osvers}" in
20350 sunos*X4*)
20351     perllibs="$libs"
20352     ;;
20353 *) case "$usedl" in
20354     $define|true|[yY]*)
20355             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20356             shift
20357             perllibs="$*"
20358             ;;
20359     *)  perllibs="$libs"
20360             ;;
20361     esac
20362     ;;
20363 esac
20364
20365 : Remove build directory name from cppstdin so it can be used from
20366 : either the present location or the final installed location.
20367 echo " "
20368 : Get out of the UU directory to get correct path name.
20369 cd ..
20370 case "$cppstdin" in
20371 `pwd`/cppstdin)
20372         echo "Stripping down cppstdin path name"
20373         cppstdin=cppstdin
20374         ;;
20375 esac
20376 cd UU
20377
20378 : end of configuration questions
20379 echo " "
20380 echo "End of configuration questions."
20381 echo " "
20382
20383 : back to where it started
20384 if test -d ../UU; then
20385         cd ..
20386 fi
20387
20388 : configuration may be patched via a 'config.arch' file
20389 if $test -f config.arch; then
20390         echo "I see a config.arch file, loading it."
20391         . ./config.arch
20392 fi
20393
20394 : configuration may be patched via a 'config.over' file
20395 if $test -f config.over; then
20396         echo " "
20397         dflt=y
20398         rp='I see a config.over file.  Do you wish to load it?'
20399         . UU/myread
20400         case "$ans" in
20401         n*) echo "OK, I'll ignore it.";;
20402         *)      . ./config.over
20403                 echo "Configuration override changes have been loaded."
20404                 ;;
20405         esac
20406 fi
20407
20408 : in case they want portability, strip down executable paths
20409 case "$d_portable" in
20410 "$define")
20411         echo " "
20412         echo "Stripping down executable paths..." >&4
20413         for file in $loclist $trylist; do
20414                 eval temp=\$$file
20415                 eval $file=`basename $temp`
20416         done
20417         ;;
20418 esac
20419
20420 : create config.sh file
20421 echo " "
20422 echo "Creating config.sh..." >&4
20423 $spitshell <<EOT >config.sh
20424 $startsh
20425 #
20426 # This file was produced by running the Configure script. It holds all the
20427 # definitions figured out by Configure. Should you modify one of these values,
20428 # do not forget to propagate your changes by running "Configure -der". You may
20429 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20430 #
20431
20432 # Package name      : $package
20433 # Source directory  : $src
20434 # Configuration time: $cf_time
20435 # Configured by     : $cf_by
20436 # Target system     : $myuname
20437
20438 Author='$Author'
20439 Date='$Date'
20440 Header='$Header'
20441 Id='$Id'
20442 Locker='$Locker'
20443 Log='$Log'
20444 Mcc='$Mcc'
20445 RCSfile='$RCSfile'
20446 Revision='$Revision'
20447 Source='$Source'
20448 State='$State'
20449 _a='$_a'
20450 _exe='$_exe'
20451 _o='$_o'
20452 afs='$afs'
20453 afsroot='$afsroot'
20454 alignbytes='$alignbytes'
20455 ansi2knr='$ansi2knr'
20456 aphostname='$aphostname'
20457 api_revision='$api_revision'
20458 api_subversion='$api_subversion'
20459 api_version='$api_version'
20460 api_versionstring='$api_versionstring'
20461 ar='$ar'
20462 archlib='$archlib'
20463 archlibexp='$archlibexp'
20464 archname64='$archname64'
20465 archname='$archname'
20466 archobjs='$archobjs'
20467 asctime_r_proto='$asctime_r_proto'
20468 awk='$awk'
20469 baserev='$baserev'
20470 bash='$bash'
20471 bin='$bin'
20472 binexp='$binexp'
20473 bison='$bison'
20474 byacc='$byacc'
20475 byteorder='$byteorder'
20476 c='$c'
20477 castflags='$castflags'
20478 cat='$cat'
20479 cc='$cc'
20480 cccdlflags='$cccdlflags'
20481 ccdlflags='$ccdlflags'
20482 ccflags='$ccflags'
20483 ccflags_uselargefiles='$ccflags_uselargefiles'
20484 ccname='$ccname'
20485 ccsymbols='$ccsymbols'
20486 ccversion='$ccversion'
20487 cf_by='$cf_by'
20488 cf_email='$cf_email'
20489 cf_time='$cf_time'
20490 charsize='$charsize'
20491 chgrp='$chgrp'
20492 chmod='$chmod'
20493 chown='$chown'
20494 clocktype='$clocktype'
20495 comm='$comm'
20496 compress='$compress'
20497 contains='$contains'
20498 cp='$cp'
20499 cpio='$cpio'
20500 cpp='$cpp'
20501 cpp_stuff='$cpp_stuff'
20502 cppccsymbols='$cppccsymbols'
20503 cppflags='$cppflags'
20504 cpplast='$cpplast'
20505 cppminus='$cppminus'
20506 cpprun='$cpprun'
20507 cppstdin='$cppstdin'
20508 cppsymbols='$cppsymbols'
20509 crypt_r_proto='$crypt_r_proto'
20510 cryptlib='$cryptlib'
20511 csh='$csh'
20512 ctermid_r_proto='$ctermid_r_proto'
20513 ctime_r_proto='$ctime_r_proto'
20514 d_Gconvert='$d_Gconvert'
20515 d_PRIEUldbl='$d_PRIEUldbl'
20516 d_PRIFUldbl='$d_PRIFUldbl'
20517 d_PRIGUldbl='$d_PRIGUldbl'
20518 d_PRIXU64='$d_PRIXU64'
20519 d_PRId64='$d_PRId64'
20520 d_PRIeldbl='$d_PRIeldbl'
20521 d_PRIfldbl='$d_PRIfldbl'
20522 d_PRIgldbl='$d_PRIgldbl'
20523 d_PRIi64='$d_PRIi64'
20524 d_PRIo64='$d_PRIo64'
20525 d_PRIu64='$d_PRIu64'
20526 d_PRIx64='$d_PRIx64'
20527 d_SCNfldbl='$d_SCNfldbl'
20528 d__fwalk='$d__fwalk'
20529 d_access='$d_access'
20530 d_accessx='$d_accessx'
20531 d_aintl='$d_aintl'
20532 d_alarm='$d_alarm'
20533 d_archlib='$d_archlib'
20534 d_asctime_r='$d_asctime_r'
20535 d_atolf='$d_atolf'
20536 d_atoll='$d_atoll'
20537 d_attribut='$d_attribut'
20538 d_bcmp='$d_bcmp'
20539 d_bcopy='$d_bcopy'
20540 d_bsd='$d_bsd'
20541 d_bsdgetpgrp='$d_bsdgetpgrp'
20542 d_bsdsetpgrp='$d_bsdsetpgrp'
20543 d_bzero='$d_bzero'
20544 d_casti32='$d_casti32'
20545 d_castneg='$d_castneg'
20546 d_charvspr='$d_charvspr'
20547 d_chown='$d_chown'
20548 d_chroot='$d_chroot'
20549 d_chsize='$d_chsize'
20550 d_class='$d_class'
20551 d_closedir='$d_closedir'
20552 d_cmsghdr_s='$d_cmsghdr_s'
20553 d_const='$d_const'
20554 d_copysignl='$d_copysignl'
20555 d_crypt='$d_crypt'
20556 d_crypt_r='$d_crypt_r'
20557 d_csh='$d_csh'
20558 d_ctermid_r='$d_ctermid_r'
20559 d_ctime_r='$d_ctime_r'
20560 d_cuserid='$d_cuserid'
20561 d_dbl_dig='$d_dbl_dig'
20562 d_dbminitproto='$d_dbminitproto'
20563 d_difftime='$d_difftime'
20564 d_dirfd='$d_dirfd'
20565 d_dirnamlen='$d_dirnamlen'
20566 d_dlerror='$d_dlerror'
20567 d_dlopen='$d_dlopen'
20568 d_dlsymun='$d_dlsymun'
20569 d_dosuid='$d_dosuid'
20570 d_drand48_r='$d_drand48_r'
20571 d_drand48proto='$d_drand48proto'
20572 d_dup2='$d_dup2'
20573 d_eaccess='$d_eaccess'
20574 d_endgrent='$d_endgrent'
20575 d_endgrent_r='$d_endgrent_r'
20576 d_endhent='$d_endhent'
20577 d_endhostent_r='$d_endhostent_r'
20578 d_endnent='$d_endnent'
20579 d_endnetent_r='$d_endnetent_r'
20580 d_endpent='$d_endpent'
20581 d_endprotoent_r='$d_endprotoent_r'
20582 d_endpwent='$d_endpwent'
20583 d_endpwent_r='$d_endpwent_r'
20584 d_endsent='$d_endsent'
20585 d_endservent_r='$d_endservent_r'
20586 d_eofnblk='$d_eofnblk'
20587 d_eunice='$d_eunice'
20588 d_faststdio='$d_faststdio'
20589 d_fchdir='$d_fchdir'
20590 d_fchmod='$d_fchmod'
20591 d_fchown='$d_fchown'
20592 d_fcntl='$d_fcntl'
20593 d_fcntl_can_lock='$d_fcntl_can_lock'
20594 d_fd_macros='$d_fd_macros'
20595 d_fd_set='$d_fd_set'
20596 d_fds_bits='$d_fds_bits'
20597 d_fgetpos='$d_fgetpos'
20598 d_finite='$d_finite'
20599 d_finitel='$d_finitel'
20600 d_flexfnam='$d_flexfnam'
20601 d_flock='$d_flock'
20602 d_flockproto='$d_flockproto'
20603 d_fork='$d_fork'
20604 d_fp_class='$d_fp_class'
20605 d_fpathconf='$d_fpathconf'
20606 d_fpclass='$d_fpclass'
20607 d_fpclassify='$d_fpclassify'
20608 d_fpclassl='$d_fpclassl'
20609 d_fpos64_t='$d_fpos64_t'
20610 d_frexpl='$d_frexpl'
20611 d_fs_data_s='$d_fs_data_s'
20612 d_fseeko='$d_fseeko'
20613 d_fsetpos='$d_fsetpos'
20614 d_fstatfs='$d_fstatfs'
20615 d_fstatvfs='$d_fstatvfs'
20616 d_fsync='$d_fsync'
20617 d_ftello='$d_ftello'
20618 d_ftime='$d_ftime'
20619 d_getcwd='$d_getcwd'
20620 d_getespwnam='$d_getespwnam'
20621 d_getfsstat='$d_getfsstat'
20622 d_getgrent='$d_getgrent'
20623 d_getgrent_r='$d_getgrent_r'
20624 d_getgrgid_r='$d_getgrgid_r'
20625 d_getgrnam_r='$d_getgrnam_r'
20626 d_getgrps='$d_getgrps'
20627 d_gethbyaddr='$d_gethbyaddr'
20628 d_gethbyname='$d_gethbyname'
20629 d_gethent='$d_gethent'
20630 d_gethname='$d_gethname'
20631 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20632 d_gethostbyname_r='$d_gethostbyname_r'
20633 d_gethostent_r='$d_gethostent_r'
20634 d_gethostprotos='$d_gethostprotos'
20635 d_getitimer='$d_getitimer'
20636 d_getlogin='$d_getlogin'
20637 d_getlogin_r='$d_getlogin_r'
20638 d_getmnt='$d_getmnt'
20639 d_getmntent='$d_getmntent'
20640 d_getnbyaddr='$d_getnbyaddr'
20641 d_getnbyname='$d_getnbyname'
20642 d_getnent='$d_getnent'
20643 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20644 d_getnetbyname_r='$d_getnetbyname_r'
20645 d_getnetent_r='$d_getnetent_r'
20646 d_getnetprotos='$d_getnetprotos'
20647 d_getpagsz='$d_getpagsz'
20648 d_getpbyname='$d_getpbyname'
20649 d_getpbynumber='$d_getpbynumber'
20650 d_getpent='$d_getpent'
20651 d_getpgid='$d_getpgid'
20652 d_getpgrp2='$d_getpgrp2'
20653 d_getpgrp='$d_getpgrp'
20654 d_getppid='$d_getppid'
20655 d_getprior='$d_getprior'
20656 d_getprotobyname_r='$d_getprotobyname_r'
20657 d_getprotobynumber_r='$d_getprotobynumber_r'
20658 d_getprotoent_r='$d_getprotoent_r'
20659 d_getprotoprotos='$d_getprotoprotos'
20660 d_getprpwnam='$d_getprpwnam'
20661 d_getpwent='$d_getpwent'
20662 d_getpwent_r='$d_getpwent_r'
20663 d_getpwnam_r='$d_getpwnam_r'
20664 d_getpwuid_r='$d_getpwuid_r'
20665 d_getsbyname='$d_getsbyname'
20666 d_getsbyport='$d_getsbyport'
20667 d_getsent='$d_getsent'
20668 d_getservbyname_r='$d_getservbyname_r'
20669 d_getservbyport_r='$d_getservbyport_r'
20670 d_getservent_r='$d_getservent_r'
20671 d_getservprotos='$d_getservprotos'
20672 d_getspnam='$d_getspnam'
20673 d_getspnam_r='$d_getspnam_r'
20674 d_gettimeod='$d_gettimeod'
20675 d_gmtime_r='$d_gmtime_r'
20676 d_gnulibc='$d_gnulibc'
20677 d_grpasswd='$d_grpasswd'
20678 d_hasmntopt='$d_hasmntopt'
20679 d_htonl='$d_htonl'
20680 d_ilogbl='$d_ilogbl'
20681 d_index='$d_index'
20682 d_inetaton='$d_inetaton'
20683 d_int64_t='$d_int64_t'
20684 d_isascii='$d_isascii'
20685 d_isfinite='$d_isfinite'
20686 d_isinf='$d_isinf'
20687 d_isnan='$d_isnan'
20688 d_isnanl='$d_isnanl'
20689 d_killpg='$d_killpg'
20690 d_lchown='$d_lchown'
20691 d_ldbl_dig='$d_ldbl_dig'
20692 d_link='$d_link'
20693 d_localtime_r='$d_localtime_r'
20694 d_locconv='$d_locconv'
20695 d_lockf='$d_lockf'
20696 d_longdbl='$d_longdbl'
20697 d_longlong='$d_longlong'
20698 d_lseekproto='$d_lseekproto'
20699 d_lstat='$d_lstat'
20700 d_madvise='$d_madvise'
20701 d_mblen='$d_mblen'
20702 d_mbstowcs='$d_mbstowcs'
20703 d_mbtowc='$d_mbtowc'
20704 d_memchr='$d_memchr'
20705 d_memcmp='$d_memcmp'
20706 d_memcpy='$d_memcpy'
20707 d_memmove='$d_memmove'
20708 d_memset='$d_memset'
20709 d_mkdir='$d_mkdir'
20710 d_mkdtemp='$d_mkdtemp'
20711 d_mkfifo='$d_mkfifo'
20712 d_mkstemp='$d_mkstemp'
20713 d_mkstemps='$d_mkstemps'
20714 d_mktime='$d_mktime'
20715 d_mmap='$d_mmap'
20716 d_modfl='$d_modfl'
20717 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20718 d_modflproto='$d_modflproto'
20719 d_mprotect='$d_mprotect'
20720 d_msg='$d_msg'
20721 d_msg_ctrunc='$d_msg_ctrunc'
20722 d_msg_dontroute='$d_msg_dontroute'
20723 d_msg_oob='$d_msg_oob'
20724 d_msg_peek='$d_msg_peek'
20725 d_msg_proxy='$d_msg_proxy'
20726 d_msgctl='$d_msgctl'
20727 d_msgget='$d_msgget'
20728 d_msghdr_s='$d_msghdr_s'
20729 d_msgrcv='$d_msgrcv'
20730 d_msgsnd='$d_msgsnd'
20731 d_msync='$d_msync'
20732 d_munmap='$d_munmap'
20733 d_mymalloc='$d_mymalloc'
20734 d_nice='$d_nice'
20735 d_nl_langinfo='$d_nl_langinfo'
20736 d_nv_preserves_uv='$d_nv_preserves_uv'
20737 d_off64_t='$d_off64_t'
20738 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20739 d_oldpthreads='$d_oldpthreads'
20740 d_oldsock='$d_oldsock'
20741 d_open3='$d_open3'
20742 d_pathconf='$d_pathconf'
20743 d_pause='$d_pause'
20744 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20745 d_phostname='$d_phostname'
20746 d_pipe='$d_pipe'
20747 d_poll='$d_poll'
20748 d_portable='$d_portable'
20749 d_procselfexe='$d_procselfexe'
20750 d_pthread_atfork='$d_pthread_atfork'
20751 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20752 d_pthread_yield='$d_pthread_yield'
20753 d_pwage='$d_pwage'
20754 d_pwchange='$d_pwchange'
20755 d_pwclass='$d_pwclass'
20756 d_pwcomment='$d_pwcomment'
20757 d_pwexpire='$d_pwexpire'
20758 d_pwgecos='$d_pwgecos'
20759 d_pwpasswd='$d_pwpasswd'
20760 d_pwquota='$d_pwquota'
20761 d_qgcvt='$d_qgcvt'
20762 d_quad='$d_quad'
20763 d_random_r='$d_random_r'
20764 d_readdir64_r='$d_readdir64_r'
20765 d_readdir='$d_readdir'
20766 d_readdir_r='$d_readdir_r'
20767 d_readlink='$d_readlink'
20768 d_readv='$d_readv'
20769 d_recvmsg='$d_recvmsg'
20770 d_rename='$d_rename'
20771 d_rewinddir='$d_rewinddir'
20772 d_rmdir='$d_rmdir'
20773 d_safebcpy='$d_safebcpy'
20774 d_safemcpy='$d_safemcpy'
20775 d_sanemcmp='$d_sanemcmp'
20776 d_sbrkproto='$d_sbrkproto'
20777 d_scalbnl='$d_scalbnl'
20778 d_sched_yield='$d_sched_yield'
20779 d_scm_rights='$d_scm_rights'
20780 d_seekdir='$d_seekdir'
20781 d_select='$d_select'
20782 d_sem='$d_sem'
20783 d_semctl='$d_semctl'
20784 d_semctl_semid_ds='$d_semctl_semid_ds'
20785 d_semctl_semun='$d_semctl_semun'
20786 d_semget='$d_semget'
20787 d_semop='$d_semop'
20788 d_sendmsg='$d_sendmsg'
20789 d_setegid='$d_setegid'
20790 d_seteuid='$d_seteuid'
20791 d_setgrent='$d_setgrent'
20792 d_setgrent_r='$d_setgrent_r'
20793 d_setgrps='$d_setgrps'
20794 d_sethent='$d_sethent'
20795 d_sethostent_r='$d_sethostent_r'
20796 d_setitimer='$d_setitimer'
20797 d_setlinebuf='$d_setlinebuf'
20798 d_setlocale='$d_setlocale'
20799 d_setlocale_r='$d_setlocale_r'
20800 d_setnent='$d_setnent'
20801 d_setnetent_r='$d_setnetent_r'
20802 d_setpent='$d_setpent'
20803 d_setpgid='$d_setpgid'
20804 d_setpgrp2='$d_setpgrp2'
20805 d_setpgrp='$d_setpgrp'
20806 d_setprior='$d_setprior'
20807 d_setproctitle='$d_setproctitle'
20808 d_setprotoent_r='$d_setprotoent_r'
20809 d_setpwent='$d_setpwent'
20810 d_setpwent_r='$d_setpwent_r'
20811 d_setregid='$d_setregid'
20812 d_setresgid='$d_setresgid'
20813 d_setresuid='$d_setresuid'
20814 d_setreuid='$d_setreuid'
20815 d_setrgid='$d_setrgid'
20816 d_setruid='$d_setruid'
20817 d_setsent='$d_setsent'
20818 d_setservent_r='$d_setservent_r'
20819 d_setsid='$d_setsid'
20820 d_setvbuf='$d_setvbuf'
20821 d_sfio='$d_sfio'
20822 d_shm='$d_shm'
20823 d_shmat='$d_shmat'
20824 d_shmatprototype='$d_shmatprototype'
20825 d_shmctl='$d_shmctl'
20826 d_shmdt='$d_shmdt'
20827 d_shmget='$d_shmget'
20828 d_sigaction='$d_sigaction'
20829 d_sigprocmask='$d_sigprocmask'
20830 d_sigsetjmp='$d_sigsetjmp'
20831 d_sockatmark='$d_sockatmark'
20832 d_sockatmarkproto='$d_sockatmarkproto'
20833 d_socket='$d_socket'
20834 d_socklen_t='$d_socklen_t'
20835 d_sockpair='$d_sockpair'
20836 d_socks5_init='$d_socks5_init'
20837 d_sqrtl='$d_sqrtl'
20838 d_srand48_r='$d_srand48_r'
20839 d_srandom_r='$d_srandom_r'
20840 d_sresgproto='$d_sresgproto'
20841 d_sresuproto='$d_sresuproto'
20842 d_statblks='$d_statblks'
20843 d_statfs_f_flags='$d_statfs_f_flags'
20844 d_statfs_s='$d_statfs_s'
20845 d_statvfs='$d_statvfs'
20846 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20847 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20848 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20849 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20850 d_stdio_stream_array='$d_stdio_stream_array'
20851 d_stdiobase='$d_stdiobase'
20852 d_stdstdio='$d_stdstdio'
20853 d_strchr='$d_strchr'
20854 d_strcoll='$d_strcoll'
20855 d_strctcpy='$d_strctcpy'
20856 d_strerrm='$d_strerrm'
20857 d_strerror='$d_strerror'
20858 d_strerror_r='$d_strerror_r'
20859 d_strftime='$d_strftime'
20860 d_strtod='$d_strtod'
20861 d_strtol='$d_strtol'
20862 d_strtold='$d_strtold'
20863 d_strtoll='$d_strtoll'
20864 d_strtoq='$d_strtoq'
20865 d_strtoul='$d_strtoul'
20866 d_strtoull='$d_strtoull'
20867 d_strtouq='$d_strtouq'
20868 d_strxfrm='$d_strxfrm'
20869 d_suidsafe='$d_suidsafe'
20870 d_symlink='$d_symlink'
20871 d_syscall='$d_syscall'
20872 d_syscallproto='$d_syscallproto'
20873 d_sysconf='$d_sysconf'
20874 d_sysernlst='$d_sysernlst'
20875 d_syserrlst='$d_syserrlst'
20876 d_system='$d_system'
20877 d_tcgetpgrp='$d_tcgetpgrp'
20878 d_tcsetpgrp='$d_tcsetpgrp'
20879 d_telldir='$d_telldir'
20880 d_telldirproto='$d_telldirproto'
20881 d_time='$d_time'
20882 d_times='$d_times'
20883 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20884 d_tm_tm_zone='$d_tm_tm_zone'
20885 d_tmpnam_r='$d_tmpnam_r'
20886 d_truncate='$d_truncate'
20887 d_ttyname_r='$d_ttyname_r'
20888 d_tzname='$d_tzname'
20889 d_u32align='$d_u32align'
20890 d_ualarm='$d_ualarm'
20891 d_umask='$d_umask'
20892 d_uname='$d_uname'
20893 d_union_semun='$d_union_semun'
20894 d_unordered='$d_unordered'
20895 d_usleep='$d_usleep'
20896 d_usleepproto='$d_usleepproto'
20897 d_ustat='$d_ustat'
20898 d_vendorarch='$d_vendorarch'
20899 d_vendorbin='$d_vendorbin'
20900 d_vendorlib='$d_vendorlib'
20901 d_vendorscript='$d_vendorscript'
20902 d_vfork='$d_vfork'
20903 d_void_closedir='$d_void_closedir'
20904 d_voidsig='$d_voidsig'
20905 d_voidtty='$d_voidtty'
20906 d_volatile='$d_volatile'
20907 d_vprintf='$d_vprintf'
20908 d_wait4='$d_wait4'
20909 d_waitpid='$d_waitpid'
20910 d_wcstombs='$d_wcstombs'
20911 d_wctomb='$d_wctomb'
20912 d_writev='$d_writev'
20913 d_xenix='$d_xenix'
20914 date='$date'
20915 db_hashtype='$db_hashtype'
20916 db_prefixtype='$db_prefixtype'
20917 db_version_major='$db_version_major'
20918 db_version_minor='$db_version_minor'
20919 db_version_patch='$db_version_patch'
20920 defvoidused='$defvoidused'
20921 direntrytype='$direntrytype'
20922 dlext='$dlext'
20923 dlsrc='$dlsrc'
20924 doublesize='$doublesize'
20925 drand01='$drand01'
20926 drand48_r_proto='$drand48_r_proto'
20927 dynamic_ext='$dynamic_ext'
20928 eagain='$eagain'
20929 ebcdic='$ebcdic'
20930 echo='$echo'
20931 egrep='$egrep'
20932 emacs='$emacs'
20933 endgrent_r_proto='$endgrent_r_proto'
20934 endhostent_r_proto='$endhostent_r_proto'
20935 endnetent_r_proto='$endnetent_r_proto'
20936 endprotoent_r_proto='$endprotoent_r_proto'
20937 endpwent_r_proto='$endpwent_r_proto'
20938 endservent_r_proto='$endservent_r_proto'
20939 eunicefix='$eunicefix'
20940 exe_ext='$exe_ext'
20941 expr='$expr'
20942 extensions='$extensions'
20943 extras='$extras'
20944 fflushNULL='$fflushNULL'
20945 fflushall='$fflushall'
20946 find='$find'
20947 firstmakefile='$firstmakefile'
20948 flex='$flex'
20949 fpossize='$fpossize'
20950 fpostype='$fpostype'
20951 freetype='$freetype'
20952 from='$from'
20953 full_ar='$full_ar'
20954 full_csh='$full_csh'
20955 full_sed='$full_sed'
20956 gccansipedantic='$gccansipedantic'
20957 gccosandvers='$gccosandvers'
20958 gccversion='$gccversion'
20959 getgrent_r_proto='$getgrent_r_proto'
20960 getgrgid_r_proto='$getgrgid_r_proto'
20961 getgrnam_r_proto='$getgrnam_r_proto'
20962 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20963 gethostbyname_r_proto='$gethostbyname_r_proto'
20964 gethostent_r_proto='$gethostent_r_proto'
20965 getlogin_r_proto='$getlogin_r_proto'
20966 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20967 getnetbyname_r_proto='$getnetbyname_r_proto'
20968 getnetent_r_proto='$getnetent_r_proto'
20969 getprotobyname_r_proto='$getprotobyname_r_proto'
20970 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20971 getprotoent_r_proto='$getprotoent_r_proto'
20972 getpwent_r_proto='$getpwent_r_proto'
20973 getpwnam_r_proto='$getpwnam_r_proto'
20974 getpwuid_r_proto='$getpwuid_r_proto'
20975 getservbyname_r_proto='$getservbyname_r_proto'
20976 getservbyport_r_proto='$getservbyport_r_proto'
20977 getservent_r_proto='$getservent_r_proto'
20978 getspnam_r_proto='$getspnam_r_proto'
20979 gidformat='$gidformat'
20980 gidsign='$gidsign'
20981 gidsize='$gidsize'
20982 gidtype='$gidtype'
20983 glibpth='$glibpth'
20984 gmake='$gmake'
20985 gmtime_r_proto='$gmtime_r_proto'
20986 gnulibc_version='$gnulibc_version'
20987 grep='$grep'
20988 groupcat='$groupcat'
20989 groupstype='$groupstype'
20990 gzip='$gzip'
20991 h_fcntl='$h_fcntl'
20992 h_sysfile='$h_sysfile'
20993 hint='$hint'
20994 hostcat='$hostcat'
20995 html1dir='$html1dir'
20996 html1direxp='$html1direxp'
20997 html3dir='$html3dir'
20998 html3direxp='$html3direxp'
20999 i16size='$i16size'
21000 i16type='$i16type'
21001 i32size='$i32size'
21002 i32type='$i32type'
21003 i64size='$i64size'
21004 i64type='$i64type'
21005 i8size='$i8size'
21006 i8type='$i8type'
21007 i_arpainet='$i_arpainet'
21008 i_bsdioctl='$i_bsdioctl'
21009 i_crypt='$i_crypt'
21010 i_db='$i_db'
21011 i_dbm='$i_dbm'
21012 i_dirent='$i_dirent'
21013 i_dld='$i_dld'
21014 i_dlfcn='$i_dlfcn'
21015 i_fcntl='$i_fcntl'
21016 i_float='$i_float'
21017 i_fp='$i_fp'
21018 i_fp_class='$i_fp_class'
21019 i_gdbm='$i_gdbm'
21020 i_grp='$i_grp'
21021 i_ieeefp='$i_ieeefp'
21022 i_inttypes='$i_inttypes'
21023 i_langinfo='$i_langinfo'
21024 i_libutil='$i_libutil'
21025 i_limits='$i_limits'
21026 i_locale='$i_locale'
21027 i_machcthr='$i_machcthr'
21028 i_malloc='$i_malloc'
21029 i_math='$i_math'
21030 i_memory='$i_memory'
21031 i_mntent='$i_mntent'
21032 i_ndbm='$i_ndbm'
21033 i_netdb='$i_netdb'
21034 i_neterrno='$i_neterrno'
21035 i_netinettcp='$i_netinettcp'
21036 i_niin='$i_niin'
21037 i_poll='$i_poll'
21038 i_prot='$i_prot'
21039 i_pthread='$i_pthread'
21040 i_pwd='$i_pwd'
21041 i_rpcsvcdbm='$i_rpcsvcdbm'
21042 i_sfio='$i_sfio'
21043 i_sgtty='$i_sgtty'
21044 i_shadow='$i_shadow'
21045 i_socks='$i_socks'
21046 i_stdarg='$i_stdarg'
21047 i_stddef='$i_stddef'
21048 i_stdlib='$i_stdlib'
21049 i_string='$i_string'
21050 i_sunmath='$i_sunmath'
21051 i_sysaccess='$i_sysaccess'
21052 i_sysdir='$i_sysdir'
21053 i_sysfile='$i_sysfile'
21054 i_sysfilio='$i_sysfilio'
21055 i_sysin='$i_sysin'
21056 i_sysioctl='$i_sysioctl'
21057 i_syslog='$i_syslog'
21058 i_sysmman='$i_sysmman'
21059 i_sysmode='$i_sysmode'
21060 i_sysmount='$i_sysmount'
21061 i_sysndir='$i_sysndir'
21062 i_sysparam='$i_sysparam'
21063 i_sysresrc='$i_sysresrc'
21064 i_syssecrt='$i_syssecrt'
21065 i_sysselct='$i_sysselct'
21066 i_syssockio='$i_syssockio'
21067 i_sysstat='$i_sysstat'
21068 i_sysstatfs='$i_sysstatfs'
21069 i_sysstatvfs='$i_sysstatvfs'
21070 i_systime='$i_systime'
21071 i_systimek='$i_systimek'
21072 i_systimes='$i_systimes'
21073 i_systypes='$i_systypes'
21074 i_sysuio='$i_sysuio'
21075 i_sysun='$i_sysun'
21076 i_sysutsname='$i_sysutsname'
21077 i_sysvfs='$i_sysvfs'
21078 i_syswait='$i_syswait'
21079 i_termio='$i_termio'
21080 i_termios='$i_termios'
21081 i_time='$i_time'
21082 i_unistd='$i_unistd'
21083 i_ustat='$i_ustat'
21084 i_utime='$i_utime'
21085 i_values='$i_values'
21086 i_varargs='$i_varargs'
21087 i_varhdr='$i_varhdr'
21088 i_vfork='$i_vfork'
21089 ignore_versioned_solibs='$ignore_versioned_solibs'
21090 inc_version_list='$inc_version_list'
21091 inc_version_list_init='$inc_version_list_init'
21092 incpath='$incpath'
21093 inews='$inews'
21094 installarchlib='$installarchlib'
21095 installbin='$installbin'
21096 installhtml1dir='$installhtml1dir'
21097 installhtml3dir='$installhtml3dir'
21098 installman1dir='$installman1dir'
21099 installman3dir='$installman3dir'
21100 installprefix='$installprefix'
21101 installprefixexp='$installprefixexp'
21102 installprivlib='$installprivlib'
21103 installscript='$installscript'
21104 installsitearch='$installsitearch'
21105 installsitebin='$installsitebin'
21106 installsitehtml1dir='$installsitehtml1dir'
21107 installsitehtml3dir='$installsitehtml3dir'
21108 installsitelib='$installsitelib'
21109 installsiteman1dir='$installsiteman1dir'
21110 installsiteman3dir='$installsiteman3dir'
21111 installsitescript='$installsitescript'
21112 installstyle='$installstyle'
21113 installusrbinperl='$installusrbinperl'
21114 installvendorarch='$installvendorarch'
21115 installvendorbin='$installvendorbin'
21116 installvendorhtml1dir='$installvendorhtml1dir'
21117 installvendorhtml3dir='$installvendorhtml3dir'
21118 installvendorlib='$installvendorlib'
21119 installvendorman1dir='$installvendorman1dir'
21120 installvendorman3dir='$installvendorman3dir'
21121 installvendorscript='$installvendorscript'
21122 intsize='$intsize'
21123 issymlink='$issymlink'
21124 ivdformat='$ivdformat'
21125 ivsize='$ivsize'
21126 ivtype='$ivtype'
21127 known_extensions='$known_extensions'
21128 ksh='$ksh'
21129 ld='$ld'
21130 lddlflags='$lddlflags'
21131 ldflags='$ldflags'
21132 ldflags_uselargefiles='$ldflags_uselargefiles'
21133 ldlibpthname='$ldlibpthname'
21134 less='$less'
21135 lib_ext='$lib_ext'
21136 libc='$libc'
21137 libperl='$libperl'
21138 libpth='$libpth'
21139 libs='$libs'
21140 libsdirs='$libsdirs'
21141 libsfiles='$libsfiles'
21142 libsfound='$libsfound'
21143 libspath='$libspath'
21144 libswanted='$libswanted'
21145 libswanted_uselargefiles='$libswanted_uselargefiles'
21146 line='$line'
21147 lint='$lint'
21148 lkflags='$lkflags'
21149 ln='$ln'
21150 lns='$lns'
21151 localtime_r_proto='$localtime_r_proto'
21152 locincpth='$locincpth'
21153 loclibpth='$loclibpth'
21154 longdblsize='$longdblsize'
21155 longlongsize='$longlongsize'
21156 longsize='$longsize'
21157 lp='$lp'
21158 lpr='$lpr'
21159 ls='$ls'
21160 lseeksize='$lseeksize'
21161 lseektype='$lseektype'
21162 mail='$mail'
21163 mailx='$mailx'
21164 make='$make'
21165 make_set_make='$make_set_make'
21166 mallocobj='$mallocobj'
21167 mallocsrc='$mallocsrc'
21168 malloctype='$malloctype'
21169 man1dir='$man1dir'
21170 man1direxp='$man1direxp'
21171 man1ext='$man1ext'
21172 man3dir='$man3dir'
21173 man3direxp='$man3direxp'
21174 man3ext='$man3ext'
21175 mips_type='$mips_type'
21176 mistrustnm='$mistrustnm'
21177 mkdir='$mkdir'
21178 mmaptype='$mmaptype'
21179 modetype='$modetype'
21180 more='$more'
21181 multiarch='$multiarch'
21182 mv='$mv'
21183 myarchname='$myarchname'
21184 mydomain='$mydomain'
21185 myhostname='$myhostname'
21186 myuname='$myuname'
21187 n='$n'
21188 need_va_copy='$need_va_copy'
21189 netdb_hlen_type='$netdb_hlen_type'
21190 netdb_host_type='$netdb_host_type'
21191 netdb_name_type='$netdb_name_type'
21192 netdb_net_type='$netdb_net_type'
21193 nm='$nm'
21194 nm_opt='$nm_opt'
21195 nm_so_opt='$nm_so_opt'
21196 nonxs_ext='$nonxs_ext'
21197 nroff='$nroff'
21198 nvEUformat='$nvEUformat'
21199 nvFUformat='$nvFUformat'
21200 nvGUformat='$nvGUformat'
21201 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21202 nveformat='$nveformat'
21203 nvfformat='$nvfformat'
21204 nvgformat='$nvgformat'
21205 nvsize='$nvsize'
21206 nvtype='$nvtype'
21207 o_nonblock='$o_nonblock'
21208 obj_ext='$obj_ext'
21209 old_pthread_create_joinable='$old_pthread_create_joinable'
21210 optimize='$optimize'
21211 orderlib='$orderlib'
21212 osname='$osname'
21213 osvers='$osvers'
21214 otherlibdirs='$otherlibdirs'
21215 package='$package'
21216 pager='$pager'
21217 passcat='$passcat'
21218 patchlevel='$patchlevel'
21219 path_sep='$path_sep'
21220 perl5='$perl5'
21221 perl='$perl'
21222 perl_patchlevel='$perl_patchlevel'
21223 perladmin='$perladmin'
21224 perllibs='$perllibs'
21225 perlpath='$perlpath'
21226 pg='$pg'
21227 phostname='$phostname'
21228 pidtype='$pidtype'
21229 plibpth='$plibpth'
21230 pmake='$pmake'
21231 pr='$pr'
21232 prefix='$prefix'
21233 prefixexp='$prefixexp'
21234 privlib='$privlib'
21235 privlibexp='$privlibexp'
21236 procselfexe='$procselfexe'
21237 prototype='$prototype'
21238 ptrsize='$ptrsize'
21239 quadkind='$quadkind'
21240 quadtype='$quadtype'
21241 randbits='$randbits'
21242 randfunc='$randfunc'
21243 random_r_proto='$random_r_proto'
21244 randseedtype='$randseedtype'
21245 ranlib='$ranlib'
21246 rd_nodata='$rd_nodata'
21247 readdir64_r_proto='$readdir64_r_proto'
21248 readdir_r_proto='$readdir_r_proto'
21249 revision='$revision'
21250 rm='$rm'
21251 rmail='$rmail'
21252 run='$run'
21253 runnm='$runnm'
21254 sPRIEUldbl='$sPRIEUldbl'
21255 sPRIFUldbl='$sPRIFUldbl'
21256 sPRIGUldbl='$sPRIGUldbl'
21257 sPRIXU64='$sPRIXU64'
21258 sPRId64='$sPRId64'
21259 sPRIeldbl='$sPRIeldbl'
21260 sPRIfldbl='$sPRIfldbl'
21261 sPRIgldbl='$sPRIgldbl'
21262 sPRIi64='$sPRIi64'
21263 sPRIo64='$sPRIo64'
21264 sPRIu64='$sPRIu64'
21265 sPRIx64='$sPRIx64'
21266 sSCNfldbl='$sSCNfldbl'
21267 sched_yield='$sched_yield'
21268 scriptdir='$scriptdir'
21269 scriptdirexp='$scriptdirexp'
21270 sed='$sed'
21271 seedfunc='$seedfunc'
21272 selectminbits='$selectminbits'
21273 selecttype='$selecttype'
21274 sendmail='$sendmail'
21275 setgrent_r_proto='$setgrent_r_proto'
21276 sethostent_r_proto='$sethostent_r_proto'
21277 setlocale_r_proto='$setlocale_r_proto'
21278 setnetent_r_proto='$setnetent_r_proto'
21279 setprotoent_r_proto='$setprotoent_r_proto'
21280 setpwent_r_proto='$setpwent_r_proto'
21281 setservent_r_proto='$setservent_r_proto'
21282 sh='$sh'
21283 shar='$shar'
21284 sharpbang='$sharpbang'
21285 shmattype='$shmattype'
21286 shortsize='$shortsize'
21287 shrpenv='$shrpenv'
21288 shsharp='$shsharp'
21289 sig_count='$sig_count'
21290 sig_name='$sig_name'
21291 sig_name_init='$sig_name_init'
21292 sig_num='$sig_num'
21293 sig_num_init='$sig_num_init'
21294 sig_size='$sig_size'
21295 signal_t='$signal_t'
21296 sitearch='$sitearch'
21297 sitearchexp='$sitearchexp'
21298 sitebin='$sitebin'
21299 sitebinexp='$sitebinexp'
21300 sitehtml1dir='$sitehtml1dir'
21301 sitehtml1direxp='$sitehtml1direxp'
21302 sitehtml3dir='$sitehtml3dir'
21303 sitehtml3direxp='$sitehtml3direxp'
21304 sitelib='$sitelib'
21305 sitelib_stem='$sitelib_stem'
21306 sitelibexp='$sitelibexp'
21307 siteman1dir='$siteman1dir'
21308 siteman1direxp='$siteman1direxp'
21309 siteman3dir='$siteman3dir'
21310 siteman3direxp='$siteman3direxp'
21311 siteprefix='$siteprefix'
21312 siteprefixexp='$siteprefixexp'
21313 sitescript='$sitescript'
21314 sitescriptexp='$sitescriptexp'
21315 sizesize='$sizesize'
21316 sizetype='$sizetype'
21317 sleep='$sleep'
21318 smail='$smail'
21319 so='$so'
21320 sockethdr='$sockethdr'
21321 socketlib='$socketlib'
21322 socksizetype='$socksizetype'
21323 sort='$sort'
21324 spackage='$spackage'
21325 spitshell='$spitshell'
21326 srand48_r_proto='$srand48_r_proto'
21327 srandom_r_proto='$srandom_r_proto'
21328 src='$src'
21329 ssizetype='$ssizetype'
21330 startperl='$startperl'
21331 startsh='$startsh'
21332 static_ext='$static_ext'
21333 stdchar='$stdchar'
21334 stdio_base='$stdio_base'
21335 stdio_bufsiz='$stdio_bufsiz'
21336 stdio_cnt='$stdio_cnt'
21337 stdio_filbuf='$stdio_filbuf'
21338 stdio_ptr='$stdio_ptr'
21339 stdio_stream_array='$stdio_stream_array'
21340 strerror_r_proto='$strerror_r_proto'
21341 strings='$strings'
21342 submit='$submit'
21343 subversion='$subversion'
21344 sysman='$sysman'
21345 tail='$tail'
21346 tar='$tar'
21347 targetarch='$targetarch'
21348 tbl='$tbl'
21349 tee='$tee'
21350 test='$test'
21351 timeincl='$timeincl'
21352 timetype='$timetype'
21353 tmpnam_r_proto='$tmpnam_r_proto'
21354 to='$to'
21355 touch='$touch'
21356 tr='$tr'
21357 trnl='$trnl'
21358 troff='$troff'
21359 ttyname_r_proto='$ttyname_r_proto'
21360 u16size='$u16size'
21361 u16type='$u16type'
21362 u32size='$u32size'
21363 u32type='$u32type'
21364 u64size='$u64size'
21365 u64type='$u64type'
21366 u8size='$u8size'
21367 u8type='$u8type'
21368 uidformat='$uidformat'
21369 uidsign='$uidsign'
21370 uidsize='$uidsize'
21371 uidtype='$uidtype'
21372 uname='$uname'
21373 uniq='$uniq'
21374 uquadtype='$uquadtype'
21375 use5005threads='$use5005threads'
21376 use64bitall='$use64bitall'
21377 use64bitint='$use64bitint'
21378 usecrosscompile='$usecrosscompile'
21379 usedl='$usedl'
21380 usefaststdio='$usefaststdio'
21381 useithreads='$useithreads'
21382 uselargefiles='$uselargefiles'
21383 uselongdouble='$uselongdouble'
21384 usemallocwrap='$usemallocwrap'
21385 usemorebits='$usemorebits'
21386 usemultiplicity='$usemultiplicity'
21387 usemymalloc='$usemymalloc'
21388 usenm='$usenm'
21389 useopcode='$useopcode'
21390 useperlio='$useperlio'
21391 useposix='$useposix'
21392 usereentrant='$usereentrant'
21393 usesfio='$usesfio'
21394 useshrplib='$useshrplib'
21395 usesocks='$usesocks'
21396 usethreads='$usethreads'
21397 usevendorprefix='$usevendorprefix'
21398 usevfork='$usevfork'
21399 usrinc='$usrinc'
21400 uuname='$uuname'
21401 uvXUformat='$uvXUformat'
21402 uvoformat='$uvoformat'
21403 uvsize='$uvsize'
21404 uvtype='$uvtype'
21405 uvuformat='$uvuformat'
21406 uvxformat='$uvxformat'
21407 vendorarch='$vendorarch'
21408 vendorarchexp='$vendorarchexp'
21409 vendorbin='$vendorbin'
21410 vendorbinexp='$vendorbinexp'
21411 vendorhtml1dir='$vendorhtml1dir'
21412 vendorhtml1direxp='$vendorhtml1direxp'
21413 vendorhtml3dir='$vendorhtml3dir'
21414 vendorhtml3direxp='$vendorhtml3direxp'
21415 vendorlib='$vendorlib'
21416 vendorlib_stem='$vendorlib_stem'
21417 vendorlibexp='$vendorlibexp'
21418 vendorman1dir='$vendorman1dir'
21419 vendorman1direxp='$vendorman1direxp'
21420 vendorman3dir='$vendorman3dir'
21421 vendorman3direxp='$vendorman3direxp'
21422 vendorprefix='$vendorprefix'
21423 vendorprefixexp='$vendorprefixexp'
21424 vendorscript='$vendorscript'
21425 vendorscriptexp='$vendorscriptexp'
21426 version='$version'
21427 version_patchlevel_string='$version_patchlevel_string'
21428 versiononly='$versiononly'
21429 vi='$vi'
21430 voidflags='$voidflags'
21431 xlibpth='$xlibpth'
21432 yacc='$yacc'
21433 yaccflags='$yaccflags'
21434 zcat='$zcat'
21435 zip='$zip'
21436 EOT
21437
21438 : Add in command line options if available
21439 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21440
21441 : add special variables
21442 $test -f $src/patchlevel.h && \
21443 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21444 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21445 echo "PERL_CONFIG_SH=true" >>config.sh
21446
21447 : propagate old symbols
21448 if $test -f UU/config.sh; then
21449         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21450         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21451         $sort | $uniq -u >UU/oldsyms
21452         set X `cat UU/oldsyms`
21453         shift
21454         case $# in
21455         0) ;;
21456         *)
21457                 cat <<EOM
21458 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21459 EOM
21460                 echo "# Variables propagated from previous config.sh file." >>config.sh
21461                 for sym in `cat UU/oldsyms`; do
21462                         echo "    Propagating $hint variable "'$'"$sym..."
21463                         eval 'tmp="$'"${sym}"'"'
21464                         echo "$tmp" | \
21465                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21466                 done
21467                 ;;
21468         esac
21469 fi
21470
21471 : Finish up by extracting the .SH files
21472 case "$alldone" in
21473 exit)
21474         $rm -rf UU
21475         echo "Extraction done."
21476         exit 0
21477         ;;
21478 cont)
21479         ;;
21480 '')
21481         dflt=''
21482         nostick=true
21483         $cat <<EOM
21484
21485 If you'd like to make any changes to the config.sh file before I begin
21486 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21487
21488 EOM
21489         rp="Press return or use a shell escape to edit config.sh:"
21490         . UU/myread
21491         nostick=''
21492         case "$ans" in
21493         '') ;;
21494         *) : in case they cannot read
21495                 sh 1>&4 -c "$ans";;
21496         esac
21497         ;;
21498 esac
21499
21500 : if this fails, just run all the .SH files by hand
21501 . ./config.sh
21502
21503 echo " "
21504 exec 1>&4
21505 pwd=`pwd`
21506 . ./UU/extract
21507 cd "$pwd"
21508
21509 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21510         dflt=y
21511         case "$silent" in
21512         true) ;;
21513         *)
21514                 $cat <<EOM
21515
21516 Now you need to generate make dependencies by running "$make depend".
21517 You might prefer to run it in background: "$make depend > makedepend.out &"
21518 It can take a while, so you might not want to run it right now.
21519
21520 EOM
21521                 ;;
21522         esac
21523         rp="Run $make depend now?"
21524         . UU/myread
21525         case "$ans" in
21526         y*)
21527                 $make depend && echo "Now you must run '$make'."
21528                 ;;
21529         *)
21530                 echo "You must run '$make depend' then '$make'."
21531                 ;;
21532         esac
21533 elif test -f [Mm]akefile; then
21534         echo " "
21535         echo "Now you must run a $make."
21536 else
21537         echo "Configure done."
21538 fi
21539
21540 if $test -f Policy.sh; then
21541     $cat <<EOM
21542
21543 If you compile $package on a different machine or from a different object
21544 directory, copy the Policy.sh file from this object directory to the
21545 new one before you run Configure -- this will help you with most of
21546 the policy defaults.
21547
21548 EOM
21549 fi
21550 if $test -f config.msg; then
21551     echo "Hmm.  I also noted the following information while running:"
21552     echo " "
21553     $cat config.msg >&4
21554     $rm -f config.msg
21555 fi
21556 $rm -f kit*isdone ark*isdone
21557 $rm -rf UU
21558
21559 : End of Configure
21560