32a0d1946b022ad50f1f3c33ecbe4c5c6df1e9e5
[p5sagit/p5-mst-13.2.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 Sat Apr 26 00:26:09 EET DST 2003 [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 perllibs=''
192 dynamic_ext=''
193 extensions=''
194 known_extensions=''
195 nonxs_ext=''
196 static_ext=''
197 useopcode=''
198 useposix=''
199 extras=''
200 d_bsd=''
201 d_eunice=''
202 d_xenix=''
203 eunicefix=''
204 Mcc=''
205 ar=''
206 awk=''
207 bash=''
208 bison=''
209 byacc=''
210 cat=''
211 chgrp=''
212 chmod=''
213 chown=''
214 comm=''
215 compress=''
216 cp=''
217 cpio=''
218 cpp=''
219 csh=''
220 date=''
221 echo=''
222 egrep=''
223 emacs=''
224 expr=''
225 find=''
226 flex=''
227 gmake=''
228 grep=''
229 gzip=''
230 inews=''
231 ksh=''
232 less=''
233 line=''
234 lint=''
235 ln=''
236 lp=''
237 lpr=''
238 ls=''
239 mail=''
240 mailx=''
241 make=''
242 mkdir=''
243 more=''
244 mv=''
245 nm=''
246 nroff=''
247 perl=''
248 pg=''
249 pmake=''
250 pr=''
251 rm=''
252 rmail=''
253 sed=''
254 sendmail=''
255 shar=''
256 sleep=''
257 smail=''
258 sort=''
259 submit=''
260 tail=''
261 tar=''
262 tbl=''
263 tee=''
264 test=''
265 touch=''
266 tr=''
267 troff=''
268 uname=''
269 uniq=''
270 uuname=''
271 vi=''
272 zcat=''
273 zip=''
274 full_ar=''
275 full_sed=''
276 libswanted=''
277 hint=''
278 myuname=''
279 osname=''
280 osvers=''
281 Author=''
282 Date=''
283 Header=''
284 Id=''
285 Locker=''
286 Log=''
287 RCSfile=''
288 Revision=''
289 Source=''
290 State=''
291 _a=''
292 _exe=''
293 _o=''
294 archobjs=''
295 exe_ext=''
296 firstmakefile=''
297 lib_ext=''
298 obj_ext=''
299 path_sep=''
300 afs=''
301 afsroot=''
302 alignbytes=''
303 ansi2knr=''
304 archlib=''
305 archlibexp=''
306 d_archlib=''
307 installarchlib=''
308 archname=''
309 myarchname=''
310 d_atolf=''
311 d_atoll=''
312 baserev=''
313 bin=''
314 binexp=''
315 installbin=''
316 byteorder=''
317 cc=''
318 ccflags=''
319 cppflags=''
320 ldflags=''
321 lkflags=''
322 locincpth=''
323 optimize=''
324 cf_email=''
325 cf_by=''
326 cf_time=''
327 charsize=''
328 contains=''
329 cpp_stuff=''
330 cpplast=''
331 cppminus=''
332 cpprun=''
333 cppstdin=''
334 d__fwalk=''
335 d_access=''
336 d_accessx=''
337 d_aintl=''
338 d_alarm=''
339 asctime_r_proto=''
340 d_asctime_r=''
341 d_attribut=''
342 d_bcmp=''
343 d_bcopy=''
344 d_bzero=''
345 d_casti32=''
346 castflags=''
347 d_castneg=''
348 d_chown=''
349 d_chroot=''
350 d_chsize=''
351 d_class=''
352 d_closedir=''
353 d_void_closedir=''
354 d_cmsghdr_s=''
355 d_const=''
356 d_copysignl=''
357 cryptlib=''
358 d_crypt=''
359 crypt_r_proto=''
360 d_crypt_r=''
361 d_csh=''
362 full_csh=''
363 ctermid_r_proto=''
364 d_ctermid_r=''
365 ctime_r_proto=''
366 d_ctime_r=''
367 d_cuserid=''
368 d_dbl_dig=''
369 d_dbminitproto=''
370 d_difftime=''
371 d_dirfd=''
372 d_dlerror=''
373 d_dlopen=''
374 d_dlsymun=''
375 d_dosuid=''
376 d_suidsafe=''
377 d_drand48_r=''
378 drand48_r_proto=''
379 d_drand48proto=''
380 d_dup2=''
381 d_eaccess=''
382 d_endgrent=''
383 d_endgrent_r=''
384 endgrent_r_proto=''
385 d_endhent=''
386 d_endhostent_r=''
387 endhostent_r_proto=''
388 d_endnent=''
389 d_endnetent_r=''
390 endnetent_r_proto=''
391 d_endpent=''
392 d_endprotoent_r=''
393 endprotoent_r_proto=''
394 d_endpwent=''
395 d_endpwent_r=''
396 endpwent_r_proto=''
397 d_endsent=''
398 d_endservent_r=''
399 endservent_r_proto=''
400 d_faststdio=''
401 d_fchdir=''
402 d_fchmod=''
403 d_fchown=''
404 d_fcntl=''
405 d_fcntl_can_lock=''
406 d_fd_macros=''
407 d_fd_set=''
408 d_fds_bits=''
409 d_fgetpos=''
410 d_finite=''
411 d_finitel=''
412 d_flexfnam=''
413 d_flock=''
414 d_flockproto=''
415 d_fork=''
416 d_fp_class=''
417 d_fpclass=''
418 d_fpclassify=''
419 d_fpclassl=''
420 d_fpos64_t=''
421 d_frexpl=''
422 d_fs_data_s=''
423 d_fseeko=''
424 d_fsetpos=''
425 d_fstatfs=''
426 d_fsync=''
427 d_ftello=''
428 d_ftime=''
429 d_gettimeod=''
430 d_Gconvert=''
431 d_getcwd=''
432 d_getespwnam=''
433 d_getfsstat=''
434 d_getgrent=''
435 d_getgrent_r=''
436 getgrent_r_proto=''
437 d_getgrgid_r=''
438 getgrgid_r_proto=''
439 d_getgrnam_r=''
440 getgrnam_r_proto=''
441 d_getgrps=''
442 d_gethbyaddr=''
443 d_gethbyname=''
444 d_gethent=''
445 aphostname=''
446 d_gethname=''
447 d_phostname=''
448 d_uname=''
449 d_gethostbyaddr_r=''
450 gethostbyaddr_r_proto=''
451 d_gethostbyname_r=''
452 gethostbyname_r_proto=''
453 d_gethostent_r=''
454 gethostent_r_proto=''
455 d_gethostprotos=''
456 d_getitimer=''
457 d_getlogin=''
458 d_getlogin_r=''
459 getlogin_r_proto=''
460 d_getmnt=''
461 d_getmntent=''
462 d_getnbyaddr=''
463 d_getnbyname=''
464 d_getnent=''
465 d_getnetbyaddr_r=''
466 getnetbyaddr_r_proto=''
467 d_getnetbyname_r=''
468 getnetbyname_r_proto=''
469 d_getnetent_r=''
470 getnetent_r_proto=''
471 d_getnetprotos=''
472 d_getpagsz=''
473 d_getpent=''
474 d_getpgid=''
475 d_getpgrp2=''
476 d_bsdgetpgrp=''
477 d_getpgrp=''
478 d_getppid=''
479 d_getprior=''
480 d_getpbyname=''
481 d_getpbynumber=''
482 d_getprotobyname_r=''
483 getprotobyname_r_proto=''
484 d_getprotobynumber_r=''
485 getprotobynumber_r_proto=''
486 d_getprotoent_r=''
487 getprotoent_r_proto=''
488 d_getprotoprotos=''
489 d_getprpwnam=''
490 d_getpwent=''
491 d_getpwent_r=''
492 getpwent_r_proto=''
493 d_getpwnam_r=''
494 getpwnam_r_proto=''
495 d_getpwuid_r=''
496 getpwuid_r_proto=''
497 d_getsent=''
498 d_getservbyname_r=''
499 getservbyname_r_proto=''
500 d_getservbyport_r=''
501 getservbyport_r_proto=''
502 d_getservent_r=''
503 getservent_r_proto=''
504 d_getservprotos=''
505 d_getspnam=''
506 d_getspnam_r=''
507 getspnam_r_proto=''
508 d_getsbyname=''
509 d_getsbyport=''
510 d_gmtime_r=''
511 gmtime_r_proto=''
512 d_gnulibc=''
513 gnulibc_version=''
514 d_hasmntopt=''
515 d_htonl=''
516 d_ilogbl=''
517 d_inetaton=''
518 d_int64_t=''
519 d_isascii=''
520 d_isfinite=''
521 d_isinf=''
522 d_isnan=''
523 d_isnanl=''
524 d_killpg=''
525 d_lchown=''
526 d_ldbl_dig=''
527 d_link=''
528 d_localtime_r=''
529 localtime_r_proto=''
530 d_locconv=''
531 d_lockf=''
532 d_longdbl=''
533 longdblsize=''
534 d_longlong=''
535 longlongsize=''
536 d_lseekproto=''
537 d_lstat=''
538 d_madvise=''
539 d_mblen=''
540 d_mbstowcs=''
541 d_mbtowc=''
542 d_memchr=''
543 d_memcmp=''
544 d_memcpy=''
545 d_memmove=''
546 d_memset=''
547 d_mkdir=''
548 d_mkdtemp=''
549 d_mkfifo=''
550 d_mkstemp=''
551 d_mkstemps=''
552 d_mktime=''
553 d_mmap=''
554 mmaptype=''
555 d_modfl=''
556 d_modfl_pow32_bug=''
557 d_modflproto=''
558 d_mprotect=''
559 d_msg=''
560 d_msgctl=''
561 d_msgget=''
562 d_msghdr_s=''
563 d_msgrcv=''
564 d_msgsnd=''
565 d_msync=''
566 d_munmap=''
567 d_nanosleep=''
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_yield=''
584 d_sched_yield=''
585 sched_yield=''
586 d_qgcvt=''
587 d_random_r=''
588 random_r_proto=''
589 d_readdir64_r=''
590 readdir64_r_proto=''
591 d_readdir=''
592 d_rewinddir=''
593 d_seekdir=''
594 d_telldir=''
595 d_readdir_r=''
596 readdir_r_proto=''
597 d_readlink=''
598 d_readv=''
599 d_recvmsg=''
600 d_rename=''
601 d_rmdir=''
602 d_safebcpy=''
603 d_safemcpy=''
604 d_sanemcmp=''
605 d_sbrkproto=''
606 d_scalbnl=''
607 d_select=''
608 d_sem=''
609 d_semctl=''
610 d_semget=''
611 d_semop=''
612 d_sendmsg=''
613 d_setegid=''
614 d_seteuid=''
615 d_setgrent=''
616 d_setgrent_r=''
617 setgrent_r_proto=''
618 d_setgrps=''
619 d_sethent=''
620 d_sethostent_r=''
621 sethostent_r_proto=''
622 d_setitimer=''
623 d_setlinebuf=''
624 d_setlocale=''
625 d_setlocale_r=''
626 setlocale_r_proto=''
627 d_setnent=''
628 d_setnetent_r=''
629 setnetent_r_proto=''
630 d_setpent=''
631 d_setpgid=''
632 d_setpgrp2=''
633 d_bsdsetpgrp=''
634 d_setpgrp=''
635 d_setprior=''
636 d_setproctitle=''
637 d_setprotoent_r=''
638 setprotoent_r_proto=''
639 d_setpwent=''
640 d_setpwent_r=''
641 setpwent_r_proto=''
642 d_setregid=''
643 d_setresgid=''
644 d_setresuid=''
645 d_setreuid=''
646 d_setrgid=''
647 d_setruid=''
648 d_setsent=''
649 d_setservent_r=''
650 setservent_r_proto=''
651 d_setsid=''
652 d_setvbuf=''
653 d_sfio=''
654 usesfio=''
655 d_shm=''
656 d_shmat=''
657 d_shmatprototype=''
658 shmattype=''
659 d_shmctl=''
660 d_shmdt=''
661 d_shmget=''
662 d_sigaction=''
663 d_sigprocmask=''
664 d_sigsetjmp=''
665 d_sockatmark=''
666 d_sockatmarkproto=''
667 d_msg_ctrunc=''
668 d_msg_dontroute=''
669 d_msg_oob=''
670 d_msg_peek=''
671 d_msg_proxy=''
672 d_oldsock=''
673 d_scm_rights=''
674 d_socket=''
675 d_sockpair=''
676 sockethdr=''
677 socketlib=''
678 d_socklen_t=''
679 d_socks5_init=''
680 d_sqrtl=''
681 d_srand48_r=''
682 srand48_r_proto=''
683 d_srandom_r=''
684 srandom_r_proto=''
685 d_sresgproto=''
686 d_sresuproto=''
687 d_statblks=''
688 d_statfs_f_flags=''
689 d_statfs_s=''
690 d_fstatvfs=''
691 d_statvfs=''
692 d_stdio_cnt_lval=''
693 d_stdio_ptr_lval=''
694 d_stdio_ptr_lval_nochange_cnt=''
695 d_stdio_ptr_lval_sets_cnt=''
696 d_stdiobase=''
697 d_stdstdio=''
698 stdio_base=''
699 stdio_bufsiz=''
700 stdio_cnt=''
701 stdio_filbuf=''
702 stdio_ptr=''
703 d_index=''
704 d_strchr=''
705 d_strcoll=''
706 d_strctcpy=''
707 d_strerrm=''
708 d_strerror=''
709 d_sysernlst=''
710 d_syserrlst=''
711 d_strerror_r=''
712 strerror_r_proto=''
713 d_strftime=''
714 d_strtod=''
715 d_strtol=''
716 d_strtold=''
717 d_strtoll=''
718 d_strtoq=''
719 d_strtoul=''
720 d_strtoull=''
721 d_strtouq=''
722 d_strxfrm=''
723 d_symlink=''
724 d_syscall=''
725 d_syscallproto=''
726 d_sysconf=''
727 d_system=''
728 d_tcgetpgrp=''
729 d_tcsetpgrp=''
730 d_telldirproto=''
731 d_time=''
732 timetype=''
733 clocktype=''
734 d_times=''
735 d_tmpnam_r=''
736 tmpnam_r_proto=''
737 d_truncate=''
738 d_ttyname_r=''
739 ttyname_r_proto=''
740 d_tzname=''
741 d_u32align=''
742 d_ualarm=''
743 d_umask=''
744 d_semctl_semid_ds=''
745 d_semctl_semun=''
746 d_union_semun=''
747 d_unordered=''
748 d_usleep=''
749 d_usleepproto=''
750 d_ustat=''
751 d_vfork=''
752 usevfork=''
753 d_voidsig=''
754 signal_t=''
755 d_volatile=''
756 d_charvspr=''
757 d_vprintf=''
758 d_wait4=''
759 d_waitpid=''
760 d_wcstombs=''
761 d_wctomb=''
762 d_writev=''
763 dlext=''
764 cccdlflags=''
765 ccdlflags=''
766 dlsrc=''
767 ld=''
768 lddlflags=''
769 usedl=''
770 doublesize=''
771 ebcdic=''
772 fflushNULL=''
773 fflushall=''
774 fpossize=''
775 fpostype=''
776 gccansipedantic=''
777 gccosandvers=''
778 gccversion=''
779 gidformat=''
780 gidsign=''
781 gidsize=''
782 gidtype=''
783 groupstype=''
784 h_fcntl=''
785 h_sysfile=''
786 html1dir=''
787 html1direxp=''
788 installhtml1dir=''
789 html3dir=''
790 html3direxp=''
791 installhtml3dir=''
792 i_arpainet=''
793 i_crypt=''
794 db_hashtype=''
795 db_prefixtype=''
796 db_version_major=''
797 db_version_minor=''
798 db_version_patch=''
799 i_db=''
800 i_dbm=''
801 i_rpcsvcdbm=''
802 d_dirnamlen=''
803 direntrytype=''
804 i_dirent=''
805 i_dld=''
806 i_dlfcn=''
807 i_fcntl=''
808 i_float=''
809 i_fp=''
810 i_fp_class=''
811 i_gdbm=''
812 d_grpasswd=''
813 i_grp=''
814 i_ieeefp=''
815 i_inttypes=''
816 i_langinfo=''
817 i_libutil=''
818 i_limits=''
819 i_locale=''
820 i_machcthr=''
821 i_malloc=''
822 i_math=''
823 i_memory=''
824 i_mntent=''
825 i_ndbm=''
826 i_netdb=''
827 i_neterrno=''
828 i_netinettcp=''
829 i_niin=''
830 i_sysin=''
831 i_poll=''
832 i_prot=''
833 i_pthread=''
834 d_pwage=''
835 d_pwchange=''
836 d_pwclass=''
837 d_pwcomment=''
838 d_pwexpire=''
839 d_pwgecos=''
840 d_pwpasswd=''
841 d_pwquota=''
842 i_pwd=''
843 i_sfio=''
844 i_shadow=''
845 i_socks=''
846 i_stddef=''
847 i_stdlib=''
848 i_string=''
849 strings=''
850 i_sunmath=''
851 i_sysaccess=''
852 i_sysdir=''
853 i_sysfile=''
854 d_voidtty=''
855 i_bsdioctl=''
856 i_sysfilio=''
857 i_sysioctl=''
858 i_syssockio=''
859 i_syslog=''
860 i_sysmman=''
861 i_sysmode=''
862 i_sysmount=''
863 i_sysndir=''
864 i_sysparam=''
865 i_sysresrc=''
866 i_syssecrt=''
867 i_sysselct=''
868 i_sysstat=''
869 i_sysstatfs=''
870 i_sysstatvfs=''
871 i_systimes=''
872 i_systypes=''
873 i_sysuio=''
874 i_sysun=''
875 i_sysutsname=''
876 i_sysvfs=''
877 i_syswait=''
878 i_sgtty=''
879 i_termio=''
880 i_termios=''
881 d_tm_tm_gmtoff=''
882 d_tm_tm_zone=''
883 i_systime=''
884 i_systimek=''
885 i_time=''
886 timeincl=''
887 i_unistd=''
888 i_ustat=''
889 i_utime=''
890 i_values=''
891 i_stdarg=''
892 i_varargs=''
893 i_varhdr=''
894 i_vfork=''
895 inc_version_list=''
896 inc_version_list_init=''
897 installprefix=''
898 installprefixexp=''
899 installstyle=''
900 installusrbinperl=''
901 intsize=''
902 longsize=''
903 shortsize=''
904 issymlink=''
905 libc=''
906 ldlibpthname=''
907 libperl=''
908 shrpenv=''
909 useshrplib=''
910 glibpth=''
911 libpth=''
912 loclibpth=''
913 plibpth=''
914 xlibpth=''
915 ignore_versioned_solibs=''
916 libs=''
917 libsdirs=''
918 libsfiles=''
919 libsfound=''
920 libspath=''
921 lns=''
922 d_PRIEUldbl=''
923 d_PRIFUldbl=''
924 d_PRIGUldbl=''
925 d_PRIeldbl=''
926 d_PRIfldbl=''
927 d_PRIgldbl=''
928 d_SCNfldbl=''
929 sPRIEUldbl=''
930 sPRIFUldbl=''
931 sPRIGUldbl=''
932 sPRIeldbl=''
933 sPRIfldbl=''
934 sPRIgldbl=''
935 sSCNfldbl=''
936 lseeksize=''
937 lseektype=''
938 make_set_make=''
939 d_mymalloc=''
940 freetype=''
941 mallocobj=''
942 mallocsrc=''
943 malloctype=''
944 usemymalloc=''
945 installman1dir=''
946 man1dir=''
947 man1direxp=''
948 man1ext=''
949 installman3dir=''
950 man3dir=''
951 man3direxp=''
952 man3ext=''
953 modetype=''
954 multiarch=''
955 mydomain=''
956 myhostname=''
957 phostname=''
958 c=''
959 n=''
960 d_eofnblk=''
961 eagain=''
962 o_nonblock=''
963 rd_nodata=''
964 need_va_copy=''
965 netdb_hlen_type=''
966 netdb_host_type=''
967 netdb_name_type=''
968 netdb_net_type=''
969 groupcat=''
970 hostcat=''
971 passcat=''
972 orderlib=''
973 ranlib=''
974 d_perl_otherlibdirs=''
975 otherlibdirs=''
976 package=''
977 spackage=''
978 pager=''
979 api_revision=''
980 api_subversion=''
981 api_version=''
982 api_versionstring=''
983 patchlevel=''
984 perl_patchlevel=''
985 revision=''
986 subversion=''
987 version=''
988 version_patchlevel_string=''
989 perl5=''
990 perladmin=''
991 perlpath=''
992 d_nv_preserves_uv=''
993 i16size=''
994 i16type=''
995 i32size=''
996 i32type=''
997 i64size=''
998 i64type=''
999 i8size=''
1000 i8type=''
1001 ivsize=''
1002 ivtype=''
1003 nv_preserves_uv_bits=''
1004 nvsize=''
1005 nvtype=''
1006 u16size=''
1007 u16type=''
1008 u32size=''
1009 u32type=''
1010 u64size=''
1011 u64type=''
1012 u8size=''
1013 u8type=''
1014 uvsize=''
1015 uvtype=''
1016 ivdformat=''
1017 nvEUformat=''
1018 nvFUformat=''
1019 nvGUformat=''
1020 nveformat=''
1021 nvfformat=''
1022 nvgformat=''
1023 uvXUformat=''
1024 uvoformat=''
1025 uvuformat=''
1026 uvxformat=''
1027 pidtype=''
1028 prefix=''
1029 prefixexp=''
1030 installprivlib=''
1031 privlib=''
1032 privlibexp=''
1033 prototype=''
1034 ptrsize=''
1035 d_PRIXU64=''
1036 d_PRId64=''
1037 d_PRIi64=''
1038 d_PRIo64=''
1039 d_PRIu64=''
1040 d_PRIx64=''
1041 sPRIXU64=''
1042 sPRId64=''
1043 sPRIi64=''
1044 sPRIo64=''
1045 sPRIu64=''
1046 sPRIx64=''
1047 d_quad=''
1048 quadkind=''
1049 quadtype=''
1050 uquadtype=''
1051 drand01=''
1052 randbits=''
1053 randfunc=''
1054 randseedtype=''
1055 seedfunc=''
1056 installscript=''
1057 scriptdir=''
1058 scriptdirexp=''
1059 selectminbits=''
1060 selecttype=''
1061 sh=''
1062 sig_count=''
1063 sig_name=''
1064 sig_name_init=''
1065 sig_num=''
1066 sig_num_init=''
1067 sig_size=''
1068 installsitearch=''
1069 sitearch=''
1070 sitearchexp=''
1071 installsitebin=''
1072 sitebin=''
1073 sitebinexp=''
1074 installsitehtml1=''
1075 sitehtml1=''
1076 sitehtml1exp=''
1077 installsitehtml3=''
1078 sitehtml3=''
1079 sitehtml3exp=''
1080 installsitelib=''
1081 sitelib=''
1082 sitelib_stem=''
1083 sitelibexp=''
1084 installsiteman1=''
1085 siteman1=''
1086 siteman1exp=''
1087 installsiteman3=''
1088 siteman3=''
1089 siteman3exp=''
1090 siteprefix=''
1091 siteprefixexp=''
1092 installsitescript=''
1093 sitescript=''
1094 sitescriptexp=''
1095 sizesize=''
1096 sizetype=''
1097 so=''
1098 socksizetype=''
1099 sharpbang=''
1100 shsharp=''
1101 spitshell=''
1102 src=''
1103 ssizetype=''
1104 startperl=''
1105 startsh=''
1106 stdchar=''
1107 d_stdio_stream_array=''
1108 stdio_stream_array=''
1109 sysman=''
1110 trnl=''
1111 uidformat=''
1112 uidsign=''
1113 uidsize=''
1114 uidtype=''
1115 archname64=''
1116 use64bitall=''
1117 use64bitint=''
1118 usefaststdio=''
1119 ccflags_uselargefiles=''
1120 ldflags_uselargefiles=''
1121 libswanted_uselargefiles=''
1122 uselargefiles=''
1123 uselongdouble=''
1124 usemorebits=''
1125 usemultiplicity=''
1126 nm_opt=''
1127 nm_so_opt=''
1128 runnm=''
1129 usenm=''
1130 useperlio=''
1131 usesocks=''
1132 d_oldpthreads=''
1133 use5005threads=''
1134 useithreads=''
1135 usereentrant=''
1136 usethreads=''
1137 incpath=''
1138 mips_type=''
1139 usrinc=''
1140 d_vendorarch=''
1141 installvendorarch=''
1142 vendorarch=''
1143 vendorarchexp=''
1144 d_vendorbin=''
1145 installvendorbin=''
1146 vendorbin=''
1147 vendorbinexp=''
1148 installvendorhtml1=''
1149 vendorhtml1=''
1150 vendorhtml1exp=''
1151 installvendorhtml3=''
1152 vendorhtml3=''
1153 vendorhtml3exp=''
1154 d_vendorlib=''
1155 installvendorlib=''
1156 vendorlib=''
1157 vendorlib_stem=''
1158 vendorlibexp=''
1159 installvendorman1=''
1160 vendorman1=''
1161 vendorman1exp=''
1162 installvendorman3=''
1163 vendorman3=''
1164 vendorman3exp=''
1165 usevendorprefix=''
1166 vendorprefix=''
1167 vendorprefixexp=''
1168 d_vendorscript=''
1169 installvendorscript=''
1170 vendorscript=''
1171 vendorscriptexp=''
1172 versiononly=''
1173 defvoidused=''
1174 voidflags=''
1175 pm_apiversion=''
1176 xs_apiversion=''
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 : Possible local include directories to search.
1212 : Set locincpth to "" in a hint file to defeat local include searches.
1213 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1214 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1215 :
1216 : no include file wanted by default
1217 inclwanted=''
1218
1219 siteman1=''
1220 siteman3=''
1221 sitescript=''
1222 : Trailing extension.  Override this in a hint file, if needed.
1223 : Extra object files, if any, needed on this platform.
1224 archobjs=''
1225 groupstype=''
1226 libnames=''
1227 : change the next line if compiling for Xenix/286 on Xenix/386
1228 xlibpth='/usr/lib/386 /lib/386'
1229 : Possible local library directories to search.
1230 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1231 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1232
1233 : general looking path for locating libraries
1234 glibpth="/lib /usr/lib $xlibpth"
1235 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1236 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1237 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1238
1239 : Private path used by Configure to find libraries.  Its value
1240 : is prepended to libpth. This variable takes care of special
1241 : machines, like the mips.  Usually, it should be empty.
1242 plibpth=''
1243
1244 : default library list
1245 libswanted=''
1246 : some systems want to use only the non-versioned libso:s
1247 ignore_versioned_solibs=''
1248 : full support for void wanted by default
1249 defvoidused=15
1250
1251 ccname=''
1252 ccversion=''
1253 perllibs=''
1254 : set useposix=false in your hint file to disable the POSIX extension.
1255 useposix=true
1256 : set useopcode=false in your hint file to disable the Opcode extension.
1257 useopcode=true
1258 archname64=''
1259 ccflags_uselargefiles=''
1260 ldflags_uselargefiles=''
1261 libswanted_uselargefiles=''
1262 : set usemultiplicity on the Configure command line to enable multiplicity.
1263 : set usesocks on the Configure command line to enable socks.
1264 archname=''
1265 : set usethreads on the Configure command line to enable threads.
1266 usereentrant='undef'
1267 : List of libraries we want.
1268 : If anyone needs -lnet, put it in a hint file.
1269 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1270 libswanted="$libswanted dld ld sun m c cposix posix"
1271 libswanted="$libswanted ndir dir crypt sec"
1272 libswanted="$libswanted ucb bsd BSD PW x util rt posix4"
1273 : We probably want to search /usr/shlib before most other libraries.
1274 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1275 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1276 glibpth="/usr/shlib $glibpth"
1277 : Do not use vfork unless overridden by a hint file.
1278 usevfork=false
1279
1280 : Find the basic shell for Bourne shell scripts
1281 case "$sh" in
1282 '')
1283         case "$SYSTYPE" in
1284         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1285         *) xxx='/bin/sh';;
1286         esac
1287         if test -f "$xxx"; then
1288                 sh="$xxx"
1289         else
1290                 : Build up a list and do a single loop so we can 'break' out.
1291                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1292                 for xxx in sh bash ksh pdksh ash; do
1293                         for p in $pth; do
1294                                 try="$try ${p}/${xxx}"
1295                         done
1296                 done
1297                 for xxx in $try; do
1298                         if test -f "$xxx"; then
1299                                 sh="$xxx";
1300                                 break
1301                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1302                                 sh="$xxx";
1303                                 break
1304                         elif test -f "$xxx.exe"; then
1305                                 sh="$xxx";
1306                                 break
1307                         fi
1308                 done
1309         fi
1310         ;;
1311 esac
1312
1313 case "$sh" in
1314 '')     cat >&2 <<EOM
1315 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1316
1317 Usually it's in /bin/sh.  How did you even get this far?
1318 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1319 we'll try to straighten this all out.
1320 EOM
1321         exit 1
1322         ;;
1323 esac
1324
1325 : see if sh knows # comments
1326 if `$sh -c '#' >/dev/null 2>&1`; then
1327         shsharp=true
1328         spitshell=cat
1329         xcat=/bin/cat
1330         test -f $xcat$_exe || xcat=/usr/bin/cat
1331         if test ! -f $xcat$_exe; then
1332                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1333                         if test -f $p/cat$_exe; then
1334                                 xcat=$p/cat
1335                                 break
1336                         fi
1337                 done
1338                 if test ! -f $xcat$_exe; then
1339                         echo "Can't find cat anywhere!"
1340                         exit 1
1341                 fi
1342         fi
1343         echo "#!$xcat" >sharp
1344         $eunicefix sharp
1345         chmod +x sharp
1346         ./sharp > today
1347         if test -s today; then
1348                 sharpbang='#!'
1349         else
1350                 echo "#! $xcat" > sharp
1351                 $eunicefix sharp
1352                 chmod +x sharp
1353                 ./sharp > today
1354                 if test -s today; then
1355                         sharpbang='#! '
1356                 else
1357                         sharpbang=': use '
1358                 fi
1359         fi
1360 else
1361         echo " "
1362         echo "Your $sh doesn't grok # comments--I will strip them later on."
1363         shsharp=false
1364         cd ..
1365         echo "exec grep -v '^[  ]*#'" >spitshell
1366         chmod +x spitshell
1367         $eunicefix spitshell
1368         spitshell=`pwd`/spitshell
1369         cd UU
1370         echo "I presume that if # doesn't work, #! won't work either!"
1371         sharpbang=': use '
1372 fi
1373 rm -f sharp today
1374
1375 : figure out how to guarantee sh startup
1376 case "$startsh" in
1377 '') startsh=${sharpbang}${sh} ;;
1378 *)
1379 esac
1380 cat >sharp <<EOSS
1381 $startsh
1382 set abc
1383 test "$?abc" != 1
1384 EOSS
1385
1386 chmod +x sharp
1387 $eunicefix sharp
1388 if ./sharp; then
1389         : echo "Yup, it does."
1390 else
1391         echo "Hmm... '$startsh' does not guarantee sh startup..."
1392         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1393 fi
1394 rm -f sharp
1395
1396
1397 : Save command line options in file UU/cmdline.opt for later use in
1398 : generating config.sh.
1399 cat > cmdline.opt <<EOSH
1400 # Configure command line arguments.
1401 config_arg0='$0'
1402 config_args='$*'
1403 config_argc=$#
1404 EOSH
1405 argn=1
1406 args_exp=''
1407 args_sep=''
1408 for arg in "$@"; do
1409         cat >>cmdline.opt <<EOSH
1410 config_arg$argn='$arg'
1411 EOSH
1412         # Extreme backslashitis: replace each ' by '"'"'
1413         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1414 $arg
1415 EOC
1416         arg_exp=`cat cmdl.opt`
1417         args_exp="$args_exp$args_sep'$arg_exp'"
1418         argn=`expr $argn + 1`
1419         args_sep=' '
1420 done
1421 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1422 # used by ./hints/os2.sh
1423 rm -f cmdl.opt
1424
1425 : produce awk script to parse command line options
1426 cat >options.awk <<'EOF'
1427 BEGIN {
1428         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1429
1430         len = length(optstr);
1431         for (i = 1; i <= len; i++) {
1432                 c = substr(optstr, i, 1);
1433                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1434                 if (a == ":") {
1435                         arg[c] = 1;
1436                         i++;
1437                 }
1438                 opt[c] = 1;
1439         }
1440 }
1441 {
1442         expect = 0;
1443         str = $0;
1444         if (substr(str, 1, 1) != "-") {
1445                 printf("'%s'\n", str);
1446                 next;
1447         }
1448         len = length($0);
1449         for (i = 2; i <= len; i++) {
1450                 c = substr(str, i, 1);
1451                 if (!opt[c]) {
1452                         printf("-%s\n", substr(str, i));
1453                         next;
1454                 }
1455                 printf("-%s\n", c);
1456                 if (arg[c]) {
1457                         if (i < len)
1458                                 printf("'%s'\n", substr(str, i + 1));
1459                         else
1460                                 expect = 1;
1461                         next;
1462                 }
1463         }
1464 }
1465 END {
1466         if (expect)
1467                 print "?";
1468 }
1469 EOF
1470
1471 : process the command line options
1472 set X `for arg in "$@"; do echo "X$arg"; done |
1473         sed -e s/X// | awk -f options.awk`
1474 eval "set $*"
1475 shift
1476 rm -f options.awk
1477
1478 : set up default values
1479 fastread=''
1480 reuseval=false
1481 config_sh=''
1482 alldone=''
1483 error=''
1484 silent=''
1485 extractsh=''
1486 override=''
1487 knowitall=''
1488 rm -f optdef.sh posthint.sh
1489 cat >optdef.sh <<EOS
1490 $startsh
1491 EOS
1492
1493
1494 : option parsing
1495 while test $# -gt 0; do
1496         case "$1" in
1497         -d) shift; fastread=yes;;
1498         -e) shift; alldone=cont;;
1499         -f)
1500                 shift
1501                 cd ..
1502                 if test -r "$1"; then
1503                         config_sh="$1"
1504                 else
1505                         echo "$me: cannot read config file $1." >&2
1506                         error=true
1507                 fi
1508                 cd UU
1509                 shift;;
1510         -h) shift; error=true;;
1511         -r) shift; reuseval=true;;
1512         -s) shift; silent=true; realsilent=true;;
1513         -E) shift; alldone=exit;;
1514         -K) shift; knowitall=true;;
1515         -O) shift; override=true;;
1516         -S) shift; silent=true; extractsh=true;;
1517         -D)
1518                 shift
1519                 case "$1" in
1520                 *=)
1521                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1522                         echo "$me: ignoring -D $1" >&2
1523                         ;;
1524                 *=*) echo "$1" | \
1525                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1526                 *) echo "$1='define'" >> optdef.sh;;
1527                 esac
1528                 shift
1529                 ;;
1530         -U)
1531                 shift
1532                 case "$1" in
1533                 *=) echo "$1" >> optdef.sh;;
1534                 *=*)
1535                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1536                         echo "$me: ignoring -U $1" >&2
1537                         ;;
1538                 *) echo "$1='undef'" >> optdef.sh;;
1539                 esac
1540                 shift
1541                 ;;
1542         -A)
1543             shift
1544             xxx=''
1545             yyy="$1"
1546             zzz=''
1547             uuu=undef
1548             case "$yyy" in
1549             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1550                  case "$zzz" in
1551                  *:*) zzz='' ;;
1552                  *)   xxx=append
1553                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1554                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1555                  esac
1556                  ;;
1557             esac
1558             case "$xxx" in
1559             '')  case "$yyy" in
1560                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1561                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1562                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1563                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1564                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1565                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1566                  esac
1567                  ;;       
1568             esac
1569             case "$xxx" in
1570             append)
1571                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1572             clear)
1573                 echo "$yyy=''"                  >> posthint.sh ;;
1574             define)
1575                 case "$zzz" in
1576                 '') zzz=define ;;
1577                 esac
1578                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1579             eval)
1580                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1581             prepend)
1582                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1583             undef)
1584                 case "$zzz" in
1585                 '') zzz="$uuu" ;;
1586                 esac
1587                 echo "$yyy=$zzz"                >> posthint.sh ;;
1588             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1589             esac
1590             shift
1591             ;;
1592         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1593             exit 0;;
1594         --) break;;
1595         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1596         *) break;;
1597         esac
1598 done
1599
1600 case "$error" in
1601 true)
1602         cat >&2 <<EOM
1603 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1604                  [-U symbol] [-U symbol=] [-A command:symbol...]
1605   -d : use defaults for all answers.
1606   -e : go on without questioning past the production of config.sh.
1607   -f : specify an alternate default configuration file.
1608   -h : print this help message and exit (with an error status).
1609   -r : reuse C symbols value if possible (skips costly nm extraction).
1610   -s : silent mode, only echoes questions and essential information.
1611   -D : define symbol to have some value:
1612          -D symbol         symbol gets the value 'define'
1613          -D symbol=value   symbol gets the value 'value'
1614   -E : stop at the end of questions, after having produced config.sh.
1615   -K : do not use unless you know what you are doing.
1616   -O : let -D and -U override definitions from loaded configuration file.
1617   -S : perform variable substitutions on all .SH files (can mix with -f)
1618   -U : undefine symbol:
1619          -U symbol    symbol gets the value 'undef'
1620          -U symbol=   symbol gets completely empty
1621   -A : manipulate symbol after the platform specific hints have been applied:
1622          -A symbol=value                append " "value to symbol
1623          -A append:symbol=value         append value to symbol
1624          -A define:symbol=value         define symbol to have value
1625          -A clear:symbol                define symbol to be ''
1626          -A define:symbol               define symbol to be 'define'
1627          -A eval:symbol=value           define symbol to be eval of value
1628          -A prepend:symbol=value        prepend value to symbol
1629          -A undef:symbol                define symbol to be 'undef'
1630          -A undef:symbol=               define symbol to be ''
1631   -V : print version number and exit (with a zero status).
1632 EOM
1633         exit 1
1634         ;;
1635 esac
1636
1637 : Sanity checks
1638 case "$fastread$alldone" in
1639 yescont|yesexit) ;;
1640 *)
1641         case "$extractsh" in
1642         true) ;;
1643         *)
1644                 if test ! -t 0; then
1645                         echo "Say 'sh Configure', not 'sh <Configure'"
1646                         exit 1
1647                 fi
1648                 ;;
1649         esac
1650         ;;
1651 esac
1652
1653 exec 4>&1
1654 case "$silent" in
1655 true) exec 1>/dev/null;;
1656 esac
1657
1658 : run the defines and the undefines, if any, but leave the file out there...
1659 touch optdef.sh
1660 . ./optdef.sh
1661 : create the posthint manipulation script and leave the file out there...
1662 touch posthint.sh
1663
1664 : set package name
1665 package=perl5
1666 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1667 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1668 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1669 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1670 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1671 esac
1672
1673 : Some greps do not return status, grrr.
1674 echo "grimblepritz" >grimble
1675 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1676         contains=contains
1677 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1678         contains=grep
1679 else
1680         contains=contains
1681 fi
1682 rm -f grimble
1683 : the following should work in any shell
1684 case "$contains" in
1685 contains*)
1686         echo " "
1687         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1688         cat >contains <<'EOSS'
1689 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1690 EOSS
1691 chmod +x contains
1692 esac
1693
1694 : Find the path to the source tree
1695 case "$src" in
1696 '') case "$0" in
1697     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1698          case "$src" in
1699          /*)    ;;
1700          .)     ;;
1701          *)     src=`cd ../$src && pwd` ;;
1702          esac
1703          ;;
1704     *)   src='.';;
1705     esac;;
1706 esac
1707 case "$src" in
1708 '')     src=/
1709         rsrc=/
1710         ;;
1711 /*) rsrc="$src";;
1712 *) rsrc="../$src";;
1713 esac
1714 if test -f $rsrc/Configure && \
1715         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1716 then
1717    : found it, so we are ok.
1718 else
1719         rsrc=''
1720         for src in . .. ../.. ../../.. ../../../..; do
1721                 if test -f ../$src/Configure && \
1722                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1723                 then
1724                         rsrc=../$src
1725                         break
1726                 fi
1727         done
1728 fi
1729 case "$rsrc" in
1730 '')
1731         cat <<EOM >&4
1732
1733 Sorry, I can't seem to locate the source dir for $package.  Please start
1734 Configure with an explicit path -- i.e. /some/path/Configure.
1735
1736 EOM
1737         exit 1
1738         ;;
1739 ../.)   rsrc='..';;
1740 *)
1741         echo " "
1742         echo "Sources for $package found in \"$src\"." >&4
1743         ;;
1744 esac
1745
1746 : script used to extract .SH files with variable substitutions
1747 cat >extract <<'EOS'
1748 PERL_CONFIG_SH=true
1749 echo "Doing variable substitutions on .SH files..."
1750 if test -f MANIFEST; then
1751         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1752 else
1753         echo "(Looking for .SH files under the source directory.)"
1754         set x `(cd "$src"; find . -name "*.SH" -print)`
1755 fi
1756 shift
1757 case $# in
1758 0) set x `(cd "$src"; echo *.SH)`; shift;;
1759 esac
1760 if test ! -f "$src/$1"; then
1761         shift
1762 fi
1763 mkdir_p='
1764 name=$1;
1765 create="";
1766 while test $name; do
1767         if test ! -d "$name"; then
1768                 create="$name $create";
1769                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1770                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1771         else
1772                 name="";
1773         fi;
1774 done;
1775 for file in $create; do
1776         mkdir $file;
1777 done
1778 '
1779 for file in $*; do
1780         case "$src" in
1781         ".")
1782                 case "$file" in
1783                 */*)
1784                         dir=`expr X$file : 'X\(.*\)/'`
1785                         file=`expr X$file : 'X.*/\(.*\)'`
1786                         (cd "$dir" && . ./$file)
1787                         ;;
1788                 *)
1789                         . ./$file
1790                         ;;
1791                 esac
1792                 ;;
1793         *)
1794                 case "$file" in
1795                 */*)
1796                         dir=`expr X$file : 'X\(.*\)/'`
1797                         file=`expr X$file : 'X.*/\(.*\)'`
1798                         (set x $dir; shift; eval $mkdir_p)
1799                         sh <"$src/$dir/$file"
1800                         ;;
1801                 *)
1802                         sh <"$src/$file"
1803                         ;;
1804                 esac
1805                 ;;
1806         esac
1807 done
1808 if test -f "$src/config_h.SH"; then
1809         if test ! -f config.h; then
1810         : oops, they left it out of MANIFEST, probably, so do it anyway.
1811         . "$src/config_h.SH"
1812         fi
1813 fi
1814 EOS
1815
1816 : extract files and exit if asked to do so
1817 case "$extractsh" in
1818 true)
1819         case "$realsilent" in
1820         true) ;;
1821         *) exec 1>&4;;
1822         esac
1823         case "$config_sh" in
1824         '') config_sh='config.sh';;
1825         esac
1826         echo " "
1827         echo "Fetching answers from $config_sh..."
1828         cd ..
1829         . $config_sh
1830         test "$override" && . ./optdef.sh
1831         echo " "
1832         . UU/extract
1833         rm -rf UU
1834         echo "Extraction done."
1835         exit 0
1836         ;;
1837 esac
1838
1839 : Eunice requires " " instead of "", can you believe it
1840 echo " "
1841 : Here we go...
1842 echo "Beginning of configuration questions for $package."
1843
1844 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1845
1846 : first determine how to suppress newline on echo command
1847 echo " "
1848 echo "Checking echo to see how to suppress newlines..."
1849 (echo "hi there\c" ; echo " ") >.echotmp
1850 if $contains c .echotmp >/dev/null 2>&1 ; then
1851         echo "...using -n."
1852         n='-n'
1853         c=''
1854 else
1855         cat <<'EOM'
1856 ...using \c
1857 EOM
1858         n=''
1859         c='\c'
1860 fi
1861 echo $n "The star should be here-->$c"
1862 echo '*'
1863 rm -f .echotmp
1864
1865 : Now test for existence of everything in MANIFEST
1866 echo " "
1867 if test -f "$rsrc/MANIFEST"; then
1868         echo "First let's make sure your kit is complete.  Checking..." >&4
1869         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1870         rm -f missing
1871         tmppwd=`pwd`
1872         for filelist in x??; do
1873                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1874         done
1875         if test -s missing; then
1876                 cat missing >&4
1877                 cat >&4 <<'EOM'
1878
1879 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1880
1881 You have the option of continuing the configuration process, despite the
1882 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1883 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1884 and contact the author (perlbug@perl.org).
1885
1886 EOM
1887                 echo $n "Continue? [n] $c" >&4
1888                 read ans
1889                 case "$ans" in
1890                 y*)
1891                         echo "Continuing..." >&4
1892                         rm -f missing
1893                         ;;
1894                 *)
1895                         echo "ABORTING..." >&4
1896                         kill $$
1897                         ;;
1898                 esac
1899         else
1900                 echo "Looks good..."
1901         fi
1902 else
1903         echo "There is no MANIFEST file.  I hope your kit is complete !"
1904 fi
1905 rm -f missing x??
1906
1907 echo " "
1908 : Find the appropriate value for a newline for tr
1909 if test -n "$DJGPP"; then
1910        trnl='\012'
1911 fi
1912 if test X"$trnl" = X; then
1913         case "`echo foo|tr '\n' x 2>/dev/null`" in
1914         foox) trnl='\n' ;;
1915         esac
1916 fi
1917 if test X"$trnl" = X; then
1918         case "`echo foo|tr '\012' x 2>/dev/null`" in
1919         foox) trnl='\012' ;;
1920         esac
1921 fi
1922 if test X"$trnl" = X; then
1923        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1924        fooxy) trnl='\n\r' ;;
1925        esac
1926 fi
1927 if test X"$trnl" = X; then
1928         cat <<EOM >&2
1929
1930 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1931
1932 EOM
1933         exit 1
1934 fi
1935
1936 : compute the number of columns on the terminal for proper question formatting
1937 case "$COLUMNS" in
1938 '') COLUMNS='80';;
1939 esac
1940
1941 : set up the echo used in my read
1942 myecho="case \"\$xxxm\" in
1943 '') echo $n \"\$rp $c\" >&4;;
1944 *) case \"\$rp\" in
1945         '') echo $n \"[\$xxxm] $c\";;
1946         *)
1947                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1948                         echo \"\$rp\" >&4
1949                         echo $n \"[\$xxxm] $c\" >&4
1950                 else
1951                         echo $n \"\$rp [\$xxxm] $c\" >&4
1952                 fi
1953                 ;;
1954         esac;;
1955 esac"
1956
1957 : now set up to do reads with possible shell escape and default assignment
1958 cat <<EOSC >myread
1959 $startsh
1960 xxxm=\$dflt
1961 $myecho
1962 ans='!'
1963 case "\$fastread" in
1964 yes) case "\$dflt" in
1965         '') ;;
1966         *) ans='';
1967                 case "\$silent-\$rp" in
1968                 true-) ;;
1969                 *) echo " " >&4;;
1970                 esac;;
1971         esac;;
1972 *) case "\$silent" in
1973         true) case "\$rp" in
1974                 '') ans='';;
1975                 esac;;
1976         esac;;
1977 esac
1978 while expr "X\$ans" : "X!" >/dev/null; do
1979         read answ
1980         set x \$xxxm
1981         shift
1982         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1983         case  "\$answ" in
1984         "!")
1985                 sh 1>&4
1986                 echo " "
1987                 $myecho
1988                 ;;
1989         !*)
1990                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1991                 shift
1992                 sh 1>&4 -c "\$*"
1993                 echo " "
1994                 $myecho
1995                 ;;
1996         "\$ans")
1997                 case "\$ans" in
1998                 \\&*)
1999                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2000                         shift
2001                         case "\$1" in
2002                         -d)
2003                                 fastread=yes
2004                                 echo "(OK, I'll run with -d after this question.)" >&4
2005                                 ;;
2006                         -*)
2007                                 echo "*** Sorry, \$1 not supported yet." >&4
2008                                 ;;
2009                         esac
2010                         $myecho
2011                         ans=!
2012                         ;;
2013                 esac;;
2014         *)
2015                 case "\$aok" in
2016                 y)
2017                         echo "*** Substitution done -- please confirm."
2018                         xxxm="\$ans"
2019                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2020                         xxxm="\$ans"
2021                         ans=!
2022                         ;;
2023                 *)
2024                         echo "*** Error -- try again."
2025                         ans=!
2026                         ;;
2027                 esac
2028                 $myecho
2029                 ;;
2030         esac
2031         case "\$ans\$xxxm\$nostick" in
2032         '')
2033                 ans=!
2034                 $myecho
2035                 ;;
2036         esac
2037 done
2038 case "\$ans" in
2039 '') ans="\$xxxm";;
2040 esac
2041 EOSC
2042
2043 : create .config dir to save info across Configure sessions
2044 test -d ../.config || mkdir ../.config
2045 cat >../.config/README <<EOF
2046 This directory created by Configure to save information that should
2047 persist across sessions for $package.
2048
2049 You may safely delete it if you wish.
2050 EOF
2051
2052 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2053 case "$usedevel" in
2054 $define|true|[yY]*) ;;
2055 *) case "$xversion" in
2056    *[13579])
2057         cat >&4 <<EOH
2058 *** WHOA THERE!!! ***
2059
2060     This is an UNSTABLE DEVELOPMENT release.
2061     The version of this $package distribution is $xversion, that is, odd,
2062     (as opposed to even) and that signifies a development release.
2063     If you want a maintenance release, you want an even-numbered version.
2064
2065     Do ***NOT*** install this into production use.
2066     Data corruption and crashes are possible.
2067
2068     It is most seriously suggested that you do not continue any further
2069     unless you want to help in developing and debugging Perl.
2070
2071     If you *still* want to build perl, you can answer 'y' now,
2072     or pass -Dusedevel to Configure.
2073
2074 EOH
2075         rp='Do you really want to continue?'
2076         dflt='n'
2077         . ./myread
2078         case "$ans" in
2079         [yY]) echo >&4 "Okay, continuing."
2080               usedevel="$define" ;;
2081         *) echo >&4 "Okay, bye."
2082            exit 1
2083            ;;
2084         esac
2085         ;;
2086     esac
2087     ;;
2088 esac
2089 case "$usedevel" in
2090 $define|true|[yY]*)
2091         case "$versiononly" in
2092         '') versiononly="$define" ;;
2093         esac
2094         case "$installusrbinperl" in
2095         '') installusrbinperl="$undef" ;;
2096         esac
2097         ;;
2098 esac
2099
2100 : general instructions
2101 needman=true
2102 firsttime=true
2103 user=`(logname) 2>/dev/null`
2104 case "$user" in
2105 '') user=`whoami 2>&1`;;
2106 esac
2107 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2108         firsttime=false
2109         echo " "
2110         rp='Would you like to see the instructions?'
2111         dflt=n
2112         . ./myread
2113         case "$ans" in
2114         [yY]*) ;;
2115         *) needman=false;;
2116         esac
2117 fi
2118 if $needman; then
2119         cat <<EOH
2120
2121 This installation shell script will examine your system and ask you questions
2122 to determine how the perl5 package should be installed. If you get
2123 stuck on a question, you may use a ! shell escape to start a subshell or
2124 execute a command.  Many of the questions will have default answers in square
2125 brackets; typing carriage return will give you the default.
2126
2127 On some of the questions which ask for file or directory names you are allowed
2128 to use the ~name construct to specify the login directory belonging to "name",
2129 even if you don't have a shell which knows about that.  Questions where this is
2130 allowed will be marked "(~name ok)".
2131
2132 EOH
2133         rp=''
2134         dflt='Type carriage return to continue'
2135         . ./myread
2136         cat <<'EOH'
2137
2138 The prompter used in this script allows you to use shell variables and
2139 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2140 in the default answer, as if the default line was a set of arguments given to a
2141 script shell.  This means you may also use $* to repeat the whole default line,
2142 so you do not have to re-type everything to add something to the default.
2143
2144 Everytime there is a substitution, you will have to confirm.  If there is an
2145 error (e.g. an unmatched backtick), the default answer will remain unchanged
2146 and you will be prompted again.
2147
2148 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2149 the questions and use the computed defaults (or the previous answers if there
2150 was already a config.sh file). Type 'Configure -h' for a list of options.
2151 You may also start interactively and then answer '& -d' at any prompt to turn
2152 on the non-interactive behaviour for the remainder of the execution.
2153
2154 EOH
2155         . ./myread
2156         cat <<EOH
2157
2158 Much effort has been expended to ensure that this shell script will run on any
2159 Unix system.  If despite that it blows up on yours, your best bet is to edit
2160 Configure and run it again.  If you can't run Configure for some reason,
2161 you'll have to generate a config.sh file by hand.  Whatever problems you
2162 have, let me (perlbug@perl.org) know how I blew it.
2163
2164 This installation script affects things in two ways:
2165
2166 1) it may do direct variable substitutions on some of the files included
2167    in this kit.
2168 2) it builds a config.h file for inclusion in C programs.  You may edit
2169    any of these files as the need arises after running this script.
2170
2171 If you make a mistake on a question, there is no easy way to back up to it
2172 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2173 files.  Configure will offer to let you do this before it runs the SH files.
2174
2175 EOH
2176         dflt='Type carriage return to continue'
2177         . ./myread
2178         case "$firsttime" in
2179         true) echo $user >>../.config/instruct;;
2180         esac
2181 fi
2182
2183 : find out where common programs are
2184 echo " "
2185 echo "Locating common programs..." >&4
2186 cat <<EOSC >loc
2187 $startsh
2188 case \$# in
2189 0) exit 1;;
2190 esac
2191 thing=\$1
2192 shift
2193 dflt=\$1
2194 shift
2195 for dir in \$*; do
2196         case "\$thing" in
2197         .)
2198         if test -d \$dir/\$thing; then
2199                 echo \$dir
2200                 exit 0
2201         fi
2202         ;;
2203         *)
2204         for thisthing in \$dir/\$thing; do
2205                 : just loop through to pick last item
2206         done
2207         if test -f \$thisthing; then
2208                 echo \$thisthing
2209                 exit 0
2210         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2211                 echo \$thisthing
2212                 exit 0
2213         elif test -f \$dir/\$thing.exe; then
2214                 if test -n "$DJGPP"; then
2215                         echo \$dir/\$thing.exe
2216                 elif test "$eunicefix" != ":"; then
2217                         : on Eunice apparently
2218                         echo \$dir/\$thing
2219                         exit 0
2220                 fi
2221                 exit 0
2222         fi
2223         ;;
2224         esac
2225 done
2226 echo \$dflt
2227 exit 1
2228 EOSC
2229 chmod +x loc
2230 $eunicefix loc
2231 loclist="
2232 awk
2233 cat
2234 chmod
2235 comm
2236 cp
2237 echo
2238 expr
2239 grep
2240 ls
2241 mkdir
2242 rm
2243 sed
2244 sort
2245 touch
2246 tr
2247 uniq
2248 "
2249 trylist="
2250 Mcc
2251 ar
2252 bison
2253 byacc
2254 cpp
2255 csh
2256 date
2257 egrep
2258 gmake
2259 gzip
2260 less
2261 ln
2262 make
2263 more
2264 nm
2265 nroff
2266 pg
2267 test
2268 uname
2269 zip
2270 "
2271 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2272 pth="$pth /lib /usr/lib"
2273 for file in $loclist; do
2274         eval xxx=\$$file
2275         case "$xxx" in
2276         /*|?:[\\/]*)
2277                 if test -f "$xxx"; then
2278                         : ok
2279                 else
2280                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2281                         xxx=`./loc $file $file $pth`
2282                 fi
2283                 ;;
2284         '') xxx=`./loc $file $file $pth`;;
2285         *) xxx=`./loc $xxx $xxx $pth`;;
2286         esac
2287         eval $file=$xxx$_exe
2288         eval _$file=$xxx
2289         case "$xxx" in
2290         /*)
2291                 echo $file is in $xxx.
2292                 ;;
2293         ?:[\\/]*)
2294                 echo $file is in $xxx.
2295                 ;;
2296         *)
2297                 echo "I don't know where '$file' is, and my life depends on it." >&4
2298                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2299                 exit 1
2300                 ;;
2301         esac
2302 done
2303 echo " "
2304 echo "Don't worry if any of the following aren't found..."
2305 say=offhand
2306 for file in $trylist; do
2307         eval xxx=\$$file
2308         case "$xxx" in
2309         /*|?:[\\/]*)
2310                 if test -f "$xxx"; then
2311                         : ok
2312                 else
2313                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2314                         xxx=`./loc $file $file $pth`
2315                 fi
2316                 ;;
2317         '') xxx=`./loc $file $file $pth`;;
2318         *) xxx=`./loc $xxx $xxx $pth`;;
2319         esac
2320         eval $file=$xxx$_exe
2321         eval _$file=$xxx
2322         case "$xxx" in
2323         /*)
2324                 echo $file is in $xxx.
2325                 ;;
2326         ?:[\\/]*)
2327                 echo $file is in $xxx.
2328                 ;;
2329         *)
2330                 echo "I don't see $file out there, $say."
2331                 say=either
2332                 ;;
2333         esac
2334 done
2335 case "$egrep" in
2336 egrep)
2337         echo "Substituting grep for egrep."
2338         egrep=$grep
2339         _egrep=$grep
2340         ;;
2341 esac
2342 case "$ln" in
2343 ln)
2344         echo "Substituting cp for ln."
2345         ln=$cp
2346         _ln=$cp
2347         ;;
2348 esac
2349 case "$make" in
2350 make)   
2351         case "$gmake" in
2352         gmake)
2353         echo "I can't find make or gmake, and my life depends on it." >&4
2354         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2355         exit 1
2356         ;;
2357         esac
2358         ;;
2359 esac    
2360 case "$gmake" in
2361 gmake)  ;;
2362 *)      # We can't have osname yet.
2363         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2364                 # Assume that gmake, if found, is definitely GNU make
2365                 # and prefer it over the system make.
2366                 echo "Substituting gmake for make."
2367                 make=$gmake
2368                 _make=$gmake
2369         fi
2370         ;;
2371 esac
2372 case "$test" in
2373 test)
2374         echo "Hopefully test is built into your sh."
2375         ;;
2376 *)
2377         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2378                 echo "Using the test built into your sh."
2379                 test=test
2380                 _test=test
2381         fi
2382         ;;
2383 esac
2384 case "$echo" in
2385 echo)
2386         echo "Hopefully echo is built into your sh."
2387         ;;
2388 '') ;;
2389 *)
2390         echo " "
2391 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2392         $echo $n "hi there$c" >foo1
2393         echo $n "hi there$c" >foo2
2394         if cmp foo1 foo2 >/dev/null 2>&1; then
2395                 echo "They are compatible.  In fact, they may be identical."
2396         else
2397                 case "$n" in
2398                 '-n') n='' c='\c';;
2399                 *) n='-n' c='';;
2400                 esac
2401                 cat <<FOO
2402 They are not compatible!  You are probably running ksh on a non-USG system.
2403 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2404 have echo built in and we may have to run some Bourne shell scripts.  That
2405 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2406
2407 FOO
2408                 $echo $n "The star should be here-->$c"
2409                 $echo "*"
2410         fi
2411         $rm -f foo1 foo2
2412         ;;
2413 esac
2414
2415 cat <<EOS >trygcc
2416 $startsh
2417 EOS
2418 cat <<'EOSC' >>trygcc
2419 case "$cc" in
2420 '') ;;
2421 *)  $rm -f try try.*
2422     $cat >try.c <<EOM
2423 int main(int argc, char *argv[]) {
2424   return 0;
2425 }
2426 EOM
2427     if $cc -o try $ccflags $ldflags try.c; then
2428        :
2429     else
2430         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2431         despair=yes
2432         trygcc=yes
2433         case "$cc" in
2434         *gcc*) trygcc=no ;;
2435         esac
2436         case "`$cc -v -c try.c 2>&1`" in
2437         *gcc*) trygcc=no ;;
2438         esac
2439         if $test X"$trygcc" = Xyes; then
2440             if gcc -o try -c try.c; then
2441                 echo " "
2442                 echo "You seem to have a working gcc, though." >&4
2443                 rp="Would you like to use it?"
2444                 dflt=y
2445                 if $test -f myread; then
2446                     . ./myread
2447                 else
2448                     if $test -f UU/myread; then
2449                         . ./UU/myread
2450                     else
2451                         echo "Cannot find myread, sorry.  Aborting." >&2
2452                         exit 1
2453                     fi
2454                 fi  
2455                 case "$ans" in
2456                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2457                        if $test -f usethreads.cbu; then
2458                            $cat >&4 <<EOM 
2459
2460 *** However, any setting of the C compiler flags (e.g. for thread support)
2461 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2462 *** (together with e.g. -Dusethreads).
2463
2464 EOM
2465                        fi;;
2466                 esac
2467             fi
2468         fi
2469     fi
2470     $rm -f try try.*
2471     ;;
2472 esac
2473 EOSC
2474
2475 cat <<EOS >checkcc
2476 $startsh
2477 EOS
2478 cat <<'EOSC' >>checkcc
2479 case "$cc" in        
2480 '') ;;
2481 *)  $rm -f try try.*              
2482     $cat >try.c <<EOM
2483 int main(int argc, char *argv[]) {
2484   return 0;
2485 }
2486 EOM
2487     if $cc -o try $ccflags $ldflags try.c; then
2488        :
2489     else
2490         if $test X"$despair" = Xyes; then
2491            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2492         fi
2493         $cat >&4 <<EOM         
2494 You need to find a working C compiler.
2495 Either (purchase and) install the C compiler supplied by your OS vendor,
2496 or for a free C compiler try http://gcc.gnu.org/
2497 I cannot continue any further, aborting.
2498 EOM
2499         exit 1
2500     fi
2501     $rm -f try try.*
2502     ;;
2503 esac
2504 EOSC
2505
2506 : determine whether symbolic links are supported
2507 echo " "
2508 $touch blurfl
2509 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2510         echo "Symbolic links are supported." >&4
2511         lns="$ln -s"
2512 else
2513         echo "Symbolic links are NOT supported." >&4
2514         lns="$ln"
2515 fi
2516 $rm -f blurfl sym
2517
2518 : determine whether symbolic links are supported
2519 echo " "
2520 case "$lns" in
2521 *"ln"*" -s")
2522         echo "Checking how to test for symbolic links..." >&4
2523         $lns blurfl sym
2524         if $test "X$issymlink" = X; then
2525                 case "$newsh" in
2526                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2527                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2528                 esac
2529                 if test $? = 0; then
2530                         issymlink="test -h"
2531                 else
2532                         echo "Your builtin 'test -h' may be broken." >&4
2533                         case "$test" in
2534                         /*)     ;;
2535                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2536                                 for p in $pth
2537                                 do
2538                                         if test -f "$p/$test"; then
2539                                                 test="$p/$test"
2540                                                 break
2541                                         fi
2542                                 done
2543                                 ;;
2544                         esac
2545                         case "$test" in
2546                         /*)
2547                                 echo "Trying external '$test -h'." >&4
2548                                 issymlink="$test -h"
2549                                 if $test ! -h sym >/dev/null 2>&1; then
2550                                         echo "External '$test -h' is broken, too." >&4
2551                                         issymlink=''
2552                                 fi
2553                                 ;;
2554                         *)      issymlink='' ;;
2555                         esac
2556                 fi              
2557         fi
2558         if $test "X$issymlink" = X; then
2559                 if $test -L sym 2>/dev/null; then
2560                         issymlink="$test -L"
2561                         echo "The builtin '$test -L' worked." >&4
2562                 fi
2563         fi
2564         if $test "X$issymlink" != X; then
2565                 echo "You can test for symbolic links with '$issymlink'." >&4
2566         else
2567                 echo "I do not know how you can test for symbolic links." >&4
2568         fi
2569         $rm -f blurfl sym
2570         ;;
2571 *)      echo "No symbolic links, so not testing for their testing..." >&4
2572         ;;
2573 esac
2574 echo " "
2575
2576
2577 case "$mksymlinks" in
2578 $define|true|[yY]*)
2579         case "$src" in
2580         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2581                 exit 1
2582                 ;;
2583         *)      case "$lns:$issymlink" in
2584                 *"ln"*" -s:"*"test -"?)
2585                         echo "Creating the symbolic links..." >&4
2586                         echo "(First creating the subdirectories...)" >&4
2587                         cd ..
2588                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2589                                 read directory
2590                                 test -z "$directory" && break
2591                                 mkdir -p $directory
2592                         done
2593                         # Sanity check 1.
2594                         if test ! -d t/base; then
2595                                 echo "Failed to create the subdirectories.  Aborting." >&4
2596                                 exit 1
2597                         fi
2598                         echo "(Then creating the symlinks...)" >&4
2599                         awk '{print $1}' $src/MANIFEST | while true; do
2600                                 read filename
2601                                 test -z "$filename" && break
2602                                 if test -f $filename; then
2603                                         if $issymlink $filename; then
2604                                                 rm -f $filename
2605                                         fi
2606                                 fi
2607                                 if test -f $filename; then
2608                                         echo "$filename already exists, not symlinking."
2609                                 else
2610                                         ln -s $src/$filename $filename
2611                                 fi
2612                         done
2613                         # Sanity check 2.
2614                         if test ! -f t/base/lex.t; then
2615                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2616                                 exit 1
2617                         fi
2618                         cd UU
2619                         ;;
2620                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2621                         ;;
2622                 esac
2623                 ;;
2624         esac
2625         ;;
2626 esac
2627
2628
2629 case "$usecrosscompile" in
2630 $define|true|[yY]*)
2631         $echo "Cross-compiling..."
2632         croak=''
2633         case "$cc" in
2634         *-*-gcc) # A cross-compiling gcc, probably.
2635             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2636             ar=$targetarch-ar
2637             # leave out ld, choosing it is more complex
2638             nm=$targetarch-nm
2639             ranlib=$targetarch-ranlib
2640             $echo 'extern int foo;' > try.c
2641             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2642             shift
2643             if $test $# -gt 0; then
2644                 incpth="$incpth $*"
2645                 incpth="`$echo $incpth|$sed 's/^ //'`"
2646                 echo "Guessing incpth '$incpth'." >&4
2647                 for i in $*; do
2648                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2649                     if $test -d $j; then
2650                         libpth="$libpth $j"
2651                     fi
2652                 done   
2653                 libpth="`$echo $libpth|$sed 's/^ //'`"
2654                 echo "Guessing libpth '$libpth'." >&4
2655             fi
2656             $rm -f try.c
2657             ;;
2658         esac
2659         case "$targetarch" in
2660         '') echo "Targetarch not defined." >&4; croak=y ;;
2661         *)  echo "Using targetarch $targetarch." >&4 ;;
2662         esac
2663         case "$incpth" in
2664         '') echo "Incpth not defined." >&4; croak=y ;;
2665         *)  echo "Using incpth '$incpth'." >&4 ;;
2666         esac
2667         case "$libpth" in
2668         '') echo "Libpth not defined." >&4; croak=y ;;
2669         *)  echo "Using libpth '$libpth'." >&4 ;;
2670         esac
2671         case "$usrinc" in
2672         '') for i in $incpth; do
2673                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2674                     usrinc=$i
2675                     echo "Guessing usrinc $usrinc." >&4
2676                     break
2677                 fi
2678             done
2679             case "$usrinc" in
2680             '') echo "Usrinc not defined." >&4; croak=y ;;
2681             esac
2682             ;;
2683         *)  echo "Using usrinc $usrinc." >&4 ;;
2684         esac
2685         case "$targethost" in
2686         '') echo "Targethost not defined." >&4; croak=y ;;
2687         *)  echo "Using targethost $targethost." >&4
2688         esac
2689         locincpth=' '
2690         loclibpth=' '
2691         case "$croak" in
2692         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2693         esac
2694         case "$src" in
2695         /*) run=$src/Cross/run
2696             targetmkdir=$src/Cross/mkdir
2697             to=$src/Cross/to
2698             from=$src/Cross/from
2699             ;;
2700         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2701             run=$pwd/Cross/run
2702             targetmkdir=$pwd/Cross/mkdir
2703             to=$pwd/Cross/to
2704             from=$pwd/Cross/from
2705             ;;
2706         esac
2707         case "$targetrun" in
2708         '') targetrun=ssh ;;
2709         esac
2710         case "$targetto" in
2711         '') targetto=scp ;;
2712         esac
2713         case "$targetfrom" in
2714         '') targetfrom=scp ;;
2715         esac
2716         run=$run-$targetrun
2717         to=$to-$targetto
2718         from=$from-$targetfrom
2719         case "$targetdir" in
2720         '')  targetdir=/tmp
2721              echo "Guessing targetdir $targetdir." >&4
2722              ;;
2723         esac
2724         case "$targetuser" in
2725         '')  targetuser=root
2726              echo "Guessing targetuser $targetuser." >&4
2727              ;;
2728         esac
2729         case "$targetfrom" in
2730         scp)    q=-q ;;
2731         *)      q='' ;;
2732         esac
2733         case "$targetrun" in
2734         ssh|rsh)
2735             cat >$run <<EOF
2736 #!/bin/sh
2737 case "\$1" in
2738 -cwd)
2739   shift
2740   cwd=\$1
2741   shift
2742   ;;
2743 esac
2744 case "\$cwd" in
2745 '') cwd=$targetdir ;;
2746 esac
2747 exe=\$1
2748 shift
2749 if $test ! -f \$exe.xok; then
2750   $to \$exe
2751   $touch \$exe.xok
2752 fi
2753 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2754 EOF
2755             ;;
2756         *)  echo "Unknown targetrun '$targetrun'" >&4
2757             exit 1
2758             ;;
2759         esac
2760         case "$targetmkdir" in
2761         */Cross/mkdir)
2762             cat >$targetmkdir <<EOF
2763 #!/bin/sh
2764 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2765 EOF
2766             $chmod a+rx $targetmkdir
2767             ;;
2768         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2769             exit 1
2770             ;;
2771         esac
2772         case "$targetto" in
2773         scp|rcp)
2774             cat >$to <<EOF
2775 #!/bin/sh
2776 for f in \$@
2777 do
2778   case "\$f" in
2779   /*)
2780     $targetmkdir \`dirname \$f\`
2781     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2782     ;;
2783   *)
2784     $targetmkdir $targetdir/\`dirname \$f\`
2785     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2786     ;;
2787   esac
2788 done
2789 exit 0
2790 EOF
2791             ;;
2792         cp) cat >$to <<EOF
2793 #!/bin/sh
2794 for f in \$@
2795 do
2796   case "\$f" in
2797   /*)
2798     $mkdir -p $targetdir/\`dirname \$f\`
2799     $cp \$f $targetdir/\$f || exit 1
2800     ;;
2801   *)
2802     $targetmkdir $targetdir/\`dirname \$f\`
2803     $cp \$f $targetdir/\$f || exit 1
2804     ;;
2805   esac
2806 done
2807 exit 0
2808 EOF
2809             ;;
2810         *)  echo "Unknown targetto '$targetto'" >&4
2811             exit 1
2812             ;;
2813         esac
2814         case "$targetfrom" in
2815         scp|rcp)
2816           cat >$from <<EOF
2817 #!/bin/sh
2818 for f in \$@
2819 do
2820   $rm -f \$f
2821   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2822 done
2823 exit 0
2824 EOF
2825             ;;
2826         cp) cat >$from <<EOF
2827 #!/bin/sh
2828 for f in \$@
2829 do
2830   $rm -f \$f
2831   cp $targetdir/\$f . || exit 1
2832 done
2833 exit 0
2834 EOF
2835             ;;
2836         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2837             exit 1
2838             ;;
2839         esac
2840         if $test ! -f $run; then
2841             echo "Target 'run' script '$run' not found." >&4
2842         else
2843             $chmod a+rx $run
2844         fi
2845         if $test ! -f $to; then
2846             echo "Target 'to' script '$to' not found." >&4
2847         else
2848             $chmod a+rx $to
2849         fi
2850         if $test ! -f $from; then
2851             echo "Target 'from' script '$from' not found." >&4
2852         else
2853             $chmod a+rx $from
2854         fi
2855         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2856             exit 1
2857         fi
2858         cat >&4 <<EOF
2859 Using '$run' for remote execution,
2860 and '$from' and '$to'
2861 for remote file transfer.
2862 EOF
2863         ;;
2864 *)      run=''
2865         to=:
2866         from=:
2867         usecrosscompile='undef'
2868         targetarch=''
2869         ;;
2870 esac
2871
2872 : see whether [:lower:] and [:upper:] are supported character classes
2873 echo " "
2874 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2875 ABYZ)
2876         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2877         up='[:upper:]'
2878         low='[:lower:]'
2879         ;;
2880 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2881         # (0xc9 and 0xd1), therefore that is a nice testing point.
2882         if test "X$up" = X -o "X$low" = X; then
2883             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2884             ij) up='[A-Z]'
2885                 low='[a-z]'
2886                 ;;
2887             esac
2888         fi
2889         if test "X$up" = X -o "X$low" = X; then
2890             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2891             ij) up='A-Z'
2892                 low='a-z'
2893                 ;;
2894             esac
2895         fi
2896         if test "X$up" = X -o "X$low" = X; then
2897             case "`echo IJ | od -x 2>/dev/null`" in
2898             *C9D1*|*c9d1*)
2899                 echo "Hey, this might be EBCDIC." >&4
2900                 if test "X$up" = X -o "X$low" = X; then
2901                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2902                     ij) up='[A-IJ-RS-Z]'
2903                         low='[a-ij-rs-z]'
2904                         ;;
2905                     esac
2906                 fi
2907                 if test "X$up" = X -o "X$low" = X; then
2908                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2909                     ij) up='A-IJ-RS-Z'
2910                         low='a-ij-rs-z'
2911                         ;;
2912                     esac
2913                 fi
2914                 ;;
2915             esac
2916         fi
2917 esac
2918 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2919 ij)
2920     echo "Using $up and $low to convert case." >&4
2921     ;;
2922 *)
2923     echo "I don't know how to translate letters from upper to lower case." >&4
2924     echo "Your tr is not acting any way I know of." >&4
2925     exit 1
2926     ;;
2927 esac
2928 : set up the translation script tr, must be called with ./tr of course
2929 cat >tr <<EOSC
2930 $startsh
2931 case "\$1\$2" in
2932 '[A-Z][a-z]') exec $tr '$up' '$low';;
2933 '[a-z][A-Z]') exec $tr '$low' '$up';;
2934 esac
2935 exec $tr "\$@"
2936 EOSC
2937 chmod +x tr
2938 $eunicefix tr
2939
2940 : Try to determine whether config.sh was made on this system
2941 case "$config_sh" in
2942 '')
2943 myuname=`$uname -a 2>/dev/null`
2944 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2945 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2946 # because the A-Z/a-z are not consecutive.
2947 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2948         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2949 newmyuname="$myuname"
2950 dflt=n
2951 case "$knowitall" in
2952 '')
2953         if test -f ../config.sh; then
2954                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2955                         eval "`grep myuname= ../config.sh`"
2956                 fi
2957                 if test "X$myuname" = "X$newmyuname"; then
2958                         dflt=y
2959                 fi
2960         fi
2961         ;;
2962 *) dflt=y;;
2963 esac
2964
2965 : Get old answers from old config file if Configure was run on the
2966 : same system, otherwise use the hints.
2967 hint=default
2968 cd ..
2969 if test -f config.sh; then
2970         echo " "
2971         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2972         . UU/myread
2973         case "$ans" in
2974         n*|N*) echo "OK, I'll ignore it."
2975                 mv config.sh config.sh.old
2976                 myuname="$newmyuname"
2977                 ;;
2978         *)  echo "Fetching default answers from your old config.sh file..." >&4
2979                 tmp_n="$n"
2980                 tmp_c="$c"
2981                 tmp_sh="$sh"
2982                 . ./config.sh
2983                 cp config.sh UU
2984                 n="$tmp_n"
2985                 c="$tmp_c"
2986                 : Older versions did not always set $sh.  Catch re-use of such
2987                 : an old config.sh.
2988                 case "$sh" in
2989                 '') sh="$tmp_sh" ;;
2990                 esac
2991                 hint=previous
2992                 ;;
2993         esac
2994 fi
2995 . ./UU/checkcc
2996 if test ! -f config.sh; then
2997         $cat <<EOM
2998
2999 First time through, eh?  I have some defaults handy for some systems
3000 that need some extra help getting the Configure answers right:
3001
3002 EOM
3003         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3004         dflt=''
3005         : Half the following guesses are probably wrong... If you have better
3006         : tests or hints, please send them to perlbug@perl.org
3007         : The metaconfig authors would also appreciate a copy...
3008         $test -f /irix && osname=irix
3009         $test -f /xenix && osname=sco_xenix
3010         $test -f /dynix && osname=dynix
3011         $test -f /dnix && osname=dnix
3012         $test -f /lynx.os && osname=lynxos
3013         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3014         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3015         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3016         $test -f /bin/mips && /bin/mips && osname=mips
3017         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3018                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3019         $test -d /usr/apollo/bin && osname=apollo
3020         $test -f /etc/saf/_sactab && osname=svr4
3021         $test -d /usr/include/minix && osname=minix
3022         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3023         if $test -d /MachTen -o -d /MachTen_Folder; then
3024                 osname=machten
3025                 if $test -x /sbin/version; then
3026                         osvers=`/sbin/version | $awk '{print $2}' |
3027                         $sed -e 's/[A-Za-z]$//'`
3028                 elif $test -x /usr/etc/version; then
3029                         osvers=`/usr/etc/version | $awk '{print $2}' |
3030                         $sed -e 's/[A-Za-z]$//'`
3031                 else
3032                         osvers="$2.$3"
3033                 fi
3034         fi
3035
3036         $test -f /sys/posix.dll &&
3037                 $test -f /usr/bin/what &&
3038                 set X `/usr/bin/what /sys/posix.dll` &&
3039                 $test "$3" = UWIN &&
3040                 osname=uwin &&
3041                 osvers="$5"
3042
3043         if $test -f $uname; then
3044                 set X $myuname
3045                 shift
3046
3047                 case "$5" in
3048                 fps*) osname=fps ;;
3049                 mips*)
3050                         case "$4" in
3051                         umips) osname=umips ;;
3052                         *) osname=mips ;;
3053                         esac;;
3054                 [23]100) osname=mips ;;
3055                 next*) osname=next ;;
3056                 i386*)
3057                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3058                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3059                                 osname='sco'
3060                                 osvers=$tmp
3061                         elif $test -f /etc/kconfig; then
3062                                 osname=isc
3063                                 if test "$lns" = "$ln -s"; then
3064                                         osvers=4
3065                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=3
3067                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3068                                         osvers=2
3069                                 fi
3070                         fi
3071                         tmp=''
3072                         ;;
3073                 pc*)
3074                         if test -n "$DJGPP"; then
3075                                 osname=dos
3076                                 osvers=djgpp
3077                         fi
3078                         ;;
3079                 esac
3080
3081                 case "$1" in
3082                 aix) osname=aix
3083                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3084                         case "$tmp" in
3085                         'not found') osvers="$4"."$3" ;;
3086                         '<3240'|'<>3240') osvers=3.2.0 ;;
3087                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3088                         '=3250'|'>3250') osvers=3.2.5 ;;
3089                         *) osvers=$tmp;;
3090                         esac
3091                         ;;
3092                 bsd386) osname=bsd386
3093                         osvers=`$uname -r`
3094                         ;;
3095                 cygwin*) osname=cygwin
3096                         osvers="$3"
3097                         ;;
3098                 *dc.osx) osname=dcosx
3099                         osvers="$3"
3100                         ;;
3101                 dnix) osname=dnix
3102                         osvers="$3"
3103                         ;;
3104                 domainos) osname=apollo
3105                         osvers="$3"
3106                         ;;
3107                 dgux) osname=dgux 
3108                         osvers="$3"
3109                         ;;
3110                 dynixptx*) osname=dynixptx
3111                         osvers=`echo "$4"|sed 's/^v//'`
3112                         ;;
3113                 freebsd) osname=freebsd 
3114                         osvers="$3" ;;
3115                 genix) osname=genix ;;
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) osname=svr5
3199                         osvers="$4"
3200                         ;;
3201                 uts)    osname=uts
3202                         osvers="$3"
3203                         ;;
3204                 vos) osvers="$3"
3205                         ;;
3206                 $2) case "$osname" in
3207                         *isc*) ;;
3208                         *freebsd*) ;;
3209                         svr*)
3210                                 : svr4.x or possibly later
3211                                 case "svr$3" in 
3212                                 ${osname}*)
3213                                         osname=svr$3
3214                                         osvers=$4
3215                                         ;;
3216                                 esac
3217                                 case "$osname" in
3218                                 svr4.0)
3219                                         : Check for ESIX
3220                                         if test -f /stand/boot ; then
3221                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3222                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3223                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3224                                                         if test -n "$isesix"; then
3225                                                                 osname=esix4
3226                                                         fi
3227                                                 fi
3228                                         fi
3229                                         ;;
3230                                 esac
3231                                 ;;
3232                         *)      if test -f /etc/systemid; then
3233                                         osname=sco
3234                                         set `echo $3 | $sed 's/\./ /g'` $4
3235                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3236                                                 osvers=$1.$2.$3
3237                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3238                                                 osvers=$1.$2
3239                                         elif $test -f $src/hints/sco_$1.sh; then
3240                                                 osvers=$1
3241                                         fi
3242                                 else
3243                                         case "$osname" in
3244                                         '') : Still unknown.  Probably a generic Sys V.
3245                                                 osname="sysv"
3246                                                 osvers="$3"
3247                                                 ;;
3248                                         esac
3249                                 fi
3250                                 ;;
3251                         esac
3252                         ;;
3253                 *)      case "$osname" in
3254                         '') : Still unknown.  Probably a generic BSD.
3255                                 osname="$1"
3256                                 osvers="$3"
3257                                 ;;
3258                         esac
3259                         ;;
3260                 esac
3261         else
3262                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3263                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3264                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3265                                 osname=news_os
3266                         fi
3267                         $rm -f UU/kernel.what
3268                 elif test -d c:/. -o -n "$is_os2" ; then
3269                         set X $myuname
3270                         osname=os2
3271                         osvers="$5"
3272                 fi
3273         fi
3274         
3275         case "$targetarch" in
3276         '') ;;
3277         *)  hostarch=$osname
3278             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3279             osvers=''
3280             ;;
3281         esac
3282
3283         : Now look for a hint file osname_osvers, unless one has been
3284         : specified already.
3285         case "$hintfile" in
3286         ''|' ')
3287                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3288                 : Also try without trailing minor version numbers.
3289                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3290                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3291                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3292                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3293                 case "$file" in
3294                 '') dflt=none ;;
3295                 *)  case "$osvers" in
3296                         '') dflt=$file
3297                                 ;;
3298                         *)  if $test -f $src/hints/$file.sh ; then
3299                                         dflt=$file
3300                                 elif $test -f $src/hints/$xfile.sh ; then
3301                                         dflt=$xfile
3302                                 elif $test -f $src/hints/$xxfile.sh ; then
3303                                         dflt=$xxfile
3304                                 elif $test -f $src/hints/$xxxfile.sh ; then
3305                                         dflt=$xxxfile
3306                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3307                                         dflt=$xxxxfile
3308                                 elif $test -f "$src/hints/${osname}.sh" ; then
3309                                         dflt="${osname}"
3310                                 else
3311                                         dflt=none
3312                                 fi
3313                                 ;;
3314                         esac
3315                         ;;
3316                 esac
3317                 if $test -f Policy.sh ; then
3318                         case "$dflt" in
3319                         *Policy*) ;;
3320                         none) dflt="Policy" ;;
3321                         *) dflt="Policy $dflt" ;;
3322                         esac
3323                 fi
3324                 ;;
3325         *)
3326                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3327                 ;;
3328         esac
3329
3330         if $test -f Policy.sh ; then
3331                 $cat <<EOM
3332
3333 There's also a Policy hint file available, which should make the
3334 site-specific (policy) questions easier to answer.
3335 EOM
3336
3337         fi
3338
3339         $cat <<EOM
3340
3341 You may give one or more space-separated answers, or "none" if appropriate.
3342 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3343 is a good thing.  DO NOT give a wrong version or a wrong OS.
3344
3345 EOM
3346
3347         rp="Which of these apply, if any?"
3348         . UU/myread
3349         tans=$ans
3350         for file in $tans; do
3351                 if $test X$file = XPolicy -a -f Policy.sh; then
3352                         . Policy.sh
3353                         $cat Policy.sh >> UU/config.sh
3354                 elif $test -f $src/hints/$file.sh; then
3355                         . $src/hints/$file.sh
3356                         $cat $src/hints/$file.sh >> UU/config.sh
3357                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3358                         : nothing
3359                 else
3360                         : Give one chance to correct a possible typo.
3361                         echo "$file.sh does not exist"
3362                         dflt=$file
3363                         rp="hint to use instead?"
3364                         . UU/myread
3365                         for file in $ans; do
3366                                 if $test -f "$src/hints/$file.sh"; then
3367                                         . $src/hints/$file.sh
3368                                         $cat $src/hints/$file.sh >> UU/config.sh
3369                                 elif $test X$ans = X -o X$ans = Xnone ; then
3370                                         : nothing
3371                                 else
3372                                         echo "$file.sh does not exist -- ignored."
3373                                 fi
3374                         done
3375                 fi
3376         done
3377
3378         hint=recommended
3379         : Remember our hint file for later.
3380         if $test -f "$src/hints/$file.sh" ; then
3381                 hintfile="$file"
3382         else
3383                 hintfile=''
3384         fi
3385 fi
3386 cd UU
3387 ;;
3388 *)
3389         echo " "
3390         echo "Fetching default answers from $config_sh..." >&4
3391         tmp_n="$n"
3392         tmp_c="$c"
3393         cd ..
3394         cp $config_sh config.sh 2>/dev/null
3395         chmod +w config.sh
3396         . ./config.sh
3397         cd UU
3398         cp ../config.sh .
3399         n="$tmp_n"
3400         c="$tmp_c"
3401         hint=previous
3402         ;;
3403 esac
3404 test "$override" && . ./optdef.sh
3405
3406 : Restore computed paths
3407 for file in $loclist $trylist; do
3408         eval $file="\$_$file"
3409 done
3410
3411 cat << EOM
3412
3413 Configure uses the operating system name and version to set some defaults.
3414 The default value is probably right if the name rings a bell. Otherwise,
3415 since spelling matters for me, either accept the default or answer "none"
3416 to leave it blank.
3417
3418 EOM
3419 case "$osname" in
3420         ''|' ')
3421                 case "$hintfile" in
3422                 ''|' '|none) dflt=none ;;
3423                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3424                 esac
3425                 ;;
3426         *) dflt="$osname" ;;
3427 esac
3428 rp="Operating system name?"
3429 . ./myread
3430 case "$ans" in
3431 none)  osname='' ;;
3432 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3433 esac
3434 echo " "
3435 case "$osvers" in
3436         ''|' ')
3437                 case "$hintfile" in
3438                 ''|' '|none) dflt=none ;;
3439                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3440                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3441                         case "$dflt" in
3442                         ''|' ') dflt=none ;;
3443                         esac
3444                         ;;
3445                 esac
3446                 ;;
3447         *) dflt="$osvers" ;;
3448 esac
3449 rp="Operating system version?"
3450 . ./myread
3451 case "$ans" in
3452 none)  osvers='' ;;
3453 *) osvers="$ans" ;;
3454 esac
3455
3456
3457 . ./posthint.sh
3458
3459 : who configured the system
3460 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3461 cf_by=`(logname) 2>/dev/null`
3462 case "$cf_by" in
3463 "")
3464         cf_by=`(whoami) 2>/dev/null`
3465         case "$cf_by" in
3466         "") cf_by=unknown ;;
3467         esac ;;
3468 esac
3469
3470 : set up the script used to warn in case of inconsistency
3471 cat <<EOS >whoa
3472 $startsh
3473 EOS
3474 cat <<'EOSC' >>whoa
3475 dflt=y
3476 echo " "
3477 echo "*** WHOA THERE!!! ***" >&4
3478 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3479 rp="    Keep the $hint value?"
3480 . ./myread
3481 case "$ans" in
3482 y) td=$was; tu=$was;;
3483 esac
3484 EOSC
3485
3486 : function used to set $1 to $val
3487 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3488 case "$val$was" in
3489 $define$undef) . ./whoa; eval "$var=\$td";;
3490 $undef$define) . ./whoa; eval "$var=\$tu";;
3491 *) eval "$var=$val";;
3492 esac'
3493
3494 case "$usesocks" in
3495 $define|true|[yY]*)     dflt='y';;
3496 *) dflt='n';;
3497 esac
3498 cat <<EOM
3499
3500 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3501 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3502 to use the PerlIO abstraction layer, this will be implicitly selected.
3503
3504 If this doesn't make any sense to you, just accept the default '$dflt'.
3505 EOM
3506 rp='Build Perl for SOCKS?'
3507 . ./myread
3508 case "$ans" in
3509 y|Y)    val="$define" ;;     
3510 *)      val="$undef" ;;
3511 esac
3512 set usesocks
3513 eval $setvar
3514
3515 case "$usesocks" in
3516 $define|true|[yY]*) useperlio="$define";;
3517 esac
3518
3519 case "$useperlio" in
3520 $define|true|[yY]*|'')  dflt='y';;
3521 *) dflt='n';;
3522 esac
3523 cat <<EOM
3524
3525 Previous version of $package used the standard IO mechanisms as
3526 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3527 alternate IO mechanisms via the PerlIO abstraction layer, but the
3528 stdio mechanism is still available if needed.  The abstraction layer
3529 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3530 Using PerlIO with sfio may cause problems with some extension modules.
3531
3532 If this doesn't make any sense to you, just accept the default '$dflt'.
3533 EOM
3534 rp='Use the PerlIO abstraction layer?'
3535 . ./myread
3536 case "$ans" in
3537 y|Y) 
3538         val="$define"
3539         ;;
3540 *)      
3541         echo "Ok, doing things the stdio way."
3542         val="$undef"
3543         ;;
3544 esac
3545 set useperlio
3546 eval $setvar 
3547
3548 case "$usesocks" in
3549 $define|true|[yY]*)
3550         case "$useperlio" in
3551         $define|true|[yY]*) ;;
3552         *)      cat >&4 <<EOM
3553
3554 You are using the SOCKS proxy protocol library which means that you
3555 should also use the PerlIO layer.  You may be headed for trouble.
3556
3557 EOM
3558                 ;;
3559         esac
3560         ;;
3561 esac
3562
3563         
3564 case "$usethreads" in
3565 $define|true|[yY]*)     dflt='y';;
3566 *)     # Catch case where user specified ithreads or 5005threads but
3567        # forgot -Dusethreads (A.D. 4/2002)
3568        case "$useithreads$use5005threads" in
3569        *$define*)      
3570                 case "$useperlio" in
3571                 "$define")      dflt='y' ;;
3572                 *)              dflt='n' ;;
3573                 esac
3574                 ;;
3575        *)       dflt='n';;
3576        esac
3577        ;;
3578 esac
3579 cat <<EOM
3580
3581 Perl can be built to take advantage of threads on some systems.
3582 To do so, Configure can be run with -Dusethreads.
3583
3584 Note that Perl built with threading support runs slightly slower
3585 and uses more memory than plain Perl. The current implementation
3586 is believed to be stable, but it is fairly new, and so should be
3587 treated with caution.
3588
3589 If this doesn't make any sense to you, just accept the default '$dflt'.
3590 EOM
3591 rp='Build a threading Perl?'
3592 . ./myread
3593 case "$ans" in
3594 y|Y)    val="$define" ;;
3595 *)      val="$undef" ;;
3596 esac
3597 set usethreads
3598 eval $setvar
3599
3600 case "$usethreads" in
3601 $define)
3602         $cat <<EOM
3603
3604 Since release 5.6, Perl has had two different threading implementations,
3605 the newer interpreter-based version (ithreads) with one interpreter per
3606 thread, and the older 5.005 version (5005threads).
3607 The 5005threads version is effectively unmaintained and will probably be
3608 removed in Perl 5.10, so there should be no need to build a Perl using it
3609 unless needed for backwards compatibility with some existing 5.005threads
3610 code.
3611
3612 EOM
3613         : Default to ithreads unless overridden on command line or with
3614         : old config.sh
3615         dflt='y'
3616         case "$use5005threads" in
3617                 $define|true|[yY]*) dflt='n';;
3618         esac
3619         case "$useithreads" in
3620                 $undef|false|[nN]*) dflt='n';;
3621         esac
3622         rp='Use the newer interpreter-based ithreads?'
3623         . ./myread
3624         case "$ans" in
3625         y|Y)    val="$define" ;;
3626         *)      val="$undef" ;;
3627         esac
3628         set useithreads
3629         eval $setvar
3630         : Now set use5005threads to the opposite value.
3631         case "$useithreads" in
3632         $define) val="$undef" ;;
3633         *) val="$define" ;;
3634         esac
3635         set use5005threads
3636         eval $setvar
3637         ;;
3638 *)
3639         useithreads="$undef"
3640         use5005threads="$undef"
3641         ;;
3642 esac
3643
3644 case "$useithreads$use5005threads" in
3645 "$define$define")
3646         $cat >&4 <<EOM
3647
3648 You cannot have both the ithreads and the 5.005 threads enabled
3649 at the same time.  Disabling the 5.005 threads since they are
3650 much less stable than the ithreads.
3651
3652 EOM
3653         use5005threads="$undef"
3654         ;;
3655 esac
3656
3657 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3658         cat >&4 <<EOF
3659 ***
3660 *** To build with ithreads you must also use the PerlIO layer.
3661 *** Cannot continue, aborting.
3662 ***
3663 EOF
3664         exit 1
3665 fi
3666
3667 case "$d_oldpthreads" in
3668 '')     : Configure tests would be welcome here.  For now, assume undef.
3669         val="$undef" ;;
3670 *)      val="$d_oldpthreads" ;;
3671 esac
3672 set d_oldpthreads
3673 eval $setvar
3674
3675
3676 case "$usethreads" in
3677 "$define"|true|[yY]*)
3678 : Look for a hint-file generated 'call-back-unit'.  If the
3679 : user has specified that a threading perl is to be built,
3680 : we may need to set or change some other defaults.
3681         if $test -f usethreads.cbu; then
3682                 echo "Your platform has some specific hints for threaded builds, using them..."
3683                 . ./usethreads.cbu
3684         else
3685                 $cat <<EOM
3686 (Your platform doesn't have any specific hints for threaded builds.
3687  Assuming POSIX threads, then.)
3688 EOM
3689         fi
3690         ;;
3691 esac
3692
3693 cat <<EOM
3694
3695 Perl can be built so that multiple Perl interpreters can coexist
3696 within the same Perl executable.
3697 EOM
3698
3699 case "$useithreads" in
3700 $define)
3701         cat <<EOM
3702 This multiple interpreter support is required for interpreter-based threads.
3703 EOM
3704         val="$define"
3705         ;;
3706 *)      case "$usemultiplicity" in
3707         $define|true|[yY]*)     dflt='y';;
3708         *) dflt='n';;
3709         esac
3710         echo " "
3711         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3712         rp='Build Perl for multiplicity?'
3713         . ./myread
3714         case "$ans" in
3715         y|Y)    val="$define" ;;
3716         *)      val="$undef" ;;
3717         esac
3718         ;;
3719 esac
3720 set usemultiplicity
3721 eval $setvar
3722
3723
3724 case "$usemorebits" in
3725 "$define"|true|[yY]*)
3726         use64bitint="$define"
3727         uselongdouble="$define"
3728         usemorebits="$define"
3729         ;;
3730 *)      usemorebits="$undef"
3731         ;;
3732 esac
3733
3734 : make some quick guesses about what we are up against
3735 echo " "
3736 $echo $n "Hmm...  $c"
3737 echo exit 1 >bsd
3738 echo exit 1 >usg
3739 echo exit 1 >v7
3740 echo exit 1 >osf1
3741 echo exit 1 >eunice
3742 echo exit 1 >xenix
3743 echo exit 1 >venix
3744 echo exit 1 >os2
3745 d_bsd="$undef"
3746 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3747 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3748 then
3749         echo "Looks kind of like an OSF/1 system, but we'll see..."
3750         echo exit 0 >osf1
3751 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3752         xxx=`./loc addbib blurfl $pth`
3753         if $test -f $xxx; then
3754         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3755                 echo exit 0 >bsd
3756                 echo exit 0 >usg
3757         else
3758                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3759                         echo "Looks kind of like an extended USG system, but we'll see..."
3760                 else
3761                         echo "Looks kind of like a USG system, but we'll see..."
3762                 fi
3763                 echo exit 0 >usg
3764         fi
3765 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3766         echo "Looks kind of like a BSD system, but we'll see..."
3767         d_bsd="$define"
3768         echo exit 0 >bsd
3769 else
3770         echo "Looks kind of like a Version 7 system, but we'll see..."
3771         echo exit 0 >v7
3772 fi
3773 case "$eunicefix" in
3774 *unixtovms*)
3775         $cat <<'EOI'
3776 There is, however, a strange, musty smell in the air that reminds me of
3777 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3778 EOI
3779         echo exit 0 >eunice
3780         d_eunice="$define"
3781 : it so happens the Eunice I know will not run shell scripts in Unix format
3782         ;;
3783 *)
3784         echo " "
3785         echo "Congratulations.  You aren't running Eunice."
3786         d_eunice="$undef"
3787         ;;
3788 esac
3789 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3790 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3791 : semicolon as a patch separator
3792 case "$p_" in
3793 :) ;;
3794 *)
3795         $cat <<'EOI'
3796 I have the feeling something is not exactly right, however...don't tell me...
3797 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3798 (Or you may be running DOS with DJGPP.)
3799 EOI
3800         echo exit 0 >os2
3801         ;;
3802 esac
3803 if test -f /xenix; then
3804         echo "Actually, this looks more like a XENIX system..."
3805         echo exit 0 >xenix
3806         d_xenix="$define"
3807 else
3808         echo " "
3809         echo "It's not Xenix..."
3810         d_xenix="$undef"
3811 fi
3812 chmod +x xenix
3813 $eunicefix xenix
3814 if test -f /venix; then
3815         echo "Actually, this looks more like a VENIX system..."
3816         echo exit 0 >venix
3817 else
3818         echo " "
3819         if ./xenix; then
3820                 : null
3821         else
3822                 echo "Nor is it Venix..."
3823         fi
3824 fi
3825 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3826 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3827 $rm -f foo
3828
3829 case "$cc" in
3830 '') dflt=cc;;
3831 *) dflt="$cc";;
3832 esac
3833 rp="Use which C compiler?"
3834 . ./myread
3835 cc="$ans"
3836
3837 : See if they have not cc but they do have gcc
3838 . ./trygcc
3839 : Look for a hint-file generated 'call-back-unit'.  Now that the
3840 : user has specified the compiler, we may need to set or change some
3841 : other defaults.
3842 if $test -f cc.cbu; then
3843     . ./cc.cbu
3844 fi
3845 . ./checkcc
3846
3847 echo " "
3848 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3849 $cat >try.c <<EOM
3850 #include <stdio.h>
3851 int main() {
3852 #ifdef __GNUC__
3853 #ifdef __VERSION__
3854         printf("%s\n", __VERSION__);
3855 #else
3856         printf("%s\n", "1");
3857 #endif
3858 #endif
3859         return(0);
3860 }
3861 EOM
3862 if $cc -o try $ccflags $ldflags try.c; then
3863         gccversion=`$run ./try`
3864         case "$gccversion" in
3865         '') echo "You are not using GNU cc." ;;
3866         *)  echo "You are using GNU cc $gccversion."
3867             ccname=gcc
3868             ;;
3869         esac
3870 else
3871         echo " "
3872         echo "*** WHOA THERE!!! ***" >&4
3873         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3874         case "$knowitall" in
3875         '')
3876         echo "    You'd better start hunting for one and let me know about it." >&4
3877                 exit 1
3878                 ;;
3879         esac
3880 fi
3881 $rm -f try try.*
3882 case "$gccversion" in
3883 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3884 esac
3885 case "$gccversion" in
3886 '') gccosandvers='' ;;
3887 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3888    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3889    gccshortvers=''
3890    case "$gccosandvers" in
3891    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3892    $osname$osvers) ;; # looking good
3893    $osname*) cat <<EOM >&4
3894
3895 *** WHOA THERE!!! ***
3896
3897     Your gcc has not been compiled for the exact release of
3898     your operating system ($gccosandvers versus $osname$osvers).
3899
3900     In general it is a good idea to keep gcc synchronized with
3901     the operating system because otherwise serious problems
3902     may ensue when trying to compile software, like Perl.
3903
3904     I'm trying to be optimistic here, though, and will continue.
3905     If later during the configuration and build icky compilation
3906     problems appear (headerfile conflicts being the most common
3907     manifestation), I suggest reinstalling the gcc to match
3908     your operating system release.
3909
3910 EOM
3911       ;;
3912    *) gccosandvers='' ;; # failed to parse, better be silent
3913    esac
3914    ;;
3915 esac
3916 case "$ccname" in
3917 '') ccname="$cc" ;;
3918 esac
3919
3920 # gcc 3.* complain about adding -Idirectories that they already know about,
3921 # so we will take those off from locincpth.
3922 case "$gccversion" in
3923 3*)
3924     echo "main(){}">try.c
3925     for incdir in $locincpth; do
3926        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3927              grep '^c[cp]p*[01]: warning: changing search order '`
3928        if test "X$warn" != X; then
3929            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3930        fi
3931     done
3932     $rm -f try try.*
3933 esac
3934
3935 : decide how portable to be.  Allow command line overrides.
3936 case "$d_portable" in
3937 "$undef") ;;
3938 *)      d_portable="$define" ;;
3939 esac
3940
3941 : set up shell script to do ~ expansion
3942 cat >filexp <<EOSS
3943 $startsh
3944 : expand filename
3945 case "\$1" in
3946  ~/*|~)
3947         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3948         ;;
3949  ~*)
3950         if $test -f /bin/csh; then
3951                 /bin/csh -f -c "glob \$1"
3952                 failed=\$?
3953                 echo ""
3954                 exit \$failed
3955         else
3956                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3957                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3958                 if $test ! -d "\$dir"; then
3959                         me=\`basename \$0\`
3960                         echo "\$me: can't locate home directory for: \$name" >&2
3961                         exit 1
3962                 fi
3963                 case "\$1" in
3964                 */*)
3965                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3966                         ;;
3967                 *)
3968                         echo \$dir
3969                         ;;
3970                 esac
3971         fi
3972         ;;
3973 *)
3974         echo \$1
3975         ;;
3976 esac
3977 EOSS
3978 chmod +x filexp
3979 $eunicefix filexp
3980
3981 : now set up to get a file name
3982 cat <<EOS >getfile
3983 $startsh
3984 EOS
3985 cat <<'EOSC' >>getfile
3986 tilde=''
3987 fullpath=''
3988 already=''
3989 skip=''
3990 none_ok=''
3991 exp_file=''
3992 nopath_ok=''
3993 orig_rp="$rp"
3994 orig_dflt="$dflt"
3995 case "$gfpth" in
3996 '') gfpth='.' ;;
3997 esac
3998
3999 case "$fn" in
4000 *\(*)
4001         : getfile will accept an answer from the comma-separated list
4002         : enclosed in parentheses even if it does not meet other criteria.
4003         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4004         fn=`echo $fn | sed 's/(.*)//'`
4005         ;;
4006 esac
4007
4008 case "$fn" in
4009 *:*)
4010         loc_file=`expr $fn : '.*:\(.*\)'`
4011         fn=`expr $fn : '\(.*\):.*'`
4012         ;;
4013 esac
4014
4015 case "$fn" in
4016 *~*) tilde=true;;
4017 esac
4018 case "$fn" in
4019 */*) fullpath=true;;
4020 esac
4021 case "$fn" in
4022 *+*) skip=true;;
4023 esac
4024 case "$fn" in
4025 *n*) none_ok=true;;
4026 esac
4027 case "$fn" in
4028 *e*) exp_file=true;;
4029 esac
4030 case "$fn" in
4031 *p*) nopath_ok=true;;
4032 esac
4033
4034 case "$fn" in
4035 *f*) type='File';;
4036 *d*) type='Directory';;
4037 *l*) type='Locate';;
4038 esac
4039
4040 what="$type"
4041 case "$what" in
4042 Locate) what='File';;
4043 esac
4044
4045 case "$exp_file" in
4046 '')
4047         case "$d_portable" in
4048         "$define") ;;
4049         *) exp_file=true;;
4050         esac
4051         ;;
4052 esac
4053
4054 cd ..
4055 while test "$type"; do
4056         redo=''
4057         rp="$orig_rp"
4058         dflt="$orig_dflt"
4059         case "$tilde" in
4060         true) rp="$rp (~name ok)";;
4061         esac
4062         . UU/myread
4063         if test -f UU/getfile.ok && \
4064                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4065         then
4066                 value="$ans"
4067                 ansexp="$ans"
4068                 break
4069         fi
4070         case "$ans" in
4071         none)
4072                 value=''
4073                 ansexp=''
4074                 case "$none_ok" in
4075                 true) type='';;
4076                 esac
4077                 ;;
4078         *)
4079                 case "$tilde" in
4080                 '') value="$ans"
4081                         ansexp="$ans";;
4082                 *)
4083                         value=`UU/filexp $ans`
4084                         case $? in
4085                         0)
4086                                 if test "$ans" != "$value"; then
4087                                         echo "(That expands to $value on this system.)"
4088                                 fi
4089                                 ;;
4090                         *) value="$ans";;
4091                         esac
4092                         ansexp="$value"
4093                         case "$exp_file" in
4094                         '') value="$ans";;
4095                         esac
4096                         ;;
4097                 esac
4098                 case "$fullpath" in
4099                 true)
4100                         case "$ansexp" in
4101                         /*) value="$ansexp" ;;
4102                         [a-zA-Z]:/*) value="$ansexp" ;;
4103                         *)
4104                                 redo=true
4105                                 case "$already" in
4106                                 true)
4107                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4108                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4109                                         ;;
4110                                 *)
4111                                 echo "Please give a full path name, starting with slash." >&4
4112                                         case "$tilde" in
4113                                         true)
4114                                 echo "Note that using ~name is ok provided it expands well." >&4
4115                                                 already=true
4116                                                 ;;
4117                                         esac
4118                                 esac
4119                                 ;;
4120                         esac
4121                         ;;
4122                 esac
4123                 case "$redo" in
4124                 '')
4125                         case "$type" in
4126                         File)
4127                                 for fp in $gfpth; do
4128                                         if test "X$fp" = X.; then
4129                                             pf="$ansexp"
4130                                         else    
4131                                             pf="$fp/$ansexp"
4132                                         fi
4133                                         if test -f "$pf"; then
4134                                                 type=''
4135                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4136                                         then
4137                                                 echo "($value is not a plain file, but that's ok.)"
4138                                                 type=''
4139                                         fi
4140                                         if test X"$type" = X; then
4141                                             value="$pf"
4142                                             break
4143                                         fi
4144                                 done
4145                                 ;;
4146                         Directory)
4147                                 for fp in $gfpth; do
4148                                         if test "X$fp" = X.; then
4149                                             dir="$ans"
4150                                             direxp="$ansexp"
4151                                         else    
4152                                             dir="$fp/$ansexp"
4153                                             direxp="$fp/$ansexp"
4154                                         fi
4155                                         if test -d "$direxp"; then
4156                                                 type=''
4157                                                 value="$dir"
4158                                                 break
4159                                         fi
4160                                 done
4161                                 ;;
4162                         Locate)
4163                                 if test -d "$ansexp"; then
4164                                         echo "(Looking for $loc_file in directory $value.)"
4165                                         value="$value/$loc_file"
4166                                         ansexp="$ansexp/$loc_file"
4167                                 fi
4168                                 if test -f "$ansexp"; then
4169                                         type=''
4170                                 fi
4171                                 case "$nopath_ok" in
4172                                 true)   case "$value" in
4173                                         */*) ;;
4174                                         *)      echo "Assuming $value will be in people's path."
4175                                                 type=''
4176                                                 ;;
4177                                         esac
4178                                         ;;
4179                                 esac
4180                                 ;;
4181                         esac
4182
4183                         case "$skip" in
4184                         true) type='';
4185                         esac
4186
4187                         case "$type" in
4188                         '') ;;
4189                         *)
4190                                 if test "$fastread" = yes; then
4191                                         dflt=y
4192                                 else
4193                                         dflt=n
4194                                 fi
4195                                 rp="$what $value doesn't exist.  Use that name anyway?"
4196                                 . UU/myread
4197                                 dflt=''
4198                                 case "$ans" in
4199                                 y*) type='';;
4200                                 *) echo " ";;
4201                                 esac
4202                                 ;;
4203                         esac
4204                         ;;
4205                 esac
4206                 ;;
4207         esac
4208 done
4209 cd UU
4210 ans="$value"
4211 rp="$orig_rp"
4212 dflt="$orig_dflt"
4213 rm -f getfile.ok
4214 test "X$gfpthkeep" != Xy && gfpth=""
4215 EOSC
4216
4217 : What should the include directory be ?
4218 echo " "
4219 $echo $n "Hmm...  $c"
4220 dflt='/usr/include'
4221 incpath=''
4222 mips_type=''
4223 if $test -f /bin/mips && /bin/mips; then
4224         echo "Looks like a MIPS system..."
4225         $cat >usr.c <<'EOCP'
4226 #ifdef SYSTYPE_BSD43
4227 /bsd43
4228 #endif
4229 EOCP
4230         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4231                 dflt='/bsd43/usr/include'
4232                 incpath='/bsd43'
4233                 mips_type='BSD 4.3'
4234         else
4235                 mips_type='System V'
4236         fi
4237         $rm -f usr.c usr.out
4238         echo "and you're compiling with the $mips_type compiler and libraries."
4239         xxx_prompt=y
4240         echo "exit 0" >mips
4241 else
4242         echo "Doesn't look like a MIPS system."
4243         xxx_prompt=n
4244         echo "exit 1" >mips
4245 fi
4246 chmod +x mips
4247 $eunicefix mips
4248 case "$usrinc" in
4249 '') ;;
4250 *) dflt="$usrinc";;
4251 esac
4252 case "$xxx_prompt" in
4253 y)      fn=d/
4254         echo " "
4255         rp='Where are the include files you want to use?'
4256         . ./getfile
4257         usrinc="$ans"
4258         ;;
4259 *)      usrinc="$dflt"
4260         ;;
4261 esac
4262
4263 : see how we invoke the C preprocessor
4264 echo " "
4265 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4266 cat <<'EOT' >testcpp.c
4267 #define ABC abc
4268 #define XYZ xyz
4269 ABC.XYZ
4270 EOT
4271 cd ..
4272 if test ! -f cppstdin; then
4273         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4274                 # AIX cc -E doesn't show the absolute headerfile
4275                 # locations but we'll cheat by using the -M flag.
4276                 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
4277         else
4278                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4279         fi
4280 else
4281         echo "Keeping your $hint cppstdin wrapper."
4282 fi
4283 chmod 755 cppstdin
4284 wrapper=`pwd`/cppstdin
4285 ok='false'
4286 cd UU
4287
4288 if $test "X$cppstdin" != "X" && \
4289         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4290         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4291 then
4292         echo "You used to use $cppstdin $cppminus so we'll use that again."
4293         case "$cpprun" in
4294         '') echo "But let's see if we can live without a wrapper..." ;;
4295         *)
4296                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4297                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4298                 then
4299                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4300                         ok='true'
4301                 else
4302                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4303                 fi
4304                 ;;
4305         esac
4306 else
4307         case "$cppstdin" in
4308         '') ;;
4309         *)
4310                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4311                 ;;
4312         esac
4313 fi
4314
4315 if $ok; then
4316         : nothing
4317 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4318         $cc -E <testcpp.c >testcpp.out 2>&1; \
4319         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4320         echo "Yup, it does."
4321         x_cpp="$cc -E"
4322         x_minus='';
4323 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4324         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4325         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4326         echo "Yup, it does."
4327         x_cpp="$cc -E"
4328         x_minus='-';
4329 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4330         $cc -P <testcpp.c >testcpp.out 2>&1; \
4331         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4332         echo "Yipee, that works!"
4333         x_cpp="$cc -P"
4334         x_minus='';
4335 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4336         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4337         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4338         echo "At long last!"
4339         x_cpp="$cc -P"
4340         x_minus='-';
4341 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4342         $cpp <testcpp.c >testcpp.out 2>&1; \
4343         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4344         echo "It works!"
4345         x_cpp="$cpp"
4346         x_minus='';
4347 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4348         $cpp - <testcpp.c >testcpp.out 2>&1; \
4349         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4350         echo "Hooray, it works!  I was beginning to wonder."
4351         x_cpp="$cpp"
4352         x_minus='-';
4353 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4354         $wrapper <testcpp.c >testcpp.out 2>&1; \
4355         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4356         x_cpp="$wrapper"
4357         x_minus=''
4358         echo "Eureka!"
4359 else
4360         dflt=''
4361         rp="No dice.  I can't find a C preprocessor.  Name one:"
4362         . ./myread
4363         x_cpp="$ans"
4364         x_minus=''
4365         $x_cpp <testcpp.c >testcpp.out 2>&1
4366         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4367                 echo "OK, that will do." >&4
4368         else
4369 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4370                 exit 1
4371         fi
4372 fi
4373
4374 case "$ok" in
4375 false)
4376         cppstdin="$x_cpp"
4377         cppminus="$x_minus"
4378         cpprun="$x_cpp"
4379         cpplast="$x_minus"
4380         set X $x_cpp
4381         shift
4382         case "$1" in
4383         "$cpp")
4384                 echo "Perhaps can we force $cc -E using a wrapper..."
4385                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4386                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4387                 then
4388                         echo "Yup, we can."
4389                         cppstdin="$wrapper"
4390                         cppminus='';
4391                 else
4392                         echo "Nope, we'll have to live without it..."
4393                 fi
4394                 ;;
4395         esac
4396         case "$cpprun" in
4397         "$wrapper")
4398                 cpprun=''
4399                 cpplast=''
4400                 ;;
4401         esac
4402         ;;
4403 esac
4404
4405 case "$cppstdin" in
4406 "$wrapper"|'cppstdin') ;;
4407 *) $rm -f $wrapper;;
4408 esac
4409 $rm -f testcpp.c testcpp.out
4410
4411 : Set private lib path
4412 case "$plibpth" in
4413 '') if ./mips; then
4414                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4415         fi;;
4416 esac
4417 case "$libpth" in
4418 ' ') dlist='';;
4419 '') dlist="$loclibpth $plibpth $glibpth";;
4420 *) dlist="$libpth";;
4421 esac
4422
4423 : Now check and see which directories actually exist, avoiding duplicates
4424 libpth=''
4425 for xxx in $dlist
4426 do
4427     if $test -d $xxx; then
4428                 case " $libpth " in
4429                 *" $xxx "*) ;;
4430                 *) libpth="$libpth $xxx";;
4431                 esac
4432     fi
4433 done
4434 $cat <<'EOM'
4435
4436 Some systems have incompatible or broken versions of libraries.  Among
4437 the directories listed in the question below, please remove any you
4438 know not to be holding relevant libraries, and add any that are needed.
4439 Say "none" for none.
4440
4441 EOM
4442 case "$libpth" in
4443 '') dflt='none';;
4444 *)
4445         set X $libpth
4446         shift
4447         dflt=${1+"$@"}
4448         ;;
4449 esac
4450 rp="Directories to use for library searches?"
4451 . ./myread
4452 case "$ans" in
4453 none) libpth=' ';;
4454 *) libpth="$ans";;
4455 esac
4456
4457 : compute shared library extension
4458 case "$so" in
4459 '')
4460         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4461                 dflt='sl'
4462         else
4463                 dflt='so'
4464         fi
4465         ;;
4466 *) dflt="$so";;
4467 esac
4468 $cat <<EOM
4469
4470 On some systems, shared libraries may be available.  Answer 'none' if
4471 you want to suppress searching of shared libraries for the remainder
4472 of this configuration.
4473
4474 EOM
4475 rp='What is the file extension used for shared libraries?'
4476 . ./myread
4477 so="$ans"
4478
4479 : Define several unixisms.
4480 : Hints files or command line option can be used to override them.
4481 : The convoluted testing is in case hints files set either the old
4482 : or the new name.
4483 case "$_exe" in
4484 '')     case "$exe_ext" in
4485         '')     ;;
4486         *)      _exe="$exe_ext" ;;
4487         esac
4488         ;;
4489 esac
4490 case "$_a" in
4491 '')     case "$lib_ext" in
4492     '') _a='.a';;
4493         *)      _a="$lib_ext" ;;
4494         esac
4495         ;;
4496 esac
4497 case "$_o" in
4498 '') case "$obj_ext" in
4499         '')     _o='.o';;
4500         *)      _o="$obj_ext";;
4501         esac
4502         ;;
4503 esac
4504 case "$p_" in
4505 '') case "$path_sep" in
4506         '')     p_=':';;
4507         *)      p_="$path_sep";;
4508         esac
4509         ;;
4510 esac
4511 exe_ext=$_exe
4512 lib_ext=$_a
4513 obj_ext=$_o
4514 path_sep=$p_
4515
4516 : Which makefile gets called first.  This is used by make depend.
4517 case "$firstmakefile" in
4518 '') firstmakefile='makefile';;
4519 esac
4520
4521 case "$ccflags" in
4522 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4523 esac
4524
4525 case "$uselongdouble" in
4526 $define|true|[yY]*)     dflt='y';;
4527 *) dflt='n';;
4528 esac
4529 cat <<EOM
4530
4531 Perl can be built to take advantage of long doubles which
4532 (if available) may give more accuracy and range for floating point numbers.
4533
4534 If this doesn't make any sense to you, just accept the default '$dflt'.
4535 EOM
4536 rp='Try to use long doubles if available?'
4537 . ./myread
4538 case "$ans" in
4539 y|Y)    val="$define"   ;;
4540 *)      val="$undef"    ;;
4541 esac
4542 set uselongdouble
4543 eval $setvar
4544
4545 case "$uselongdouble" in
4546 true|[yY]*) uselongdouble="$define" ;;
4547 esac
4548
4549 case "$uselongdouble" in
4550 $define)
4551 : Look for a hint-file generated 'call-back-unit'.  If the
4552 : user has specified that long doubles should be used,
4553 : we may need to set or change some other defaults.
4554         if $test -f uselongdouble.cbu; then
4555                 echo "Your platform has some specific hints for long doubles, using them..."
4556                 . ./uselongdouble.cbu
4557         else
4558                 $cat <<EOM
4559 (Your platform doesn't have any specific hints for long doubles.)
4560 EOM
4561         fi
4562         ;;
4563 esac
4564
4565 : Looking for optional libraries
4566 echo " "
4567 echo "Checking for optional libraries..." >&4
4568 case "$libs" in
4569 ' '|'') dflt='';;
4570 *) dflt="$libs";;
4571 esac
4572 case "$libswanted" in
4573 '') libswanted='c_s';;
4574 esac
4575 case "$usesocks" in
4576 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4577 esac
4578 libsfound=''
4579 libsfiles=''
4580 libsdirs=''
4581 libspath=''
4582 for thisdir in $libpth $xlibpth; do
4583   test -d $thisdir && libspath="$libspath $thisdir"
4584 done
4585 for thislib in $libswanted; do
4586         for thisdir in $libspath; do
4587             xxx=''
4588             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4589                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4590                 $test -f "$xxx" && eval $libscheck
4591                 $test -f "$xxx" && libstyle=shared
4592             fi
4593             if test ! -f "$xxx"; then
4594                 xxx=$thisdir/lib$thislib.$so
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$_a
4600                 $test -f "$xxx" && eval $libscheck
4601                 $test -f "$xxx" && libstyle=static
4602             fi
4603             if test ! -f "$xxx"; then
4604                 xxx=$thisdir/$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/lib${thislib}_s$_a
4610                 $test -f "$xxx" && eval $libscheck
4611                 $test -f "$xxx" && libstyle=static
4612                 $test -f "$xxx" && thislib=${thislib}_s
4613             fi
4614             if test ! -f "$xxx"; then
4615                 xxx=$thisdir/Slib$thislib$_a
4616                 $test -f "$xxx" && eval $libscheck
4617                 $test -f "$xxx" && libstyle=static
4618             fi
4619             if $test -f "$xxx"; then
4620                 case "$libstyle" in
4621                 shared) echo "Found -l$thislib (shared)." ;;
4622                 static) echo "Found -l$thislib." ;;
4623                 *)      echo "Found -l$thislib ($libstyle)." ;;
4624                 esac
4625                 case " $dflt " in
4626                 *"-l$thislib "*);;
4627                 *) dflt="$dflt -l$thislib"
4628                    libsfound="$libsfound $xxx"
4629                    yyy=`basename $xxx`
4630                    libsfiles="$libsfiles $yyy"
4631                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4632                    case " $libsdirs " in
4633                    *" $yyy "*) ;;
4634                    *) libsdirs="$libsdirs $yyy" ;;
4635                    esac
4636                    ;;
4637                 esac
4638                 break
4639             fi  
4640         done
4641         if $test ! -f "$xxx"; then
4642             echo "No -l$thislib."
4643         fi
4644 done
4645 set X $dflt
4646 shift
4647 dflt="$*"
4648 case "$libs" in
4649 '') dflt="$dflt";;
4650 *) dflt="$libs";;
4651 esac
4652 case "$dflt" in
4653 ' '|'') dflt='none';;
4654 esac
4655
4656 $cat <<EOM
4657
4658 In order to compile $package on your machine, a number of libraries
4659 are usually needed.  Include any other special libraries here as well.
4660 Say "none" for none.  The default list is almost always right.
4661 EOM
4662
4663 echo " "
4664 rp="What libraries to use?"
4665 . ./myread
4666 case "$ans" in
4667 none) libs=' ';;
4668 *) libs="$ans";;
4669 esac
4670
4671 : determine optimization, if desired, or use for debug flag also
4672 case "$optimize" in
4673 ' '|$undef) dflt='none';;
4674 '') dflt='-O';;
4675 *) dflt="$optimize";;
4676 esac
4677 $cat <<EOH
4678
4679 By default, $package compiles with the -O flag to use the optimizer.
4680 Alternately, you might want to use the symbolic debugger, which uses
4681 the -g flag (on traditional Unix systems).  Either flag can be
4682 specified here.  To use neither flag, specify the word "none".
4683
4684 EOH
4685 rp="What optimizer/debugger flag should be used?"
4686 . ./myread
4687 optimize="$ans"
4688 case "$optimize" in
4689 'none') optimize=" ";;
4690 esac
4691
4692 dflt=''
4693 : We will not override a previous value, but we might want to
4694 : augment a hint file
4695 case "$hint" in
4696 default|recommended)
4697         case "$gccversion" in
4698         1*) dflt='-fpcc-struct-return' ;;
4699         esac
4700         case "$optimize" in
4701         *-g*) dflt="$dflt -DDEBUGGING";;
4702         esac
4703         case "$gccversion" in
4704         2*) if test -d /etc/conf/kconfig.d &&
4705                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4706                 then
4707                         dflt="$dflt -posix"
4708                 fi
4709                 ;;
4710         esac
4711         case "$gccversion" in
4712         1*) ;;
4713         2.[0-8]*) ;;
4714         ?*)     echo " "
4715                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4716                 echo 'int main(void) { return 0; }' > gcctest.c
4717                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4718                         echo "Yes, it does." 2>&1
4719                         case "$ccflags" in
4720                         *strict-aliasing*) 
4721                                 echo "Leaving current flags $ccflags alone." 2>&1
4722                                 ;;
4723                         *) dflt="$dflt -fno-strict-aliasing" ;;
4724                         esac
4725                 else
4726                         echo "Nope, it doesn't, but that's ok." 2>&1
4727                 fi
4728                 ;;
4729         esac
4730         ;;
4731 esac
4732
4733 case "$mips_type" in
4734 *BSD*|'') inclwanted="$locincpth $usrinc";;
4735 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4736 esac
4737 for thisincl in $inclwanted; do
4738         if $test -d $thisincl; then
4739                 if $test x$thisincl != x$usrinc; then
4740                         case "$dflt" in
4741                         *" -I$thisincl "*);;
4742                         *) dflt="$dflt -I$thisincl ";;
4743                         esac
4744                 fi
4745         fi
4746 done
4747
4748 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4749         xxx=true;
4750 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4751         xxx=true;
4752 else
4753         xxx=false;
4754 fi;
4755 if $xxx; then
4756         case "$dflt" in
4757         *$2*);;
4758         *) dflt="$dflt -D$2";;
4759         esac;
4760 fi'
4761
4762 set signal.h LANGUAGE_C; eval $inctest
4763
4764 case "$usesocks" in
4765 $define)
4766         ccflags="$ccflags -DSOCKS"
4767         ;;
4768 esac
4769
4770 case "$hint" in
4771 default|recommended) dflt="$ccflags $dflt" ;;
4772 *) dflt="$ccflags";;
4773 esac
4774
4775 case "$dflt" in
4776 ''|' ') dflt=none;;
4777 esac
4778
4779 $cat <<EOH
4780
4781 Your C compiler may want other flags.  For this question you should include
4782 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4783 but you should NOT include libraries or ld flags like -lwhatever.  If you
4784 want $package to honor its debug switch, you should include -DDEBUGGING here.
4785 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4786
4787 To use no flags, specify the word "none".
4788
4789 EOH
4790 set X $dflt
4791 shift
4792 dflt=${1+"$@"}
4793 rp="Any additional cc flags?"
4794 . ./myread
4795 case "$ans" in
4796 none) ccflags='';;
4797 *) ccflags="$ans";;
4798 esac
4799
4800 : the following weeds options from ccflags that are of no interest to cpp
4801 case "$cppflags" in
4802 '') cppflags="$ccflags" ;;
4803 *)  cppflags="$cppflags $ccflags" ;;
4804 esac
4805 case "$gccversion" in
4806 1*) cppflags="$cppflags -D__GNUC__"
4807 esac
4808 case "$mips_type" in
4809 '');;
4810 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4811 esac
4812 case "$cppflags" in
4813 '');;
4814 *)
4815         echo " "
4816         echo "Let me guess what the preprocessor flags are..." >&4
4817         set X $cppflags
4818         shift
4819         cppflags=''
4820         $cat >cpp.c <<'EOM'
4821 #define BLURFL foo
4822
4823 BLURFL xx LFRULB
4824 EOM
4825         previous=''
4826         for flag in $*
4827         do
4828                 case "$flag" in
4829                 -*) ftry="$flag";;
4830                 *) ftry="$previous $flag";;
4831                 esac
4832                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4833                         >cpp1.out 2>/dev/null && \
4834                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4835                         >cpp2.out 2>/dev/null && \
4836                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4837                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4838                 then
4839                         cppflags="$cppflags $ftry"
4840                         previous=''
4841                 else
4842                         previous="$flag"
4843                 fi
4844         done
4845         set X $cppflags
4846         shift
4847         cppflags=${1+"$@"}
4848         case "$cppflags" in
4849         *-*)  echo "They appear to be: $cppflags";;
4850         esac
4851         $rm -f cpp.c cpp?.out
4852         ;;
4853 esac
4854
4855 : flags used in final linking phase
4856 case "$ldflags" in
4857 '') if ./venix; then
4858                 dflt='-i -z'
4859         else
4860                 dflt=''
4861         fi
4862         case "$ccflags" in
4863         *-posix*) dflt="$dflt -posix" ;;
4864         esac
4865         ;;
4866 *) dflt="$ldflags";;
4867 esac
4868
4869 : Try to guess additional flags to pick up local libraries.
4870 for thislibdir in $libpth; do
4871         case " $loclibpth " in
4872         *" $thislibdir "*)
4873                 case "$dflt " in 
4874                 *"-L$thislibdir "*) ;;
4875                 *)  dflt="$dflt -L$thislibdir" ;;
4876                 esac
4877                 ;;
4878         esac
4879 done
4880
4881 case "$dflt" in
4882 '') dflt='none' ;;
4883 esac
4884
4885 $cat <<EOH
4886
4887 Your C linker may need flags.  For this question you should
4888 include -L/whatever and any other flags used by the C linker, but you
4889 should NOT include libraries like -lwhatever.
4890
4891 Make sure you include the appropriate -L/path flags if your C linker
4892 does not normally search all of the directories you specified above,
4893 namely
4894         $libpth
4895 To use no flags, specify the word "none".
4896
4897 EOH
4898
4899 rp="Any additional ld flags (NOT including libraries)?"
4900 . ./myread
4901 case "$ans" in
4902 none) ldflags='';;
4903 *) ldflags="$ans";;
4904 esac
4905 rmlist="$rmlist pdp11"
4906
4907 : coherency check
4908 echo " "
4909 echo "Checking your choice of C compiler and flags for coherency..." >&4
4910 $cat > try.c <<'EOF'
4911 #include <stdio.h>
4912 int main() { printf("Ok\n"); return(0); }
4913 EOF
4914 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4915 shift
4916 $cat >try.msg <<'EOM'
4917 I've tried to compile and run the following simple program:
4918
4919 EOM
4920 $cat try.c >> try.msg
4921
4922 $cat >> try.msg <<EOM
4923
4924 I used the command:
4925
4926         $*
4927         $run ./try
4928
4929 and I got the following output:
4930
4931 EOM
4932 dflt=y
4933 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4934         if $sh -c "$run ./try" >>try.msg 2>&1; then
4935                 xxx=`$run ./try`
4936                 case "$xxx" in
4937                 "Ok") dflt=n ;;
4938                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4939                         case " $libs " in
4940                         *" -lsfio "*)
4941                                 cat >> try.msg <<'EOQS'
4942 If $libs contains -lsfio, and sfio is mis-configured, then it
4943 sometimes (apparently) runs and exits with a 0 status, but with no
4944 output!  It may have to do with sfio's use of _exit vs. exit.
4945
4946 EOQS
4947                                 rp="You have a big problem.  Shall I abort Configure"
4948                                 dflt=y
4949                                 ;;
4950                         esac
4951                         ;;
4952                 esac
4953         else
4954                 echo "The program compiled OK, but exited with status $?." >>try.msg
4955                 rp="You have a problem.  Shall I abort Configure"
4956                 dflt=y
4957         fi
4958 else
4959         echo "I can't compile the test program." >>try.msg
4960         rp="You have a BIG problem.  Shall I abort Configure"
4961         dflt=y
4962 fi
4963 case "$dflt" in
4964 y)
4965         $cat try.msg >&4
4966         case "$knowitall" in
4967         '')
4968                 echo "(The supplied flags or libraries might be incorrect.)"
4969                 ;;
4970         *) dflt=n;;
4971         esac
4972         echo " "
4973         . ./myread
4974         case "$ans" in
4975         n*|N*) ;;
4976         *)      echo "Ok.  Stopping Configure." >&4
4977                 exit 1
4978                 ;;
4979         esac
4980         ;;
4981 n) echo "OK, that should do.";;
4982 esac
4983 $rm -f try try.* core
4984
4985 : define a shorthand compile call
4986 compile='
4987 mc_file=$1;
4988 shift;
4989 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4990 : define a shorthand compile call for compilations that should be ok.
4991 compile_ok='
4992 mc_file=$1;
4993 shift;
4994 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4995
4996 : determine filename position in cpp output
4997 echo " "
4998 echo "Computing filename position in cpp output for #include directives..." >&4
4999 case "$osname" in
5000 vos) testaccess=-e ;;
5001 *)   testaccess=-r ;;
5002 esac
5003 echo '#include <stdio.h>' > foo.c
5004 $cat >fieldn <<EOF
5005 $startsh
5006 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5007 $grep '^[       ]*#.*stdio\.h' | \
5008 while read cline; do
5009         pos=1
5010         set \$cline
5011         while $test \$# -gt 0; do
5012                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5013                         echo "\$pos"
5014                         exit 0
5015                 fi
5016                 shift
5017                 pos=\`expr \$pos + 1\`
5018         done
5019 done
5020 EOF
5021 chmod +x fieldn
5022 fieldn=`./fieldn`
5023 $rm -f foo.c fieldn
5024 case $fieldn in
5025 '') pos='???';;
5026 1) pos=first;;
5027 2) pos=second;;
5028 3) pos=third;;
5029 *) pos="${fieldn}th";;
5030 esac
5031 echo "Your cpp writes the filename in the $pos field of the line."
5032
5033 case "$osname" in
5034 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5035 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5036 *)   cppfilter='' ;;
5037 esac
5038 : locate header file
5039 $cat >findhdr <<EOF
5040 $startsh
5041 wanted=\$1
5042 name=''
5043 for usrincdir in $usrinc
5044 do
5045         if test -f \$usrincdir/\$wanted; then
5046                 echo "\$usrincdir/\$wanted"
5047                 exit 0
5048         fi
5049 done
5050 awkprg='{ print \$$fieldn }'
5051 echo "#include <\$wanted>" > foo\$\$.c
5052 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5053 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5054 while read cline; do
5055         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5056         case "\$name" in
5057         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5058         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5059         *) exit 2;;
5060         esac;
5061 done;
5062 #
5063 # status = 0: grep returned 0 lines, case statement not executed
5064 # status = 1: headerfile found
5065 # status = 2: while loop executed, no headerfile found
5066 #
5067 status=\$?
5068 $rm -f foo\$\$.c;
5069 if test \$status -eq 1; then
5070         exit 0;
5071 fi
5072 exit 1
5073 EOF
5074 chmod +x findhdr
5075
5076 : define an alternate in-header-list? function
5077 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5078 cont=true; xxf="echo \"<\$1> found.\" >&4";
5079 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5080 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5081 esac;
5082 case $# in 4) instead=instead;; *) instead="at last";; esac;
5083 while $test "$cont"; do
5084         xxx=`./findhdr $1`
5085         var=$2; eval "was=\$$2";
5086         if $test "$xxx" && $test -r "$xxx";
5087         then eval $xxf;
5088         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5089                 cont="";
5090         else eval $xxnf;
5091         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5092         set $yyy; shift; shift; yyy=$@;
5093         case $# in 0) cont="";;
5094         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5095                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5096         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5097                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5098         esac;
5099 done;
5100 while $test "$yyy";
5101 do set $yyy; var=$2; eval "was=\$$2";
5102         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5103         set $yyy; shift; shift; yyy=$@;
5104 done'
5105
5106 : see if stdlib is available
5107 set stdlib.h i_stdlib
5108 eval $inhdr
5109
5110 : check for lengths of integral types
5111 echo " "
5112 case "$intsize" in
5113 '')
5114         echo "Checking to see how big your integers are..." >&4
5115         $cat >try.c <<EOCP
5116 #include <stdio.h>
5117 #$i_stdlib I_STDLIB
5118 #ifdef I_STDLIB
5119 #include <stdlib.h>
5120 #endif
5121 int main()
5122 {
5123         printf("intsize=%d;\n", (int)sizeof(int));
5124         printf("longsize=%d;\n", (int)sizeof(long));
5125         printf("shortsize=%d;\n", (int)sizeof(short));
5126         exit(0);
5127 }
5128 EOCP
5129         set try
5130         if eval $compile_ok && $run ./try > /dev/null; then
5131                 eval `$run ./try`
5132                 echo "Your integers are $intsize bytes long."
5133                 echo "Your long integers are $longsize bytes long."
5134                 echo "Your short integers are $shortsize bytes long."
5135         else
5136                 $cat >&4 <<EOM
5137 !
5138 Help! I can't compile and run the intsize test program: please enlighten me!
5139 (This is probably a misconfiguration in your system or libraries, and
5140 you really ought to fix it.  Still, I'll try anyway.)
5141 !
5142 EOM
5143                 dflt=4
5144                 rp="What is the size of an integer (in bytes)?"
5145                 . ./myread
5146                 intsize="$ans"
5147                 dflt=$intsize
5148                 rp="What is the size of a long integer (in bytes)?"
5149                 . ./myread
5150                 longsize="$ans"
5151                 dflt=2
5152                 rp="What is the size of a short integer (in bytes)?"
5153                 . ./myread
5154                 shortsize="$ans"
5155         fi
5156         ;;
5157 esac
5158 $rm -f try try.*
5159
5160 : check for long long
5161 echo " "
5162 echo "Checking to see if you have long long..." >&4
5163 echo 'int main() { long long x = 7; return 0; }' > try.c
5164 set try
5165 if eval $compile; then
5166         val="$define"
5167         echo "You have long long."
5168 else
5169         val="$undef"
5170         echo "You do not have long long."
5171 fi
5172 $rm try.*
5173 set d_longlong
5174 eval $setvar
5175
5176 : check for length of long long
5177 case "${d_longlong}${longlongsize}" in
5178 $define)
5179         echo " "
5180         echo "Checking to see how big your long longs are..." >&4
5181         $cat >try.c <<'EOCP'
5182 #include <stdio.h>
5183 int main()
5184 {
5185     printf("%d\n", (int)sizeof(long long));
5186     return(0);
5187 }
5188 EOCP
5189         set try
5190         if eval $compile_ok; then
5191                 longlongsize=`$run ./try`
5192                 echo "Your long longs are $longlongsize bytes long."
5193         else
5194                 dflt='8'
5195                 echo " "
5196                 echo "(I can't seem to compile the test program.  Guessing...)"
5197                 rp="What is the size of a long long (in bytes)?"
5198                 . ./myread
5199                 longlongsize="$ans"
5200         fi
5201         if $test "X$longsize" = "X$longlongsize"; then
5202                 echo "(That isn't any different from an ordinary long.)"
5203         fi      
5204         ;;
5205 esac
5206 $rm -f try.* try
5207
5208 : see if inttypes.h is available
5209 : we want a real compile instead of Inhdr because some systems
5210 : have an inttypes.h which includes non-existent headers
5211 echo " "
5212 $cat >try.c <<EOCP
5213 #include <inttypes.h>
5214 int main() {
5215         static int32_t foo32 = 0x12345678;
5216 }
5217 EOCP
5218 set try
5219 if eval $compile; then
5220         echo "<inttypes.h> found." >&4
5221         val="$define"
5222 else
5223         echo "<inttypes.h> NOT found." >&4
5224         val="$undef"
5225 fi
5226 $rm -f try.c try
5227 set i_inttypes
5228 eval $setvar
5229
5230 : check for int64_t
5231 echo " "
5232 echo "Checking to see if you have int64_t..." >&4
5233 $cat >try.c <<EOCP
5234 #include <sys/types.h>
5235 #$i_inttypes I_INTTYPES
5236 #ifdef I_INTTYPES
5237 #include <inttypes.h>
5238 #endif
5239 int main() { int64_t x = 7; }
5240 EOCP
5241 set try
5242 if eval $compile; then
5243         val="$define"
5244         echo "You have int64_t."
5245 else
5246         val="$undef"
5247         echo "You do not have int64_t."
5248 fi
5249 $rm -f try try.*
5250 set d_int64_t
5251 eval $setvar
5252
5253
5254 echo " "
5255 echo "Checking which 64-bit integer type we could use..." >&4
5256
5257 case "$intsize" in
5258 8) val=int
5259    set quadtype
5260    eval $setvar
5261    val='"unsigned int"'
5262    set uquadtype
5263    eval $setvar
5264    quadkind=1
5265    ;;
5266 *) case "$longsize" in
5267    8) val=long
5268       set quadtype
5269       eval $setvar
5270       val='"unsigned long"'
5271       set uquadtype
5272       eval $setvar
5273       quadkind=2
5274       ;;
5275    *) case "$d_longlong:$longlongsize" in
5276       define:8)
5277         val='"long long"'
5278         set quadtype
5279         eval $setvar
5280         val='"unsigned long long"'
5281         set uquadtype
5282         eval $setvar
5283         quadkind=3
5284         ;;
5285       *) case "$d_int64_t" in
5286          define)
5287            val=int64_t
5288            set quadtype
5289            eval $setvar
5290            val=uint64_t
5291            set uquadtype
5292            eval $setvar
5293            quadkind=4
5294            ;;
5295          esac
5296          ;;
5297       esac
5298       ;;
5299    esac
5300    ;;
5301 esac
5302
5303 case "$quadtype" in
5304 '')     echo "Alas, no 64-bit integer types in sight." >&4
5305         d_quad="$undef"
5306         ;;
5307 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5308         d_quad="$define"
5309         ;;
5310 esac
5311
5312
5313 case "$uselonglong" in
5314 "$define"|true|[yY]*)
5315         cat <<EOM >&4
5316
5317 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5318 EOM
5319         use64bitint="$define"
5320         ;;
5321 esac                          
5322 case "$use64bits" in
5323 "$define"|true|[yY]*)
5324         cat <<EOM >&4
5325
5326 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5327 EOM
5328         use64bitint="$define"
5329         ;;
5330 esac                          
5331 case "$use64bitints" in
5332 "$define"|true|[yY]*)
5333         cat <<EOM >&4
5334
5335 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5336 EOM
5337         use64bitint="$define"
5338         ;;
5339 esac                          
5340 case "$use64bitsint" in
5341 "$define"|true|[yY]*)
5342         cat <<EOM >&4
5343
5344 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5345 EOM
5346         use64bitint="$define"
5347         ;;
5348 esac                          
5349 case "$uselonglongs" in
5350 "$define"|true|[yY]*)
5351         cat <<EOM >&4
5352
5353 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5354 EOM
5355         use64bitint="$define"
5356         ;;
5357 esac                          
5358 case "$use64bitsall" in
5359 "$define"|true|[yY]*)
5360         cat <<EOM >&4
5361
5362 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5363 EOM
5364         use64bitall="$define"
5365         ;;
5366 esac                          
5367
5368 case "$ccflags" in
5369 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5370 esac
5371 case "$use64bitall" in
5372 "$define"|true|[yY]*) use64bitint="$define" ;;
5373 esac
5374
5375 case "$longsize" in
5376 8) cat <<EOM
5377
5378 You have natively 64-bit long integers.
5379 EOM
5380    val="$define"
5381    ;;
5382 *) case "$use64bitint" in
5383    "$define"|true|[yY]*) dflt='y';;
5384    *) dflt='n';;
5385    esac
5386    case "$d_quad" in
5387    "$define") ;;
5388    *) dflt='n' ;;
5389    esac
5390    cat <<EOM
5391
5392 Perl can be built to take advantage of 64-bit integer types
5393 on some systems.  To do so, Configure can be run with -Duse64bitint.
5394 Choosing this option will most probably introduce binary incompatibilities.
5395
5396 If this doesn't make any sense to you, just accept the default '$dflt'.
5397 (The default has been chosen based on your configuration.)
5398 EOM
5399    rp='Try to use 64-bit integers, if available?'
5400    . ./myread
5401    case "$ans" in
5402    [yY]*) val="$define" ;;
5403    *)     val="$undef"  ;;
5404    esac
5405    ;;
5406 esac
5407 set use64bitint
5408 eval $setvar
5409
5410 case "$use64bitall" in
5411 "$define"|true|[yY]*) dflt='y' ;;
5412 *) case "$longsize" in
5413    8) dflt='y' ;;
5414    *) dflt='n' ;;
5415    esac
5416    ;;
5417 esac    
5418 cat <<EOM
5419
5420 You may also choose to try maximal 64-bitness.  It means using as much
5421 64-bitness as possible on the platform.  This in turn means even more
5422 binary incompatibilities.  On the other hand, your platform may not
5423 have any more 64-bitness available than what you already have chosen.
5424
5425 If this doesn't make any sense to you, just accept the default '$dflt'.
5426 (The default has been chosen based on your configuration.)
5427 EOM
5428 rp='Try to use maximal 64-bit support, if available?'
5429 . ./myread
5430 case "$ans" in
5431 [yY]*) val="$define" ;;
5432 *)     val="$undef"  ;;
5433 esac
5434 set use64bitall
5435 eval $setvar
5436 case "$use64bitall" in
5437 "$define")
5438         case "$use64bitint" in
5439         "$undef")
5440                 cat <<EOM
5441
5442 Since you have chosen a maximally 64-bit build, I'm also turning on
5443 the use of 64-bit integers.
5444 EOM
5445                 use64bitint="$define" ;;
5446         esac
5447         ;;
5448 esac
5449
5450 case "$use64bitint" in
5451 "$define"|true|[yY]*)
5452 : Look for a hint-file generated 'call-back-unit'.  If the
5453 : user has specified that a 64-bit perl is to be built,
5454 : we may need to set or change some other defaults.
5455         if $test -f use64bitint.cbu; then
5456                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5457                 . ./use64bitint.cbu
5458         fi
5459         case "$longsize" in
5460         4) case "$archname64" in
5461            '') archname64=64int ;;
5462            esac
5463            ;;
5464         esac
5465         ;;
5466 esac
5467
5468 case "$use64bitall" in
5469 "$define"|true|[yY]*)
5470 : Look for a hint-file generated 'call-back-unit'.  If the
5471 : user has specified that a maximally 64-bit perl is to be built,
5472 : we may need to set or change some other defaults.
5473         if $test -f use64bitall.cbu; then
5474                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5475                 . ./use64bitall.cbu
5476         fi
5477         case "$longsize" in
5478         4) case "$archname64" in
5479            ''|64int) archname64=64all ;;
5480            esac
5481            ;;
5482         esac
5483         ;;
5484 esac
5485
5486 case "$d_quad:$use64bitint" in
5487 $undef:$define)
5488         cat >&4 <<EOF
5489
5490 *** You have chosen to use 64-bit integers,
5491 *** but none cannot be found.
5492 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5493 *** Cannot continue, aborting.
5494
5495 EOF
5496         exit 1
5497         ;;
5498 esac
5499
5500 : check for length of double
5501 echo " "
5502 case "$doublesize" in
5503 '')
5504         echo "Checking to see how big your double precision numbers are..." >&4
5505         $cat >try.c <<EOCP
5506 #include <stdio.h>
5507 #$i_stdlib I_STDLIB
5508 #ifdef I_STDLIB
5509 #include <stdlib.h>
5510 #endif
5511 int main()
5512 {
5513     printf("%d\n", (int)sizeof(double));
5514     exit(0);
5515 }
5516 EOCP
5517         set try
5518         if eval $compile_ok; then
5519                 doublesize=`$run ./try`
5520                 echo "Your double is $doublesize bytes long."
5521         else
5522                 dflt='8'
5523                 echo "(I can't seem to compile the test program.  Guessing...)"
5524                 rp="What is the size of a double precision number (in bytes)?"
5525                 . ./myread
5526                 doublesize="$ans"
5527         fi
5528         ;;
5529 esac
5530 $rm -f try.c try
5531
5532 : check for long doubles
5533 echo " "
5534 echo "Checking to see if you have long double..." >&4
5535 echo 'int main() { long double x = 7.0; }' > try.c
5536 set try
5537 if eval $compile; then
5538         val="$define"
5539         echo "You have long double."
5540 else
5541         val="$undef"
5542         echo "You do not have long double."
5543 fi
5544 $rm try.*
5545 set d_longdbl
5546 eval $setvar
5547
5548 : check for length of long double
5549 case "${d_longdbl}${longdblsize}" in
5550 $define)
5551         echo " "
5552         echo "Checking to see how big your long doubles are..." >&4
5553         $cat >try.c <<'EOCP'
5554 #include <stdio.h>
5555 int main()
5556 {
5557         printf("%d\n", sizeof(long double));
5558 }
5559 EOCP
5560         set try
5561         set try
5562         if eval $compile; then
5563                 longdblsize=`$run ./try`
5564                 echo "Your long doubles are $longdblsize bytes long."
5565         else
5566                 dflt='8'
5567                 echo " "
5568                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5569                 rp="What is the size of a long double (in bytes)?"
5570                 . ./myread
5571                 longdblsize="$ans"
5572         fi
5573         if $test "X$doublesize" = "X$longdblsize"; then
5574                 echo "(That isn't any different from an ordinary double.)"
5575         fi      
5576         ;;
5577 esac
5578 $rm -f try.* try
5579
5580 : determine the architecture name
5581 echo " "
5582 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5583         tarch=`arch`"-$osname"
5584 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5585         if uname -m > tmparch 2>&1 ; then
5586                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5587                         -e 's/$/'"-$osname/" tmparch`
5588         else
5589                 tarch="$osname"
5590         fi
5591         $rm -f tmparch
5592 else
5593         tarch="$osname"
5594 fi
5595 case "$myarchname" in
5596 ''|"$tarch") ;;
5597 *)
5598         echo "(Your architecture name used to be $myarchname.)"
5599         archname=''
5600         ;;
5601 esac
5602 case "$targetarch" in
5603 '') ;;
5604 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5605 esac
5606 myarchname="$tarch"
5607 case "$archname" in
5608 '') dflt="$tarch";;
5609 *) dflt="$archname";;
5610 esac
5611 rp='What is your architecture name'
5612 . ./myread
5613 archname="$ans"
5614 case "$usethreads" in
5615 $define)
5616         echo "Threads selected." >&4
5617         case "$archname" in
5618         *-thread*) echo "...and architecture name already has -thread." >&4
5619                 ;;
5620         *)      archname="$archname-thread"
5621                 echo "...setting architecture name to $archname." >&4
5622                 ;;
5623         esac
5624         ;;
5625 esac
5626 case "$usemultiplicity" in
5627 $define)
5628         echo "Multiplicity selected." >&4
5629         case "$archname" in
5630         *-multi*) echo "...and architecture name already has -multi." >&4
5631                 ;;
5632         *)      archname="$archname-multi"
5633                 echo "...setting architecture name to $archname." >&4
5634                 ;;
5635         esac
5636         ;;
5637 esac
5638 case "$use64bitint$use64bitall" in
5639 *"$define"*)
5640         case "$archname64" in
5641         '')
5642                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5643                 ;;
5644         *)
5645                 case "$use64bitint" in
5646                 "$define") echo "64 bit integers selected." >&4 ;;
5647                 esac
5648                 case "$use64bitall" in
5649                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5650                 esac
5651                 case "$archname" in
5652                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5653                         ;;
5654                 *)      archname="$archname-$archname64"
5655                         echo "...setting architecture name to $archname." >&4
5656                         ;;
5657                 esac
5658                 ;;
5659         esac
5660 esac
5661 case "$uselongdouble" in
5662 $define)
5663         echo "Long doubles selected." >&4
5664         case "$longdblsize" in
5665         $doublesize)
5666                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5667                 ;;
5668         *)
5669                 case "$archname" in
5670                 *-ld*) echo "...and architecture name already has -ld." >&4
5671                         ;;
5672                 *)      archname="$archname-ld"
5673                         echo "...setting architecture name to $archname." >&4
5674                         ;;
5675                 esac
5676                 ;;
5677         esac
5678         ;;
5679 esac
5680 case "$useperlio" in
5681 $define)
5682         echo "Perlio selected." >&4
5683         ;;
5684 *)
5685         echo "Perlio not selected, using stdio." >&4
5686         case "$archname" in
5687         *-stdio*) echo "...and architecture name already has -stdio." >&4
5688                 ;;
5689         *)      archname="$archname-stdio"
5690                 echo "...setting architecture name to $archname." >&4
5691                 ;;
5692         esac
5693         ;;
5694 esac
5695
5696 : determine root of directory hierarchy where package will be installed.
5697 case "$prefix" in
5698 '')
5699         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5700         ;;
5701 *?/)
5702         dflt=`echo "$prefix" | sed 's/.$//'`
5703         ;;
5704 *)
5705         dflt="$prefix"
5706         ;;
5707 esac
5708 $cat <<EOM
5709
5710 By default, $package will be installed in $dflt/bin, manual pages
5711 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5712 installation directories. Typically this is something like /usr/local.
5713 If you wish to have binaries under /usr/bin but other parts of the
5714 installation under /usr/local, that's ok: you will be prompted
5715 separately for each of the installation directories, the prefix being
5716 only used to set the defaults.
5717
5718 EOM
5719 fn=d~
5720 rp='Installation prefix to use?'
5721 . ./getfile
5722 oldprefix=''
5723 case "$prefix" in
5724 '') ;;
5725 *)
5726         case "$ans" in
5727         "$prefix") ;;
5728         *) oldprefix="$prefix";;
5729         esac
5730         ;;
5731 esac
5732 prefix="$ans"
5733 prefixexp="$ansexp"
5734
5735 case "$afsroot" in
5736 '')     afsroot=/afs ;;
5737 *)      afsroot=$afsroot ;;
5738 esac
5739
5740 : is AFS running?
5741 echo " "
5742 case "$afs" in
5743 $define|true)   afs=true ;;
5744 $undef|false)   afs=false ;;
5745 *)      if test -d $afsroot; then
5746                 afs=true
5747         else
5748                 afs=false
5749         fi
5750         ;;
5751 esac
5752 if $afs; then
5753         echo "AFS may be running... I'll be extra cautious then..." >&4
5754 else
5755         echo "AFS does not seem to be running..." >&4
5756 fi
5757
5758 : determine installation prefix for where package is to be installed.
5759 if $afs; then 
5760 $cat <<EOM
5761
5762 Since you are running AFS, I need to distinguish the directory in which
5763 files will reside from the directory in which they are installed (and from
5764 which they are presumably copied to the former directory by occult means).
5765
5766 EOM
5767         case "$installprefix" in
5768         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5769         *) dflt="$installprefix";;
5770         esac
5771 else
5772 $cat <<EOM
5773
5774 In some special cases, particularly when building $package for distribution,
5775 it is convenient to distinguish the directory in which files should be
5776 installed from the directory ($prefix) in which they will
5777 eventually reside.  For most users, these two directories are the same.
5778
5779 EOM
5780         case "$installprefix" in
5781         '') dflt=$prefix ;;
5782         *) dflt=$installprefix;;
5783         esac
5784 fi
5785 fn=d~
5786 rp='What installation prefix should I use for installing files?'
5787 . ./getfile
5788 installprefix="$ans"
5789 installprefixexp="$ansexp"
5790
5791 : set the prefixit variable, to compute a suitable default value
5792 prefixit='case "$3" in
5793 ""|none)
5794         case "$oldprefix" in
5795         "") eval "$1=\"\$$2\"";;
5796         *)
5797                 case "$3" in
5798                 "") eval "$1=";;
5799                 none)
5800                         eval "tp=\"\$$2\"";
5801                         case "$tp" in
5802                         ""|" ") eval "$1=\"\$$2\"";;
5803                         *) eval "$1=";;
5804                         esac;;
5805                 esac;;
5806         esac;;
5807 *)
5808         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5809         case "$tp" in
5810         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5811         /*-$oldprefix/*|\~*-$oldprefix/*)
5812                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5813         *) eval "$1=\"\$$2\"";;
5814         esac;;
5815 esac'
5816
5817 : get the patchlevel
5818 echo " "
5819 echo "Getting the current patchlevel..." >&4
5820 if $test -r $rsrc/patchlevel.h;then
5821         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5822         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5823         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5824         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5825         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5826         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5827        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5828 else
5829         revision=0
5830         patchlevel=0
5831         subversion=0
5832         api_revision=0
5833         api_version=0
5834         api_subversion=0
5835         perl_patchlevel=0
5836         $echo "(You do not have patchlevel.h.  Eek.)"
5837 fi
5838 if $test -r $rsrc/.patch ; then  
5839         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5840                 perl_patchlevel=`cat $rsrc/.patch`
5841         fi
5842 fi
5843 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5844 version_patchlevel_string="version $patchlevel subversion $subversion"
5845 case "$perl_patchlevel" in
5846 0|'') ;;
5847 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5848 esac
5849
5850 $echo "(You have $package $version_patchlevel_string.)"
5851
5852 case "$osname" in
5853 dos|vms)
5854         : XXX Should be a Configure test for double-dots in filenames.
5855         version=`echo $revision $patchlevel $subversion | \
5856                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5857         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5858                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5859         ;;
5860 *)
5861         version=`echo $revision $patchlevel $subversion | \
5862                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5863         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5864                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5865         ;;
5866 esac
5867 : Special case the 5.005_xx maintenance series, which used 5.005
5868 : without any subversion label as a subdirectory in $sitelib
5869 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5870         api_versionstring='5.005'
5871 fi
5872
5873 : determine installation style
5874 : For now, try to deduce it from prefix unless it is already set.
5875 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5876 case "$installstyle" in
5877 '')     case "$prefix" in
5878                 *perl*) dflt='lib';;
5879                 *) dflt='lib/perl5' ;;
5880         esac
5881         ;;
5882 *)      dflt="$installstyle" ;;
5883 esac
5884 : Probably not worth prompting for this since we prompt for all
5885 : the directories individually, and the prompt would be too long and
5886 : confusing anyway.
5887 installstyle=$dflt
5888
5889 : determine where private library files go
5890 : Usual default is /usr/local/lib/perl5/$version.
5891 : Also allow things like /opt/perl/lib/$version, since 
5892 : /opt/perl/lib/perl5... would be redundant.
5893 : The default "style" setting is made in installstyle.U
5894 case "$installstyle" in
5895 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5896 *)       set dflt privlib lib/$version ;;
5897 esac
5898 eval $prefixit
5899 $cat <<EOM
5900
5901 There are some auxiliary files for $package that need to be put into a
5902 private library directory that is accessible by everyone.
5903
5904 EOM
5905 fn=d~+
5906 rp='Pathname where the private library files will reside?'
5907 . ./getfile
5908 privlib="$ans"
5909 privlibexp="$ansexp"
5910 : Change installation prefix, if necessary.
5911 if $test X"$prefix" != X"$installprefix"; then
5912         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5913 else
5914         installprivlib="$privlibexp"
5915 fi
5916
5917 : set the prefixup variable, to restore leading tilda escape
5918 prefixup='case "$prefixexp" in
5919 "$prefix") ;;
5920 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5921 esac'
5922
5923 : determine where public architecture dependent libraries go
5924 set archlib archlib
5925 eval $prefixit
5926 : privlib default is /usr/local/lib/$package/$version
5927 : archlib default is /usr/local/lib/$package/$version/$archname
5928 : privlib may have an optional trailing /share.
5929 tdflt=`echo $privlib | $sed 's,/share$,,'`
5930 tdflt=$tdflt/$archname
5931 case "$archlib" in
5932 '')     dflt=$tdflt
5933         ;;
5934 *)      dflt="$archlib"
5935     ;;
5936 esac
5937 $cat <<EOM
5938
5939 $spackage contains architecture-dependent library files.  If you are
5940 sharing libraries in a heterogeneous environment, you might store
5941 these files in a separate location.  Otherwise, you can just include
5942 them with the rest of the public library files.
5943
5944 EOM
5945 fn=d+~
5946 rp='Where do you want to put the public architecture-dependent libraries?'
5947 . ./getfile
5948 archlib="$ans"
5949 archlibexp="$ansexp"
5950 if $test X"$archlib" = X"$privlib"; then
5951         d_archlib="$undef"
5952 else
5953         d_archlib="$define"
5954 fi
5955 : Change installation prefix, if necessary.
5956 if $test X"$prefix" != X"$installprefix"; then
5957         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5958 else
5959         installarchlib="$archlibexp"
5960 fi
5961
5962 : see if setuid scripts can be secure
5963 $cat <<EOM
5964
5965 Some kernels have a bug that prevents setuid #! scripts from being
5966 secure.  Some sites have disabled setuid #! scripts because of this.
5967
5968 First let's decide if your kernel supports secure setuid #! scripts.
5969 (If setuid #! scripts would be secure but have been disabled anyway,
5970 don't say that they are secure if asked.)
5971
5972 EOM
5973
5974 val="$undef"
5975 if $test -d /dev/fd; then
5976         echo "#!$ls" >reflect
5977         chmod +x,u+s reflect
5978         ./reflect >flect 2>&1
5979         if $contains "/dev/fd" flect >/dev/null; then
5980                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5981                 val="$define"
5982         else
5983                 $cat <<EOM
5984 If you are not sure if they are secure, I can check but I'll need a
5985 username and password different from the one you are using right now.
5986 If you don't have such a username or don't want me to test, simply
5987 enter 'none'.
5988
5989 EOM
5990                 rp='Other username to test security of setuid scripts with?'
5991                 dflt='none'
5992                 . ./myread
5993                 case "$ans" in
5994                 n|none)
5995                         case "$d_suidsafe" in
5996                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5997                                 dflt=n;;
5998                         "$undef")
5999                                 echo "Well, the $hint value is *not* secure." >&4
6000                                 dflt=n;;
6001                         *)      echo "Well, the $hint value *is* secure." >&4
6002                                 dflt=y;;
6003                         esac
6004                         ;;
6005                 *)
6006                         $rm -f reflect flect
6007                         echo "#!$ls" >reflect
6008                         chmod +x,u+s reflect
6009                         echo >flect
6010                         chmod a+w flect
6011                         echo '"su" will (probably) prompt you for '"$ans's password."
6012                         su $ans -c './reflect >flect'
6013                         if $contains "/dev/fd" flect >/dev/null; then
6014                                 echo "Okay, it looks like setuid scripts are secure." >&4
6015                                 dflt=y
6016                         else
6017                                 echo "I don't think setuid scripts are secure." >&4
6018                                 dflt=n
6019                         fi
6020                         ;;
6021                 esac
6022                 rp='Does your kernel have *secure* setuid scripts?'
6023                 . ./myread
6024                 case "$ans" in
6025                 [yY]*)  val="$define";;
6026                 *)      val="$undef";;
6027                 esac
6028         fi
6029 else
6030         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6031         echo "(That's for file descriptors, not floppy disks.)"
6032         val="$undef"
6033 fi
6034 set d_suidsafe
6035 eval $setvar
6036
6037 $rm -f reflect flect
6038
6039 : now see if they want to do setuid emulation
6040 echo " "
6041 val="$undef"
6042 case "$d_suidsafe" in
6043 "$define")
6044         val="$undef"
6045         echo "No need to emulate SUID scripts since they are secure here." >&4
6046         ;;
6047 *)
6048         $cat <<EOM
6049 Some systems have disabled setuid scripts, especially systems where
6050 setuid scripts cannot be secure.  On systems where setuid scripts have
6051 been disabled, the setuid/setgid bits on scripts are currently
6052 useless.  It is possible for $package to detect those bits and emulate
6053 setuid/setgid in a secure fashion.  This emulation will only work if
6054 setuid scripts have been disabled in your kernel.
6055
6056 EOM
6057         case "$d_dosuid" in
6058         "$define") dflt=y ;;
6059         *) dflt=n ;;
6060         esac
6061         rp="Do you want to do setuid/setgid emulation?"
6062         . ./myread
6063         case "$ans" in
6064         [yY]*)  val="$define";;
6065         *)      val="$undef";;
6066         esac
6067         ;;
6068 esac
6069 set d_dosuid
6070 eval $setvar
6071
6072 : see if this is a malloc.h system
6073 : we want a real compile instead of Inhdr because some systems have a
6074 : malloc.h that just gives a compile error saying to use stdlib.h instead
6075 echo " "
6076 $cat >try.c <<EOCP
6077 #include <stdlib.h>
6078 #include <malloc.h>
6079 int main () { return 0; }
6080 EOCP
6081 set try
6082 if eval $compile; then
6083     echo "<malloc.h> found." >&4
6084     val="$define"
6085 else
6086     echo "<malloc.h> NOT found." >&4
6087     val="$undef"
6088 fi
6089 $rm -f try.c try
6090 set i_malloc
6091 eval $setvar
6092
6093 : check for void type
6094 echo " "
6095 echo "Checking to see how well your C compiler groks the void type..." >&4
6096 case "$voidflags" in
6097 '')
6098         $cat >try.c <<EOCP
6099 #$i_stdlib I_STDLIB
6100 #ifdef I_STDLIB
6101 #include <stdlib.h>
6102 #endif
6103 #if TRY & 1
6104 void sub() {
6105 #else
6106 sub() {
6107 #endif
6108         extern void moo();      /* function returning void */
6109         void (*goo)();          /* ptr to func returning void */
6110 #if TRY & 8
6111         void *hue;              /* generic ptr */
6112 #endif
6113 #if TRY & 2
6114         void (*foo[10])();
6115 #endif
6116
6117 #if TRY & 4
6118         if(goo == moo) {
6119                 exit(0);
6120         }
6121 #endif
6122         exit(0);
6123 }
6124 int main() { sub(); }
6125 EOCP
6126         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6127                 voidflags=$defvoidused
6128         echo "Good.  It appears to support void to the level $package wants.">&4
6129                 if $contains warning .out >/dev/null 2>&1; then
6130                         echo "However, you might get some warnings that look like this:"
6131                         $cat .out
6132                 fi
6133         else
6134 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6135                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6136                         echo "It supports 1..."
6137                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6138                                 echo "It also supports 2..."
6139                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6140                                         voidflags=7
6141                                         echo "And it supports 4 but not 8 definitely."
6142                                 else
6143                                         echo "It doesn't support 4..."
6144                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6145                                                 voidflags=11
6146                                                 echo "But it supports 8."
6147                                         else
6148                                                 voidflags=3
6149                                                 echo "Neither does it support 8."
6150                                         fi
6151                                 fi
6152                         else
6153                                 echo "It does not support 2..."
6154                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6155                                         voidflags=13
6156                                         echo "But it supports 4 and 8."
6157                                 else
6158                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6159                                                 voidflags=5
6160                                                 echo "And it supports 4 but has not heard about 8."
6161                                         else
6162                                                 echo "However it supports 8 but not 4."
6163                                         fi
6164                                 fi
6165                         fi
6166                 else
6167                         echo "There is no support at all for void."
6168                         voidflags=0
6169                 fi
6170         fi
6171 esac
6172 case "$voidflags" in
6173 "$defvoidused") ;;
6174 *)      $cat >&4 <<'EOM'
6175   Support flag bits are:
6176     1: basic void declarations.
6177     2: arrays of pointers to functions returning void.
6178     4: operations between pointers to and addresses of void functions.
6179     8: generic void pointers.
6180 EOM
6181         dflt="$voidflags";
6182         rp="Your void support flags add up to what?"
6183         . ./myread
6184         voidflags="$ans"
6185         ;;
6186 esac
6187 $rm -f try.* .out
6188
6189 : check for length of pointer
6190 echo " "
6191 case "$ptrsize" in
6192 '')
6193         echo "Checking to see how big your pointers are..." >&4
6194         if test "$voidflags" -gt 7; then
6195                 echo '#define VOID_PTR char *' > try.c
6196         else
6197                 echo '#define VOID_PTR void *' > try.c
6198         fi
6199         $cat >>try.c <<EOCP
6200 #include <stdio.h>
6201 #$i_stdlib I_STDLIB
6202 #ifdef I_STDLIB
6203 #include <stdlib.h>
6204 #endif
6205 int main()
6206 {
6207     printf("%d\n", (int)sizeof(VOID_PTR));
6208     exit(0);
6209 }
6210 EOCP
6211         set try
6212         if eval $compile_ok; then
6213                 ptrsize=`$run ./try`
6214                 echo "Your pointers are $ptrsize bytes long."
6215         else
6216                 dflt='4'
6217                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6218                 rp="What is the size of a pointer (in bytes)?"
6219                 . ./myread
6220                 ptrsize="$ans"
6221         fi
6222         ;;
6223 esac
6224 $rm -f try.c try
6225 case "$use64bitall" in
6226 "$define"|true|[yY]*)
6227         case "$ptrsize" in
6228         4)      cat <<EOM >&4
6229
6230 *** You have chosen a maximally 64-bit build,
6231 *** but your pointers are only 4 bytes wide.
6232 *** Please rerun Configure without -Duse64bitall.
6233 EOM
6234                 case "$d_quad" in
6235                 define)
6236                         cat <<EOM >&4
6237 *** Since you have quads, you could possibly try with -Duse64bitint.
6238 EOM
6239                         ;;
6240                 esac
6241                 cat <<EOM >&4
6242 *** Cannot continue, aborting.
6243
6244 EOM
6245
6246                 exit 1
6247                 ;;
6248         esac
6249         ;;
6250 esac
6251
6252
6253 : determine which malloc to compile in
6254 echo " "
6255 case "$usemymalloc" in
6256 [yY]*|true|$define)     dflt='y' ;;
6257 [nN]*|false|$undef)     dflt='n' ;;
6258 *)      case "$ptrsize" in
6259         4) dflt='y' ;;
6260         *) dflt='n' ;;
6261         esac
6262         ;;
6263 esac
6264 rp="Do you wish to attempt to use the malloc that comes with $package?"
6265 . ./myread
6266 usemymalloc="$ans"
6267 case "$ans" in
6268 y*|true)
6269         usemymalloc='y'
6270         mallocsrc='malloc.c'
6271         mallocobj="malloc$_o"
6272         d_mymalloc="$define"
6273         case "$libs" in
6274         *-lmalloc*)
6275                 : Remove malloc from list of libraries to use
6276                 echo "Removing unneeded -lmalloc from library list" >&4
6277                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6278                 shift
6279                 libs="$*"
6280                 echo "libs = $libs" >&4
6281                 ;;
6282         esac
6283         ;;
6284 *)
6285         usemymalloc='n'
6286         mallocsrc=''
6287         mallocobj=''
6288         d_mymalloc="$undef"
6289         ;;
6290 esac
6291
6292 : compute the return types of malloc and free
6293 echo " "
6294 $cat >malloc.c <<END
6295 #$i_malloc I_MALLOC
6296 #$i_stdlib I_STDLIB
6297 #include <stdio.h>
6298 #include <sys/types.h>
6299 #ifdef I_MALLOC
6300 #include <malloc.h>
6301 #endif
6302 #ifdef I_STDLIB
6303 #include <stdlib.h>
6304 #endif
6305 #ifdef TRY_MALLOC
6306 void *malloc();
6307 #endif
6308 #ifdef TRY_FREE
6309 void free();
6310 #endif
6311 END
6312 case "$malloctype" in
6313 '')
6314         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6315                 malloctype='void *'
6316         else
6317                 malloctype='char *'
6318         fi
6319         ;;
6320 esac
6321 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6322
6323 case "$freetype" in
6324 '')
6325         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6326                 freetype='void'
6327         else
6328                 freetype='int'
6329         fi
6330         ;;
6331 esac
6332 echo "Your system uses $freetype free(), it would seem." >&4
6333 $rm -f malloc.[co]
6334 $cat <<EOM
6335
6336 After $package is installed, you may wish to install various
6337 add-on modules and utilities.  Typically, these add-ons will
6338 be installed under $prefix with the rest
6339 of this package.  However, you may wish to install such add-ons
6340 elsewhere under a different prefix.
6341
6342 If you do not wish to put everything under a single prefix, that's
6343 ok.  You will be prompted for the individual locations; this siteprefix
6344 is only used to suggest the defaults.
6345
6346 The default should be fine for most people.
6347
6348 EOM
6349 fn=d~+
6350 rp='Installation prefix to use for add-on modules and utilities?'
6351 : XXX Here might be another good place for an installstyle setting.
6352 case "$siteprefix" in
6353 '') dflt=$prefix ;;
6354 *)  dflt=$siteprefix ;;
6355 esac
6356 . ./getfile
6357 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6358 oldsiteprefix=''
6359 case "$siteprefix" in
6360 '') ;;
6361 *)      case "$ans" in
6362         "$prefix") ;;
6363         *) oldsiteprefix="$prefix";;
6364         esac
6365         ;;
6366 esac
6367 siteprefix="$ans"
6368 siteprefixexp="$ansexp"
6369
6370 : determine where site specific libraries go.
6371 : Usual default is /usr/local/lib/perl5/site_perl/$version
6372 : The default "style" setting is made in installstyle.U
6373 : XXX No longer works with Prefixit stuff.
6374 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6375 case "$sitelib" in
6376 '') case "$installstyle" in
6377         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6378         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6379         esac
6380         ;;
6381 *)      dflt="$sitelib"
6382         ;;
6383 esac
6384 $cat <<EOM
6385
6386 The installation process will create a directory for
6387 site-specific extensions and modules.  Most users find it convenient
6388 to place all site-specific files in this directory rather than in the
6389 main distribution directory.
6390
6391 EOM
6392 fn=d~+
6393 rp='Pathname for the site-specific library files?'
6394 . ./getfile
6395 sitelib="$ans"
6396 sitelibexp="$ansexp"
6397 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6398 : Change installation prefix, if necessary.
6399 if $test X"$prefix" != X"$installprefix"; then
6400         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6401 else
6402         installsitelib="$sitelibexp"
6403 fi
6404
6405 : determine where site specific architecture-dependent libraries go.
6406 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6407 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6408 : sitelib may have an optional trailing /share.
6409 case "$sitearch" in
6410 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6411         dflt="$dflt/$archname"
6412         ;;
6413 *)      dflt="$sitearch"
6414         ;;
6415 esac
6416 set sitearch sitearch none
6417 eval $prefixit
6418 $cat <<EOM
6419
6420 The installation process will also create a directory for
6421 architecture-dependent site-specific extensions and modules.
6422
6423 EOM
6424 fn=d~+
6425 rp='Pathname for the site-specific architecture-dependent library files?'
6426 . ./getfile
6427 sitearch="$ans"
6428 sitearchexp="$ansexp"
6429 : Change installation prefix, if necessary.
6430 if $test X"$prefix" != X"$installprefix"; then
6431         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6432 else
6433         installsitearch="$sitearchexp"
6434 fi
6435
6436 $cat <<EOM
6437
6438 The installation process will also create a directory for
6439 vendor-supplied add-ons.  Vendors who supply perl with their system
6440 may find it convenient to place all vendor-supplied files in this
6441 directory rather than in the main distribution directory.  This will
6442 ease upgrades between binary-compatible maintenance versions of perl.
6443
6444 Of course you may also use these directories in whatever way you see
6445 fit.  For example, you might use them to access modules shared over a
6446 company-wide network.
6447
6448 The default answer should be fine for most people.
6449 This causes further questions about vendor add-ons to be skipped
6450 and no vendor-specific directories will be configured for perl.
6451
6452 EOM
6453 rp='Do you want to configure vendor-specific add-on directories?'
6454 case "$usevendorprefix" in
6455 define|true|[yY]*) dflt=y ;;
6456 *)      : User may have set vendorprefix directly on Configure command line.
6457         case "$vendorprefix" in
6458         ''|' ') dflt=n ;;
6459         *)      dflt=y ;;
6460         esac
6461         ;;
6462 esac
6463 . ./myread
6464 case "$ans" in
6465 [yY]*)  fn=d~+
6466         rp='Installation prefix to use for vendor-supplied add-ons?'
6467         case "$vendorprefix" in
6468         '') dflt='' ;;
6469         *)  dflt=$vendorprefix ;;
6470         esac
6471         . ./getfile
6472         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6473         oldvendorprefix=''
6474         case "$vendorprefix" in
6475         '') ;;
6476         *)      case "$ans" in
6477                 "$prefix") ;;
6478                 *) oldvendorprefix="$prefix";;
6479                 esac
6480                 ;;
6481         esac
6482         usevendorprefix="$define"
6483         vendorprefix="$ans"
6484         vendorprefixexp="$ansexp"
6485         ;;
6486 *)      usevendorprefix="$undef"
6487         vendorprefix=''
6488         vendorprefixexp=''
6489         ;;
6490 esac
6491
6492 case "$vendorprefix" in
6493 '')     d_vendorlib="$undef"
6494         vendorlib=''
6495         vendorlibexp=''
6496         ;;
6497 *)      d_vendorlib="$define"
6498         : determine where vendor-supplied modules go.
6499         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6500         case "$vendorlib" in
6501         '')
6502                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6503                 case "$installstyle" in
6504                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6505                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6506                 esac
6507                 ;;
6508         *)      dflt="$vendorlib"
6509                 ;;
6510         esac
6511         fn=d~+
6512         rp='Pathname for the vendor-supplied library files?'
6513         . ./getfile
6514         vendorlib="$ans"
6515         vendorlibexp="$ansexp"
6516         ;;
6517 esac
6518 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6519 : Change installation prefix, if necessary.
6520 if $test X"$prefix" != X"$installprefix"; then
6521         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6522 else
6523         installvendorlib="$vendorlibexp"
6524 fi
6525
6526 case "$vendorprefix" in
6527 '')     d_vendorarch="$undef"
6528         vendorarch=''
6529         vendorarchexp=''
6530         ;;
6531 *)      d_vendorarch="$define"
6532         : determine where vendor-supplied architecture-dependent libraries go.
6533         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6534         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6535         : vendorlib may have an optional trailing /share.
6536         case "$vendorarch" in
6537         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6538                 dflt="$dflt/$archname"
6539                 ;;
6540         *)      dflt="$vendorarch" ;;
6541         esac
6542         fn=d~+
6543         rp='Pathname for vendor-supplied architecture-dependent files?'
6544         . ./getfile
6545         vendorarch="$ans"
6546         vendorarchexp="$ansexp"
6547         ;;
6548 esac
6549 : Change installation prefix, if necessary.
6550 if $test X"$prefix" != X"$installprefix"; then
6551         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6552 else
6553         installvendorarch="$vendorarchexp"
6554 fi
6555
6556 : Final catch-all directories to search
6557 $cat <<EOM
6558
6559 Lastly, you can have perl look in other directories for extensions and
6560 modules in addition to those already specified.
6561 These directories will be searched after 
6562         $sitearch 
6563         $sitelib 
6564 EOM
6565 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6566 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6567 echo ' '
6568 case "$otherlibdirs" in
6569 ''|' ') dflt='none' ;;
6570 *)      dflt="$otherlibdirs" ;;
6571 esac
6572 $cat <<EOM
6573 Enter a colon-separated set of extra paths to include in perl's @INC
6574 search path, or enter 'none' for no extra paths.
6575
6576 EOM
6577
6578 rp='Colon-separated list of additional directories for perl to search?'
6579 . ./myread
6580 case "$ans" in
6581 ' '|''|none)    otherlibdirs=' ' ;;     
6582 *)      otherlibdirs="$ans" ;;
6583 esac
6584 case "$otherlibdirs" in
6585 ' ') val=$undef ;;
6586 *)      val=$define ;;
6587 esac
6588 set d_perl_otherlibdirs
6589 eval $setvar
6590
6591 : Cruising for prototypes
6592 echo " "
6593 echo "Checking out function prototypes..." >&4
6594 $cat >prototype.c <<EOCP
6595 #$i_stdlib I_STDLIB
6596 #ifdef I_STDLIB
6597 #include <stdlib.h>
6598 #endif
6599 int main(int argc, char *argv[]) {
6600         exit(0);}
6601 EOCP
6602 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6603         echo "Your C compiler appears to support function prototypes."
6604         val="$define"
6605 else
6606         echo "Your C compiler doesn't seem to understand function prototypes."
6607         val="$undef"
6608 fi
6609 set prototype
6610 eval $setvar
6611 $rm -f prototype*
6612
6613 case "$prototype" in
6614 "$define") ;;
6615 *)      ansi2knr='ansi2knr'
6616         echo " "
6617         cat <<EOM >&4
6618
6619 $me:  FATAL ERROR:
6620 This version of $package can only be compiled by a compiler that 
6621 understands function prototypes.  Unfortunately, your C compiler 
6622         $cc $ccflags
6623 doesn't seem to understand them.  Sorry about that.
6624
6625 If GNU cc is available for your system, perhaps you could try that instead.  
6626
6627 Eventually, we hope to support building Perl with pre-ANSI compilers.
6628 If you would like to help in that effort, please contact <perlbug@perl.org>.
6629
6630 Aborting Configure now.
6631 EOM
6632         exit 2
6633         ;;
6634 esac
6635
6636 : determine where public executables go
6637 echo " "
6638 set dflt bin bin
6639 eval $prefixit
6640 fn=d~
6641 rp='Pathname where the public executables will reside?'
6642 . ./getfile
6643 if $test "X$ansexp" != "X$binexp"; then
6644         installbin=''
6645 fi
6646 bin="$ans"
6647 binexp="$ansexp"
6648 : Change installation prefix, if necessary.
6649 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6650 if $test X"$prefix" != X"$installprefix"; then
6651         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6652 else
6653         installbin="$binexp"
6654 fi
6655
6656 echo " "
6657 case "$extras" in
6658 '') dflt='n';;
6659 *) dflt='y';;
6660 esac
6661 cat <<EOM
6662 Perl can be built with extra modules or bundles of modules which
6663 will be fetched from the CPAN and installed alongside Perl.
6664
6665 Notice that you will need access to the CPAN; either via the Internet,
6666 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6667 be asked later to configure the CPAN.pm module which will in turn do
6668 the installation of the rest of the extra modules or bundles.)
6669
6670 Notice also that if the modules require any external software such as
6671 libraries and headers (the libz library and the zlib.h header for the
6672 Compress::Zlib module, for example) you MUST have any such software
6673 already installed, this configuration process will NOT install such
6674 things for you.
6675
6676 If this doesn't make any sense to you, just accept the default '$dflt'.
6677 EOM
6678 rp='Install any extra modules (y or n)?'
6679 . ./myread
6680 case "$ans" in
6681 y|Y)
6682         cat <<EOM
6683
6684 Please list any extra modules or bundles to be installed from CPAN,
6685 with spaces between the names.  The names can be in any format the
6686 'install' command of CPAN.pm will understand.  (Answer 'none',
6687 without the quotes, to install no extra modules or bundles.)
6688 EOM
6689         rp='Extras?'
6690         dflt="$extras"
6691         . ./myread
6692         extras="$ans"
6693 esac
6694 case "$extras" in
6695 ''|'none')
6696         val=''
6697         $rm -f ../extras.lst
6698         ;;
6699 *)      echo "(Saving the list of extras for later...)"
6700         echo "$extras" > ../extras.lst
6701         val="'$extras'"
6702         ;;
6703 esac
6704 set extras
6705 eval $setvar
6706 echo " "
6707
6708 : determine where html pages for programs go
6709 set html1dir html1dir none
6710 eval $prefixit
6711 $cat <<EOM
6712
6713 If you wish to install html files for programs in $spackage, indicate 
6714 the appropriate directory here.  To skip installing html files,
6715 answer "none".
6716 EOM
6717 case "$html1dir" in
6718 ''|none|$undef|' ') dflt=none ;;
6719 *) dflt=$html1dir ;;
6720 esac
6721 fn=dn+~
6722 rp="Directory for the main $spackage html pages?"
6723 . ./getfile
6724 html1dir="$ans"
6725 html1direxp="$ansexp"
6726 : Use ' ' for none so value is preserved next time through Configure
6727 $test X"$html1dir" = "X" && html1dir=' '
6728 : Change installation prefix, if necessary.
6729 if $test X"$prefix" != X"$installprefix"; then
6730         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6731 else
6732         installhtml1dir="$html1direxp"
6733 fi
6734
6735 : determine where html pages for libraries and modules go
6736 set html3dir html3dir none
6737 eval $prefixit
6738 $cat <<EOM
6739
6740 If you wish to install html files for modules associated with $spackage,
6741 indicate the appropriate directory here.  To skip installing html files,
6742 answer "none".
6743 EOM
6744 : There is no obvious default.  If they have specified html1dir, then
6745 : try to key off that, possibly changing .../html1 into .../html3.
6746 case "$html3dir" in
6747 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6748 *) dflt=$html3dir ;;
6749 esac
6750 fn=dn+~
6751 rp="Directory for the $spackage module html pages?"
6752 . ./getfile
6753 html3dir="$ans"
6754 html3direxp="$ansexp"
6755 : Use ' ' for none so value is preserved next time through Configure
6756 $test X"$html3dir" = "X" && html3dir=' '
6757 : Change installation prefix, if necessary.
6758 if $test X"$prefix" != X"$installprefix"; then
6759         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6760 else
6761         installhtml3dir="$html3direxp"
6762 fi
6763
6764 : Find perl5.005 or later.
6765 echo "Looking for a previously installed perl5.005 or later... "
6766 case "$perl5" in
6767 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6768                 : Check if this perl is recent and can load a simple module
6769                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6770                         perl5=$tdir/perl
6771                         break;
6772                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6773                         perl5=$tdir/perl5
6774                         break;
6775                 fi
6776         done
6777         ;;
6778 *)      perl5="$perl5"
6779         ;;
6780 esac
6781 case "$perl5" in
6782 '')     echo "None found.  That's ok.";;
6783 *)      echo "Using $perl5." ;;
6784 esac
6785
6786 : Determine list of previous versions to include in @INC
6787 $cat > getverlist <<EOPL
6788 #!$perl5 -w
6789 use File::Basename;
6790 \$api_versionstring = "$api_versionstring";
6791 \$version = "$version";
6792 \$stem = "$sitelib_stem";
6793 \$archname = "$archname";
6794 EOPL
6795         $cat >> getverlist <<'EOPL'
6796 # Can't have leading @ because metaconfig interprets it as a command!
6797 ;@inc_version_list=();
6798 # XXX Redo to do opendir/readdir? 
6799 if (-d $stem) {
6800     chdir($stem);
6801     ;@candidates = glob("5.*");
6802 }
6803 else {
6804     ;@candidates = ();
6805 }
6806
6807 # XXX ToDo:  These comparisons must be reworked when two-digit
6808 # subversions come along, so that 5.7.10 compares as greater than
6809 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6810 # widespread that we can use the built-in version vectors rather
6811 # than reinventing them here.  For 5.6.0, however, we must
6812 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6813 foreach $d (@candidates) {
6814     if ($d lt $version) {
6815         if ($d ge $api_versionstring) {
6816             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6817         }
6818         elsif ($d ge "5.005") {
6819             unshift(@inc_version_list, grep { -d } $d);
6820         }
6821     }
6822     else {
6823         # Skip newer version.  I.e. don't look in
6824         # 5.7.0 if we're installing 5.6.1.
6825     }
6826 }
6827
6828 if (@inc_version_list) {
6829     print join(' ', @inc_version_list);
6830 }
6831 else {
6832     # Blank space to preserve value for next Configure run.
6833     print " ";
6834 }
6835 EOPL
6836 chmod +x getverlist
6837 case "$inc_version_list" in
6838 '')     if test -x "$perl5$exe_ext"; then
6839                 dflt=`$perl5 getverlist`
6840         else
6841                 dflt='none'
6842         fi
6843         ;;
6844 $undef) dflt='none' ;;
6845 *)  eval dflt=\"$inc_version_list\" ;;
6846 esac
6847 case "$dflt" in
6848 ''|' ') dflt=none ;;
6849 esac
6850 case "$dflt" in
6851 5.005) dflt=none ;;
6852 esac
6853 $cat <<EOM
6854
6855 In order to ease the process of upgrading, this version of perl 
6856 can be configured to use modules built and installed with earlier 
6857 versions of perl that were installed under $prefix.  Specify here
6858 the list of earlier versions that this version of perl should check.
6859 If Configure detected no earlier versions of perl installed under
6860 $prefix, then the list will be empty.  Answer 'none' to tell perl
6861 to not search earlier versions.
6862
6863 The default should almost always be sensible, so if you're not sure,
6864 just accept the default.
6865 EOM
6866
6867 rp='List of earlier versions to include in @INC?'
6868 . ./myread
6869 case "$ans" in
6870 [Nn]one|''|' ') inc_version_list=' ' ;;
6871 *) inc_version_list="$ans" ;;
6872 esac
6873 case "$inc_version_list" in
6874 ''|' ') 
6875         inc_version_list_init='0';;
6876 *)      inc_version_list_init=`echo $inc_version_list |
6877                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6878         ;;
6879 esac
6880 $rm -f getverlist
6881
6882 : determine whether to install perl also as /usr/bin/perl
6883
6884 echo " "
6885 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6886         $cat <<EOM
6887 Many scripts expect perl to be installed as /usr/bin/perl.
6888
6889 If you want to, I can install the perl you are about to compile
6890 as /usr/bin/perl (in addition to $bin/perl).
6891 EOM
6892         if test -f /usr/bin/perl; then
6893             $cat <<EOM
6894
6895 However, please note that because you already have a /usr/bin/perl,
6896 overwriting that with a new Perl would very probably cause problems.
6897 Therefore I'm assuming you don't want to do that (unless you insist).
6898
6899 EOM
6900             case "$installusrbinperl" in
6901             "$define"|[yY]*)    dflt='y';;
6902             *)                  dflt='n';;
6903             esac
6904         else
6905             $cat <<EOM
6906
6907 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6908
6909 EOM
6910             case "$installusrbinperl" in
6911             "$undef"|[nN]*)     dflt='n';;
6912             *)                  dflt='y';;
6913             esac
6914         fi
6915         rp="Do you want to install perl as /usr/bin/perl?"
6916         . ./myread
6917         case "$ans" in
6918         [yY]*)  val="$define";;
6919         *)      val="$undef" ;;
6920         esac
6921 else
6922         val="$undef"
6923 fi
6924 set installusrbinperl
6925 eval $setvar
6926
6927 echo " "
6928 echo "Checking for GNU C Library..." >&4
6929 cat >try.c <<'EOCP'
6930 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6931    alone are insufficient to distinguish different versions, such as
6932    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6933    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6934 */
6935 #include <stdio.h>
6936 int main(void)
6937 {
6938 #ifdef __GLIBC__
6939 #   ifdef __GLIBC_MINOR__
6940 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6941 #           include <gnu/libc-version.h>
6942             printf("%s\n",  gnu_get_libc_version());
6943 #       else
6944             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6945 #       endif
6946 #   else
6947         printf("%d\n",  __GLIBC__);
6948 #   endif
6949     return 0;
6950 #else
6951     return 1;
6952 #endif
6953 }
6954 EOCP
6955 set try
6956 if eval $compile_ok && $run ./try > glibc.ver; then
6957         val="$define"
6958         gnulibc_version=`$cat glibc.ver`
6959         echo "You are using the GNU C Library version $gnulibc_version"
6960 else
6961         val="$undef"
6962         gnulibc_version=''
6963         echo "You are not using the GNU C Library"
6964 fi
6965 $rm -f try try.* glibc.ver
6966 set d_gnulibc
6967 eval $setvar
6968
6969 : see if nm is to be used to determine whether a symbol is defined or not
6970 case "$usenm" in
6971 '')
6972         dflt=''
6973         case "$d_gnulibc" in
6974         "$define")
6975                 echo " "
6976                 echo "nm probably won't work on the GNU C Library." >&4
6977                 dflt=n
6978                 ;;
6979         esac
6980         case "$dflt" in
6981         '') 
6982                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6983                         echo " "
6984                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6985                         echo "'nm' won't be sufficient on this sytem." >&4
6986                         dflt=n
6987                 fi
6988                 ;;
6989         esac
6990         case "$dflt" in
6991         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6992                 if $test $dflt -gt 20; then
6993                         dflt=y
6994                 else
6995                         dflt=n
6996                 fi
6997                 ;;
6998         esac
6999         ;;
7000 *)
7001         case "$usenm" in
7002         true|$define) dflt=y;;
7003         *) dflt=n;;
7004         esac
7005         ;;
7006 esac
7007 $cat <<EOM
7008
7009 I can use $nm to extract the symbols from your C libraries. This
7010 is a time consuming task which may generate huge output on the disk (up
7011 to 3 megabytes) but that should make the symbols extraction faster. The
7012 alternative is to skip the 'nm' extraction part and to compile a small
7013 test program instead to determine whether each symbol is present. If
7014 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7015 this may be the best solution.
7016
7017 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7018
7019 EOM
7020 rp="Shall I use $nm to extract C symbols from the libraries?"
7021 . ./myread
7022 case "$ans" in
7023 [Nn]*) usenm=false;;
7024 *) usenm=true;;
7025 esac
7026
7027 runnm=$usenm
7028 case "$reuseval" in
7029 true) runnm=false;;
7030 esac
7031
7032 : nm options which may be necessary
7033 case "$nm_opt" in
7034 '') if $test -f /mach_boot; then
7035                 nm_opt=''       # Mach
7036         elif $test -d /usr/ccs/lib; then
7037                 nm_opt='-p'     # Solaris (and SunOS?)
7038         elif $test -f /dgux; then
7039                 nm_opt='-p'     # DG-UX
7040         elif $test -f /lib64/rld; then
7041                 nm_opt='-p'     # 64-bit Irix
7042         else
7043                 nm_opt=''
7044         fi;;
7045 esac
7046
7047 : nm options which may be necessary for shared libraries but illegal
7048 : for archive libraries.  Thank you, Linux.
7049 case "$nm_so_opt" in
7050 '')     case "$myuname" in
7051         *linux*)
7052                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7053                         nm_so_opt='--dynamic'
7054                 fi
7055                 ;;
7056         esac
7057         ;;
7058 esac
7059
7060 case "$runnm" in
7061 true)
7062 : get list of predefined functions in a handy place
7063 echo " "
7064 case "$libc" in
7065 '') libc=unknown
7066         case "$libs" in
7067         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7068         esac
7069         ;;
7070 esac
7071 case "$libs" in
7072 '') ;;
7073 *)  for thislib in $libs; do
7074         case "$thislib" in
7075         -lc|-lc_s)
7076                 : Handle C library specially below.
7077                 ;;
7078         -l*)
7079                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7080                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7081                         :
7082                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7083                         :
7084                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7085                         :
7086                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7087                         :
7088                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7089                         :
7090                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7091                         :
7092                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7093                         :
7094                 else
7095                         try=''
7096                 fi
7097                 libnames="$libnames $try"
7098                 ;;
7099         *) libnames="$libnames $thislib" ;;
7100         esac
7101         done
7102         ;;
7103 esac
7104 xxx=normal
7105 case "$libc" in
7106 unknown)
7107         set /lib/libc.$so
7108         for xxx in $libpth; do
7109                 $test -r $1 || set $xxx/libc.$so
7110                 : The messy sed command sorts on library version numbers.
7111                 $test -r $1 || \
7112                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7113                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7114                                 h
7115                                 s/[0-9][0-9]*/0000&/g
7116                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7117                                 G
7118                                 s/\n/ /' | \
7119                          $sort | $sed -e 's/^.* //'`
7120                 eval set \$$#
7121         done
7122         $test -r $1 || set /usr/ccs/lib/libc.$so
7123         $test -r $1 || set /lib/libsys_s$_a
7124         ;;
7125 *)
7126         set blurfl
7127         ;;
7128 esac
7129 if $test -r "$1"; then
7130         echo "Your (shared) C library seems to be in $1."
7131         libc="$1"
7132 elif $test -r /lib/libc && $test -r /lib/clib; then
7133         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7134         xxx=apollo
7135         libc='/lib/clib /lib/libc'
7136         if $test -r /lib/syslib; then
7137                 echo "(Your math library is in /lib/syslib.)"
7138                 libc="$libc /lib/syslib"
7139         fi
7140 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7141         echo "Your C library seems to be in $libc, as you said before."
7142 elif $test -r $incpath/usr/lib/libc$_a; then
7143         libc=$incpath/usr/lib/libc$_a;
7144         echo "Your C library seems to be in $libc.  That's fine."
7145 elif $test -r /lib/libc$_a; then
7146         libc=/lib/libc$_a;
7147         echo "Your C library seems to be in $libc.  You're normal."
7148 else
7149         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7150                 :
7151         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7152                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7153         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7154                 :
7155         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7156                 :
7157         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7158                 :
7159         else
7160                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7161         fi
7162         if $test -r "$tans"; then
7163                 echo "Your C library seems to be in $tans, of all places."
7164                 libc=$tans
7165         else
7166                 libc='blurfl'
7167         fi
7168 fi
7169 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7170         dflt="$libc"
7171         cat <<EOM
7172
7173 If the guess above is wrong (which it might be if you're using a strange
7174 compiler, or your machine supports multiple models), you can override it here.
7175
7176 EOM
7177 else
7178         dflt=''
7179         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7180         cat >&4 <<EOM
7181 I can't seem to find your C library.  I've looked in the following places:
7182
7183 EOM
7184         $sed 's/^/      /' libpath
7185         cat <<EOM
7186
7187 None of these seems to contain your C library. I need to get its name...
7188
7189 EOM
7190 fi
7191 fn=f
7192 rp='Where is your C library?'
7193 . ./getfile
7194 libc="$ans"
7195
7196 echo " "
7197 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7198 set X `cat libnames`
7199 shift
7200 xxx=files
7201 case $# in 1) xxx=file; esac
7202 echo "Extracting names from the following $xxx for later perusal:" >&4
7203 echo " "
7204 $sed 's/^/      /' libnames >&4
7205 echo " "
7206 $echo $n "This may take a while...$c" >&4
7207
7208 for file in $*; do
7209         case $file in
7210         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7211         *) $nm $nm_opt $file 2>/dev/null;;
7212         esac
7213 done >libc.tmp
7214
7215 $echo $n ".$c"
7216 $grep fprintf libc.tmp > libc.ptf
7217 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7218 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7219 xxx='[ADTSIW]'
7220 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
7221         eval $xscan;\
7222         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7223                 eval $xrun
7224 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7225         eval $xscan;\
7226         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7227                 eval $xrun
7228 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7229         eval $xscan;\
7230         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7231                 eval $xrun
7232 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7233         eval $xscan;\
7234         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7235                 eval $xrun
7236 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7237         eval $xscan;\
7238         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7239                 eval $xrun
7240 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7241         eval $xscan;\
7242         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7243                 eval $xrun
7244 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7245                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7246         eval $xscan;\
7247         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7248                 eval $xrun
7249 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7250         eval $xscan;\
7251         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7252                 eval $xrun
7253 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7254         eval $xscan;\
7255         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7256                 eval $xrun
7257 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7258         eval $xscan;\
7259         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7260                 eval $xrun
7261 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7262         eval $xscan;\
7263         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7264                 eval $xrun
7265 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7266         eval $xscan;\
7267         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7268                 eval $xrun
7269 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7270         eval $xscan;\
7271         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7272                 eval $xrun
7273 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7274         eval $xscan;\
7275         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7276                 eval $xrun
7277 else
7278         $nm -p $* 2>/dev/null >libc.tmp
7279         $grep fprintf libc.tmp > libc.ptf
7280         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7281                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7282         then
7283                 nm_opt='-p'
7284                 eval $xrun
7285         else
7286                 echo " "
7287                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7288                 com=''
7289                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7290                         for thisname in $libnames $libc; do
7291                                 $ar t $thisname >>libc.tmp
7292                         done
7293                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7294                         echo "Ok." >&4
7295                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7296                         # Repeat libc to extract forwarders to DLL entries too
7297                         for thisname in $libnames $libc; do
7298                                 $ar tv $thisname >>libc.tmp
7299                                 # Revision 50 of EMX has bug in $ar.
7300                                 # it will not extract forwarders to DLL entries
7301                                 # Use emximp which will extract exactly them.
7302                                 emximp -o tmp.imp $thisname \
7303                                     2>/dev/null && \
7304                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7305                                     < tmp.imp >>libc.tmp
7306                                 $rm tmp.imp
7307                         done
7308                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7309                         echo "Ok." >&4
7310                 else
7311                         echo "$ar didn't seem to work right." >&4
7312                         echo "Maybe this is a Cray...trying bld instead..." >&4
7313                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7314                         then
7315                                 for thisname in $libnames; do
7316                                         bld t $libnames | \
7317                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7318                                         $ar t $thisname >>libc.tmp
7319                                 done
7320                                 echo "Ok." >&4
7321                         else
7322                                 echo "That didn't work either.  Giving up." >&4
7323                                 exit 1
7324                         fi
7325                 fi
7326         fi
7327 fi
7328 nm_extract="$com"
7329 case "$PASE" in
7330 define)
7331     echo " "
7332     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7333     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7334     ;;
7335 *)  if $test -f /lib/syscalls.exp; then
7336         echo " "
7337         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7338         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7339     fi
7340     ;;
7341 esac
7342 ;;
7343 esac
7344 $rm -f libnames libpath
7345
7346 : see if dld is available
7347 set dld.h i_dld
7348 eval $inhdr
7349
7350 : is a C symbol defined?
7351 csym='tlook=$1;
7352 case "$3" in
7353 -v) tf=libc.tmp; tc=""; tdc="";;
7354 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
7355 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
7356 esac;
7357 tx=yes;
7358 case "$reuseval-$4" in
7359 true-) ;;
7360 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7361 esac;
7362 case "$tx" in
7363 yes)
7364         case "$runnm" in
7365         true)
7366                 if $contains $tlook $tf >/dev/null 2>&1;
7367                 then tval=true;
7368                 else tval=false;
7369                 fi;;
7370         *)
7371                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7372                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
7373                 then tval=true;
7374                 else tval=false;
7375                 fi;
7376                 $rm -f t t.c;;
7377         esac;;
7378 *)
7379         case "$tval" in
7380         $define) tval=true;;
7381         *) tval=false;;
7382         esac;;
7383 esac;
7384 eval "$2=$tval"'
7385
7386 : define an is-in-libc? function
7387 inlibc='echo " "; td=$define; tu=$undef;
7388 sym=$1; var=$2; eval "was=\$$2";
7389 tx=yes;
7390 case "$reuseval$was" in
7391 true) ;;
7392 true*) tx=no;;
7393 esac;
7394 case "$tx" in
7395 yes)
7396         set $sym tres -f;
7397         eval $csym;
7398         case "$tres" in
7399         true)
7400                 echo "$sym() found." >&4;
7401                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7402         *)
7403                 echo "$sym() NOT found." >&4;
7404                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7405         esac;;
7406 *)
7407         case "$was" in
7408         $define) echo "$sym() found." >&4;;
7409         *) echo "$sym() NOT found." >&4;;
7410         esac;;
7411 esac'
7412
7413 : see if dlopen exists
7414 xxx_runnm="$runnm"
7415 runnm=false
7416 set dlopen d_dlopen
7417 eval $inlibc
7418 runnm="$xxx_runnm"
7419
7420 : determine which dynamic loading, if any, to compile in
7421 echo " "
7422 dldir="ext/DynaLoader"
7423 case "$usedl" in
7424 $define|y|true)
7425         dflt='y'
7426         usedl="$define"
7427         ;;
7428 $undef|n|false)
7429         dflt='n'
7430         usedl="$undef"
7431         ;;
7432 *) 
7433         dflt='n'
7434         case "$d_dlopen" in
7435             $define) dflt='y' ;;
7436         esac
7437         case "$i_dld" in
7438             $define) dflt='y' ;;
7439         esac
7440         : Does a dl_xxx.xs file exist for this operating system
7441         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7442         ;;
7443 esac
7444 rp="Do you wish to use dynamic loading?"
7445 . ./myread
7446 usedl="$ans"
7447 case "$ans" in
7448 y*) usedl="$define"
7449         case "$dlsrc" in
7450         '')
7451                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7452                         dflt="$dldir/dl_${osname}.xs"
7453                 elif $test "$d_dlopen" = "$define" ; then
7454                         dflt="$dldir/dl_dlopen.xs"
7455                 elif $test "$i_dld" = "$define" ; then
7456                         dflt="$dldir/dl_dld.xs"
7457                 else
7458                         dflt=''
7459                 fi
7460                 ;;
7461         *)      dflt="$dldir/$dlsrc"
7462                 ;;
7463         esac
7464     echo "The following dynamic loading files are available:"
7465         : Can not go over to $dldir because getfile has path hard-coded in.
7466         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7467         rp="Source file to use for dynamic loading"
7468         fn="fne"
7469         gfpth="$src"
7470         . ./getfile
7471         usedl="$define"
7472         : emulate basename
7473         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7474
7475         $cat << EOM
7476
7477 Some systems may require passing special flags to $cc -c to
7478 compile modules that will be used to create a shared library.
7479 To use no flags, say "none".
7480
7481 EOM
7482     case "$cccdlflags" in
7483     '') case "$gccversion" in
7484                 '') case "$osname" in
7485                         hpux)   dflt='+z' ;;
7486                         next)   dflt='none' ;;
7487                         irix*)  dflt='-KPIC' ;;
7488                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7489                         sunos)  dflt='-pic' ;;
7490                         *)      dflt='none' ;;
7491                     esac
7492                         ;;
7493                 *)  case "$osname" in
7494                         darwin) dflt='none' ;;
7495                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7496                         *)      dflt='-fpic' ;;
7497                     esac ;;
7498             esac ;;
7499         ' ') dflt='none' ;;
7500     *)  dflt="$cccdlflags" ;;
7501     esac
7502     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7503     . ./myread
7504     case "$ans" in
7505     none) cccdlflags=' ' ;;
7506     *) cccdlflags="$ans" ;;
7507     esac
7508
7509     cat << EOM
7510
7511 Some systems use ld to create libraries that can be dynamically loaded,
7512 while other systems (such as those using ELF) use $cc.
7513
7514 EOM
7515         case "$ld" in
7516         '')     $cat >try.c <<EOM
7517 /* Test for whether ELF binaries are produced */
7518 #include <fcntl.h>
7519 #$i_stdlib I_STDLIB
7520 #ifdef I_STDLIB
7521 #include <stdlib.h>
7522 #endif
7523 int main() {
7524         char b[4];
7525         int i = open("a.out",O_RDONLY);
7526         if(i == -1) 
7527                 exit(1); /* fail */
7528         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7529                 exit(0); /* succeed (yes, it's ELF) */
7530         else
7531                 exit(1); /* fail */
7532 }
7533 EOM
7534                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7535                         cat <<EOM
7536 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7537 EOM
7538                         dflt="$cc"
7539                 else
7540                         echo "I'll use ld to build dynamic libraries."
7541                         dflt='ld'
7542                 fi
7543                 rm -f try.c a.out
7544                 ;;
7545         *)      dflt="$ld"
7546                 ;;
7547         esac
7548
7549     rp="What command should be used to create dynamic libraries?"
7550     . ./myread
7551         ld="$ans"
7552
7553     cat << EOM
7554
7555 Some systems may require passing special flags to $ld to create a
7556 library that can be dynamically loaded.  If your ld flags include
7557 -L/other/path options to locate libraries outside your loader's normal
7558 search path, you may need to specify those -L options here as well.  To
7559 use no flags, say "none".
7560
7561 EOM
7562     case "$lddlflags" in
7563     '') case "$osname" in
7564                         beos) dflt='-nostart' ;;
7565                         hpux) dflt='-b';
7566                               case "$gccversion" in
7567                               '') dflt="$dflt +vnocompatwarnings" ;;
7568                               esac
7569                               ;;        
7570                         linux|irix*)    dflt='-shared' ;;
7571                         next)  dflt='none' ;;
7572                         solaris) dflt='-G' ;;
7573                         sunos) dflt='-assert nodefinitions' ;;
7574                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7575                 *)     dflt='none' ;;
7576                         esac
7577                         ;;
7578     *) dflt="$lddlflags" ;;
7579     esac
7580
7581         : Try to guess additional flags to pick up local libraries.
7582         : Be careful not to append to a plain 'none'
7583         case "$dflt" in
7584         none) dflt='' ;;
7585         esac
7586         for thisflag in $ldflags; do
7587                 case "$thisflag" in
7588                 -L*|-R*|-Wl,-R*)
7589                         case " $dflt " in
7590                         *" $thisflag "*) ;;
7591                         *) dflt="$dflt $thisflag" ;;
7592                         esac
7593                         ;;
7594                 esac
7595         done
7596
7597         case "$dflt" in
7598         ''|' ') dflt='none' ;;
7599         esac
7600
7601     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7602     . ./myread
7603     case "$ans" in
7604     none) lddlflags=' ' ;;
7605     *) lddlflags="$ans" ;;
7606     esac
7607
7608         cat <<EOM
7609
7610 Some systems may require passing special flags to $cc to indicate that
7611 the resulting executable will use dynamic linking.  To use no flags,
7612 say "none".
7613
7614 EOM
7615     case "$ccdlflags" in
7616     '') case "$osname" in
7617                 hpux)   dflt='-Wl,-E' ;;
7618                 linux)  dflt='-rdynamic' ;;
7619                 next)   dflt='none' ;;
7620                 sunos)  dflt='none' ;;
7621                 *)      dflt='none' ;;
7622             esac ;;
7623     ' ')  dflt='none' ;;
7624     *)  dflt="$ccdlflags" ;;
7625     esac
7626     rp="Any special flags to pass to $cc to use dynamic linking?"
7627     . ./myread
7628     case "$ans" in
7629     none) ccdlflags=' ' ;;
7630     *) ccdlflags="$ans" ;;
7631     esac
7632     ;;
7633 *)  usedl="$undef"
7634         ld='ld'
7635     dlsrc='dl_none.xs'
7636     lddlflags=''
7637     ccdlflags=''
7638     ;;
7639 esac
7640
7641 also=''
7642 case "$usedl" in
7643 $undef)
7644         # No dynamic loading being used, so don't bother even to prompt.
7645         useshrplib='false'
7646         ;;
7647 *)      case "$useshrplib" in
7648         '')     case "$osname" in
7649                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7650                         dflt=y
7651                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7652                         ;;
7653                 next*)
7654                         case "$osvers" in
7655                         4*)     dflt=y
7656                                 also='Building a shared libperl is needed for MAB support.'
7657                                 ;;
7658                         *)      dflt=n
7659                                 ;;
7660                         esac
7661                         ;;
7662                 *)      dflt=n
7663                         ;;
7664                 esac
7665                 ;;
7666         $define|true|[Yy]*)
7667                 dflt=y
7668                 ;;
7669         *)      dflt=n
7670                 ;;
7671         esac
7672         $cat << EOM
7673
7674 The perl executable is normally obtained by linking perlmain.c with
7675 libperl${_a}, any static extensions (usually just DynaLoader), and
7676 any other libraries needed on this system (such as -lm, etc.).  Since
7677 your system supports dynamic loading, it is probably possible to build
7678 a shared libperl.$so.  If you will have more than one executable linked
7679 to libperl.$so, this will significantly reduce the size of each
7680 executable, but it may have a noticeable affect on performance.  The
7681 default is probably sensible for your system.
7682 $also
7683
7684 EOM
7685         rp="Build a shared libperl.$so (y/n)"
7686         . ./myread
7687         case "$ans" in
7688         true|$define|[Yy]*)
7689                 useshrplib='true'  ;;
7690         *)      useshrplib='false' ;;
7691         esac
7692         ;;
7693 esac
7694
7695 case "$useshrplib" in
7696 true)
7697         case "$libperl" in
7698         '')
7699                 # Figure out a good name for libperl.so.  Since it gets stored in
7700                 # a version-specific architecture-dependent library, the version
7701                 # number isn't really that important, except for making cc/ld happy.
7702                 #
7703                 # A name such as libperl.so.3.1
7704                 majmin="libperl.$so.$patchlevel.$subversion"
7705                 # A name such as libperl.so.301
7706                 majonly=`echo $patchlevel $subversion |
7707                         $awk '{printf "%d%02d", $1, $2}'`
7708                 majonly=libperl.$so.$majonly
7709                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7710                 # rely on figuring it out from the naming of libc.
7711                 case "${osname}${osvers}" in
7712                 next4*)
7713                         dflt=libperl.5.$so
7714                         # XXX How handle the --version stuff for MAB?
7715                         ;;
7716                 linux*)  # ld won't link with a bare -lperl otherwise.
7717                         dflt=libperl.$so
7718                         ;;
7719                 cygwin*) # ld links against an importlib
7720                         dflt=libperl$lib_ext
7721                         ;;
7722                 *)      # Try to guess based on whether libc has major.minor.
7723                         case "$libc" in
7724                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7725                         *libc.$so.[0-9]*) dflt=$majonly ;;
7726                         *)      dflt=libperl.$so ;;
7727                         esac
7728                         ;;
7729                 esac
7730                 ;;
7731         *)      dflt=$libperl
7732                 ;;
7733         esac
7734         cat << EOM
7735
7736 I need to select a good name for the shared libperl.  If your system uses
7737 library names with major and minor numbers, then you might want something
7738 like $majmin.  Alternatively, if your system uses a single version
7739 number for shared libraries, then you might want to use $majonly.
7740 Or, your system might be quite happy with a simple libperl.$so.
7741
7742 Since the shared libperl will get installed into a version-specific
7743 architecture-dependent directory, the version number of the shared perl
7744 library probably isn't important, so the default should be o.k.
7745
7746 EOM
7747         rp='What name do you want to give to the shared libperl?'
7748         . ./myread
7749         libperl=$ans
7750         echo "Ok, I'll use $libperl"
7751         ;;
7752 *)
7753         libperl="libperl${_a}"
7754         ;;
7755 esac
7756
7757 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7758 case "$shrpdir" in
7759 '') ;;
7760 *)      $cat >&4 <<EOM
7761 WARNING:  Use of the shrpdir variable for the installation location of
7762 the shared $libperl is not supported.  It was never documented and
7763 will not work in this version.  Let me (perlbug@perl.org)
7764 know of any problems this may cause.
7765
7766 EOM
7767         case "$shrpdir" in
7768         "$archlibexp/CORE")
7769                 $cat >&4 <<EOM
7770 But your current setting of $shrpdir is
7771 the default anyway, so it's harmless.
7772 EOM
7773                 ;;
7774         *)
7775                 $cat >&4 <<EOM
7776 Further, your current attempted setting of $shrpdir
7777 conflicts with the value of $archlibexp/CORE
7778 that installperl will use.
7779 EOM
7780                 ;;
7781         esac
7782         ;;
7783 esac
7784
7785 # How will the perl executable find the installed shared $libperl?
7786 # Add $xxx to ccdlflags.
7787 # If we can't figure out a command-line option, use $shrpenv to
7788 # set env LD_RUN_PATH.  The main perl makefile uses this.
7789 shrpdir=$archlibexp/CORE
7790 xxx=''
7791 tmp_shrpenv=''
7792 if "$useshrplib"; then
7793     case "$osname" in 
7794         aix)
7795                 # We'll set it in Makefile.SH...
7796                 ;;
7797         solaris)
7798                 xxx="-R $shrpdir"
7799                 ;;
7800         freebsd|netbsd|openbsd)
7801                 xxx="-Wl,-R$shrpdir"
7802                 ;;
7803         bsdos|linux|irix*|dec_osf)
7804                 xxx="-Wl,-rpath,$shrpdir"
7805                 ;;
7806         next)
7807                 # next doesn't like the default...
7808                 ;;
7809         beos)
7810                 # beos doesn't like the default, either.
7811                 ;;
7812         hpux*)
7813                 # hpux doesn't like the default, either.
7814                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7815                 ;;
7816         *)
7817                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7818                 ;;
7819         esac
7820         case "$xxx" in
7821         '') ;;
7822         *)      
7823                 # Only add $xxx if it isn't already in ccdlflags.
7824                 case " $ccdlflags " in
7825                 *" $xxx "*)     ;;
7826                 *)      ccdlflags="$ccdlflags $xxx"
7827                         cat <<EOM >&4
7828
7829 Adding $xxx to the flags
7830 passed to $ld so that the perl executable will find the 
7831 installed shared $libperl.
7832
7833 EOM
7834                         ;;
7835                 esac
7836                 ;;
7837         esac
7838 fi
7839 # Fix ccdlflags in AIX for building external extensions.
7840 # (For building Perl itself bare -bE:perl.exp is needed,
7841 #  Makefile.SH takes care of this.)
7842 case "$osname" in
7843 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7844 esac
7845 # Respect a hint or command-line value.
7846 case "$shrpenv" in
7847 '') shrpenv="$tmp_shrpenv" ;;
7848 esac
7849 case "$ldlibpthname" in
7850 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7851 none)   ldlibpthname='' ;;
7852 esac
7853
7854 : determine where manual pages are on this system
7855 echo " "
7856 case "$sysman" in
7857 '') 
7858         syspath='/usr/share/man/man1 /usr/man/man1'
7859         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7860         syspath="$syspath /usr/man/u_man/man1"
7861         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7862         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7863         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7864         sysman=`./loc . /usr/man/man1 $syspath`
7865         ;;
7866 esac
7867 if $test -d "$sysman"; then
7868         echo "System manual is in $sysman." >&4
7869 else
7870         echo "Could not find manual pages in source form." >&4
7871 fi
7872
7873 : determine where manual pages go
7874 set man1dir man1dir none
7875 eval $prefixit
7876 $cat <<EOM
7877
7878 $spackage has manual pages available in source form.
7879 EOM
7880 case "$nroff" in
7881 nroff)
7882         echo "However, you don't have nroff, so they're probably useless to you."
7883         case "$man1dir" in
7884         '') man1dir="none";;
7885         esac;;
7886 esac
7887 echo "If you don't want the manual sources installed, answer 'none'."
7888 case "$man1dir" in
7889 ' ') dflt=none
7890         ;;
7891 '')
7892         lookpath="$prefixexp/share/man/man1"
7893         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7894         lookpath="$lookpath $prefixexp/man/p_man/man1"
7895         lookpath="$lookpath $prefixexp/man/u_man/man1"
7896         lookpath="$lookpath $prefixexp/man/man.1"
7897         case "$sysman" in
7898         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7899         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7900         esac
7901         set dflt
7902         eval $prefixup
7903         ;;
7904 *)  dflt="$man1dir"
7905         ;;
7906 esac
7907 echo " "
7908 fn=dn+~
7909 rp="Where do the main $spackage manual pages (source) go?"
7910 . ./getfile
7911 if $test "X$man1direxp" != "X$ansexp"; then
7912         installman1dir=''
7913 fi
7914 man1dir="$ans"
7915 man1direxp="$ansexp"
7916 case "$man1dir" in
7917 '')     man1dir=' '
7918         installman1dir='';;
7919 esac
7920
7921 : Change installation prefix, if necessary.
7922 if $test X"$prefix" != X"$installprefix"; then
7923         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7924 else
7925         installman1dir="$man1direxp"
7926 fi
7927
7928 : What suffix to use on installed man pages
7929
7930 case "$man1dir" in
7931 ' ')
7932         man1ext='0'
7933         ;;
7934 *)
7935         rp="What suffix should be used for the main $spackage man pages?"
7936         case "$man1ext" in
7937         '')     case "$man1dir" in
7938                 *1)  dflt=1 ;;
7939                 *1p) dflt=1p ;;
7940                 *1pm) dflt=1pm ;;
7941                 *l) dflt=l;;
7942                 *n) dflt=n;;
7943                 *o) dflt=o;;
7944                 *p) dflt=p;;
7945                 *C) dflt=C;;
7946                 *L) dflt=L;;
7947                 *L1) dflt=L1;;
7948                 *) dflt=1;;
7949                 esac
7950                 ;;
7951         *)      dflt="$man1ext";;
7952         esac
7953         . ./myread
7954         man1ext="$ans"
7955         ;;
7956 esac
7957
7958 : see if we can have long filenames
7959 echo " "
7960 first=123456789abcdef
7961 $rm -f $first
7962 if (echo hi >$first) 2>/dev/null; then
7963         if $test -f 123456789abcde; then
7964                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7965                 val="$undef"
7966         else
7967                 echo 'You can have filenames longer than 14 characters.'>&4
7968                 val="$define"
7969         fi
7970 else
7971         $cat <<'EOM'
7972 You can't have filenames longer than 14 chars.
7973 You can't even think about them!
7974 EOM
7975         val="$undef"
7976 fi 
7977 set d_flexfnam
7978 eval $setvar
7979 $rm -rf 123456789abcde*
7980
7981 : determine where library module manual pages go
7982 set man3dir man3dir none
7983 eval $prefixit
7984 $cat <<EOM
7985
7986 $spackage has manual pages for many of the library modules.
7987 EOM
7988
7989 case "$nroff" in
7990 nroff)
7991         $cat <<'EOM'
7992 However, you don't have nroff, so they're probably useless to you.
7993 EOM
7994         case "$man3dir" in
7995         '') man3dir="none";;
7996         esac;;
7997 esac
7998
7999 case "$d_flexfnam" in
8000 undef)
8001         $cat <<'EOM'
8002 However, your system can't handle the long file names like File::Basename.3. 
8003 EOM
8004         case "$man3dir" in
8005         '') man3dir="none";;
8006         esac;;
8007 esac
8008
8009 echo "If you don't want the manual sources installed, answer 'none'."
8010 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8011 case "$man3dir" in
8012 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8013         if $test -d "$privlib/man/man3"; then
8014                 cat <<EOM >&4
8015
8016 WARNING:  Previous versions of perl installed man3 pages into
8017 $privlib/man/man3.  This version will suggest a 
8018 new default of $dflt.  
8019 EOM
8020                 tdflt=$dflt
8021                 dflt='n'
8022                 rp='Do you wish to preserve the old behavior?(y/n)'
8023                 . ./myread
8024                 case "$ans" in
8025                 y*) dflt="$privlib/man/man3" ;;
8026                 *)  dflt=$tdflt ;;
8027                 esac
8028     fi
8029         ;;
8030 *)      dflt="$man3dir" ;;
8031 esac
8032 case "$dflt" in
8033 ' ') dflt=none ;;
8034 esac
8035 echo " "
8036 fn=dn+~
8037 rp="Where do the $package library man pages (source) go?"
8038 . ./getfile
8039 man3dir="$ans"
8040 man3direxp="$ansexp"
8041 case "$man3dir" in
8042 '')     man3dir=' '
8043         installman3dir='';;
8044 esac
8045
8046 : Change installation prefix, if necessary.
8047 if $test X"$prefix" != X"$installprefix"; then
8048         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8049 else
8050         installman3dir="$man3direxp"
8051 fi
8052
8053 : What suffix to use on installed man pages
8054 case "$man3dir" in
8055 ' ')
8056         man3ext='0'
8057         ;;
8058 *)
8059         rp="What suffix should be used for the $package library man pages?"
8060         case "$man3ext" in
8061         '')     case "$man3dir" in
8062                 *3)  dflt=3 ;;
8063                 *3p) dflt=3p ;;
8064                 *3pm) dflt=3pm ;;
8065                 *l) dflt=l;;
8066                 *n) dflt=n;;
8067                 *o) dflt=o;;
8068                 *p) dflt=p;;
8069                 *C) dflt=C;;
8070                 *L) dflt=L;;
8071                 *L3) dflt=L3;;
8072                 *) dflt=3;;
8073                 esac
8074                 ;;
8075         *)      dflt="$man3ext";;
8076         esac
8077         . ./myread
8078         man3ext="$ans"
8079         ;;
8080 esac
8081
8082 : see if we have to deal with yellow pages, now NIS.
8083 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8084         if $test -f /usr/etc/nibindd; then
8085                 echo " "
8086                 echo "I'm fairly confident you're on a NeXT."
8087                 echo " "
8088                 rp='Do you get the hosts file via NetInfo?'
8089                 dflt=y
8090                 case "$hostcat" in
8091                 nidump*) ;;
8092                 '') ;;
8093                 *) dflt=n;;
8094                 esac
8095                 . ./myread
8096                 case "$ans" in
8097                 y*) hostcat='nidump hosts .';;
8098                 *)      case "$hostcat" in
8099                         nidump*) hostcat='';;
8100                         esac
8101                         ;;
8102                 esac
8103         fi
8104         case "$hostcat" in
8105         nidump*) ;;
8106         *)
8107                 case "$hostcat" in
8108                 *ypcat*) dflt=y;;
8109                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8110                                 dflt=y
8111                         else
8112                                 dflt=n
8113                         fi;;
8114                 *) dflt=n;;
8115                 esac
8116                 echo " "
8117                 rp='Are you getting the hosts file via yellow pages?'
8118                 . ./myread
8119                 case "$ans" in
8120                 y*) hostcat='ypcat hosts';;
8121                 *) hostcat='cat /etc/hosts';;
8122                 esac
8123                 ;;
8124         esac
8125 fi
8126 case "$hostcat" in
8127 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8128 esac
8129 case "$groupcat" in
8130 '') test -f /etc/group && groupcat='cat /etc/group';;
8131 esac
8132 case "$passcat" in
8133 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8134 esac
8135
8136 : now get the host name
8137 echo " "
8138 echo "Figuring out host name..." >&4
8139 case "$myhostname" in
8140 '') cont=true
8141         echo 'Maybe "hostname" will work...'
8142         if tans=`sh -c hostname 2>&1` ; then
8143                 myhostname=$tans
8144                 phostname=hostname
8145                 cont=''
8146         fi
8147         ;;
8148 *) cont='';;
8149 esac
8150 if $test "$cont"; then
8151         if ./xenix; then
8152                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8153                 if tans=`cat /etc/systemid 2>&1` ; then
8154                         myhostname=$tans
8155                         phostname='cat /etc/systemid'
8156                         echo "Whadyaknow.  Xenix always was a bit strange..."
8157                         cont=''
8158                 fi
8159         elif $test -r /etc/systemid; then
8160                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8161         fi
8162 fi
8163 if $test "$cont"; then
8164         echo 'No, maybe "uuname -l" will work...'
8165         if tans=`sh -c 'uuname -l' 2>&1` ; then
8166                 myhostname=$tans
8167                 phostname='uuname -l'
8168         else
8169                 echo 'Strange.  Maybe "uname -n" will work...'
8170                 if tans=`sh -c 'uname -n' 2>&1` ; then
8171                         myhostname=$tans
8172                         phostname='uname -n'
8173                 else
8174                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8175                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8176                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8177                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8178                         else
8179                                 case "$myhostname" in
8180                                 '') echo "Does this machine have an identity crisis or something?"
8181                                         phostname='';;
8182                                 *)
8183                                         echo "Well, you said $myhostname before..."
8184                                         phostname='echo $myhostname';;
8185                                 esac
8186                         fi
8187                 fi
8188         fi
8189 fi
8190 case "$myhostname" in
8191 '') myhostname=noname ;;
8192 esac
8193 : you do not want to know about this
8194 set $myhostname
8195 myhostname=$1
8196
8197 : verify guess
8198 if $test "$myhostname" ; then
8199         dflt=y
8200         rp='Your host name appears to be "'$myhostname'".'" Right?"
8201         . ./myread
8202         case "$ans" in
8203         y*) ;;
8204         *) myhostname='';;
8205         esac
8206 fi
8207
8208 : bad guess or no guess
8209 while $test "X$myhostname" = X ; do
8210         dflt=''
8211         rp="Please type the (one word) name of your host:"
8212         . ./myread
8213         myhostname="$ans"
8214 done
8215
8216 : translate upper to lower if necessary
8217 case "$myhostname" in
8218 *[A-Z]*)
8219         echo "(Normalizing case in your host name)"
8220         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8221         ;;
8222 esac
8223
8224 case "$myhostname" in
8225 *.*)
8226         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8227         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8228         echo "(Trimming domain name from host name--host name is now $myhostname)"
8229         ;;
8230 *) case "$mydomain" in
8231         '')
8232                 {
8233                         test "X$hostcat" = "Xypcat hosts" &&
8234                         ypmatch "$myhostname" hosts 2>/dev/null |\
8235                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8236                         $test -s hosts
8237                 } || {
8238                         test "X$hostcat" != "X" &&
8239                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8240                                         /[       ]$myhostname[  . ]/p" > hosts
8241                 }
8242                 tmp_re="[       . ]"
8243                 if $test -f hosts; then
8244                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8245                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8246                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8247                                 hosts | $sort | $uniq | \
8248                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8249                         case `$echo X$dflt` in
8250                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8251                                 dflt=.
8252                                 ;;
8253                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8254                                 ;;
8255                         esac
8256                 else
8257                         echo "(I cannot locate a hosts database anywhere)"
8258                         dflt=.
8259                 fi
8260                 case "$dflt" in
8261                 .)
8262                         tans=`./loc resolv.conf X /etc /usr/etc`
8263                         if $test -f "$tans"; then
8264                                 echo "(Attempting domain name extraction from $tans)"
8265                                 dflt=.`$sed -n -e 's/   / /g' \
8266                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8267                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8268                                 case "$dflt" in
8269                                 .) dflt=.`$sed -n -e 's/        / /g' \
8270                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8271                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8272                                         ;;
8273                                 esac
8274                         fi
8275                         ;;
8276                 esac
8277                 case "$dflt" in
8278                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8279                         dflt=.`sh -c domainname 2>/dev/null`
8280                         case "$dflt" in
8281                         '') dflt='.';;
8282                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8283                         esac
8284                         ;;
8285                 esac
8286                 case "$dflt$osname" in
8287                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8288                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8289                         ;;
8290                 esac
8291                 case "$dflt" in
8292                 .) echo "(Lost all hope -- silly guess then)"
8293                         dflt='.nonet'
8294                         ;;
8295                 esac
8296                 $rm -f hosts
8297                 ;;
8298         *) dflt="$mydomain";;
8299         esac;;
8300 esac
8301 echo " "
8302 rp="What is your domain name?"
8303 . ./myread
8304 tans="$ans"
8305 case "$ans" in
8306 '') ;;
8307 .*) ;;
8308 *) tans=".$tans";;
8309 esac
8310 mydomain="$tans"
8311
8312 : translate upper to lower if necessary
8313 case "$mydomain" in
8314 *[A-Z]*)
8315         echo "(Normalizing case in your domain name)"
8316         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8317         ;;
8318 esac
8319
8320 : a little sanity check here
8321 case "$phostname" in
8322 '') ;;
8323 *)
8324         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8325         $myhostname$mydomain|$myhostname) ;;
8326         *)
8327                 case "$phostname" in
8328                 sed*)
8329                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8330                         ;;
8331                 *)
8332                         echo "(That doesn't agree with your $phostname command, by the way.)"
8333                         ;;
8334                 esac
8335         ;;
8336         esac
8337         ;;
8338 esac
8339
8340 $cat <<EOM
8341
8342 I need to get your e-mail address in Internet format if possible, i.e.
8343 something like user@host.domain. Please answer accurately since I have
8344 no easy means to double check it. The default value provided below
8345 is most probably close to reality but may not be valid from outside
8346 your organization...
8347
8348 EOM
8349 cont=x
8350 while test "$cont"; do
8351         case "$cf_email" in
8352         '') dflt="$cf_by@$myhostname$mydomain";;
8353         *) dflt="$cf_email";;
8354         esac
8355         rp='What is your e-mail address?'
8356         . ./myread
8357         cf_email="$ans"
8358         case "$cf_email" in
8359         *@*.*) cont='' ;;
8360         *)
8361                 rp='Address does not look like an Internet one.  Use it anyway?'
8362                 case "$fastread" in
8363                 yes) dflt=y ;;
8364                 *) dflt=n ;;
8365                 esac
8366                 . ./myread
8367                 case "$ans" in
8368                 y*) cont='' ;;
8369                 *) echo " " ;;
8370                 esac
8371                 ;;
8372         esac
8373 done
8374
8375 $cat <<EOM
8376
8377 If you or somebody else will be maintaining perl at your site, please
8378 fill in the correct e-mail address here so that they may be contacted
8379 if necessary. Currently, the "perlbug" program included with perl
8380 will send mail to this address in addition to perlbug@perl.org. You may
8381 enter "none" for no administrator.
8382
8383 EOM
8384 case "$perladmin" in
8385 '') dflt="$cf_email";;
8386 *) dflt="$perladmin";;
8387 esac
8388 rp='Perl administrator e-mail address'
8389 . ./myread
8390 perladmin="$ans"
8391
8392 : determine whether to only install version-specific parts.
8393 echo " "
8394 $cat <<EOM
8395 Do you want to install only the version-specific parts of the perl
8396 distribution?  Usually you do *not* want to do this.
8397 EOM
8398 case "$versiononly" in
8399 "$define"|[Yy]*|true) dflt='y' ;;
8400 *) dflt='n';
8401 esac
8402 rp="Do you want to install only the version-specific parts of perl?"
8403 . ./myread
8404 case "$ans" in
8405 [yY]*)  val="$define";;
8406 *)      val="$undef" ;;
8407 esac
8408 set versiononly
8409 eval $setvar
8410
8411 case "$versiononly" in
8412 "$define") inc_version_list=''
8413            inc_version_list_init=0
8414            ;;
8415 esac
8416
8417 : figure out how to guarantee perl startup
8418 case "$startperl" in
8419 '')
8420         case "$sharpbang" in
8421         *!)
8422                 $cat <<EOH
8423
8424 I can use the #! construct to start perl on your system. This will
8425 make startup of perl scripts faster, but may cause problems if you
8426 want to share those scripts and perl is not in a standard place
8427 ($binexp/perl) on all your platforms. The alternative is to force
8428 a shell by starting the script with a single ':' character.
8429
8430 EOH
8431                 case "$versiononly" in
8432                 "$define")      dflt="$binexp/perl$version";;  
8433                 *)              dflt="$binexp/perl";;
8434                 esac
8435                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8436                 . ./myread
8437                 case "$ans" in
8438                 none)   startperl=": # use perl";;
8439                 *)      startperl="#!$ans"
8440                         if $test 30 -lt `echo "$ans" | wc -c`; then
8441                                 $cat >&4 <<EOM
8442
8443 WARNING:  Some systems limit the #! command to 32 characters.
8444 If you experience difficulty running Perl scripts with #!, try
8445 installing Perl in a directory with a shorter pathname.
8446
8447 EOM
8448                         fi ;;
8449                 esac
8450                 ;;
8451         *) startperl=": # use perl"
8452                 ;;
8453         esac
8454         ;;
8455 esac
8456 echo "I'll use $startperl to start perl scripts."
8457
8458 : figure best path for perl in scripts
8459 case "$perlpath" in
8460 '')
8461         case "$versiononly" in
8462         "$define")      perlpath="$binexp/perl$version";;
8463         *)              perlpath="$binexp/perl";;
8464         esac
8465         case "$startperl" in
8466         *!*) ;;
8467         *)
8468                 $cat <<EOH
8469
8470 I will use the "eval 'exec'" idiom to start Perl on your system.
8471 I can use the full path of your Perl binary for this purpose, but
8472 doing so may cause problems if you want to share those scripts and
8473 Perl is not always in a standard place ($binexp/perl).
8474
8475 EOH
8476                 dflt="$binexp/perl"
8477                 rp="What path shall I use in \"eval 'exec'\"?"
8478                 . ./myread
8479                 perlpath="$ans"
8480                 ;;
8481         esac
8482         ;;
8483 esac
8484 case "$startperl" in
8485 *!*)    ;;
8486 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8487 esac
8488
8489 : determine where public executable scripts go
8490 set scriptdir scriptdir
8491 eval $prefixit
8492 case "$scriptdir" in
8493 '')
8494         dflt="$bin"
8495         : guess some guesses
8496         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8497         $test -d /usr/share/bin     && dflt=/usr/share/bin
8498         $test -d /usr/local/script  && dflt=/usr/local/script
8499         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8500         $test -d $prefixexp/script  && dflt=$prefixexp/script
8501         set dflt
8502         eval $prefixup
8503         ;;
8504 *)  dflt="$scriptdir"
8505         ;;
8506 esac
8507 $cat <<EOM
8508  
8509 Some installations have a separate directory just for executable scripts so
8510 that they can mount it across multiple architectures but keep the scripts in
8511 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8512 Or you might just lump your scripts in with all your other executables.
8513  
8514 EOM
8515 fn=d~
8516 rp='Where do you keep publicly executable scripts?'
8517 . ./getfile
8518 if $test "X$ansexp" != "X$scriptdirexp"; then
8519         installscript=''
8520 fi
8521 scriptdir="$ans"
8522 scriptdirexp="$ansexp"
8523 : Change installation prefix, if necessary.
8524 if $test X"$prefix" != X"$installprefix"; then
8525         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8526 else
8527         installscript="$scriptdirexp"
8528 fi
8529
8530 : determine where add-on public executables go
8531 case "$sitebin" in
8532 '')     dflt=$siteprefix/bin ;;
8533 *)      dflt=$sitebin ;;
8534 esac
8535 fn=d~
8536 rp='Pathname where the add-on public executables should be installed?'
8537 . ./getfile
8538 sitebin="$ans"
8539 sitebinexp="$ansexp"
8540 : Change installation prefix, if necessary.
8541 if $test X"$prefix" != X"$installprefix"; then
8542         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8543 else
8544         installsitebin="$sitebinexp"
8545 fi
8546
8547 : determine where add-on html pages go
8548 : There is no standard location, so try to copy the previously-selected 
8549 : directory structure for the core html pages.
8550 case "$sitehtml1" in
8551 '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8552 *)      dflt=$sitehtml1 ;;
8553 esac
8554 case "$dflt" in
8555 ''|' ') dflt=none ;;
8556 esac
8557 fn=dn+~
8558 rp='Pathname where the site-specific html pages should be installed?'
8559 . ./getfile
8560 sitehtml1="$ans"
8561 sitehtml1exp="$ansexp"
8562 : Use ' ' for none so value is preserved next time through Configure
8563 $test X"$sitehtml1" = "X" && sitehtml1=' '
8564 : Change installation prefix, if necessary.
8565 if $test X"$prefix" != X"$installprefix"; then
8566         installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8567 else
8568         installsitehtml1="$sitehtml1exp"
8569 fi
8570
8571 : determine where add-on library html pages go
8572 : There is no standard location, so try to copy the previously-selected
8573 : directory structure for the core html pages.
8574 case "$sitehtml3" in
8575 '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8576 *)      dflt=$sitehtml3 ;;
8577 esac
8578 case "$dflt" in
8579 ''|' ') dflt=none ;;
8580 esac
8581 fn=dn+~
8582 rp='Pathname where the site-specific library html pages should be installed?'
8583 . ./getfile
8584 sitehtml3="$ans"
8585 sitehtml3exp="$ansexp"
8586 : Use ' ' for none so value is preserved next time through Configure
8587 $test X"$sitehtml3" = "X" && sitehtml3=' '
8588 : Change installation prefix, if necessary.
8589 if $test X"$prefix" != X"$installprefix"; then
8590         installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8591 else
8592         installsitehtml3="$sitehtml3exp"
8593 fi
8594
8595 : determine where add-on manual pages go
8596 case "$siteman1" in
8597 '')     dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8598 *)      dflt=$siteman1 ;;
8599 esac
8600 case "$dflt" in
8601 ''|' ') dflt=none ;;
8602 esac
8603 fn=dn+~
8604 rp='Pathname where the site-specific manual pages should be installed?'
8605 . ./getfile
8606 siteman1="$ans"
8607 siteman1exp="$ansexp"
8608 : Use ' ' for none so value is preserved next time through Configure
8609 $test X"$siteman1" = "X" && siteman1=' '
8610 : Change installation prefix, if necessary.
8611 if $test X"$prefix" != X"$installprefix"; then
8612         installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8613 else
8614         installsiteman1="$siteman1exp"
8615 fi
8616
8617 : determine where add-on library man pages go
8618 case "$siteman3" in
8619 '')     dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8620 *)      dflt=$siteman3 ;;
8621 esac
8622 case "$dflt" in
8623 ''|' ') dflt=none ;;
8624 esac
8625 fn=dn+~
8626 rp='Pathname where the site-specific library manual pages should be installed?'
8627 . ./getfile
8628 siteman3="$ans"
8629 siteman3exp="$ansexp"
8630 : Use ' ' for none so value is preserved next time through Configure
8631 $test X"$siteman3" = "X" && siteman3=' '
8632 : Change installation prefix, if necessary.
8633 if $test X"$prefix" != X"$installprefix"; then
8634         installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8635 else
8636         installsiteman3="$siteman3exp"
8637 fi
8638
8639 : determine where add-on public executable scripts go
8640 case "$sitescript" in
8641 '')     dflt=$siteprefix/script
8642         $test -d $dflt || dflt=$sitebin ;;
8643 *)  dflt="$sitescript" ;;
8644 esac
8645 fn=d~+
8646 rp='Pathname where add-on public executable scripts should be installed?'
8647 . ./getfile
8648 sitescript="$ans"
8649 sitescriptexp="$ansexp"
8650 : Change installation prefix, if necessary.
8651 if $test X"$prefix" != X"$installprefix"; then
8652         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8653 else
8654         installsitescript="$sitescriptexp"
8655 fi
8656
8657 case "$usefaststdio" in
8658 $define|true|[yY]*|'')
8659         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8660         case "$xversion" in
8661         [68])   dflt='y' ;;
8662         *)      dflt='n' ;;
8663         esac
8664         ;;
8665 *) dflt='n';;
8666 esac
8667 cat <<EOM
8668
8669 Perl can be built to use 'fast stdio', which means using the stdio
8670 library but also directly manipulating the stdio buffers to enable
8671 faster I/O.  Using stdio is better for backward compatibility (especially
8672 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8673 interface has been preferred instead of stdio.
8674
8675 If this doesn't make any sense to you, just accept the default '$dflt'.
8676 EOM
8677 rp='Use the "fast stdio" if available?'
8678 . ./myread
8679 case "$ans" in
8680 y|Y)    val="$define" ;;     
8681 *)      val="$undef" ;;
8682 esac
8683 set usefaststdio
8684 eval $setvar
8685
8686
8687 : define an is-a-typedef? function
8688 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8689 case "$inclist" in
8690 "") inclist="sys/types.h";;
8691 esac;
8692 eval "varval=\$$var";
8693 case "$varval" in
8694 "")
8695         $rm -f temp.c;
8696         for inc in $inclist; do
8697                 echo "#include <$inc>" >>temp.c;
8698         done;
8699         echo "#ifdef $type" >> temp.c;
8700         echo "printf(\"We have $type\");" >> temp.c;
8701         echo "#endif" >> temp.c;
8702         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8703         if $contains $type temp.E >/dev/null 2>&1; then
8704                 eval "$var=\$type";
8705         else
8706                 eval "$var=\$def";
8707         fi;
8708         $rm -f temp.?;;
8709 *) eval "$var=\$varval";;
8710 esac'
8711
8712 : define an is-a-typedef? function that prompts if the type is not available.
8713 typedef_ask='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         echo " " ;
8729         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8730         if $contains $type temp.E >/dev/null 2>&1; then
8731                 echo "$type found." >&4;
8732                 eval "$var=\$type";
8733         else
8734                 echo "$type NOT found." >&4;
8735                 dflt="$def";
8736                 . ./myread ;
8737                 eval "$var=\$ans";
8738         fi;
8739         $rm -f temp.?;;
8740 *) eval "$var=\$varval";;
8741 esac'
8742
8743 : see what type lseek is declared as in the kernel
8744 rp="What is the type used for lseek's offset on this system?"
8745 set off_t lseektype long stdio.h sys/types.h
8746 eval $typedef_ask
8747
8748 echo " "
8749 echo "Checking to see how big your file offsets are..." >&4
8750 $cat >try.c <<EOCP
8751 #include <sys/types.h>
8752 #include <stdio.h>
8753 int main()
8754 {
8755     printf("%d\n", (int)sizeof($lseektype));
8756     return(0); 
8757 }
8758 EOCP
8759 set try
8760 if eval $compile_ok; then
8761         lseeksize=`$run ./try`
8762         echo "Your file offsets are $lseeksize bytes long."
8763 else
8764         dflt=$longsize
8765         echo " "
8766         echo "(I can't seem to compile the test program.  Guessing...)"
8767         rp="What is the size of your file offsets (in bytes)?"
8768         . ./myread
8769         lseeksize="$ans"
8770 fi
8771 $rm -f try.c try
8772
8773 : see what type file positions are declared as in the library
8774 rp="What is the type for file position used by fsetpos()?"
8775 set fpos_t fpostype long stdio.h sys/types.h
8776 eval $typedef_ask
8777
8778 echo " "
8779 case "$fpostype" in
8780 *_t) zzz="$fpostype"    ;;
8781 *)   zzz="fpos_t"       ;;
8782 esac
8783 echo "Checking the size of $zzz..." >&4 
8784 cat > try.c <<EOCP
8785 #include <sys/types.h>
8786 #include <stdio.h>
8787 #$i_stdlib I_STDLIB
8788 #ifdef I_STDLIB
8789 #include <stdlib.h>
8790 #endif
8791 int main() {
8792     printf("%d\n", (int)sizeof($fpostype));
8793     exit(0);
8794 }
8795 EOCP
8796 set try
8797 if eval $compile_ok; then
8798         yyy=`$run ./try`
8799         case "$yyy" in
8800         '')     fpossize=4
8801                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8802                 ;;
8803         *)      fpossize=$yyy
8804                 echo "Your $zzz is $fpossize bytes long."
8805                 ;;
8806         esac
8807 else
8808         dflt="$longsize"
8809         echo " " >&4
8810         echo "(I can't compile the test program.  Guessing...)" >&4
8811         rp="What is the size of your file positions (in bytes)?"
8812         . ./myread
8813         fpossize="$ans"
8814 fi
8815
8816 # Backward compatibility (uselfs is deprecated).
8817 case "$uselfs" in
8818 "$define"|true|[yY]*)
8819         cat <<EOM >&4
8820
8821 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8822 EOM
8823         uselargefiles="$define"
8824         ;;
8825 esac                          
8826
8827 case "$lseeksize:$fpossize" in
8828 8:8) cat <<EOM
8829
8830 You can have files larger than 2 gigabytes.
8831 EOM
8832    val="$define" ;;
8833 *)    case "$uselargefiles" in
8834    "$undef"|false|[nN]*) dflt='n' ;;
8835    *)   dflt='y' ;;
8836    esac
8837    cat <<EOM
8838
8839 Perl can be built to understand large files (files larger than 2 gigabytes)
8840 on some systems.  To do so, Configure can be run with -Duselargefiles.
8841
8842 If this doesn't make any sense to you, just accept the default '$dflt'.
8843 EOM
8844    rp='Try to understand large files, if available?'
8845    . ./myread
8846    case "$ans" in
8847    y|Y)         val="$define" ;;
8848    *)           val="$undef"  ;;
8849    esac
8850    ;;
8851 esac
8852 set uselargefiles
8853 eval $setvar
8854 case "$uselargefiles" in
8855 "$define")
8856 : Look for a hint-file generated 'call-back-unit'.  If the
8857 : user has specified that a large files perl is to be built,
8858 : we may need to set or change some other defaults.
8859         if $test -f uselargefiles.cbu; then
8860                 echo "Your platform has some specific hints for large file builds, using them..."
8861                 . ./uselargefiles.cbu
8862                 echo " "
8863                 echo "Rechecking to see how big your file offsets are..." >&4
8864                 $cat >try.c <<EOCP
8865 #include <sys/types.h>
8866 #include <stdio.h>
8867 int main()
8868 {
8869     printf("%d\n", (int)sizeof($lseektype));
8870     return(0); 
8871 }
8872 EOCP
8873                 set try
8874                 if eval $compile_ok; then
8875                         lseeksize=`$run ./try`
8876                         $echo "Your file offsets are now $lseeksize bytes long."
8877                 else
8878                         dflt="$lseeksize"
8879                         echo " "
8880                         echo "(I can't seem to compile the test program.  Guessing...)"
8881                         rp="What is the size of your file offsets (in bytes)?"
8882                         . ./myread
8883                         lseeksize="$ans"
8884                 fi
8885                 case "$fpostype" in
8886                 *_t) zzz="$fpostype"    ;;
8887                 *)   zzz="fpos_t"       ;;
8888                 esac
8889                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8890                 $cat > try.c <<EOCP
8891 #include <sys/types.h>
8892 #include <stdio.h>
8893 #$i_stdlib I_STDLIB
8894 #ifdef I_STDLIB
8895 #include <stdlib.h>
8896 #endif
8897 int main() {
8898     printf("%d\n", (int)sizeof($fpostype));
8899     return(0);
8900 }
8901 EOCP
8902                 set try
8903                 if eval $compile_ok; then
8904                         yyy=`$run ./try`
8905                         dflt="$lseeksize"
8906                         case "$yyy" in
8907                         '')     echo " "
8908                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8909                                 ;;
8910                         *)      fpossize=$yyy
8911                                 echo " $fpossize bytes." >&4
8912                                 ;;
8913                         esac
8914                 else
8915                         dflt="$fpossize"
8916                         echo " "
8917                         echo "(I can't compile the test program.  Guessing...)" >&4
8918                         rp="What is the size of your file positions (in bytes)?"
8919                         . ./myread
8920                         fpossize="$ans"
8921                 fi
8922                 $rm -f try.c try
8923         fi
8924         ;;
8925 esac
8926
8927 case "$vendorprefix" in
8928 '')     d_vendorbin="$undef"
8929         vendorbin=''
8930         vendorbinexp=''
8931         ;;
8932 *)      d_vendorbin="$define"
8933         : determine where vendor-supplied executables go.
8934         case "$vendorbin" in
8935         '') dflt=$vendorprefix/bin ;;
8936         *)      dflt="$vendorbin" ;;
8937         esac
8938         fn=d~+
8939         rp='Pathname for the vendor-supplied executables directory?'
8940         . ./getfile
8941         vendorbin="$ans"
8942         vendorbinexp="$ansexp"
8943         ;;
8944 esac
8945 : Change installation prefix, if necessary.
8946 if $test X"$prefix" != X"$installprefix"; then
8947         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8948 else
8949         installvendorbin="$vendorbinexp"
8950 fi
8951
8952 case "$vendorprefix" in
8953 '')     vendorhtml1=''
8954         vendorhtml1exp=''
8955         ;;
8956 *)      : determine where vendor-supplied html pages go.
8957         : There is no standard location, so try to copy the previously-selected
8958         : directory structure for the core html pages.
8959         : XXX Better default suggestions would be welcome.
8960         case "$vendorhtml1" in
8961         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8962         *)      dflt=$vendorhtml1 ;;
8963         esac
8964         case "$dflt" in
8965         ''|' ') dflt=none ;;
8966         esac
8967         fn=dn+~
8968         rp='Pathname for the vendor-supplied html pages?'
8969         . ./getfile
8970         vendorhtml1="$ans"
8971         vendorhtml1exp="$ansexp"
8972         ;;
8973 esac
8974 : Use ' ' for none so value is preserved next time through Configure
8975 $test X"$vendorhtml1" = "X" && vendorhtml1=' '
8976 : Change installation prefix, if necessary.
8977 if $test X"$prefix" != X"$installprefix"; then
8978         installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
8979 else
8980         installvendorhtml1="$vendorhtml1exp"
8981 fi
8982
8983 case "$vendorprefix" in
8984 '')     vendorhtml3=''
8985         vendorhtml3exp=''
8986         ;;
8987 *)      : determine where vendor-supplied module html pages go.
8988         : There is no standard location, so try to copy the previously-selected
8989         : directory structure for the core html pages.
8990         : XXX Better default suggestions would be welcome.
8991         case "$vendorhtml3" in
8992         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8993         *)      dflt=$vendorhtml3 ;;
8994         esac
8995         case "$dflt" in
8996         ''|' ') dflt=none ;;
8997         esac
8998         fn=dn+~
8999         rp='Pathname for the vendor-supplied html pages?'
9000         . ./getfile
9001         vendorhtml3="$ans"
9002         vendorhtml3exp="$ansexp"
9003         ;;
9004 esac
9005 : Use ' ' for none so value is preserved next time through Configure
9006 $test X"$vendorhtml3" = "X" && vendorhtml3=' '
9007 : Change installation prefix, if necessary.
9008 if $test X"$prefix" != X"$installprefix"; then
9009         installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
9010 else
9011         installvendorhtml3="$vendorhtml3exp"
9012 fi
9013
9014 case "$vendorprefix" in
9015 '')     vendorman1=''
9016         vendorman1exp=''
9017         ;;
9018 *)      : determine where vendor-supplied manual pages go.
9019         case "$vendorman1" in
9020         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9021         *)      dflt=$vendorman1 ;;
9022         esac
9023         case "$dflt" in
9024         ''|' ') dflt=none ;;
9025         esac
9026         fn=nd~+
9027         rp='Pathname for the vendor-supplied manual section 1 pages?'
9028         . ./getfile
9029         vendorman1="$ans"
9030         vendorman1exp="$ansexp"
9031         ;;
9032 esac
9033 : Use ' ' for none so value is preserved next time through Configure
9034 $test X"$vendorman1" = "X" && vendorman1=' '
9035 : Change installation prefix, if necessary.
9036 if $test X"$prefix" != X"$installprefix"; then
9037         installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
9038 else
9039         installvendorman1="$vendorman1exp"
9040 fi
9041
9042 case "$vendorprefix" in
9043 '')     vendorman3=''
9044         vendorman3exp=''
9045         ;;
9046 *)      : determine where vendor-supplied module manual pages go.
9047         case "$vendorman3" in
9048         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9049         *)      dflt=$vendorman3 ;;
9050         esac
9051         case "$dflt" in
9052         ''|' ') dflt=none ;;
9053         esac
9054         fn=nd~+
9055         rp='Pathname for the vendor-supplied manual section 3 pages?'
9056         . ./getfile
9057         vendorman3="$ans"
9058         vendorman3exp="$ansexp"
9059         ;;
9060 esac
9061 : Use ' ' for none so value is preserved next time through Configure
9062 $test X"$vendorman3" = "X" && vendorman3=' '
9063 : Change installation prefix, if necessary.
9064 if $test X"$prefix" != X"$installprefix"; then
9065         installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9066 else
9067         installvendorman3="$vendorman3exp"
9068 fi
9069
9070 case "$vendorprefix" in
9071 '')     d_vendorscript="$undef"
9072         vendorscript=''
9073         vendorscriptexp=''
9074         ;;
9075 *)      d_vendorscript="$define"
9076         : determine where vendor-supplied scripts go.
9077         case "$vendorscript" in
9078         '')     dflt=$vendorprefix/script
9079                 $test -d $dflt || dflt=$vendorbin ;;
9080         *)  dflt="$vendorscript" ;;
9081         esac
9082         $cat <<EOM
9083
9084 The installation process will create a directory for 
9085 vendor-supplied scripts.
9086
9087 EOM
9088         fn=d~+
9089         rp='Pathname for the vendor-supplied scripts directory?'
9090         . ./getfile
9091         vendorscript="$ans"
9092         vendorscriptexp="$ansexp"
9093         ;;
9094 esac
9095 : Change installation prefix, if necessary.
9096 if $test X"$prefix" != X"$installprefix"; then
9097         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9098 else
9099         installvendorscript="$vendorscriptexp"
9100 fi
9101
9102 : see if qgcvt exists
9103 set qgcvt d_qgcvt
9104 eval $inlibc
9105
9106 echo " "
9107
9108 if $test X"$d_longdbl" = X"$define"; then
9109
9110 echo "Checking how to print long doubles..." >&4
9111
9112 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9113         $cat >try.c <<'EOCP'
9114 #include <sys/types.h>
9115 #include <stdio.h>
9116 int main() {
9117   double d = 123.456;
9118   printf("%.3f\n", d);
9119 }
9120 EOCP
9121         set try
9122         if eval $compile; then
9123                 yyy=`$run ./try`
9124                 case "$yyy" in
9125                 123.456)
9126                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9127                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9128                         echo "We will use %f."
9129                         ;;
9130                 esac
9131         fi
9132 fi
9133
9134 if $test X"$sPRIfldbl" = X; then
9135         $cat >try.c <<'EOCP'
9136 #include <sys/types.h>
9137 #include <stdio.h>
9138 int main() {
9139   long double d = 123.456;
9140   printf("%.3Lf\n", d);
9141 }
9142 EOCP
9143         set try
9144         if eval $compile; then
9145                 yyy=`$run ./try`
9146                 case "$yyy" in
9147                 123.456)
9148                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9149                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9150                         echo "We will use %Lf."
9151                         ;;
9152                 esac
9153         fi
9154 fi
9155
9156 if $test X"$sPRIfldbl" = X; then
9157         $cat >try.c <<'EOCP'
9158 #include <sys/types.h>
9159 #include <stdio.h>
9160 int main() {
9161   long double d = 123.456;
9162   printf("%.3llf\n", d);
9163 }
9164 EOCP
9165         set try
9166         if eval $compile; then
9167                 yyy=`$run ./try`
9168                 case "$yyy" in
9169                 123.456)
9170                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9171                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9172                         echo "We will use %llf."
9173                         ;;
9174                 esac
9175         fi
9176 fi
9177
9178 if $test X"$sPRIfldbl" = X; then
9179         $cat >try.c <<'EOCP'
9180 #include <sys/types.h>
9181 #include <stdio.h>
9182 int main() {
9183   long double d = 123.456;
9184   printf("%.3lf\n", d);
9185 }
9186 EOCP
9187         set try
9188         if eval $compile; then
9189                 yyy=`$run ./try`
9190                 case "$yyy" in
9191                 123.456)
9192                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9193                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9194                         echo "We will use %lf."
9195                         ;;
9196                 esac
9197         fi
9198 fi
9199
9200 if $test X"$sPRIfldbl" = X; then
9201         echo "Cannot figure out how to print long doubles." >&4
9202 else
9203         sSCNfldbl=$sPRIfldbl    # expect consistency
9204 fi
9205
9206 $rm -f try try.*
9207
9208 fi # d_longdbl
9209
9210 case "$sPRIfldbl" in
9211 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9212         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9213         d_SCNfldbl="$undef";
9214         ;;
9215 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9216         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9217         d_SCNfldbl="$define";
9218         ;;
9219 esac
9220
9221 : Check how to convert floats to strings.
9222
9223 if test "X$d_Gconvert" = X; then
9224
9225 echo " "
9226 echo "Checking for an efficient way to convert floats to strings."
9227 echo " " > try.c
9228 case "$uselongdouble" in
9229 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9230 esac
9231 case "$d_longdbl" in
9232 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9233 esac
9234 case "$d_PRIgldbl" in
9235 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9236 esac
9237 $cat >>try.c <<EOP
9238 #ifdef TRY_gconvert
9239 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9240 char *myname = "gconvert";
9241 #endif
9242 #ifdef TRY_gcvt
9243 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9244 char *myname = "gcvt";
9245 #endif
9246 #ifdef TRY_qgcvt
9247 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9248 char *myname = "qgcvt";
9249 #define DOUBLETYPE long double
9250 #endif
9251 #ifdef TRY_sprintf
9252 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9253 #ifdef HAS_PRIgldbl
9254 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9255 #else
9256 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9257 #endif
9258 #else
9259 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9260 #endif
9261 char *myname = "sprintf";
9262 #endif
9263
9264 #ifndef DOUBLETYPE
9265 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9266 #define DOUBLETYPE long double
9267 #else
9268 #define DOUBLETYPE double
9269 #endif
9270 #endif
9271
9272 #include <stdio.h>
9273
9274 #define I_STDLIB $i_stdlib
9275 #ifdef I_STDLIB
9276 #include <stdlib.h>
9277 #endif
9278
9279 int
9280 checkit(expect, got)
9281 char *expect;
9282 char *got;
9283 {
9284     if (strcmp(expect, got)) {
9285                 printf("%s oddity:  Expected %s, got %s\n",
9286                         myname, expect, got);
9287                 exit(1);
9288         }
9289 }
9290
9291 int main()
9292
9293         char buf[64]; 
9294         buf[63] = '\0';
9295
9296         /* This must be 1st test on (which?) platform */
9297         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9298         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9299         checkit("0.1", buf);
9300
9301         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9302         checkit("0.01", buf);
9303
9304         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9305         checkit("0.001", buf);
9306
9307         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9308         checkit("0.0001", buf);
9309
9310         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9311         if (strlen(buf) > 5)
9312             checkit("9e-005", buf); /* for Microsoft ?? */
9313         else
9314             checkit("9e-05", buf);
9315
9316         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9317         checkit("1", buf);
9318
9319         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9320         checkit("1.1", buf);
9321
9322         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9323         checkit("1.01", buf);
9324
9325         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9326         checkit("1.001", buf);
9327
9328         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9329         checkit("1.0001", buf);
9330
9331         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9332         checkit("1.00001", buf);
9333
9334         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9335         checkit("1.000001", buf);
9336
9337         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9338         checkit("0", buf);
9339
9340         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9341         checkit("-1", buf);
9342
9343         /* Some Linux gcvt's give 1.e+5 here. */
9344         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9345         checkit("100000", buf);
9346         
9347         /* Some Linux gcvt's give -1.e+5 here. */
9348         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9349         checkit("-100000", buf);
9350
9351         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9352         checkit("123.456", buf);
9353
9354         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9355         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9356         /* 34 should be enough to scare even long double
9357          * places into using the e notation. */
9358         if (strlen(buf) > 5)
9359             checkit("1e+034", buf); /* for Microsoft */
9360         else
9361             checkit("1e+34", buf);
9362
9363         /* For Perl, if you add additional tests here, also add them to
9364          * t/base/num.t for benefit of platforms not using Configure or
9365          * overriding d_Gconvert */
9366
9367         exit(0);
9368 }
9369 EOP
9370 : first add preferred functions to our list
9371 xxx_list=""
9372 for xxx_convert in $gconvert_preference; do
9373     case $xxx_convert in
9374     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9375     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9376     esac 
9377 done
9378 : then add any others
9379 for xxx_convert in gconvert gcvt sprintf; do
9380     case "$xxx_list" in
9381     *$xxx_convert*) ;;
9382     *) xxx_list="$xxx_list $xxx_convert" ;;
9383     esac 
9384 done
9385
9386 case "$d_longdbl$uselongdouble" in
9387 "$define$define")
9388     : again, add prefered functions to our list first
9389     xxx_ld_list=""
9390     for xxx_convert in $gconvert_ld_preference; do
9391         case $xxx_convert in
9392         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9393         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9394         esac
9395     done
9396     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9397     for xxx_convert in qgcvt sprintf $xxx_list; do
9398         case "$xxx_ld_list" in
9399         $xxx_convert*|*" $xxx_convert"*) ;;
9400         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9401         esac
9402     done
9403     : if sprintf cannot do long doubles, move it to the end
9404     if test "$d_PRIgldbl" != "$define"; then
9405         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9406     fi
9407     : if no qgcvt, remove it
9408     if test "$d_qgcvt" != "$define"; then
9409         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9410     fi
9411     : use the ld_list
9412     xxx_list="$xxx_ld_list"
9413     ;;
9414 esac
9415
9416 for xxx_convert in $xxx_list; do
9417         echo "Trying $xxx_convert..."
9418         $rm -f try try$_o
9419         set try -DTRY_$xxx_convert
9420         if eval $compile; then
9421                 echo "$xxx_convert() found." >&4
9422                 if $run ./try; then
9423                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9424                         break;
9425                 else
9426                         echo "...But $xxx_convert didn't work as I expected."
9427                         xxx_convert=''
9428                 fi
9429         else
9430                 echo "$xxx_convert NOT found." >&4
9431         fi
9432 done
9433
9434 if test X$xxx_convert = X; then
9435     echo "*** WHOA THERE!!! ***" >&4
9436     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9437     xxx_convert=sprintf
9438 fi
9439
9440 case "$xxx_convert" in
9441 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9442 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9443 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9444 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9445    "$define$define$define")
9446       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9447    "$define$define$undef")
9448       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9449    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9450    esac
9451    ;;  
9452 esac
9453
9454 fi
9455
9456 : see if _fwalk exists
9457 set fwalk d__fwalk
9458 eval $inlibc
9459
9460 : Initialize h_fcntl
9461 h_fcntl=false
9462
9463 : Initialize h_sysfile
9464 h_sysfile=false
9465
9466 : access call always available on UNIX
9467 set access d_access
9468 eval $inlibc
9469
9470 : locate the flags for 'access()'
9471 case "$d_access" in
9472 "$define")
9473         echo " "
9474         $cat >access.c <<EOCP
9475 #include <sys/types.h>
9476 #ifdef I_FCNTL
9477 #include <fcntl.h>
9478 #endif
9479 #ifdef I_SYS_FILE
9480 #include <sys/file.h>
9481 #endif
9482 #ifdef I_UNISTD
9483 #include <unistd.h>
9484 #endif
9485 #$i_stdlib I_STDLIB
9486 #ifdef I_STDLIB
9487 #include <stdlib.h>
9488 #endif
9489 int main() {
9490         exit(R_OK);
9491 }
9492 EOCP
9493         : check sys/file.h first, no particular reason here
9494         if $test `./findhdr sys/file.h` && \
9495                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9496                 h_sysfile=true;
9497                 echo "<sys/file.h> defines the *_OK access constants." >&4
9498         elif $test `./findhdr fcntl.h` && \
9499                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9500                 h_fcntl=true;
9501                 echo "<fcntl.h> defines the *_OK access constants." >&4
9502         elif $test `./findhdr unistd.h` && \
9503                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9504                 echo "<unistd.h> defines the *_OK access constants." >&4
9505         else
9506                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9507         fi
9508         ;;
9509 esac
9510 $rm -f access*
9511
9512 : see if accessx exists
9513 set accessx d_accessx
9514 eval $inlibc
9515
9516 : see if aintl exists
9517 set aintl d_aintl
9518 eval $inlibc
9519
9520 : see if alarm exists
9521 set alarm d_alarm
9522 eval $inlibc
9523
9524 : see if POSIX threads are available
9525 set pthread.h i_pthread
9526 eval $inhdr
9527
9528 : define a fucntion to check prototypes
9529 $cat > protochk <<EOSH
9530 $startsh
9531 cc="$cc"
9532 optimize="$optimize"
9533 ccflags="$ccflags"
9534 prototype="$prototype"
9535 define="$define"
9536 rm=$rm
9537 usethreads=$usethreads
9538 i_pthread=$i_pthread
9539 pthread_h_first=$pthread_h_first
9540 EOSH
9541
9542 $cat >> protochk <<'EOSH'
9543
9544 $rm -f try.c
9545 foo="$1"
9546 shift
9547 while test $# -ge 2; do
9548         case "$1" in
9549                 $define) echo "#include <$2>" >> try.c ;;
9550                 literal) echo "$2" >> try.c ;;
9551         esac
9552     # Extra magic for the benefit of systems that need pthread.h
9553     # to be included early to correctly detect threadsafe functions.
9554     # Such functions must guarantee themselves, though, that the usethreads
9555     # and i_pthread have been defined, before calling protochk.
9556     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9557         echo "#include <pthread.h>" >> try.c
9558         pthread_h_done=yes
9559     fi
9560     shift 2
9561 done
9562 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9563 cat >> try.c <<'EOCP'
9564 #ifdef CAN_PROTOTYPE
9565 #define _(args) args
9566 #else
9567 #define _(args) ()
9568 #endif
9569 EOCP
9570 echo "$foo" >> try.c
9571 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9572 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9573 status=$?
9574 $rm -f try.[co]
9575 exit $status
9576 EOSH
9577 chmod +x protochk
9578 $eunicefix protochk
9579
9580 hasproto='varname=$1; func=$2; shift; shift;
9581 while $test $# -ge 2; do
9582         case "$1" in
9583         $define) echo "#include <$2>";;
9584         esac ;
9585     shift 2;
9586 done > try.c;
9587 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9588 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9589         echo "$func() prototype found.";
9590         val="$define";
9591 else
9592         echo "$func() prototype NOT found.";
9593         val="$undef";
9594 fi;
9595 set $varname;
9596 eval $setvar;
9597 $rm -f try.c tryout.c'
9598
9599 : see if sys/types.h has to be included
9600 set sys/types.h i_systypes
9601 eval $inhdr
9602
9603 : see if sys/select.h has to be included
9604 set sys/select.h i_sysselct
9605 eval $inhdr
9606
9607 hasfield='varname=$1; struct=$2; field=$3; shift; 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 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9615 set try;
9616 if eval $compile; then
9617         val="$define";
9618 else
9619         val="$undef";
9620 fi;
9621 set $varname;
9622 eval $setvar;
9623 $rm -f try.c try.o'
9624
9625 : see if we should include time.h, sys/time.h, or both
9626 echo " "
9627 if test "X$timeincl" = X; then
9628         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9629         $echo $n "I'm now running the test program...$c"
9630         $cat >try.c <<EOCP
9631 #include <sys/types.h>
9632 #ifdef I_TIME
9633 #include <time.h>
9634 #endif
9635 #ifdef I_SYSTIME
9636 #ifdef SYSTIMEKERNEL
9637 #define KERNEL
9638 #endif
9639 #include <sys/time.h>
9640 #endif
9641 #ifdef I_SYSSELECT
9642 #include <sys/select.h>
9643 #endif
9644 #$i_stdlib I_STDLIB
9645 #ifdef I_STDLIB
9646 #include <stdlib.h>
9647 #endif
9648 int main()
9649 {
9650         struct tm foo;
9651 #ifdef S_TIMEVAL
9652         struct timeval bar;
9653 #endif
9654 #ifdef S_TIMEZONE
9655         struct timezone tzp;
9656 #endif
9657         if (foo.tm_sec == foo.tm_sec)
9658                 exit(0);
9659 #ifdef S_TIMEVAL
9660         if (bar.tv_sec == bar.tv_sec)
9661                 exit(0);
9662 #endif
9663         exit(1);
9664 }
9665 EOCP
9666         flags=''
9667         for s_timezone in '-DS_TIMEZONE' ''; do
9668         sysselect=''
9669         for s_timeval in '-DS_TIMEVAL' ''; do
9670         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9671         for i_time in '' '-DI_TIME'; do
9672         for i_systime in '-DI_SYSTIME' ''; do
9673                 case "$flags" in
9674                 '') $echo $n ".$c"
9675                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9676                         if eval $compile; then
9677                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9678                                 shift
9679                                 flags="$*"
9680                                 echo " "
9681                                 $echo $n "Succeeded with $flags$c"
9682                         fi
9683                         ;;
9684                 esac
9685         done
9686         done
9687         done
9688         done
9689         done
9690         timeincl=''
9691         echo " "
9692         case "$flags" in
9693         *SYSTIMEKERNEL*) i_systimek="$define"
9694                 timeincl=`./findhdr sys/time.h`
9695                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9696         *) i_systimek="$undef";;
9697         esac
9698         case "$flags" in
9699         *I_TIME*) i_time="$define"
9700                 timeincl=`./findhdr time.h`" $timeincl"
9701                 echo "We'll include <time.h>." >&4;;
9702         *) i_time="$undef";;
9703         esac
9704         case "$flags" in
9705         *I_SYSTIME*) i_systime="$define"
9706                 timeincl=`./findhdr sys/time.h`" $timeincl"
9707                 echo "We'll include <sys/time.h>." >&4;;
9708         *) i_systime="$undef";;
9709         esac
9710         $rm -f try.c try
9711 fi
9712 : see if struct tm knows about tm_zone
9713 case "$i_systime$i_time" in
9714 *$define*) 
9715         echo " "
9716         echo "Checking to see if your struct tm has tm_zone field..." >&4
9717         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9718         eval $hasfield
9719         ;;
9720 *)      val="$undef"
9721         set d_tm_tm_zone
9722         eval $setvar
9723         ;;
9724 esac
9725 case "$d_tm_tm_zone" in
9726 "$define")      echo "Yes, it does."   ;;
9727 *)              echo "No, it doesn't." ;;
9728 esac
9729 : see if struct tm knows about tm_gmtoff
9730 case "$i_systime$i_time" in
9731 *$define*) 
9732         echo " "
9733         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9734         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9735         eval $hasfield
9736         ;;
9737 *)      val="$undef"
9738         set d_tm_tm_gmtoff
9739         eval $setvar
9740         ;;
9741 esac
9742 case "$d_tm_tm_gmtoff" in
9743 "$define")      echo "Yes, it does."   ;;
9744 *)              echo "No, it doesn't." ;;
9745 esac
9746
9747 : see if asctime_r exists
9748 set asctime_r d_asctime_r
9749 eval $inlibc
9750 case "$d_asctime_r" in
9751 "$define")
9752         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9753         case "$d_asctime_r_proto:$usethreads" in
9754         ":define")      d_asctime_r_proto=define
9755                 set d_asctime_r_proto asctime_r $hdrs
9756                 eval $hasproto ;;
9757         *)      ;;
9758         esac
9759         case "$d_asctime_r_proto" in
9760         define)
9761         case "$asctime_r_proto" in
9762         ''|0) try='char* asctime_r(const struct tm*, char*);'
9763         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9764         esac
9765         case "$asctime_r_proto" in
9766         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9767         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9768         esac
9769         case "$asctime_r_proto" in
9770         ''|0) try='int asctime_r(const struct tm*, char*);'
9771         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9772         esac
9773         case "$asctime_r_proto" in
9774         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9775         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9776         esac
9777         case "$asctime_r_proto" in
9778         ''|0)   d_asctime_r=undef
9779                 asctime_r_proto=0
9780                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9781         * )     case "$asctime_r_proto" in
9782                 REENTRANT_PROTO*) ;;
9783                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9784                 esac
9785                 echo "Prototype: $try" ;;
9786         esac
9787         ;;
9788         *)      case "$usethreads" in
9789                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9790                 esac
9791                 d_asctime_r=undef
9792                 asctime_r_proto=0
9793                 ;;
9794         esac
9795         ;;
9796 *)      asctime_r_proto=0
9797         ;;
9798 esac
9799
9800 : see if atolf exists
9801 set atolf d_atolf
9802 eval $inlibc
9803
9804 : see if atoll exists
9805 set atoll d_atoll
9806 eval $inlibc
9807
9808 : Look for GNU-cc style attribute checking
9809 echo " "
9810 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9811 $cat >attrib.c <<'EOCP'
9812 #include <stdio.h>
9813 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9814 EOCP
9815 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9816         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9817                 echo "Your C compiler doesn't fully support __attribute__."
9818                 val="$undef"
9819         else
9820                 echo "Your C compiler supports __attribute__."
9821                 val="$define"
9822         fi
9823 else
9824         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9825         val="$undef"
9826 fi
9827 set d_attribut
9828 eval $setvar
9829 $rm -f attrib*
9830
9831 : see if bcmp exists
9832 set bcmp d_bcmp
9833 eval $inlibc
9834
9835 : see if bcopy exists
9836 set bcopy d_bcopy
9837 eval $inlibc
9838
9839 : see if this is a unistd.h system
9840 set unistd.h i_unistd
9841 eval $inhdr
9842
9843 : see if getpgrp exists
9844 set getpgrp d_getpgrp
9845 eval $inlibc
9846
9847 case "$d_getpgrp" in
9848 "$define")
9849         echo " "
9850         echo "Checking to see which flavor of getpgrp is in use..."
9851         $cat >try.c <<EOP
9852 #$i_unistd I_UNISTD
9853 #include <sys/types.h>
9854 #ifdef I_UNISTD
9855 #  include <unistd.h>
9856 #endif
9857 #$i_stdlib I_STDLIB
9858 #ifdef I_STDLIB
9859 #include <stdlib.h>
9860 #endif
9861 int main()
9862 {
9863         if (getuid() == 0) {
9864                 printf("(I see you are running Configure as super-user...)\n");
9865                 setuid(1);
9866         }
9867 #ifdef TRY_BSD_PGRP
9868         if (getpgrp(1) == 0)
9869                 exit(0);
9870 #else
9871         if (getpgrp() > 0)
9872                 exit(0);
9873 #endif
9874         exit(1);
9875 }
9876 EOP
9877         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9878                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9879                 val="$define"
9880         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9881                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9882                 val="$undef"
9883         else
9884                 echo "I can't seem to compile and run the test program."
9885                 if ./usg; then
9886                         xxx="a USG one, i.e. you use getpgrp()."
9887                 else
9888                         # SVR4 systems can appear rather BSD-ish.
9889                         case "$i_unistd" in
9890                         $undef)
9891                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9892                                 val="$define"
9893                                 ;;
9894                         $define)
9895                                 xxx="probably a USG one, i.e. you use getpgrp()."
9896                                 val="$undef"
9897                                 ;;
9898                         esac
9899                 fi
9900                 echo "Assuming your getpgrp is $xxx" >&4
9901         fi
9902         ;;
9903 *) val="$undef";;
9904 esac
9905 set d_bsdgetpgrp
9906 eval $setvar
9907 $rm -f try try.*
9908
9909 : see if setpgrp exists
9910 set setpgrp d_setpgrp
9911 eval $inlibc
9912
9913 case "$d_setpgrp" in
9914 "$define")
9915         echo " "
9916         echo "Checking to see which flavor of setpgrp is in use..."
9917         $cat >try.c <<EOP
9918 #$i_unistd I_UNISTD
9919 #include <sys/types.h>
9920 #ifdef I_UNISTD
9921 #  include <unistd.h>
9922 #endif
9923 #$i_stdlib I_STDLIB
9924 #ifdef I_STDLIB
9925 #include <stdlib.h>
9926 #endif
9927 int main()
9928 {
9929         if (getuid() == 0) {
9930                 printf("(I see you are running Configure as super-user...)\n");
9931                 setuid(1);
9932         }
9933 #ifdef TRY_BSD_PGRP
9934         if (-1 == setpgrp(1, 1))
9935                 exit(0);
9936 #else
9937         if (setpgrp() != -1)
9938                 exit(0);
9939 #endif
9940         exit(1);
9941 }
9942 EOP
9943         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9944                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9945                 val="$define"
9946         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9947                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9948                 val="$undef"
9949         else
9950                 echo "(I can't seem to compile and run the test program.)"
9951                 if ./usg; then
9952                         xxx="a USG one, i.e. you use setpgrp()."
9953                 else
9954                         # SVR4 systems can appear rather BSD-ish.
9955                         case "$i_unistd" in
9956                         $undef)
9957                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9958                                 val="$define"
9959                                 ;;
9960                         $define)
9961                                 xxx="probably a USG one, i.e. you use setpgrp()."
9962                                 val="$undef"
9963                                 ;;
9964                         esac
9965                 fi
9966                 echo "Assuming your setpgrp is $xxx" >&4
9967         fi
9968         ;;
9969 *) val="$undef";;
9970 esac
9971 set d_bsdsetpgrp
9972 eval $setvar
9973 $rm -f try try.*
9974 : see if bzero exists
9975 set bzero d_bzero
9976 eval $inlibc
9977
9978 : see if signal is declared as pointer to function returning int or void
9979 echo " "
9980 xxx=`./findhdr signal.h`
9981 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9982 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9983         echo "You have int (*signal())() instead of void." >&4
9984         val="$undef"
9985 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9986         echo "You have void (*signal())()." >&4
9987         val="$define"
9988 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9989         echo "You have int (*signal())() instead of void." >&4
9990         val="$undef"
9991 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9992         echo "You have void (*signal())()." >&4
9993         val="$define"
9994 else
9995         case "$d_voidsig" in
9996         '')
9997         echo "I can't determine whether signal handler returns void or int..." >&4
9998                 dflt=void
9999                 rp="What type does your signal handler return?"
10000                 . ./myread
10001                 case "$ans" in
10002                 v*) val="$define";;
10003                 *) val="$undef";;
10004                 esac;;
10005         "$define")
10006                 echo "As you already told me, signal handler returns void." >&4
10007                 val="$define"
10008                 ;;
10009         *)      echo "As you already told me, signal handler returns int." >&4
10010                 val="$undef"
10011                 ;;
10012         esac
10013 fi
10014 set d_voidsig
10015 eval $setvar
10016 case "$d_voidsig" in
10017 "$define") signal_t="void";;
10018 *) signal_t="int";;
10019 esac
10020 $rm -f $$.tmp
10021
10022 : check for ability to cast large floats to 32-bit ints.
10023 echo " "
10024 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10025 if $test "$intsize" -ge 4; then
10026         xxx=int
10027 else
10028         xxx=long
10029 fi
10030 $cat >try.c <<EOCP
10031 #include <stdio.h>
10032 #$i_stdlib I_STDLIB
10033 #ifdef I_STDLIB
10034 #include <stdlib.h>
10035 #endif
10036 #include <sys/types.h>
10037 #include <signal.h>
10038 $signal_t blech(s) int s; { exit(3); }
10039 int main()
10040 {
10041         $xxx i32;
10042         double f, g;
10043         int result = 0;
10044         char str[16];
10045         signal(SIGFPE, blech);
10046
10047         /* Don't let compiler optimize the test away.  Store the number 
10048            in a writable string for gcc to pass to sscanf under HP/UX.
10049         */
10050         sprintf(str, "2147483647");
10051         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10052         g = 10 * f;
10053         i32  = ($xxx) g;
10054
10055         /* x86 processors will probably give 0x8000 0000, which is a
10056        sign change.  We don't want that.  We want to mimic SPARC
10057            behavior here, which is to preserve the sign and give
10058            back 0x7fff ffff.
10059         */
10060         if (i32 != ($xxx) f)
10061                 result |= 1;
10062         exit(result);
10063 }
10064 EOCP
10065 set try
10066 if eval $compile_ok; then
10067         $run ./try
10068         yyy=$?
10069 else
10070         echo "(I can't seem to compile the test program--assuming it can't)"
10071         yyy=1
10072 fi
10073 case "$yyy" in
10074 0)      val="$define"
10075         echo "Yup, it can."
10076         ;;
10077 *)      val="$undef"
10078         echo "Nope, it can't."
10079         ;;
10080 esac
10081 set d_casti32
10082 eval $setvar
10083 $rm -f try try.*
10084
10085 : check for ability to cast negative floats to unsigned
10086 echo " "
10087 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10088 $cat >try.c <<EOCP
10089 #include <stdio.h>
10090 #$i_stdlib I_STDLIB
10091 #ifdef I_STDLIB
10092 #include <stdlib.h>
10093 #endif
10094 #include <sys/types.h>
10095 #include <signal.h>
10096 $signal_t blech(s) int s; { exit(7); }
10097 $signal_t blech_in_list(s) int s; { exit(4); }
10098 unsigned long dummy_long(p) unsigned long p; { return p; }
10099 unsigned int dummy_int(p) unsigned int p; { return p; }
10100 unsigned short dummy_short(p) unsigned short p; { return p; }
10101 int main()
10102 {
10103         double f;
10104         unsigned long along;
10105         unsigned int aint;
10106         unsigned short ashort;
10107         int result = 0;
10108         char str[16];
10109         
10110         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10111            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10112            optimized the whole file away
10113         */
10114         /* Store the number in a writable string for gcc to pass to 
10115            sscanf under HP/UX.
10116         */
10117         sprintf(str, "-123");
10118         sscanf(str, "%lf", &f);  /* f = -123.; */
10119
10120         signal(SIGFPE, blech);
10121         along = (unsigned long)f;
10122         aint = (unsigned int)f;
10123         ashort = (unsigned short)f;
10124         if (along != (unsigned long)-123)
10125                 result |= 1;
10126         if (aint != (unsigned int)-123)
10127                 result |= 1;
10128         if (ashort != (unsigned short)-123)
10129                 result |= 1;
10130         sprintf(str, "1073741824.");
10131         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10132         f = f + f;
10133         along = 0;
10134         along = (unsigned long)f;
10135         if (along != 0x80000000)
10136                 result |= 2;
10137         f -= 1.;
10138         along = 0;
10139         along = (unsigned long)f;
10140         if (along != 0x7fffffff)
10141                 result |= 1;
10142         f += 2.;
10143         along = 0;
10144         along = (unsigned long)f;
10145         if (along != 0x80000001)
10146                 result |= 2;
10147         if (result)
10148                 exit(result);
10149         signal(SIGFPE, blech_in_list);
10150         sprintf(str, "123.");
10151         sscanf(str, "%lf", &f);  /* f = 123.; */
10152         along = dummy_long((unsigned long)f);
10153         aint = dummy_int((unsigned int)f);
10154         ashort = dummy_short((unsigned short)f);
10155         if (along != (unsigned long)123)
10156                 result |= 4;
10157         if (aint != (unsigned int)123)
10158                 result |= 4;
10159         if (ashort != (unsigned short)123)
10160                 result |= 4;
10161         exit(result);
10162
10163 }
10164 EOCP
10165 set try
10166 if eval $compile_ok; then
10167         $run ./try
10168         castflags=$?
10169 else
10170         echo "(I can't seem to compile the test program--assuming it can't)"
10171         castflags=7
10172 fi
10173 case "$castflags" in
10174 0)      val="$define"
10175         echo "Yup, it can."
10176         ;;
10177 *)      val="$undef"
10178         echo "Nope, it can't."
10179         ;;
10180 esac
10181 set d_castneg
10182 eval $setvar
10183 $rm -f try.*
10184
10185 : see if vprintf exists
10186 echo " "
10187 if set vprintf val -f d_vprintf; eval $csym; $val; then
10188         echo 'vprintf() found.' >&4
10189         val="$define"
10190         $cat >try.c <<EOF
10191 #include <varargs.h>
10192 #$i_stdlib I_STDLIB
10193 #ifdef I_STDLIB
10194 #include <stdlib.h>
10195 #endif
10196
10197 int main() { xxx("foo"); }
10198
10199 xxx(va_alist)
10200 va_dcl
10201 {
10202         va_list args;
10203         char buf[10];
10204
10205         va_start(args);
10206         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10207 }
10208 EOF
10209         set try
10210         if eval $compile && $run ./try; then
10211                 echo "Your vsprintf() returns (int)." >&4
10212                 val2="$undef"
10213         else
10214                 echo "Your vsprintf() returns (char*)." >&4
10215                 val2="$define"
10216         fi
10217 else
10218         echo 'vprintf() NOT found.' >&4
10219                 val="$undef"
10220                 val2="$undef"
10221 fi
10222 $rm -f try try.*
10223 set d_vprintf
10224 eval $setvar
10225 val=$val2
10226 set d_charvspr
10227 eval $setvar
10228
10229 : see if chown exists
10230 set chown d_chown
10231 eval $inlibc
10232
10233 : see if chroot exists
10234 set chroot d_chroot
10235 eval $inlibc
10236
10237 : see if chsize exists
10238 set chsize d_chsize
10239 eval $inlibc
10240
10241 : see if class exists
10242 set class d_class
10243 eval $inlibc
10244
10245 hasstruct='varname=$1; struct=$2; shift; shift;
10246 while $test $# -ge 2; do
10247         case "$1" in
10248         $define) echo "#include <$2>";;
10249         esac ;
10250     shift 2;
10251 done > try.c;
10252 echo "int main () { struct $struct foo; }" >> try.c;
10253 set try;
10254 if eval $compile; then
10255         val="$define";
10256 else
10257         val="$undef";
10258 fi;
10259 set $varname;
10260 eval $setvar;
10261 $rm -f try.c try.o'
10262
10263 socketlib=''
10264 sockethdr=''
10265 : see whether socket exists
10266 echo " "
10267 $echo $n "Hmm... $c" >&4
10268 if set socket val -f d_socket; eval $csym; $val; then
10269         echo "Looks like you have Berkeley networking support." >&4
10270         d_socket="$define"
10271         if set setsockopt val -f; eval $csym; $val; then
10272                 d_oldsock="$undef"
10273         else
10274                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10275                 d_oldsock="$define"
10276         fi
10277 else
10278         if $contains socklib libc.list >/dev/null 2>&1; then
10279                 echo "Looks like you have Berkeley networking support." >&4
10280                 d_socket="$define"
10281                 : we will have to assume that it supports the 4.2 BSD interface
10282                 d_oldsock="$undef"
10283         else
10284                 echo "You don't have Berkeley networking in libc$_a..." >&4
10285                 if test "X$d_socket" = "X$define"; then
10286                    echo "...but you seem to believe that you have sockets." >&4
10287                 else
10288                         for net in net socket
10289                         do
10290                                 if test -f /usr/lib/lib$net$_a; then
10291                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10292                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10293                                         if $contains socket libc.list >/dev/null 2>&1; then
10294                                                 d_socket="$define"
10295                                                 socketlib="-l$net"
10296                                                 case "$net" in
10297                                                 net)
10298                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10299                                                         sockethdr="-I/usr/netinclude"
10300                                                         ;;
10301                                                 esac
10302                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10303                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10304                                                         d_oldsock="$undef"
10305                                                 else
10306                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10307                                                         d_oldsock="$define"
10308                                                 fi
10309                                                 break
10310                                         fi
10311                                 fi
10312                         done
10313                         if test "X$d_socket" != "X$define"; then
10314                            echo "or anywhere else I see." >&4
10315                            d_socket="$undef"
10316                            d_oldsock="$undef"
10317                         fi
10318                 fi
10319         fi
10320 fi
10321
10322 : see if socketpair exists
10323 set socketpair d_sockpair
10324 eval $inlibc
10325
10326
10327 echo " "
10328 echo "Checking the availability of certain socket constants..." >&4
10329 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10330         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10331         $cat >try.c <<EOF
10332 #include <sys/types.h>
10333 #include <sys/socket.h>
10334 int main() {
10335     int i = $ENUM;
10336 }
10337 EOF
10338         val="$undef"
10339         set try; if eval $compile; then
10340                 val="$define"
10341         fi
10342         set d_${enum}; eval $setvar
10343         $rm -f try.c try
10344 done
10345
10346 : see if this is a sys/uio.h system
10347 set sys/uio.h i_sysuio
10348 eval $inhdr
10349
10350
10351 echo " "
10352 echo "Checking to see if your system supports struct cmsghdr..." >&4
10353 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10354 eval $hasstruct
10355 case "$d_cmsghdr_s" in
10356 "$define")      echo "Yes, it does."   ;;
10357 *)              echo "No, it doesn't." ;;
10358 esac
10359
10360
10361 : check for const keyword
10362 echo " "
10363 echo 'Checking to see if your C compiler knows about "const"...' >&4
10364 $cat >const.c <<'EOCP'
10365 typedef struct spug { int drokk; } spug;
10366 int main()
10367 {
10368         const char *foo;
10369         const spug y;
10370 }
10371 EOCP
10372 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10373         val="$define"
10374         echo "Yup, it does."
10375 else
10376         val="$undef"
10377         echo "Nope, it doesn't."
10378 fi
10379 set d_const
10380 eval $setvar
10381
10382 : see if copysignl exists
10383 set copysignl d_copysignl
10384 eval $inlibc
10385
10386 : see if crypt exists
10387 echo " "
10388 set crypt d_crypt
10389 eval $inlibc
10390 case "$d_crypt" in
10391 $define) cryptlib='' ;;
10392 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10393                 echo 'crypt() found.' >&4
10394                 val="$define"
10395                 cryptlib=''
10396         else
10397                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10398                 if $test -z "$cryptlib"; then
10399                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10400                 else
10401                         cryptlib=-lcrypt
10402                 fi
10403                 if $test -z "$cryptlib"; then
10404                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10405                 else
10406                         cryptlib=-lcrypt
10407                 fi
10408                 if $test -z "$cryptlib"; then
10409                         cryptlib=`./loc libcrypt$_a "" $libpth`
10410                 else
10411                         cryptlib=-lcrypt
10412                 fi
10413                 if $test -z "$cryptlib"; then
10414                         echo 'crypt() NOT found.' >&4
10415                         val="$undef"
10416                 else
10417                         val="$define"
10418                 fi
10419         fi
10420         set d_crypt
10421         eval $setvar
10422         ;;
10423 esac
10424
10425 : see if this is a crypt.h system
10426 set crypt.h i_crypt
10427 eval $inhdr
10428
10429 : see if crypt_r exists
10430 set crypt_r d_crypt_r
10431 eval $inlibc
10432 case "$d_crypt_r" in
10433 "$define")
10434         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10435         case "$d_crypt_r_proto:$usethreads" in
10436         ":define")      d_crypt_r_proto=define
10437                 set d_crypt_r_proto crypt_r $hdrs
10438                 eval $hasproto ;;
10439         *)      ;;
10440         esac
10441         case "$d_crypt_r_proto" in
10442         define)
10443         case "$crypt_r_proto" in
10444         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10445         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10446         esac
10447         case "$crypt_r_proto" in
10448         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10449         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10450         esac
10451         case "$crypt_r_proto" in
10452         ''|0)   d_crypt_r=undef
10453                 crypt_r_proto=0
10454                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10455         * )     case "$crypt_r_proto" in
10456                 REENTRANT_PROTO*) ;;
10457                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10458                 esac
10459                 echo "Prototype: $try" ;;
10460         esac
10461         ;;
10462         *)      case "$usethreads" in
10463                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10464                 esac
10465                 d_crypt_r=undef
10466                 crypt_r_proto=0
10467                 ;;
10468         esac
10469         ;;
10470 *)      crypt_r_proto=0
10471         ;;
10472 esac
10473
10474 : get csh whereabouts
10475 case "$csh" in
10476 'csh') val="$undef" ;;
10477 *) val="$define" ;;
10478 esac
10479 set d_csh
10480 eval $setvar
10481 : Respect a hint or command line value for full_csh.
10482 case "$full_csh" in
10483 '') full_csh=$csh ;;
10484 esac
10485
10486 : see if ctermid_r exists
10487 set ctermid_r d_ctermid_r
10488 eval $inlibc
10489 case "$d_ctermid_r" in
10490 "$define")
10491         hdrs="$i_systypes sys/types.h define stdio.h "
10492         case "$d_ctermid_r_proto:$usethreads" in
10493         ":define")      d_ctermid_r_proto=define
10494                 set d_ctermid_r_proto ctermid_r $hdrs
10495                 eval $hasproto ;;
10496         *)      ;;
10497         esac
10498         case "$d_ctermid_r_proto" in
10499         define)
10500         case "$ctermid_r_proto" in
10501         ''|0) try='char* ctermid_r(char*);'
10502         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10503         esac
10504         case "$ctermid_r_proto" in
10505         ''|0)   d_ctermid_r=undef
10506                 ctermid_r_proto=0
10507                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10508         * )     case "$ctermid_r_proto" in
10509                 REENTRANT_PROTO*) ;;
10510                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10511                 esac
10512                 echo "Prototype: $try" ;;
10513         esac
10514         ;;
10515         *)      case "$usethreads" in
10516                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10517                 esac
10518                 d_ctermid_r=undef
10519                 ctermid_r_proto=0
10520                 ;;
10521         esac
10522         ;;
10523 *)      ctermid_r_proto=0
10524         ;;
10525 esac
10526
10527 : see if ctime_r exists
10528 set ctime_r d_ctime_r
10529 eval $inlibc
10530 case "$d_ctime_r" in
10531 "$define")
10532         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10533         case "$d_ctime_r_proto:$usethreads" in
10534         ":define")      d_ctime_r_proto=define
10535                 set d_ctime_r_proto ctime_r $hdrs
10536                 eval $hasproto ;;
10537         *)      ;;
10538         esac
10539         case "$d_ctime_r_proto" in
10540         define)
10541         case "$ctime_r_proto" in
10542         ''|0) try='char* ctime_r(const time_t*, char*);'
10543         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10544         esac
10545         case "$ctime_r_proto" in
10546         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10547         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10548         esac
10549         case "$ctime_r_proto" in
10550         ''|0) try='int ctime_r(const time_t*, char*);'
10551         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10552         esac
10553         case "$ctime_r_proto" in
10554         ''|0) try='int ctime_r(const time_t*, char*, int);'
10555         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10556         esac
10557         case "$ctime_r_proto" in
10558         ''|0)   d_ctime_r=undef
10559                 ctime_r_proto=0
10560                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10561         * )     case "$ctime_r_proto" in
10562                 REENTRANT_PROTO*) ;;
10563                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10564                 esac
10565                 echo "Prototype: $try" ;;
10566         esac
10567         ;;
10568         *)      case "$usethreads" in
10569                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10570                 esac
10571                 d_ctime_r=undef
10572                 ctime_r_proto=0
10573                 ;;
10574         esac
10575         ;;
10576 *)      ctime_r_proto=0
10577         ;;
10578 esac
10579
10580 : see if cuserid exists
10581 set cuserid d_cuserid
10582 eval $inlibc
10583
10584 : see if this is a limits.h system
10585 set limits.h i_limits
10586 eval $inhdr
10587
10588 : see if this is a float.h system
10589 set float.h i_float
10590 eval $inhdr
10591
10592 : See if number of significant digits in a double precision number is known
10593 echo " "
10594 $cat >dbl_dig.c <<EOM
10595 #$i_limits I_LIMITS
10596 #$i_float I_FLOAT
10597 #ifdef I_LIMITS
10598 #include <limits.h>
10599 #endif
10600 #ifdef I_FLOAT
10601 #include <float.h>
10602 #endif
10603 #ifdef DBL_DIG
10604 printf("Contains DBL_DIG");
10605 #endif
10606 EOM
10607 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10608 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10609         echo "DBL_DIG found." >&4
10610         val="$define"
10611 else
10612         echo "DBL_DIG NOT found." >&4
10613         val="$undef"
10614 fi
10615 $rm -f dbl_dig.?
10616 set d_dbl_dig
10617 eval $setvar
10618
10619 : see if dbm.h is available
10620 : see if dbmclose exists
10621 set dbmclose d_dbmclose
10622 eval $inlibc
10623
10624 case "$d_dbmclose" in
10625 $define)
10626         set dbm.h i_dbm
10627         eval $inhdr
10628         case "$i_dbm" in
10629         $define)
10630                 val="$undef"
10631                 set i_rpcsvcdbm
10632                 eval $setvar
10633                 ;;
10634         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10635                 eval $inhdr
10636                 ;;
10637         esac
10638         ;;
10639 *)      echo "We won't be including <dbm.h>"
10640         val="$undef"
10641         set i_dbm
10642         eval $setvar
10643         val="$undef"
10644         set i_rpcsvcdbm
10645         eval $setvar
10646         ;;
10647 esac
10648
10649 : see if prototype for dbminit is available
10650 echo " "
10651 set d_dbminitproto dbminit $i_dbm dbm.h
10652 eval $hasproto
10653
10654 : see if difftime exists
10655 set difftime d_difftime
10656 eval $inlibc
10657
10658 : see if this is a dirent system
10659 echo " "
10660 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10661         val="$define"
10662         echo "<dirent.h> found." >&4
10663 else
10664         val="$undef"
10665         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10666                 echo "<sys/dir.h> found." >&4
10667                 echo " "
10668         else
10669                 xinc=`./findhdr sys/ndir.h`
10670         fi
10671         echo "<dirent.h> NOT found." >&4
10672 fi
10673 set i_dirent
10674 eval $setvar
10675
10676 : Look for type of directory structure.
10677 echo " "
10678 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10679
10680 case "$direntrytype" in
10681 ''|' ')
10682         case "$i_dirent" in
10683         $define) guess1='struct dirent' ;;
10684         *) guess1='struct direct'  ;;
10685         esac
10686         ;;
10687 *)      guess1="$direntrytype"
10688         ;;
10689 esac
10690
10691 case "$guess1" in
10692 'struct dirent') guess2='struct direct' ;;
10693 *) guess2='struct dirent' ;;
10694 esac
10695                 
10696 if $contains "$guess1" try.c >/dev/null 2>&1; then
10697         direntrytype="$guess1"
10698         echo "Your directory entries are $direntrytype." >&4
10699 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10700         direntrytype="$guess2"
10701         echo "Your directory entries seem to be $direntrytype." >&4
10702 else
10703         echo "I don't recognize your system's directory entries." >&4
10704         rp="What type is used for directory entries on this system?"
10705         dflt="$guess1"
10706         . ./myread
10707         direntrytype="$ans"
10708 fi
10709 $rm -f try.c
10710
10711
10712 : see if the directory entry stores field length
10713 echo " "
10714 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10715 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10716         echo "Good, your directory entry keeps length information in d_namlen." >&4
10717         val="$define"
10718 else
10719         echo "Your directory entry does not know about the d_namlen field." >&4
10720         val="$undef"
10721 fi
10722 set d_dirnamlen
10723 eval $setvar
10724 $rm -f try.c
10725
10726 : see if this is an sysdir system
10727 set sys/dir.h i_sysdir
10728 eval $inhdr
10729
10730 : see if this is an sysndir system
10731 set sys/ndir.h i_sysndir
10732 eval $inhdr
10733
10734 : Look for dirfd
10735 echo " "
10736 $cat >dirfd.c <<EOM
10737 #include <stdio.h>
10738 #$i_stdlib I_STDLIB
10739 #ifdef I_STDLIB
10740 #include <stdlib.h>
10741 #endif
10742 #$i_dirent I_DIRENT             /**/
10743 #$i_sysdir I_SYS_DIR            /**/
10744 #$i_sysndir I_SYS_NDIR          /**/
10745 #$i_systypes I_SYS_TYPES        /**/
10746 #if defined(I_SYS_TYPES)
10747 #include <sys/types.h>
10748 #endif
10749 #if defined(I_DIRENT)
10750 #include <dirent.h>
10751 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10752 #include <sys/dir.h>
10753 #endif
10754 #else
10755 #ifdef I_SYS_NDIR
10756 #include <sys/ndir.h>
10757 #else
10758 #ifdef I_SYS_DIR
10759 #ifdef hp9000s500
10760 #include <ndir.h>       /* may be wrong in the future */
10761 #else
10762 #include <sys/dir.h>
10763 #endif
10764 #endif
10765 #endif
10766 #endif 
10767 int main() {
10768         DIR *dirp = opendir(".");
10769         if (dirfd(dirp) >= 0)
10770                 exit(0);
10771         else
10772                 exit(1);
10773 }
10774 EOM
10775 set dirfd
10776 if eval $compile; then
10777         val="$define"
10778 fi
10779 case "$val" in
10780 $define)        echo "dirfd() found." >&4       ;;
10781 *)              echo "dirfd() NOT found." >&4   ;;
10782 esac
10783 set d_dirfd
10784 eval $setvar
10785 $rm -f dirfd*
10786
10787 : see if dlerror exists
10788 xxx_runnm="$runnm"
10789 runnm=false
10790 set dlerror d_dlerror
10791 eval $inlibc
10792 runnm="$xxx_runnm"
10793
10794 : see if dlfcn is available
10795 set dlfcn.h i_dlfcn
10796 eval $inhdr
10797
10798 case "$usedl" in
10799 $define|y|true)
10800         $cat << EOM
10801
10802 On a few systems, the dynamically loaded modules that perl generates and uses
10803 will need a different extension than shared libs. The default will probably
10804 be appropriate.
10805
10806 EOM
10807         case "$dlext" in
10808         '')     dflt="$so" ;;
10809         *)      dflt="$dlext" ;;
10810         esac
10811         rp='What is the extension of dynamically loaded modules'
10812         . ./myread
10813         dlext="$ans"
10814         ;;
10815 *)
10816         dlext="none"
10817         ;;
10818 esac
10819
10820 : Check if dlsym need a leading underscore
10821 echo " "
10822 val="$undef"
10823
10824 case "$dlsrc" in
10825 dl_dlopen.xs)
10826         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10827         $cat >dyna.c <<'EOM'
10828 fred () { }
10829 EOM
10830
10831 $cat >fred.c<<EOM
10832
10833 #include <stdio.h>
10834 #$i_stdlib I_STDLIB
10835 #ifdef I_STDLIB
10836 #include <stdlib.h>
10837 #endif
10838 #$i_dlfcn I_DLFCN
10839 #ifdef I_DLFCN
10840 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10841 #else
10842 #include <sys/types.h>
10843 #include <nlist.h>
10844 #include <link.h>
10845 #endif
10846
10847 extern int fred() ;
10848
10849 int main()
10850 {
10851     void * handle ;
10852     void * symbol ;
10853 #ifndef RTLD_LAZY
10854     int mode = 1 ;
10855 #else
10856     int mode = RTLD_LAZY ;
10857 #endif
10858     handle = dlopen("./dyna.$dlext", mode) ;
10859     if (handle == NULL) {
10860         printf ("1\n") ;
10861         fflush (stdout) ;
10862         exit(0);
10863     }
10864     symbol = dlsym(handle, "fred") ;
10865     if (symbol == NULL) {
10866         /* try putting a leading underscore */
10867         symbol = dlsym(handle, "_fred") ;
10868         if (symbol == NULL) {
10869             printf ("2\n") ;
10870             fflush (stdout) ;
10871             exit(0);
10872         }
10873         printf ("3\n") ;
10874     }
10875     else
10876         printf ("4\n") ;
10877     fflush (stdout) ;
10878     exit(0);
10879 }
10880 EOM
10881         : Call the object file tmp-dyna.o in case dlext=o.
10882         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10883                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10884                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10885                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10886                 xxx=`$run ./fred`
10887                 case $xxx in
10888                 1)      echo "Test program failed using dlopen." >&4
10889                         echo "Perhaps you should not use dynamic loading." >&4;;
10890                 2)      echo "Test program failed using dlsym." >&4
10891                         echo "Perhaps you should not use dynamic loading." >&4;;
10892                 3)      echo "dlsym needs a leading underscore" >&4
10893                         val="$define" ;;
10894                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10895                 esac
10896         else
10897                 echo "I can't compile and run the test program." >&4
10898                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10899         fi
10900         ;;
10901 esac
10902                 
10903 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10904
10905 set d_dlsymun
10906 eval $setvar
10907
10908 : see if drand48_r exists
10909 set drand48_r d_drand48_r
10910 eval $inlibc
10911 case "$d_drand48_r" in
10912 "$define")
10913         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10914         case "$d_drand48_r_proto:$usethreads" in
10915         ":define")      d_drand48_r_proto=define
10916                 set d_drand48_r_proto drand48_r $hdrs
10917                 eval $hasproto ;;
10918         *)      ;;
10919         esac
10920         case "$d_drand48_r_proto" in
10921         define)
10922         case "$drand48_r_proto" in
10923         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10924         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10925         esac
10926         case "$drand48_r_proto" in
10927         ''|0)   d_drand48_r=undef
10928                 drand48_r_proto=0
10929                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10930         * )     case "$drand48_r_proto" in
10931                 REENTRANT_PROTO*) ;;
10932                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10933                 esac
10934                 echo "Prototype: $try" ;;
10935         esac
10936         ;;
10937         *)      case "$usethreads" in
10938                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10939                 esac
10940                 d_drand48_r=undef
10941                 drand48_r_proto=0
10942                 ;;
10943         esac
10944         ;;
10945 *)      drand48_r_proto=0
10946         ;;
10947 esac
10948
10949 : see if prototype for drand48 is available
10950 echo " "
10951 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10952 eval $hasproto
10953
10954 : see if dup2 exists
10955 set dup2 d_dup2
10956 eval $inlibc
10957
10958 : see if eaccess exists
10959 set eaccess d_eaccess
10960 eval $inlibc
10961
10962 : see if endgrent exists
10963 set endgrent d_endgrent
10964 eval $inlibc
10965
10966 : see if this is an grp system
10967 set grp.h i_grp
10968 eval $inhdr
10969
10970 case "$i_grp" in
10971 $define)
10972         xxx=`./findhdr grp.h`
10973         $cppstdin $cppflags $cppminus < $xxx >$$.h
10974
10975         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10976                 val="$define"
10977         else
10978                 val="$undef"
10979         fi
10980         set d_grpasswd
10981         eval $setvar
10982
10983         $rm -f $$.h
10984         ;;
10985 *)
10986         val="$undef";
10987         set d_grpasswd; eval $setvar
10988         ;;
10989 esac
10990
10991 : see if endgrent_r exists
10992 set endgrent_r d_endgrent_r
10993 eval $inlibc
10994 case "$d_endgrent_r" in
10995 "$define")
10996         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10997         case "$d_endgrent_r_proto:$usethreads" in
10998         ":define")      d_endgrent_r_proto=define
10999                 set d_endgrent_r_proto endgrent_r $hdrs
11000                 eval $hasproto ;;
11001         *)      ;;
11002         esac
11003         case "$d_endgrent_r_proto" in
11004         define)
11005         case "$endgrent_r_proto" in
11006         ''|0) try='int endgrent_r(FILE**);'
11007         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11008         esac
11009         case "$endgrent_r_proto" in
11010         ''|0) try='void endgrent_r(FILE**);'
11011         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11012         esac
11013         case "$endgrent_r_proto" in
11014         ''|0)   d_endgrent_r=undef
11015                 endgrent_r_proto=0
11016                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11017         * )     case "$endgrent_r_proto" in
11018                 REENTRANT_PROTO*) ;;
11019                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11020                 esac
11021                 echo "Prototype: $try" ;;
11022         esac
11023         ;;
11024         *)      case "$usethreads" in
11025                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11026                 esac
11027                 d_endgrent_r=undef
11028                 endgrent_r_proto=0
11029                 ;;
11030         esac
11031         ;;
11032 *)      endgrent_r_proto=0
11033         ;;
11034 esac
11035
11036 : see if endhostent exists
11037 set endhostent d_endhent
11038 eval $inlibc
11039
11040 : see if this is a netdb.h system
11041 set netdb.h i_netdb
11042 eval $inhdr
11043
11044 : see if endhostent_r exists
11045 set endhostent_r d_endhostent_r
11046 eval $inlibc
11047 case "$d_endhostent_r" in
11048 "$define")
11049         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11050         case "$d_endhostent_r_proto:$usethreads" in
11051         ":define")      d_endhostent_r_proto=define
11052                 set d_endhostent_r_proto endhostent_r $hdrs
11053                 eval $hasproto ;;
11054         *)      ;;
11055         esac
11056         case "$d_endhostent_r_proto" in
11057         define)
11058         case "$endhostent_r_proto" in
11059         ''|0) try='int endhostent_r(struct hostent_data*);'
11060         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11061         esac
11062         case "$endhostent_r_proto" in
11063         ''|0) try='void endhostent_r(struct hostent_data*);'
11064         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11065         esac
11066         case "$endhostent_r_proto" in
11067         ''|0)   d_endhostent_r=undef
11068                 endhostent_r_proto=0
11069                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11070         * )     case "$endhostent_r_proto" in
11071                 REENTRANT_PROTO*) ;;
11072                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11073                 esac
11074                 echo "Prototype: $try" ;;
11075         esac
11076         ;;
11077         *)      case "$usethreads" in
11078                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11079                 esac
11080                 d_endhostent_r=undef
11081                 endhostent_r_proto=0
11082                 ;;
11083         esac
11084         ;;
11085 *)      endhostent_r_proto=0
11086         ;;
11087 esac
11088
11089 : see if endnetent exists
11090 set endnetent d_endnent
11091 eval $inlibc
11092
11093 : see if endnetent_r exists
11094 set endnetent_r d_endnetent_r
11095 eval $inlibc
11096 case "$d_endnetent_r" in
11097 "$define")
11098         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11099         case "$d_endnetent_r_proto:$usethreads" in
11100         ":define")      d_endnetent_r_proto=define
11101                 set d_endnetent_r_proto endnetent_r $hdrs
11102                 eval $hasproto ;;
11103         *)      ;;
11104         esac
11105         case "$d_endnetent_r_proto" in
11106         define)
11107         case "$endnetent_r_proto" in
11108         ''|0) try='int endnetent_r(struct netent_data*);'
11109         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11110         esac
11111         case "$endnetent_r_proto" in
11112         ''|0) try='void endnetent_r(struct netent_data*);'
11113         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11114         esac
11115         case "$endnetent_r_proto" in
11116         ''|0)   d_endnetent_r=undef
11117                 endnetent_r_proto=0
11118                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11119         * )     case "$endnetent_r_proto" in
11120                 REENTRANT_PROTO*) ;;
11121                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11122                 esac
11123                 echo "Prototype: $try" ;;
11124         esac
11125         ;;
11126         *)      case "$usethreads" in
11127                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11128                 esac
11129                 d_endnetent_r=undef
11130                 endnetent_r_proto=0
11131                 ;;
11132         esac
11133         ;;
11134 *)      endnetent_r_proto=0
11135         ;;
11136 esac
11137
11138 : see if endprotoent exists
11139 set endprotoent d_endpent
11140 eval $inlibc
11141
11142 : see if endprotoent_r exists
11143 set endprotoent_r d_endprotoent_r
11144 eval $inlibc
11145 case "$d_endprotoent_r" in
11146 "$define")
11147         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11148         case "$d_endprotoent_r_proto:$usethreads" in
11149         ":define")      d_endprotoent_r_proto=define
11150                 set d_endprotoent_r_proto endprotoent_r $hdrs
11151                 eval $hasproto ;;
11152         *)      ;;
11153         esac
11154         case "$d_endprotoent_r_proto" in
11155         define)
11156         case "$endprotoent_r_proto" in
11157         ''|0) try='int endprotoent_r(struct protoent_data*);'
11158         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11159         esac
11160         case "$endprotoent_r_proto" in
11161         ''|0) try='void endprotoent_r(struct protoent_data*);'
11162         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11163         esac
11164         case "$endprotoent_r_proto" in
11165         ''|0)   d_endprotoent_r=undef
11166                 endprotoent_r_proto=0
11167                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11168         * )     case "$endprotoent_r_proto" in
11169                 REENTRANT_PROTO*) ;;
11170                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11171                 esac
11172                 echo "Prototype: $try" ;;
11173         esac
11174         ;;
11175         *)      case "$usethreads" in
11176                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11177                 esac
11178                 d_endprotoent_r=undef
11179                 endprotoent_r_proto=0
11180                 ;;
11181         esac
11182         ;;
11183 *)      endprotoent_r_proto=0
11184         ;;
11185 esac
11186
11187 : see if endpwent exists
11188 set endpwent d_endpwent
11189 eval $inlibc
11190
11191 : see if this is a pwd.h system
11192 set pwd.h i_pwd
11193 eval $inhdr
11194
11195 case "$i_pwd" in
11196 $define)
11197         xxx=`./findhdr pwd.h`
11198         $cppstdin $cppflags $cppminus < $xxx >$$.h
11199
11200         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11201                 val="$define"
11202         else
11203                 val="$undef"
11204         fi
11205         set d_pwquota
11206         eval $setvar
11207
11208         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11209                 val="$define"
11210         else
11211                 val="$undef"
11212         fi
11213         set d_pwage
11214         eval $setvar
11215
11216         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11217                 val="$define"
11218         else
11219                 val="$undef"
11220         fi
11221         set d_pwchange
11222         eval $setvar
11223
11224         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11225                 val="$define"
11226         else
11227                 val="$undef"
11228         fi
11229         set d_pwclass
11230         eval $setvar
11231
11232         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11233                 val="$define"
11234         else
11235                 val="$undef"
11236         fi
11237         set d_pwexpire
11238         eval $setvar
11239
11240         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11241                 val="$define"
11242         else
11243                 val="$undef"
11244         fi
11245         set d_pwcomment
11246         eval $setvar
11247
11248         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11249                 val="$define"
11250         else
11251                 val="$undef"
11252         fi
11253         set d_pwgecos
11254         eval $setvar
11255
11256         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11257                 val="$define"
11258         else
11259                 val="$undef"
11260         fi
11261         set d_pwpasswd
11262         eval $setvar
11263
11264         $rm -f $$.h
11265         ;;
11266 *)
11267         val="$undef"; 
11268         set d_pwquota; eval $setvar
11269         set d_pwage; eval $setvar
11270         set d_pwchange; eval $setvar
11271         set d_pwclass; eval $setvar
11272         set d_pwexpire; eval $setvar
11273         set d_pwcomment; eval $setvar
11274         set d_pwgecos; eval $setvar
11275         set d_pwpasswd; eval $setvar
11276         ;;
11277 esac
11278
11279 : see if endpwent_r exists
11280 set endpwent_r d_endpwent_r
11281 eval $inlibc
11282 case "$d_endpwent_r" in
11283 "$define")
11284         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11285         case "$d_endpwent_r_proto:$usethreads" in
11286         ":define")      d_endpwent_r_proto=define
11287                 set d_endpwent_r_proto endpwent_r $hdrs
11288                 eval $hasproto ;;
11289         *)      ;;
11290         esac
11291         case "$d_endpwent_r_proto" in
11292         define)
11293         case "$endpwent_r_proto" in
11294         ''|0) try='int endpwent_r(FILE**);'
11295         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11296         esac
11297         case "$endpwent_r_proto" in
11298         ''|0) try='void endpwent_r(FILE**);'
11299         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11300         esac
11301         case "$endpwent_r_proto" in
11302         ''|0)   d_endpwent_r=undef
11303                 endpwent_r_proto=0
11304                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11305         * )     case "$endpwent_r_proto" in
11306                 REENTRANT_PROTO*) ;;
11307                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11308                 esac
11309                 echo "Prototype: $try" ;;
11310         esac
11311         ;;
11312         *)      case "$usethreads" in
11313                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11314                 esac
11315                 d_endpwent_r=undef
11316                 endpwent_r_proto=0
11317                 ;;
11318         esac
11319         ;;
11320 *)      endpwent_r_proto=0
11321         ;;
11322 esac
11323
11324 : see if endservent exists
11325 set endservent d_endsent
11326 eval $inlibc
11327
11328 : see if endservent_r exists
11329 set endservent_r d_endservent_r
11330 eval $inlibc
11331 case "$d_endservent_r" in
11332 "$define")
11333         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11334         case "$d_endservent_r_proto:$usethreads" in
11335         ":define")      d_endservent_r_proto=define
11336                 set d_endservent_r_proto endservent_r $hdrs
11337                 eval $hasproto ;;
11338         *)      ;;
11339         esac
11340         case "$d_endservent_r_proto" in
11341         define)
11342         case "$endservent_r_proto" in
11343         ''|0) try='int endservent_r(struct servent_data*);'
11344         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11345         esac
11346         case "$endservent_r_proto" in
11347         ''|0) try='void endservent_r(struct servent_data*);'
11348         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11349         esac
11350         case "$endservent_r_proto" in
11351         ''|0)   d_endservent_r=undef
11352                 endservent_r_proto=0
11353                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11354         * )     case "$endservent_r_proto" in
11355                 REENTRANT_PROTO*) ;;
11356                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11357                 esac
11358                 echo "Prototype: $try" ;;
11359         esac
11360         ;;
11361         *)      case "$usethreads" in
11362                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11363                 esac
11364                 d_endservent_r=undef
11365                 endservent_r_proto=0
11366                 ;;
11367         esac
11368         ;;
11369 *)      endservent_r_proto=0
11370         ;;
11371 esac
11372
11373 : Locate the flags for 'open()'
11374 echo " "
11375 $cat >try.c <<EOCP
11376 #include <sys/types.h>
11377 #ifdef I_FCNTL
11378 #include <fcntl.h>
11379 #endif
11380 #ifdef I_SYS_FILE
11381 #include <sys/file.h>
11382 #endif
11383 #$i_stdlib I_STDLIB
11384 #ifdef I_STDLIB
11385 #include <stdlib.h>
11386 #endif
11387 int main() {
11388         if(O_RDONLY);
11389 #ifdef O_TRUNC
11390         exit(0);
11391 #else
11392         exit(1);
11393 #endif
11394 }
11395 EOCP
11396 : check sys/file.h first to get FREAD on Sun
11397 if $test `./findhdr sys/file.h` && \
11398                 set try -DI_SYS_FILE && eval $compile; then
11399         h_sysfile=true;
11400         echo "<sys/file.h> defines the O_* constants..." >&4
11401         if $run ./try; then
11402                 echo "and you have the 3 argument form of open()." >&4
11403                 val="$define"
11404         else
11405                 echo "but not the 3 argument form of open().  Oh, well." >&4
11406                 val="$undef"
11407         fi
11408 elif $test `./findhdr fcntl.h` && \
11409                 set try -DI_FCNTL && eval $compile; then
11410         h_fcntl=true;
11411         echo "<fcntl.h> defines the O_* constants..." >&4
11412         if $run ./try; then
11413                 echo "and you have the 3 argument form of open()." >&4
11414                 val="$define"
11415         else
11416                 echo "but not the 3 argument form of open().  Oh, well." >&4
11417                 val="$undef"
11418         fi
11419 else
11420         val="$undef"
11421         echo "I can't find the O_* constant definitions!  You got problems." >&4
11422 fi
11423 set d_open3
11424 eval $setvar
11425 $rm -f try try.*
11426
11427 : see which of string.h or strings.h is needed
11428 echo " "
11429 strings=`./findhdr string.h`
11430 if $test "$strings" && $test -r "$strings"; then
11431         echo "Using <string.h> instead of <strings.h>." >&4
11432         val="$define"
11433 else
11434         val="$undef"
11435         strings=`./findhdr strings.h`
11436         if $test "$strings" && $test -r "$strings"; then
11437                 echo "Using <strings.h> instead of <string.h>." >&4
11438         else
11439                 echo "No string header found -- You'll surely have problems." >&4
11440         fi
11441 fi
11442 set i_string
11443 eval $setvar
11444 case "$i_string" in
11445 "$undef") strings=`./findhdr strings.h`;;
11446 *)        strings=`./findhdr string.h`;;
11447 esac
11448
11449 : see if this is a sys/file.h system
11450 val=''
11451 set sys/file.h val
11452 eval $inhdr
11453
11454 : do we need to include sys/file.h ?
11455 case "$val" in
11456 "$define")
11457         echo " "
11458         if $h_sysfile; then
11459                 val="$define"
11460                 echo "We'll be including <sys/file.h>." >&4
11461         else
11462                 val="$undef"
11463                 echo "We won't be including <sys/file.h>." >&4
11464         fi
11465         ;;
11466 *)
11467         h_sysfile=false
11468         ;;
11469 esac
11470 set i_sysfile
11471 eval $setvar
11472
11473 : see if fcntl.h is there
11474 val=''
11475 set fcntl.h val
11476 eval $inhdr
11477
11478 : see if we can include fcntl.h
11479 case "$val" in
11480 "$define")
11481         echo " "
11482         if $h_fcntl; then
11483                 val="$define"
11484                 echo "We'll be including <fcntl.h>." >&4
11485         else
11486                 val="$undef"
11487                 if $h_sysfile; then
11488         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11489                 else
11490                         echo "We won't be including <fcntl.h>." >&4
11491                 fi
11492         fi
11493         ;;
11494 *)
11495         h_fcntl=false
11496         val="$undef"
11497         ;;
11498 esac
11499 set i_fcntl
11500 eval $setvar
11501
11502 : check for non-blocking I/O stuff
11503 case "$h_sysfile" in
11504 true) echo "#include <sys/file.h>" > head.c;;
11505 *)
11506        case "$h_fcntl" in
11507        true) echo "#include <fcntl.h>" > head.c;;
11508        *) echo "#include <sys/fcntl.h>" > head.c;;
11509        esac
11510        ;;
11511 esac
11512 echo " "
11513 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11514 case "$o_nonblock" in
11515 '')
11516         $cat head.c > try.c
11517         $cat >>try.c <<EOCP
11518 #include <stdio.h>
11519 #$i_stdlib I_STDLIB
11520 #ifdef I_STDLIB
11521 #include <stdlib.h>
11522 #endif
11523 #$i_fcntl I_FCNTL
11524 #ifdef I_FCNTL
11525 #include <fcntl.h>
11526 #endif
11527 int main() {
11528 #ifdef O_NONBLOCK
11529         printf("O_NONBLOCK\n");
11530         exit(0);
11531 #endif
11532 #ifdef O_NDELAY
11533         printf("O_NDELAY\n");
11534         exit(0);
11535 #endif
11536 #ifdef FNDELAY
11537         printf("FNDELAY\n");
11538         exit(0);
11539 #endif
11540         exit(0);
11541 }
11542 EOCP
11543         set try
11544         if eval $compile_ok; then
11545                 o_nonblock=`$run ./try`
11546                 case "$o_nonblock" in
11547                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11548                 *) echo "Seems like we can use $o_nonblock.";;
11549                 esac
11550         else
11551                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11552         fi
11553         ;;
11554 *) echo "Using $hint value $o_nonblock.";;
11555 esac
11556 $rm -f try try.* .out core
11557
11558 echo " "
11559 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11560 case "$eagain" in
11561 '')
11562         $cat head.c > try.c
11563         $cat >>try.c <<EOCP
11564 #include <errno.h>
11565 #include <sys/types.h>
11566 #include <signal.h>
11567 #include <stdio.h> 
11568 #$i_stdlib I_STDLIB
11569 #ifdef I_STDLIB
11570 #include <stdlib.h>
11571 #endif
11572 #$i_fcntl I_FCNTL
11573 #ifdef I_FCNTL
11574 #include <fcntl.h>
11575 #endif
11576 #define MY_O_NONBLOCK $o_nonblock
11577 #ifndef errno  /* XXX need better Configure test */
11578 extern int errno;
11579 #endif
11580 #$i_unistd I_UNISTD
11581 #ifdef I_UNISTD
11582 #include <unistd.h>
11583 #endif
11584 #$i_string I_STRING
11585 #ifdef I_STRING
11586 #include <string.h>
11587 #else
11588 #include <strings.h>
11589 #endif
11590 $signal_t blech(x) int x; { exit(3); }
11591 EOCP
11592         $cat >> try.c <<'EOCP'
11593 int main()
11594 {
11595         int pd[2];
11596         int pu[2];
11597         char buf[1];
11598         char string[100];
11599
11600         pipe(pd);       /* Down: child -> parent */
11601         pipe(pu);       /* Up: parent -> child */
11602         if (0 != fork()) {
11603                 int ret;
11604                 close(pd[1]);   /* Parent reads from pd[0] */
11605                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11606 #ifdef F_SETFL
11607                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11608                         exit(1);
11609 #else
11610                 exit(4);
11611 #endif
11612                 signal(SIGALRM, blech);
11613                 alarm(5);
11614                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11615                         exit(2);
11616                 sprintf(string, "%d\n", ret);
11617                 write(2, string, strlen(string));
11618                 alarm(0);
11619 #ifdef EAGAIN
11620                 if (errno == EAGAIN) {
11621                         printf("EAGAIN\n");
11622                         goto ok;
11623                 }
11624 #endif
11625 #ifdef EWOULDBLOCK
11626                 if (errno == EWOULDBLOCK)
11627                         printf("EWOULDBLOCK\n");
11628 #endif
11629         ok:
11630                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11631                 sleep(2);                               /* Give it time to close our pipe */
11632                 alarm(5);
11633                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11634                 alarm(0);
11635                 sprintf(string, "%d\n", ret);
11636                 write(4, string, strlen(string));
11637                 exit(0);
11638         }
11639
11640         close(pd[0]);                   /* We write to pd[1] */
11641         close(pu[1]);                   /* We read from pu[0] */
11642         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11643         close(pd[1]);                   /* Pipe pd is now fully closed! */
11644         exit(0);                                /* Bye bye, thank you for playing! */
11645 }
11646 EOCP
11647         set try
11648         if eval $compile_ok; then
11649                 echo "$startsh" >mtry
11650                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11651                 chmod +x mtry
11652                 ./mtry >/dev/null 2>&1
11653                 case $? in
11654                 0) eagain=`$cat try.out`;;
11655                 1) echo "Could not perform non-blocking setting!";;
11656                 2) echo "I did a successful read() for something that was not there!";;
11657                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11658                 4) echo "Could not find F_SETFL!";;
11659                 *) echo "Something terribly wrong happened during testing.";;
11660                 esac
11661                 rd_nodata=`$cat try.ret`
11662                 echo "A read() system call with no data present returns $rd_nodata."
11663                 case "$rd_nodata" in
11664                 0|-1) ;;
11665                 *)
11666                         echo "(That's peculiar, fixing that to be -1.)"
11667                         rd_nodata=-1
11668                         ;;
11669                 esac
11670                 case "$eagain" in
11671                 '')
11672                         echo "Forcing errno EAGAIN on read() with no data available."
11673                         eagain=EAGAIN
11674                         ;;
11675                 *)
11676                         echo "Your read() sets errno to $eagain when no data is available."
11677                         ;;
11678                 esac
11679                 status=`$cat try.err`
11680                 case "$status" in
11681                 0) echo "And it correctly returns 0 to signal EOF.";;
11682                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11683                 *) echo "However, your read() returns '$status' on EOF??";;
11684                 esac
11685                 val="$define"
11686                 if test "$status" = "$rd_nodata"; then
11687                         echo "WARNING: you can't distinguish between EOF and no data!"
11688                         val="$undef"
11689                 fi
11690         else
11691                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11692                 eagain=EAGAIN
11693         fi
11694         set d_eofnblk
11695         eval $setvar
11696         ;;
11697 *)
11698         echo "Using $hint value $eagain."
11699         echo "Your read() returns $rd_nodata when no data is present."
11700         case "$d_eofnblk" in
11701         "$define") echo "And you can see EOF because read() returns 0.";;
11702         "$undef") echo "But you can't see EOF status from read() returned value.";;
11703         *)
11704                 echo "(Assuming you can't see EOF status from read anyway.)"
11705                 d_eofnblk=$undef
11706                 ;;
11707         esac
11708         ;;
11709 esac
11710 $rm -f try try.* .out core head.c mtry
11711
11712 : see if _ptr and _cnt from stdio act std
11713 echo " "
11714
11715 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11716         echo "(Looks like you have stdio.h from BSD.)"
11717         case "$stdio_ptr" in
11718         '') stdio_ptr='((fp)->_p)'
11719                 ptr_lval=$define
11720                 ;;
11721         *)      ptr_lval=$d_stdio_ptr_lval;;
11722         esac
11723         case "$stdio_cnt" in
11724         '') stdio_cnt='((fp)->_r)'
11725                 cnt_lval=$define
11726                 ;;
11727         *)      cnt_lval=$d_stdio_cnt_lval;;
11728         esac
11729         case "$stdio_base" in
11730         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11731         esac
11732         case "$stdio_bufsiz" in
11733         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11734         esac
11735 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11736         echo "(Looks like you have stdio.h from Linux.)"
11737         case "$stdio_ptr" in
11738         '') stdio_ptr='((fp)->_IO_read_ptr)'
11739                 ptr_lval=$define
11740                 ;;
11741         *)      ptr_lval=$d_stdio_ptr_lval;;
11742         esac
11743         case "$stdio_cnt" in
11744         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11745                 cnt_lval=$undef
11746                 ;;
11747         *)      cnt_lval=$d_stdio_cnt_lval;;
11748         esac
11749         case "$stdio_base" in
11750         '') stdio_base='((fp)->_IO_read_base)';;
11751         esac
11752         case "$stdio_bufsiz" in
11753         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11754         esac
11755 else
11756         case "$stdio_ptr" in
11757         '') stdio_ptr='((fp)->_ptr)'
11758                 ptr_lval=$define
11759                 ;;
11760         *)      ptr_lval=$d_stdio_ptr_lval;;
11761         esac
11762         case "$stdio_cnt" in
11763         '') stdio_cnt='((fp)->_cnt)'
11764                 cnt_lval=$define
11765                 ;;
11766         *)      cnt_lval=$d_stdio_cnt_lval;;
11767         esac
11768         case "$stdio_base" in
11769         '') stdio_base='((fp)->_base)';;
11770         esac
11771         case "$stdio_bufsiz" in
11772         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11773         esac
11774 fi
11775
11776 : test whether _ptr and _cnt really work
11777 echo "Checking how std your stdio is..." >&4
11778 $cat >try.c <<EOP
11779 #include <stdio.h>
11780 #$i_stdlib I_STDLIB
11781 #ifdef I_STDLIB
11782 #include <stdlib.h>
11783 #endif
11784 #define FILE_ptr(fp)    $stdio_ptr
11785 #define FILE_cnt(fp)    $stdio_cnt
11786 int main() {
11787         FILE *fp = fopen("try.c", "r");
11788         char c = getc(fp);
11789         if (
11790                 18 <= FILE_cnt(fp) &&
11791                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11792         )
11793                 exit(0);
11794         exit(1);
11795 }
11796 EOP
11797 val="$undef"
11798 set try
11799 if eval $compile && $to try.c; then
11800         if $run ./try; then
11801                 echo "Your stdio acts pretty std."
11802                 val="$define"
11803         else
11804                 echo "Your stdio isn't very std."
11805         fi
11806 else
11807         echo "Your stdio doesn't appear very std."
11808 fi
11809 $rm -f try.c try
11810
11811 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11812 # direct buffer manipulation no longer works.  The Configure tests
11813 # should be changed to correctly detect this, but until then,
11814 # the following check should at least let perl compile and run.
11815 # (This quick fix should be updated before 5.8.1.)
11816 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11817 # A. Dougherty, June 3, 2002.
11818 case "$d_gnulibc" in
11819 $define)
11820         case "$gnulibc_version" in
11821         2.[01]*)  ;;
11822         2.2) ;;
11823         2.2.[0-9]) ;;
11824         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11825                 val="$undef"
11826                 ;;
11827         esac
11828         ;;
11829 esac
11830 set d_stdstdio
11831 eval $setvar
11832
11833 : Can _ptr be used as an lvalue?
11834 case "$d_stdstdio$ptr_lval" in
11835 $define$define) val=$define ;;
11836 *) val=$undef ;;
11837 esac
11838 set d_stdio_ptr_lval
11839 eval $setvar
11840
11841 : Can _cnt be used as an lvalue?
11842 case "$d_stdstdio$cnt_lval" in
11843 $define$define) val=$define ;;
11844 *) val=$undef ;;
11845 esac
11846 set d_stdio_cnt_lval
11847 eval $setvar
11848
11849
11850 : test whether setting _ptr sets _cnt as a side effect
11851 d_stdio_ptr_lval_sets_cnt="$undef"
11852 d_stdio_ptr_lval_nochange_cnt="$undef"
11853 case "$d_stdio_ptr_lval$d_stdstdio" in
11854 $define$define)
11855         echo "Checking to see what happens if we set the stdio ptr..." >&4
11856 $cat >try.c <<EOP
11857 #include <stdio.h>
11858 /* Can we scream? */
11859 /* Eat dust sed :-) */
11860 /* In the buffer space, no one can hear you scream. */
11861 #$i_stdlib I_STDLIB
11862 #ifdef I_STDLIB
11863 #include <stdlib.h>
11864 #endif
11865 #define FILE_ptr(fp)    $stdio_ptr
11866 #define FILE_cnt(fp)    $stdio_cnt
11867 #include <sys/types.h>
11868 int main() {
11869         FILE *fp = fopen("try.c", "r");
11870         int c;
11871         char *ptr;
11872         size_t cnt;
11873         if (!fp) {
11874             puts("Fail even to read");
11875             exit(1);
11876         }
11877         c = getc(fp); /* Read away the first # */
11878         if (c == EOF) {
11879             puts("Fail even to read");
11880             exit(1);
11881         }
11882         if (!(
11883                 18 <= FILE_cnt(fp) &&
11884                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11885         )) {
11886                 puts("Fail even to read");
11887                 exit (1);
11888         }
11889         ptr = (char*) FILE_ptr(fp);
11890         cnt = (size_t)FILE_cnt(fp);
11891
11892         FILE_ptr(fp) += 42;
11893
11894         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11895                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11896                 exit (1);
11897         }
11898         if (FILE_cnt(fp) <= 20) {
11899                 printf ("Fail (<20 chars to test)");
11900                 exit (1);
11901         }
11902         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11903                 puts("Fail compare");
11904                 exit (1);
11905         }
11906         if (cnt == FILE_cnt(fp)) {
11907                 puts("Pass_unchanged");
11908                 exit (0);
11909         }       
11910         if (FILE_cnt(fp) == (cnt - 42)) {
11911                 puts("Pass_changed");
11912                 exit (0);
11913         }
11914         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11915         return 1;
11916
11917 }
11918 EOP
11919         set try
11920         if eval $compile && $to try.c; then
11921                 case `$run ./try` in
11922                 Pass_changed)
11923                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11924                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11925                 Pass_unchanged)
11926                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11927                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11928                 Fail*)
11929                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11930                 *)
11931                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11932         esac
11933         else
11934                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11935         fi
11936         $rm -f try.c try
11937         ;;
11938 esac
11939
11940 : see if _base is also standard
11941 val="$undef"
11942 case "$d_stdstdio" in
11943 $define)
11944         $cat >try.c <<EOP
11945 #include <stdio.h>
11946 #$i_stdlib I_STDLIB
11947 #ifdef I_STDLIB
11948 #include <stdlib.h>
11949 #endif
11950 #define FILE_base(fp)   $stdio_base
11951 #define FILE_bufsiz(fp) $stdio_bufsiz
11952 int main() {
11953         FILE *fp = fopen("try.c", "r");
11954         char c = getc(fp);
11955         if (
11956                 19 <= FILE_bufsiz(fp) &&
11957                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11958         )
11959                 exit(0);
11960         exit(1);
11961 }
11962 EOP
11963         set try
11964         if eval $compile && $to try.c; then
11965                 if $run ./try; then
11966                         echo "And its _base field acts std."
11967                         val="$define"
11968                 else
11969                         echo "But its _base field isn't std."
11970                 fi
11971         else
11972                 echo "However, it seems to be lacking the _base field."
11973         fi
11974         $rm -f try.c try
11975         ;;
11976 esac
11977 set d_stdiobase
11978 eval $setvar
11979
11980 : see if fast_stdio exists
11981 val="$undef"
11982 case "$d_stdstdio:$d_stdio_ptr_lval" in
11983 "$define:$define")
11984         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11985         *$define*)
11986                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11987                 val="$define"
11988                 ;;
11989         esac
11990         ;;
11991 esac
11992 set d_faststdio
11993 eval $setvar
11994
11995
11996
11997 : see if fchdir exists
11998 set fchdir d_fchdir
11999 eval $inlibc
12000
12001 : see if fchmod exists
12002 set fchmod d_fchmod
12003 eval $inlibc
12004
12005 : see if fchown exists
12006 set fchown d_fchown
12007 eval $inlibc
12008
12009 : see if this is an fcntl system
12010 set fcntl d_fcntl
12011 eval $inlibc
12012
12013 echo " "
12014 : See if fcntl-based locking works.
12015 $cat >try.c <<EOCP
12016 #$i_stdlib I_STDLIB
12017 #ifdef I_STDLIB
12018 #include <stdlib.h>
12019 #endif
12020 #include <unistd.h>
12021 #include <fcntl.h>
12022 #include <signal.h>
12023 $signal_t blech(x) int x; { exit(3); }
12024 int main() {
12025 #if defined(F_SETLK) && defined(F_SETLKW)
12026      struct flock flock;
12027      int retval, fd;
12028      fd = open("try.c", O_RDONLY);
12029      flock.l_type = F_RDLCK;
12030      flock.l_whence = SEEK_SET;
12031      flock.l_start = flock.l_len = 0;
12032      signal(SIGALRM, blech);
12033      alarm(10);
12034      retval = fcntl(fd, F_SETLK, &flock);
12035      close(fd);
12036      (retval < 0 ? exit(2) : exit(0));
12037 #else
12038      exit(2);
12039 #endif
12040 }
12041 EOCP
12042 echo "Checking if fcntl-based file locking works... "
12043 case "$d_fcntl" in
12044 "$define")
12045         set try
12046         if eval $compile_ok; then
12047                 if $run ./try; then
12048                         echo "Yes, it seems to work."
12049                         val="$define"
12050                 else
12051                         echo "Nope, it didn't work."
12052                         val="$undef"
12053                         case "$?" in
12054                         3) $cat >&4 <<EOM
12055 ***
12056 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12057 *** This is (almost) impossible.
12058 *** If your NFS lock daemons are not feeling well, something like
12059 *** this may happen, please investigate.  Cannot continue, aborting.
12060 ***
12061 EOM
12062                                 exit 1
12063                                 ;;
12064                         esac
12065                 fi
12066         else
12067                 echo "I'm unable to compile the test program, so I'll assume not."
12068                 val="$undef"
12069         fi
12070         ;;
12071 *) val="$undef";
12072         echo "Nope, since you don't even have fcntl()."
12073         ;;
12074 esac
12075 set d_fcntl_can_lock
12076 eval $setvar
12077 $rm -f try*
12078
12079
12080 : check for fd_set items
12081 $cat <<EOM
12082
12083 Checking to see how well your C compiler handles fd_set and friends ...
12084 EOM
12085 $cat >try.c <<EOCP
12086 #$i_stdlib I_STDLIB
12087 #ifdef I_STDLIB
12088 #include <stdlib.h>
12089 #endif
12090 #$i_systime I_SYS_TIME
12091 #$i_sysselct I_SYS_SELECT
12092 #$d_socket HAS_SOCKET
12093 #include <sys/types.h>
12094 #ifdef HAS_SOCKET
12095 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12096 #endif
12097 #ifdef I_SYS_TIME
12098 #include <sys/time.h>
12099 #endif
12100 #ifdef I_SYS_SELECT
12101 #include <sys/select.h>
12102 #endif
12103 int main() {
12104         fd_set fds;
12105
12106 #ifdef TRYBITS
12107         if(fds.fds_bits);
12108 #endif
12109
12110 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12111         exit(0);
12112 #else
12113         exit(1);
12114 #endif
12115 }
12116 EOCP
12117 set try -DTRYBITS
12118 if eval $compile; then
12119         d_fds_bits="$define"
12120         d_fd_set="$define"
12121         echo "Well, your system knows about the normal fd_set typedef..." >&4
12122         if $run ./try; then
12123                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12124                 d_fd_macros="$define"
12125         else
12126                 $cat >&4 <<'EOM'
12127 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12128 EOM
12129                 d_fd_macros="$undef"
12130         fi
12131 else
12132         $cat <<'EOM'
12133 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12134 EOM
12135         set try
12136         if eval $compile; then
12137                 d_fds_bits="$undef"
12138                 d_fd_set="$define"
12139                 echo "Well, your system has some sort of fd_set available..." >&4
12140                 if $run ./try; then
12141                         echo "and you have the normal fd_set macros." >&4
12142                         d_fd_macros="$define"
12143                 else
12144                         $cat <<'EOM'
12145 but not the normal fd_set macros!  Gross!  More work for me...
12146 EOM
12147                         d_fd_macros="$undef"
12148                 fi
12149         else
12150         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12151                 d_fd_set="$undef"
12152                 d_fds_bits="$undef"
12153                 d_fd_macros="$undef"
12154         fi
12155 fi
12156 $rm -f try try.*
12157
12158 : see if fgetpos exists
12159 set fgetpos d_fgetpos
12160 eval $inlibc
12161
12162 : see if finite exists
12163 set finite d_finite
12164 eval $inlibc
12165
12166 : see if finitel exists
12167 set finitel d_finitel
12168 eval $inlibc
12169
12170 : see if flock exists
12171 set flock d_flock
12172 eval $inlibc
12173
12174 : see if prototype for flock is available
12175 echo " "
12176 set d_flockproto flock $i_sysfile sys/file.h
12177 eval $hasproto
12178
12179 : see if fork exists
12180 set fork d_fork
12181 eval $inlibc
12182
12183 : see if fp_class exists
12184 set fp_class d_fp_class
12185 eval $inlibc
12186
12187 : see if pathconf exists
12188 set pathconf d_pathconf
12189 eval $inlibc
12190
12191 : see if fpathconf exists
12192 set fpathconf d_fpathconf
12193 eval $inlibc
12194
12195 : see if fpclass exists
12196 set fpclass d_fpclass
12197 eval $inlibc
12198
12199 : see if fpclassify exists
12200 set fpclassify d_fpclassify
12201 eval $inlibc
12202
12203 : see if fpclassl exists
12204 set fpclassl d_fpclassl
12205 eval $inlibc
12206
12207
12208 : check for fpos64_t
12209 echo " "
12210 echo "Checking to see if you have fpos64_t..." >&4
12211 $cat >try.c <<EOCP
12212 #include <stdio.h>
12213 int main() { fpos64_t x = 7; }
12214 EOCP
12215 set try
12216 if eval $compile; then
12217         val="$define"
12218         echo "You have fpos64_t."
12219 else
12220         val="$undef"
12221         echo "You do not have fpos64_t."
12222         case "$fpossize" in
12223         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12224         esac
12225 fi
12226 $rm -f try.* try
12227 set d_fpos64_t
12228 eval $setvar
12229
12230 : see if frexpl exists
12231 set frexpl d_frexpl
12232 eval $inlibc
12233
12234 : see if this is a sys/param system
12235 set sys/param.h i_sysparam
12236 eval $inhdr
12237
12238 : see if this is a sys/mount.h system
12239 set sys/mount.h i_sysmount
12240 eval $inhdr
12241
12242
12243 echo " "
12244 echo "Checking to see if your system supports struct fs_data..." >&4
12245 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12246 eval $hasstruct
12247 case "$d_fs_data_s" in
12248 "$define")      echo "Yes, it does."   ;;
12249 *)              echo "No, it doesn't." ;;
12250 esac
12251
12252 : see if fseeko exists
12253 set fseeko d_fseeko
12254 eval $inlibc
12255 case "$longsize" in
12256 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12257 esac
12258
12259 : see if fsetpos exists
12260 set fsetpos d_fsetpos
12261 eval $inlibc
12262
12263
12264 : see if fstatfs exists
12265 set fstatfs d_fstatfs
12266 eval $inlibc
12267
12268
12269 : see if statvfs exists
12270 set statvfs d_statvfs
12271 eval $inlibc
12272
12273 : see if fstatvfs exists
12274 set fstatvfs d_fstatvfs
12275 eval $inlibc
12276
12277
12278 : see if fsync exists
12279 set fsync d_fsync
12280 eval $inlibc
12281
12282 : see if ftello exists
12283 set ftello d_ftello
12284 eval $inlibc
12285 case "$longsize" in
12286 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12287 esac
12288
12289 : see if getcwd exists
12290 set getcwd d_getcwd
12291 eval $inlibc
12292
12293 : see if getespwnam exists
12294 set getespwnam d_getespwnam
12295 eval $inlibc
12296
12297
12298 : see if getfsstat exists
12299 set getfsstat d_getfsstat
12300 eval $inlibc
12301
12302 : see if getgrent exists
12303 set getgrent d_getgrent
12304 eval $inlibc
12305
12306 : see if getgrent_r exists
12307 set getgrent_r d_getgrent_r
12308 eval $inlibc
12309 case "$d_getgrent_r" in
12310 "$define")
12311         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12312         case "$d_getgrent_r_proto:$usethreads" in
12313         ":define")      d_getgrent_r_proto=define
12314                 set d_getgrent_r_proto getgrent_r $hdrs
12315                 eval $hasproto ;;
12316         *)      ;;
12317         esac
12318         case "$d_getgrent_r_proto" in
12319         define)
12320         case "$getgrent_r_proto" in
12321         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12322         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12323         esac
12324         case "$getgrent_r_proto" in
12325         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12326         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12327         esac
12328         case "$getgrent_r_proto" in
12329         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12330         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12331         esac
12332         case "$getgrent_r_proto" in
12333         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12334         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12335         esac
12336         case "$getgrent_r_proto" in
12337         ''|0) try='int getgrent_r(struct group*, char*, int);'
12338         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12339         esac
12340         case "$getgrent_r_proto" in
12341         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12342         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12343         esac
12344         case "$getgrent_r_proto" in
12345         ''|0)   d_getgrent_r=undef
12346                 getgrent_r_proto=0
12347                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12348         * )     case "$getgrent_r_proto" in
12349                 REENTRANT_PROTO*) ;;
12350                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12351                 esac
12352                 echo "Prototype: $try" ;;
12353         esac
12354         ;;
12355         *)      case "$usethreads" in
12356                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12357                 esac
12358                 d_getgrent_r=undef
12359                 getgrent_r_proto=0
12360                 ;;
12361         esac
12362         ;;
12363 *)      getgrent_r_proto=0
12364         ;;
12365 esac
12366
12367 : see if getgrgid_r exists
12368 set getgrgid_r d_getgrgid_r
12369 eval $inlibc
12370 case "$d_getgrgid_r" in
12371 "$define")
12372         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12373         case "$d_getgrgid_r_proto:$usethreads" in
12374         ":define")      d_getgrgid_r_proto=define
12375                 set d_getgrgid_r_proto getgrgid_r $hdrs
12376                 eval $hasproto ;;
12377         *)      ;;
12378         esac
12379         case "$d_getgrgid_r_proto" in
12380         define)
12381         case "$getgrgid_r_proto" in
12382         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12383         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12384         esac
12385         case "$getgrgid_r_proto" in
12386         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12387         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12388         esac
12389         case "$getgrgid_r_proto" in
12390         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12391         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12392         esac
12393         case "$getgrgid_r_proto" in
12394         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12395         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12396         esac
12397         case "$getgrgid_r_proto" in
12398         ''|0)   d_getgrgid_r=undef
12399                 getgrgid_r_proto=0
12400                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12401         * )     case "$getgrgid_r_proto" in
12402                 REENTRANT_PROTO*) ;;
12403                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12404                 esac
12405                 echo "Prototype: $try" ;;
12406         esac
12407         ;;
12408         *)      case "$usethreads" in
12409                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12410                 esac
12411                 d_getgrgid_r=undef
12412                 getgrgid_r_proto=0
12413                 ;;
12414         esac
12415         ;;
12416 *)      getgrgid_r_proto=0
12417         ;;
12418 esac
12419
12420 : see if getgrnam_r exists
12421 set getgrnam_r d_getgrnam_r
12422 eval $inlibc
12423 case "$d_getgrnam_r" in
12424 "$define")
12425         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12426         case "$d_getgrnam_r_proto:$usethreads" in
12427         ":define")      d_getgrnam_r_proto=define
12428                 set d_getgrnam_r_proto getgrnam_r $hdrs
12429                 eval $hasproto ;;
12430         *)      ;;
12431         esac
12432         case "$d_getgrnam_r_proto" in
12433         define)
12434         case "$getgrnam_r_proto" in
12435         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12436         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12437         esac
12438         case "$getgrnam_r_proto" in
12439         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12440         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12441         esac
12442         case "$getgrnam_r_proto" in
12443         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12444         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12445         esac
12446         case "$getgrnam_r_proto" in
12447         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12448         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12449         esac
12450         case "$getgrnam_r_proto" in
12451         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12452         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12453         esac
12454         case "$getgrnam_r_proto" in
12455         ''|0)   d_getgrnam_r=undef
12456                 getgrnam_r_proto=0
12457                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12458         * )     case "$getgrnam_r_proto" in
12459                 REENTRANT_PROTO*) ;;
12460                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12461                 esac
12462                 echo "Prototype: $try" ;;
12463         esac
12464         ;;
12465         *)      case "$usethreads" in
12466                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12467                 esac
12468                 d_getgrnam_r=undef
12469                 getgrnam_r_proto=0
12470                 ;;
12471         esac
12472         ;;
12473 *)      getgrnam_r_proto=0
12474         ;;
12475 esac
12476
12477 : see if gethostbyaddr exists
12478 set gethostbyaddr d_gethbyaddr
12479 eval $inlibc
12480
12481 : see if gethostbyname exists
12482 set gethostbyname d_gethbyname
12483 eval $inlibc
12484
12485 : see if gethostent exists
12486 set gethostent d_gethent
12487 eval $inlibc
12488
12489 : see how we will look up host name
12490 echo " "
12491 call=''
12492 if set gethostname val -f d_gethname; eval $csym; $val; then
12493         echo 'gethostname() found.' >&4
12494         d_gethname="$define"
12495         call=gethostname
12496 fi
12497 if set uname val -f d_uname; eval $csym; $val; then
12498         if ./xenix; then
12499                 $cat <<'EOM'
12500 uname() was found, but you're running xenix, and older versions of xenix
12501 have a broken uname(). If you don't really know whether your xenix is old
12502 enough to have a broken system call, use the default answer.
12503
12504 EOM
12505                 dflt=y
12506                 case "$d_uname" in
12507                 "$define") dflt=n;;
12508                 esac
12509                 rp='Is your uname() broken?'
12510                 . ./myread
12511                 case "$ans" in
12512                 n*) d_uname="$define"; call=uname;;
12513                 esac
12514         else
12515                 echo 'uname() found.' >&4
12516                 d_uname="$define"
12517                 case "$call" in
12518                 '') call=uname ;;
12519                 esac
12520         fi
12521 fi
12522 case "$d_gethname" in
12523 '') d_gethname="$undef";;
12524 esac
12525 case "$d_uname" in
12526 '') d_uname="$undef";;
12527 esac
12528 case "$d_uname$d_gethname" in
12529 *define*)
12530         dflt=n
12531         cat <<EOM
12532  
12533 Every now and then someone has a $call() that lies about the hostname
12534 but can't be fixed for political or economic reasons.  If you wish, I can
12535 pretend $call() isn't there and maybe compute hostname at run-time
12536 thanks to the '$phostname' command.
12537
12538 EOM
12539         rp="Shall I ignore $call() from now on?"
12540         . ./myread
12541         case "$ans" in
12542         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12543         esac;;
12544 esac
12545 case "$phostname" in
12546 '') aphostname='';;
12547 *) case "$aphostname" in
12548         /*) ;;
12549         *) set X $phostname
12550                 shift
12551                 file=$1
12552                 shift
12553                 file=`./loc $file $file $pth`
12554                 aphostname=`echo $file $*`
12555                 ;;
12556         esac
12557         ;;
12558 esac
12559 case "$d_uname$d_gethname" in
12560 *define*) ;;
12561 *)
12562         case "$phostname" in
12563         '')
12564                 echo "There will be no way for $package to get your hostname." >&4;;
12565         *)
12566         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12567                 ;;
12568         esac;;
12569 esac
12570 case "$d_phostname" in
12571 '') d_phostname="$undef";;
12572 esac
12573
12574 : see if gethostbyaddr_r exists
12575 set gethostbyaddr_r d_gethostbyaddr_r
12576 eval $inlibc
12577 case "$d_gethostbyaddr_r" in
12578 "$define")
12579         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12580         case "$d_gethostbyaddr_r_proto:$usethreads" in
12581         ":define")      d_gethostbyaddr_r_proto=define
12582                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12583                 eval $hasproto ;;
12584         *)      ;;
12585         esac
12586         case "$d_gethostbyaddr_r_proto" in
12587         define)
12588         case "$gethostbyaddr_r_proto" in
12589         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12590         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12591         esac
12592         case "$gethostbyaddr_r_proto" in
12593         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12594         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12595         esac
12596         case "$gethostbyaddr_r_proto" in
12597         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12598         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12599         esac
12600         case "$gethostbyaddr_r_proto" in
12601         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12602         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12603         esac
12604         case "$gethostbyaddr_r_proto" in
12605         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12606         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12607         esac
12608         case "$gethostbyaddr_r_proto" in
12609         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12610         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12611         esac
12612         case "$gethostbyaddr_r_proto" in
12613         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12614         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12615         esac
12616         case "$gethostbyaddr_r_proto" in
12617         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12618         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12619         esac
12620         case "$gethostbyaddr_r_proto" in
12621         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12622         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12623         esac
12624         case "$gethostbyaddr_r_proto" in
12625         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12626         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12627         esac
12628         case "$gethostbyaddr_r_proto" in
12629         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12630         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12631         esac
12632         case "$gethostbyaddr_r_proto" in
12633         ''|0)   d_gethostbyaddr_r=undef
12634                 gethostbyaddr_r_proto=0
12635                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12636         * )     case "$gethostbyaddr_r_proto" in
12637                 REENTRANT_PROTO*) ;;
12638                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12639                 esac
12640                 echo "Prototype: $try" ;;
12641         esac
12642         ;;
12643         *)      case "$usethreads" in
12644                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12645                 esac
12646                 d_gethostbyaddr_r=undef
12647                 gethostbyaddr_r_proto=0
12648                 ;;
12649         esac
12650         ;;
12651 *)      gethostbyaddr_r_proto=0
12652         ;;
12653 esac
12654
12655 : see if gethostbyname_r exists
12656 set gethostbyname_r d_gethostbyname_r
12657 eval $inlibc
12658 case "$d_gethostbyname_r" in
12659 "$define")
12660         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12661         case "$d_gethostbyname_r_proto:$usethreads" in
12662         ":define")      d_gethostbyname_r_proto=define
12663                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12664                 eval $hasproto ;;
12665         *)      ;;
12666         esac
12667         case "$d_gethostbyname_r_proto" in
12668         define)
12669         case "$gethostbyname_r_proto" in
12670         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12671         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12672         esac
12673         case "$gethostbyname_r_proto" in
12674         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12675         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12676         esac
12677         case "$gethostbyname_r_proto" in
12678         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12679         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12680         esac
12681         case "$gethostbyname_r_proto" in
12682         ''|0)   d_gethostbyname_r=undef
12683                 gethostbyname_r_proto=0
12684                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12685         * )     case "$gethostbyname_r_proto" in
12686                 REENTRANT_PROTO*) ;;
12687                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12688                 esac
12689                 echo "Prototype: $try" ;;
12690         esac
12691         ;;
12692         *)      case "$usethreads" in
12693                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12694                 esac
12695                 d_gethostbyname_r=undef
12696                 gethostbyname_r_proto=0
12697                 ;;
12698         esac
12699         ;;
12700 *)      gethostbyname_r_proto=0
12701         ;;
12702 esac
12703
12704 : see if gethostent_r exists
12705 set gethostent_r d_gethostent_r
12706 eval $inlibc
12707 case "$d_gethostent_r" in
12708 "$define")
12709         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12710         case "$d_gethostent_r_proto:$usethreads" in
12711         ":define")      d_gethostent_r_proto=define
12712                 set d_gethostent_r_proto gethostent_r $hdrs
12713                 eval $hasproto ;;
12714         *)      ;;
12715         esac
12716         case "$d_gethostent_r_proto" in
12717         define)
12718         case "$gethostent_r_proto" in
12719         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12720         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12721         esac
12722         case "$gethostent_r_proto" in
12723         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12724         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12725         esac
12726         case "$gethostent_r_proto" in
12727         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12728         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12729         esac
12730         case "$gethostent_r_proto" in
12731         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12732         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12733         esac
12734         case "$gethostent_r_proto" in
12735         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12736         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12737         esac
12738         case "$gethostent_r_proto" in
12739         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12740         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12741         esac
12742         case "$gethostent_r_proto" in
12743         ''|0)   d_gethostent_r=undef
12744                 gethostent_r_proto=0
12745                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12746         * )     case "$gethostent_r_proto" in
12747                 REENTRANT_PROTO*) ;;
12748                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12749                 esac
12750                 echo "Prototype: $try" ;;
12751         esac
12752         ;;
12753         *)      case "$usethreads" in
12754                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12755                 esac
12756                 d_gethostent_r=undef
12757                 gethostent_r_proto=0
12758                 ;;
12759         esac
12760         ;;
12761 *)      gethostent_r_proto=0
12762         ;;
12763 esac
12764
12765 : see if prototypes for various gethostxxx netdb.h functions are available
12766 echo " "
12767 set d_gethostprotos gethostent $i_netdb netdb.h
12768 eval $hasproto
12769
12770 : see if getitimer exists
12771 set getitimer d_getitimer
12772 eval $inlibc
12773
12774 : see if getlogin exists
12775 set getlogin d_getlogin
12776 eval $inlibc
12777
12778 : see if getlogin_r exists
12779 set getlogin_r d_getlogin_r
12780 eval $inlibc
12781 case "$d_getlogin_r" in
12782 "$define")
12783         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12784         case "$d_getlogin_r_proto:$usethreads" in
12785         ":define")      d_getlogin_r_proto=define
12786                 set d_getlogin_r_proto getlogin_r $hdrs
12787                 eval $hasproto ;;
12788         *)      ;;
12789         esac
12790         case "$d_getlogin_r_proto" in
12791         define)
12792         case "$getlogin_r_proto" in
12793         ''|0) try='int getlogin_r(char*, size_t);'
12794         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12795         esac
12796         case "$getlogin_r_proto" in
12797         ''|0) try='int getlogin_r(char*, int);'
12798         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12799         esac
12800         case "$getlogin_r_proto" in
12801         ''|0) try='char* getlogin_r(char*, size_t);'
12802         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12803         esac
12804         case "$getlogin_r_proto" in
12805         ''|0) try='char* getlogin_r(char*, int);'
12806         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12807         esac
12808         case "$getlogin_r_proto" in
12809         ''|0)   d_getlogin_r=undef
12810                 getlogin_r_proto=0
12811                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12812         * )     case "$getlogin_r_proto" in
12813                 REENTRANT_PROTO*) ;;
12814                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12815                 esac
12816                 echo "Prototype: $try" ;;
12817         esac
12818         ;;
12819         *)      case "$usethreads" in
12820                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12821                 esac
12822                 d_getlogin_r=undef
12823                 getlogin_r_proto=0
12824                 ;;
12825         esac
12826         ;;
12827 *)      getlogin_r_proto=0
12828         ;;
12829 esac
12830
12831 : see if getmnt exists
12832 set getmnt d_getmnt
12833 eval $inlibc
12834
12835 : see if getmntent exists
12836 set getmntent d_getmntent
12837 eval $inlibc
12838
12839 : see if getnetbyaddr exists
12840 set getnetbyaddr d_getnbyaddr
12841 eval $inlibc
12842
12843 : see if getnetbyname exists
12844 set getnetbyname d_getnbyname
12845 eval $inlibc
12846
12847 : see if getnetent exists
12848 set getnetent d_getnent
12849 eval $inlibc
12850
12851 : see if getnetbyaddr_r exists
12852 set getnetbyaddr_r d_getnetbyaddr_r
12853 eval $inlibc
12854 case "$d_getnetbyaddr_r" in
12855 "$define")
12856         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12857         case "$d_getnetbyaddr_r_proto:$usethreads" in
12858         ":define")      d_getnetbyaddr_r_proto=define
12859                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12860                 eval $hasproto ;;
12861         *)      ;;
12862         esac
12863         case "$d_getnetbyaddr_r_proto" in
12864         define)
12865         case "$getnetbyaddr_r_proto" in
12866         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12867         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12868         esac
12869         case "$getnetbyaddr_r_proto" in
12870         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12871         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12872         esac
12873         case "$getnetbyaddr_r_proto" in
12874         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12875         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12876         esac
12877         case "$getnetbyaddr_r_proto" in
12878         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12879         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12880         esac
12881         case "$getnetbyaddr_r_proto" in
12882         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12883         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12884         esac
12885         case "$getnetbyaddr_r_proto" in
12886         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12887         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12888         esac
12889         case "$getnetbyaddr_r_proto" in
12890         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12891         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12892         esac
12893         case "$getnetbyaddr_r_proto" in
12894         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12895         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12896         esac
12897         case "$getnetbyaddr_r_proto" in
12898         ''|0)   d_getnetbyaddr_r=undef
12899                 getnetbyaddr_r_proto=0
12900                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12901         * )     case "$getnetbyaddr_r_proto" in
12902                 REENTRANT_PROTO*) ;;
12903                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12904                 esac
12905                 echo "Prototype: $try" ;;
12906         esac
12907         ;;
12908         *)      case "$usethreads" in
12909                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12910                 esac
12911                 d_getnetbyaddr_r=undef
12912                 getnetbyaddr_r_proto=0
12913                 ;;
12914         esac
12915         ;;
12916 *)      getnetbyaddr_r_proto=0
12917         ;;
12918 esac
12919
12920 : see if getnetbyname_r exists
12921 set getnetbyname_r d_getnetbyname_r
12922 eval $inlibc
12923 case "$d_getnetbyname_r" in
12924 "$define")
12925         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12926         case "$d_getnetbyname_r_proto:$usethreads" in
12927         ":define")      d_getnetbyname_r_proto=define
12928                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12929                 eval $hasproto ;;
12930         *)      ;;
12931         esac
12932         case "$d_getnetbyname_r_proto" in
12933         define)
12934         case "$getnetbyname_r_proto" in
12935         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12936         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12937         esac
12938         case "$getnetbyname_r_proto" in
12939         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12940         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12941         esac
12942         case "$getnetbyname_r_proto" in
12943         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12944         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12945         esac
12946         case "$getnetbyname_r_proto" in
12947         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12948         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12949         esac
12950         case "$getnetbyname_r_proto" in
12951         ''|0)   d_getnetbyname_r=undef
12952                 getnetbyname_r_proto=0
12953                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12954         * )     case "$getnetbyname_r_proto" in
12955                 REENTRANT_PROTO*) ;;
12956                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12957                 esac
12958                 echo "Prototype: $try" ;;
12959         esac
12960         ;;
12961         *)      case "$usethreads" in
12962                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12963                 esac
12964                 d_getnetbyname_r=undef
12965                 getnetbyname_r_proto=0
12966                 ;;
12967         esac
12968         ;;
12969 *)      getnetbyname_r_proto=0
12970         ;;
12971 esac
12972
12973 : see if getnetent_r exists
12974 set getnetent_r d_getnetent_r
12975 eval $inlibc
12976 case "$d_getnetent_r" in
12977 "$define")
12978         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12979         case "$d_getnetent_r_proto:$usethreads" in
12980         ":define")      d_getnetent_r_proto=define
12981                 set d_getnetent_r_proto getnetent_r $hdrs
12982                 eval $hasproto ;;
12983         *)      ;;
12984         esac
12985         case "$d_getnetent_r_proto" in
12986         define)
12987         case "$getnetent_r_proto" in
12988         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12989         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12990         esac
12991         case "$getnetent_r_proto" in
12992         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12993         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12994         esac
12995         case "$getnetent_r_proto" in
12996         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12997         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12998         esac
12999         case "$getnetent_r_proto" in
13000         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13001         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13002         esac
13003         case "$getnetent_r_proto" in
13004         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13005         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13006         esac
13007         case "$getnetent_r_proto" in
13008         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13009         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13010         esac
13011         case "$getnetent_r_proto" in
13012         ''|0)   d_getnetent_r=undef
13013                 getnetent_r_proto=0
13014                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13015         * )     case "$getnetent_r_proto" in
13016                 REENTRANT_PROTO*) ;;
13017                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13018                 esac
13019                 echo "Prototype: $try" ;;
13020         esac
13021         ;;
13022         *)      case "$usethreads" in
13023                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13024                 esac
13025                 d_getnetent_r=undef
13026                 getnetent_r_proto=0
13027                 ;;
13028         esac
13029         ;;
13030 *)      getnetent_r_proto=0
13031         ;;
13032 esac
13033
13034 : see if prototypes for various getnetxxx netdb.h functions are available
13035 echo " "
13036 set d_getnetprotos getnetent $i_netdb netdb.h
13037 eval $hasproto
13038
13039 : see if getpagesize exists
13040 set getpagesize d_getpagsz
13041 eval $inlibc
13042
13043
13044 : see if getprotobyname exists
13045 set getprotobyname d_getpbyname
13046 eval $inlibc
13047
13048 : see if getprotobynumber exists
13049 set getprotobynumber d_getpbynumber
13050 eval $inlibc
13051
13052 : see if getprotoent exists
13053 set getprotoent d_getpent
13054 eval $inlibc
13055
13056 : see if getpgid exists
13057 set getpgid d_getpgid
13058 eval $inlibc
13059
13060 : see if getpgrp2 exists
13061 set getpgrp2 d_getpgrp2
13062 eval $inlibc
13063
13064 : see if getppid exists
13065 set getppid d_getppid
13066 eval $inlibc
13067
13068 : see if getpriority exists
13069 set getpriority d_getprior
13070 eval $inlibc
13071
13072 : see if getprotobyname_r exists
13073 set getprotobyname_r d_getprotobyname_r
13074 eval $inlibc
13075 case "$d_getprotobyname_r" in
13076 "$define")
13077         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13078         case "$d_getprotobyname_r_proto:$usethreads" in
13079         ":define")      d_getprotobyname_r_proto=define
13080                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13081                 eval $hasproto ;;
13082         *)      ;;
13083         esac
13084         case "$d_getprotobyname_r_proto" in
13085         define)
13086         case "$getprotobyname_r_proto" in
13087         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13088         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13089         esac
13090         case "$getprotobyname_r_proto" in
13091         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13092         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13093         esac
13094         case "$getprotobyname_r_proto" in
13095         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13096         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13097         esac
13098         case "$getprotobyname_r_proto" in
13099         ''|0)   d_getprotobyname_r=undef
13100                 getprotobyname_r_proto=0
13101                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13102         * )     case "$getprotobyname_r_proto" in
13103                 REENTRANT_PROTO*) ;;
13104                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13105                 esac
13106                 echo "Prototype: $try" ;;
13107         esac
13108         ;;
13109         *)      case "$usethreads" in
13110                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13111                 esac
13112                 d_getprotobyname_r=undef
13113                 getprotobyname_r_proto=0
13114                 ;;
13115         esac
13116         ;;
13117 *)      getprotobyname_r_proto=0
13118         ;;
13119 esac
13120
13121 : see if getprotobynumber_r exists
13122 set getprotobynumber_r d_getprotobynumber_r
13123 eval $inlibc
13124 case "$d_getprotobynumber_r" in
13125 "$define")
13126         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13127         case "$d_getprotobynumber_r_proto:$usethreads" in
13128         ":define")      d_getprotobynumber_r_proto=define
13129                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13130                 eval $hasproto ;;
13131         *)      ;;
13132         esac
13133         case "$d_getprotobynumber_r_proto" in
13134         define)
13135         case "$getprotobynumber_r_proto" in
13136         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13137         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13138         esac
13139         case "$getprotobynumber_r_proto" in
13140         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13141         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13142         esac
13143         case "$getprotobynumber_r_proto" in
13144         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13145         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13146         esac
13147         case "$getprotobynumber_r_proto" in
13148         ''|0)   d_getprotobynumber_r=undef
13149                 getprotobynumber_r_proto=0
13150                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13151         * )     case "$getprotobynumber_r_proto" in
13152                 REENTRANT_PROTO*) ;;
13153                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13154                 esac
13155                 echo "Prototype: $try" ;;
13156         esac
13157         ;;
13158         *)      case "$usethreads" in
13159                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13160                 esac
13161                 d_getprotobynumber_r=undef
13162                 getprotobynumber_r_proto=0
13163                 ;;
13164         esac
13165         ;;
13166 *)      getprotobynumber_r_proto=0
13167         ;;
13168 esac
13169
13170 : see if getprotoent_r exists
13171 set getprotoent_r d_getprotoent_r
13172 eval $inlibc
13173 case "$d_getprotoent_r" in
13174 "$define")
13175         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13176         case "$d_getprotoent_r_proto:$usethreads" in
13177         ":define")      d_getprotoent_r_proto=define
13178                 set d_getprotoent_r_proto getprotoent_r $hdrs
13179                 eval $hasproto ;;
13180         *)      ;;
13181         esac
13182         case "$d_getprotoent_r_proto" in
13183         define)
13184         case "$getprotoent_r_proto" in
13185         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13186         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13187         esac
13188         case "$getprotoent_r_proto" in
13189         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13190         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13191         esac
13192         case "$getprotoent_r_proto" in
13193         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13194         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13195         esac
13196         case "$getprotoent_r_proto" in
13197         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13198         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13199         esac
13200         case "$getprotoent_r_proto" in
13201         ''|0)   d_getprotoent_r=undef
13202                 getprotoent_r_proto=0
13203                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13204         * )     case "$getprotoent_r_proto" in
13205                 REENTRANT_PROTO*) ;;
13206                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13207                 esac
13208                 echo "Prototype: $try" ;;
13209         esac
13210         ;;
13211         *)      case "$usethreads" in
13212                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13213                 esac
13214                 d_getprotoent_r=undef
13215                 getprotoent_r_proto=0
13216                 ;;
13217         esac
13218         ;;
13219 *)      getprotoent_r_proto=0
13220         ;;
13221 esac
13222
13223 : see if prototypes for various getprotoxxx netdb.h functions are available
13224 echo " "
13225 set d_getprotoprotos getprotoent $i_netdb netdb.h
13226 eval $hasproto
13227
13228 : see if getprpwnam exists
13229 set getprpwnam d_getprpwnam
13230 eval $inlibc
13231
13232 : see if getpwent exists
13233 set getpwent d_getpwent
13234 eval $inlibc
13235
13236 : see if getpwent_r exists
13237 set getpwent_r d_getpwent_r
13238 eval $inlibc
13239 case "$d_getpwent_r" in
13240 "$define")
13241         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13242         case "$d_getpwent_r_proto:$usethreads" in
13243         ":define")      d_getpwent_r_proto=define
13244                 set d_getpwent_r_proto getpwent_r $hdrs
13245                 eval $hasproto ;;
13246         *)      ;;
13247         esac
13248         case "$d_getpwent_r_proto" in
13249         define)
13250         case "$getpwent_r_proto" in
13251         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13252         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13253         esac
13254         case "$getpwent_r_proto" in
13255         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13256         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13257         esac
13258         case "$getpwent_r_proto" in
13259         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13260         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13261         esac
13262         case "$getpwent_r_proto" in
13263         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13264         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13265         esac
13266         case "$getpwent_r_proto" in
13267         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13268         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13269         esac
13270         case "$getpwent_r_proto" in
13271         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13272         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13273         esac
13274         case "$getpwent_r_proto" in
13275         ''|0)   d_getpwent_r=undef
13276                 getpwent_r_proto=0
13277                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13278         * )     case "$getpwent_r_proto" in
13279                 REENTRANT_PROTO*) ;;
13280                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13281                 esac
13282                 echo "Prototype: $try" ;;
13283         esac
13284         ;;
13285         *)      case "$usethreads" in
13286                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13287                 esac
13288                 d_getpwent_r=undef
13289                 getpwent_r_proto=0
13290                 ;;
13291         esac
13292         ;;
13293 *)      getpwent_r_proto=0
13294         ;;
13295 esac
13296
13297 : see if getpwnam_r exists
13298 set getpwnam_r d_getpwnam_r
13299 eval $inlibc
13300 case "$d_getpwnam_r" in
13301 "$define")
13302         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13303         case "$d_getpwnam_r_proto:$usethreads" in
13304         ":define")      d_getpwnam_r_proto=define
13305                 set d_getpwnam_r_proto getpwnam_r $hdrs
13306                 eval $hasproto ;;
13307         *)      ;;
13308         esac
13309         case "$d_getpwnam_r_proto" in
13310         define)
13311         case "$getpwnam_r_proto" in
13312         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13313         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13314         esac
13315         case "$getpwnam_r_proto" in
13316         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13317         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13318         esac
13319         case "$getpwnam_r_proto" in
13320         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13321         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13322         esac
13323         case "$getpwnam_r_proto" in
13324         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13325         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13326         esac
13327         case "$getpwnam_r_proto" in
13328         ''|0)   d_getpwnam_r=undef
13329                 getpwnam_r_proto=0
13330                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13331         * )     case "$getpwnam_r_proto" in
13332                 REENTRANT_PROTO*) ;;
13333                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13334                 esac
13335                 echo "Prototype: $try" ;;
13336         esac
13337         ;;
13338         *)      case "$usethreads" in
13339                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13340                 esac
13341                 d_getpwnam_r=undef
13342                 getpwnam_r_proto=0
13343                 ;;
13344         esac
13345         ;;
13346 *)      getpwnam_r_proto=0
13347         ;;
13348 esac
13349
13350 : see if getpwuid_r exists
13351 set getpwuid_r d_getpwuid_r
13352 eval $inlibc
13353 case "$d_getpwuid_r" in
13354 "$define")
13355         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13356         case "$d_getpwuid_r_proto:$usethreads" in
13357         ":define")      d_getpwuid_r_proto=define
13358                 set d_getpwuid_r_proto getpwuid_r $hdrs
13359                 eval $hasproto ;;
13360         *)      ;;
13361         esac
13362         case "$d_getpwuid_r_proto" in
13363         define)
13364         case "$getpwuid_r_proto" in
13365         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13366         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13367         esac
13368         case "$getpwuid_r_proto" in
13369         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13370         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13371         esac
13372         case "$getpwuid_r_proto" in
13373         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13374         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13375         esac
13376         case "$getpwuid_r_proto" in
13377         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13378         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13379         esac
13380         case "$getpwuid_r_proto" in
13381         ''|0)   d_getpwuid_r=undef
13382                 getpwuid_r_proto=0
13383                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13384         * )     case "$getpwuid_r_proto" in
13385                 REENTRANT_PROTO*) ;;
13386                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13387                 esac
13388                 echo "Prototype: $try" ;;
13389         esac
13390         ;;
13391         *)      case "$usethreads" in
13392                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13393                 esac
13394                 d_getpwuid_r=undef
13395                 getpwuid_r_proto=0
13396                 ;;
13397         esac
13398         ;;
13399 *)      getpwuid_r_proto=0
13400         ;;
13401 esac
13402
13403
13404 : see if getservbyname exists
13405 set getservbyname d_getsbyname
13406 eval $inlibc
13407
13408 : see if getservbyport exists
13409 set getservbyport d_getsbyport
13410 eval $inlibc
13411
13412 : see if getservent exists
13413 set getservent d_getsent
13414 eval $inlibc
13415
13416 : see if getservbyname_r exists
13417 set getservbyname_r d_getservbyname_r
13418 eval $inlibc
13419 case "$d_getservbyname_r" in
13420 "$define")
13421         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13422         case "$d_getservbyname_r_proto:$usethreads" in
13423         ":define")      d_getservbyname_r_proto=define
13424                 set d_getservbyname_r_proto getservbyname_r $hdrs
13425                 eval $hasproto ;;
13426         *)      ;;
13427         esac
13428         case "$d_getservbyname_r_proto" in
13429         define)
13430         case "$getservbyname_r_proto" in
13431         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13432         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13433         esac
13434         case "$getservbyname_r_proto" in
13435         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13436         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13437         esac
13438         case "$getservbyname_r_proto" in
13439         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13440         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13441         esac
13442         case "$getservbyname_r_proto" in
13443         ''|0)   d_getservbyname_r=undef
13444                 getservbyname_r_proto=0
13445                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13446         * )     case "$getservbyname_r_proto" in
13447                 REENTRANT_PROTO*) ;;
13448                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13449                 esac
13450                 echo "Prototype: $try" ;;
13451         esac
13452         ;;
13453         *)      case "$usethreads" in
13454                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13455                 esac
13456                 d_getservbyname_r=undef
13457                 getservbyname_r_proto=0
13458                 ;;
13459         esac
13460         ;;
13461 *)      getservbyname_r_proto=0
13462         ;;
13463 esac
13464
13465 : see if getservbyport_r exists
13466 set getservbyport_r d_getservbyport_r
13467 eval $inlibc
13468 case "$d_getservbyport_r" in
13469 "$define")
13470         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13471         case "$d_getservbyport_r_proto:$usethreads" in
13472         ":define")      d_getservbyport_r_proto=define
13473                 set d_getservbyport_r_proto getservbyport_r $hdrs
13474                 eval $hasproto ;;
13475         *)      ;;
13476         esac
13477         case "$d_getservbyport_r_proto" in
13478         define)
13479         case "$getservbyport_r_proto" in
13480         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13481         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13482         esac
13483         case "$getservbyport_r_proto" in
13484         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13485         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13486         esac
13487         case "$getservbyport_r_proto" in
13488         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13489         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13490         esac
13491         case "$getservbyport_r_proto" in
13492         ''|0)   d_getservbyport_r=undef
13493                 getservbyport_r_proto=0
13494                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13495         * )     case "$getservbyport_r_proto" in
13496                 REENTRANT_PROTO*) ;;
13497                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13498                 esac
13499                 echo "Prototype: $try" ;;
13500         esac
13501         ;;
13502         *)      case "$usethreads" in
13503                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13504                 esac
13505                 d_getservbyport_r=undef
13506                 getservbyport_r_proto=0
13507                 ;;
13508         esac
13509         ;;
13510 *)      getservbyport_r_proto=0
13511         ;;
13512 esac
13513
13514 : see if getservent_r exists
13515 set getservent_r d_getservent_r
13516 eval $inlibc
13517 case "$d_getservent_r" in
13518 "$define")
13519         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13520         case "$d_getservent_r_proto:$usethreads" in
13521         ":define")      d_getservent_r_proto=define
13522                 set d_getservent_r_proto getservent_r $hdrs
13523                 eval $hasproto ;;
13524         *)      ;;
13525         esac
13526         case "$d_getservent_r_proto" in
13527         define)
13528         case "$getservent_r_proto" in
13529         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13530         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13531         esac
13532         case "$getservent_r_proto" in
13533         ''|0) try='int getservent_r(struct servent*, char*, int);'
13534         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13535         esac
13536         case "$getservent_r_proto" in
13537         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13538         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13539         esac
13540         case "$getservent_r_proto" in
13541         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13542         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13543         esac
13544         case "$getservent_r_proto" in
13545         ''|0)   d_getservent_r=undef
13546                 getservent_r_proto=0
13547                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13548         * )     case "$getservent_r_proto" in
13549                 REENTRANT_PROTO*) ;;
13550                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13551                 esac
13552                 echo "Prototype: $try" ;;
13553         esac
13554         ;;
13555         *)      case "$usethreads" in
13556                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13557                 esac
13558                 d_getservent_r=undef
13559                 getservent_r_proto=0
13560                 ;;
13561         esac
13562         ;;
13563 *)      getservent_r_proto=0
13564         ;;
13565 esac
13566
13567 : see if prototypes for various getservxxx netdb.h functions are available
13568 echo " "
13569 set d_getservprotos getservent $i_netdb netdb.h
13570 eval $hasproto
13571
13572 : see if getspnam exists
13573 set getspnam d_getspnam
13574 eval $inlibc
13575
13576 : see if this is a shadow.h system
13577 set shadow.h i_shadow
13578 eval $inhdr
13579
13580 : see if getspnam_r exists
13581 set getspnam_r d_getspnam_r
13582 eval $inlibc
13583 case "$d_getspnam_r" in
13584 "$define")
13585         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13586         case "$d_getspnam_r_proto:$usethreads" in
13587         ":define")      d_getspnam_r_proto=define
13588                 set d_getspnam_r_proto getspnam_r $hdrs
13589                 eval $hasproto ;;
13590         *)      ;;
13591         esac
13592         case "$d_getspnam_r_proto" in
13593         define)
13594         case "$getspnam_r_proto" in
13595         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13596         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13597         esac
13598         case "$getspnam_r_proto" in
13599         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13600         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13601         esac
13602         case "$getspnam_r_proto" in
13603         ''|0)   d_getspnam_r=undef
13604                 getspnam_r_proto=0
13605                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13606         * )     case "$getspnam_r_proto" in
13607                 REENTRANT_PROTO*) ;;
13608                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13609                 esac
13610                 echo "Prototype: $try" ;;
13611         esac
13612         ;;
13613         *)      case "$usethreads" in
13614                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13615                 esac
13616                 d_getspnam_r=undef
13617                 getspnam_r_proto=0
13618                 ;;
13619         esac
13620         ;;
13621 *)      getspnam_r_proto=0
13622         ;;
13623 esac
13624
13625 : see if gettimeofday or ftime exists
13626 set gettimeofday d_gettimeod
13627 eval $inlibc
13628 case "$d_gettimeod" in
13629 "$undef")
13630         set ftime d_ftime 
13631         eval $inlibc
13632         ;;
13633 *)
13634         val="$undef"; set d_ftime; eval $setvar
13635         ;;
13636 esac
13637 case "$d_gettimeod$d_ftime" in
13638 "$undef$undef")
13639         echo " "
13640         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13641         ;;
13642 esac
13643
13644 : see if gmtime_r exists
13645 set gmtime_r d_gmtime_r
13646 eval $inlibc
13647 case "$d_gmtime_r" in
13648 "$define")
13649         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13650         case "$d_gmtime_r_proto:$usethreads" in
13651         ":define")      d_gmtime_r_proto=define
13652                 set d_gmtime_r_proto gmtime_r $hdrs
13653                 eval $hasproto ;;
13654         *)      ;;
13655         esac
13656         case "$d_gmtime_r_proto" in
13657         define)
13658         case "$gmtime_r_proto" in
13659         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13660         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13661         esac
13662         case "$gmtime_r_proto" in
13663         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13664         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13665         esac
13666         case "$gmtime_r_proto" in
13667         ''|0)   d_gmtime_r=undef
13668                 gmtime_r_proto=0
13669                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13670         * )     case "$gmtime_r_proto" in
13671                 REENTRANT_PROTO*) ;;
13672                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13673                 esac
13674                 echo "Prototype: $try" ;;
13675         esac
13676         ;;
13677         *)      case "$usethreads" in
13678                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13679                 esac
13680                 d_gmtime_r=undef
13681                 gmtime_r_proto=0
13682                 ;;
13683         esac
13684         ;;
13685 *)      gmtime_r_proto=0
13686         ;;
13687 esac
13688
13689 : see if hasmntopt exists
13690 set hasmntopt d_hasmntopt
13691 eval $inlibc
13692
13693 : see if this is a netinet/in.h or sys/in.h system
13694 set netinet/in.h i_niin sys/in.h i_sysin
13695 eval $inhdr
13696
13697 : see if arpa/inet.h has to be included
13698 set arpa/inet.h i_arpainet
13699 eval $inhdr
13700
13701 : see if htonl --and friends-- exists
13702 val=''
13703 set htonl val
13704 eval $inlibc
13705
13706 : Maybe they are macros.
13707 case "$val" in
13708 $undef)
13709         $cat >htonl.c <<EOM
13710 #include <stdio.h>
13711 #include <sys/types.h>
13712 #$i_niin I_NETINET_IN
13713 #$i_sysin I_SYS_IN
13714 #$i_arpainet I_ARPA_INET
13715 #ifdef I_NETINET_IN
13716 #include <netinet/in.h>
13717 #endif
13718 #ifdef I_SYS_IN
13719 #include <sys/in.h>
13720 #endif
13721 #ifdef I_ARPA_INET
13722 #include <arpa/inet.h>
13723 #endif
13724 #ifdef htonl
13725 printf("Defined as a macro.");
13726 #endif
13727 EOM
13728         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13729         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13730                 val="$define"
13731                 echo "But it seems to be defined as a macro." >&4
13732         fi
13733         $rm -f htonl.?
13734         ;;
13735 esac
13736 set d_htonl
13737 eval $setvar
13738
13739 : see if ilogbl exists
13740 set ilogbl d_ilogbl
13741 eval $inlibc
13742
13743 : index or strchr
13744 echo " "
13745 if set index val -f; eval $csym; $val; then
13746         if set strchr val -f d_strchr; eval $csym; $val; then
13747                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13748                         val="$define"
13749                         vali="$undef"
13750                         echo "strchr() found." >&4
13751                 else
13752                         val="$undef"
13753                         vali="$define"
13754                         echo "index() found." >&4
13755                 fi
13756         else
13757                 val="$undef"
13758                 vali="$define"
13759                 echo "index() found." >&4
13760         fi
13761 else
13762         if set strchr val -f d_strchr; eval $csym; $val; then
13763                 val="$define"
13764                 vali="$undef"
13765                 echo "strchr() found." >&4
13766         else
13767                 echo "No index() or strchr() found!" >&4
13768                 val="$undef"
13769                 vali="$undef"
13770         fi
13771 fi
13772 set d_strchr; eval $setvar
13773 val="$vali"
13774 set d_index; eval $setvar
13775
13776 : check whether inet_aton exists
13777 set inet_aton d_inetaton
13778 eval $inlibc
13779
13780 : Look for isascii
13781 echo " "
13782 $cat >isascii.c <<EOCP
13783 #include <stdio.h>
13784 #include <ctype.h>
13785 #$i_stdlib I_STDLIB
13786 #ifdef I_STDLIB
13787 #include <stdlib.h>
13788 #endif
13789 int main() {
13790         int c = 'A';
13791         if (isascii(c))
13792                 exit(0);
13793         else
13794                 exit(1);
13795 }
13796 EOCP
13797 set isascii
13798 if eval $compile; then
13799         echo "isascii() found." >&4
13800         val="$define"
13801 else
13802         echo "isascii() NOT found." >&4
13803         val="$undef"
13804 fi
13805 set d_isascii
13806 eval $setvar
13807 $rm -f isascii*
13808
13809 : see if isfinite exists
13810 set isfinite d_isfinite
13811 eval $inlibc
13812
13813 : see if isinf exists
13814 set isinf d_isinf
13815 eval $inlibc
13816
13817 : see if isnan exists
13818 set isnan d_isnan
13819 eval $inlibc
13820
13821 : see if isnanl exists
13822 set isnanl d_isnanl
13823 eval $inlibc
13824
13825 : see if killpg exists
13826 set killpg d_killpg
13827 eval $inlibc
13828
13829 : see if lchown exists
13830 echo " "
13831 $cat > try.c <<'EOCP'
13832 /* System header to define __stub macros and hopefully few prototypes,
13833     which can conflict with char lchown(); below.  */
13834 #include <assert.h>
13835 /* Override any gcc2 internal prototype to avoid an error.  */
13836 /* We use char because int might match the return type of a gcc2
13837    builtin and then its argument prototype would still apply.  */
13838 char lchown();
13839 int main() {
13840     /*  The GNU C library defines this for functions which it implements
13841         to always fail with ENOSYS.  Some functions are actually named
13842         something starting with __ and the normal name is an alias.  */
13843 #if defined (__stub_lchown) || defined (__stub___lchown)
13844 choke me
13845 #else
13846 lchown();
13847 #endif
13848 ; return 0; }
13849 EOCP
13850 set try
13851 if eval $compile; then
13852     $echo "lchown() found." >&4
13853     val="$define"
13854 else
13855     $echo "lchown() NOT found." >&4
13856     val="$undef"
13857 fi
13858 set d_lchown
13859 eval $setvar
13860
13861 : See if number of significant digits in a double precision number is known
13862 echo " "
13863 $cat >ldbl_dig.c <<EOM
13864 #$i_limits I_LIMITS
13865 #$i_float I_FLOAT
13866 #ifdef I_LIMITS
13867 #include <limits.h>
13868 #endif
13869 #ifdef I_FLOAT
13870 #include <float.h>
13871 #endif
13872 #ifdef LDBL_DIG
13873 printf("Contains LDBL_DIG");
13874 #endif
13875 EOM
13876 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13877 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13878         echo "LDBL_DIG found." >&4
13879         val="$define"
13880 else
13881         echo "LDBL_DIG NOT found." >&4
13882         val="$undef"
13883 fi
13884 $rm -f ldbl_dig.?
13885 set d_ldbl_dig
13886 eval $setvar
13887
13888 : see if link exists
13889 set link d_link
13890 eval $inlibc
13891
13892 : see if localtime_r exists
13893 set localtime_r d_localtime_r
13894 eval $inlibc
13895 case "$d_localtime_r" in
13896 "$define")
13897         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13898         case "$d_localtime_r_proto:$usethreads" in
13899         ":define")      d_localtime_r_proto=define
13900                 set d_localtime_r_proto localtime_r $hdrs
13901                 eval $hasproto ;;
13902         *)      ;;
13903         esac
13904         case "$d_localtime_r_proto" in
13905         define)
13906         case "$localtime_r_proto" in
13907         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13908         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13909         esac
13910         case "$localtime_r_proto" in
13911         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13912         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13913         esac
13914         case "$localtime_r_proto" in
13915         ''|0)   d_localtime_r=undef
13916                 localtime_r_proto=0
13917                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13918         * )     case "$localtime_r_proto" in
13919                 REENTRANT_PROTO*) ;;
13920                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13921                 esac
13922                 echo "Prototype: $try" ;;
13923         esac
13924         ;;
13925         *)      case "$usethreads" in
13926                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13927                 esac
13928                 d_localtime_r=undef
13929                 localtime_r_proto=0
13930                 ;;
13931         esac
13932         ;;
13933 *)      localtime_r_proto=0
13934         ;;
13935 esac
13936
13937 : see if localeconv exists
13938 set localeconv d_locconv
13939 eval $inlibc
13940
13941 : see if lockf exists
13942 set lockf d_lockf
13943 eval $inlibc
13944
13945 : see if prototype for lseek is available
13946 echo " "
13947 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13948 eval $hasproto
13949
13950 : see if lstat exists
13951 set lstat d_lstat
13952 eval $inlibc
13953
13954 : see if madvise exists
13955 set madvise d_madvise
13956 eval $inlibc
13957
13958 : see if mblen exists
13959 set mblen d_mblen
13960 eval $inlibc
13961
13962 : see if mbstowcs exists
13963 set mbstowcs d_mbstowcs
13964 eval $inlibc
13965
13966 : see if mbtowc exists
13967 set mbtowc d_mbtowc
13968 eval $inlibc
13969
13970 : see if memchr exists
13971 set memchr d_memchr
13972 eval $inlibc
13973
13974 : see if memcmp exists
13975 set memcmp d_memcmp
13976 eval $inlibc
13977
13978 : see if memcpy exists
13979 set memcpy d_memcpy
13980 eval $inlibc
13981
13982 : see if memmove exists
13983 set memmove d_memmove
13984 eval $inlibc
13985
13986 : see if memset exists
13987 set memset d_memset
13988 eval $inlibc
13989
13990 : see if mkdir exists
13991 set mkdir d_mkdir
13992 eval $inlibc
13993
13994 : see if mkdtemp exists
13995 set mkdtemp d_mkdtemp
13996 eval $inlibc
13997
13998 : see if mkfifo exists
13999 set mkfifo d_mkfifo
14000 eval $inlibc
14001
14002 : see if mkstemp exists
14003 set mkstemp d_mkstemp
14004 eval $inlibc
14005
14006 : see if mkstemps exists
14007 set mkstemps d_mkstemps
14008 eval $inlibc
14009
14010 : see if mktime exists
14011 set mktime d_mktime
14012 eval $inlibc
14013
14014 : see if this is a sys/mman.h system
14015 set sys/mman.h i_sysmman
14016 eval $inhdr
14017
14018 : see if mmap exists
14019 set mmap d_mmap
14020 eval $inlibc
14021 : see what shmat returns
14022 : default to something harmless
14023 mmaptype='void *'
14024 case "$i_sysmman$d_mmap" in
14025 "$define$define")
14026         $cat >mmap.c <<'END'
14027 #include <sys/mman.h>
14028 void *mmap();
14029 END
14030         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14031                 mmaptype='void *'
14032         else
14033                 mmaptype='caddr_t'
14034         fi
14035         echo "and it returns ($mmaptype)." >&4
14036         ;;
14037 esac
14038
14039
14040
14041 : see if sqrtl exists
14042 set sqrtl d_sqrtl
14043 eval $inlibc
14044
14045 : see if modfl exists
14046 set modfl d_modfl
14047 eval $inlibc
14048
14049 : see if prototype for modfl is available
14050 echo " "
14051 set d_modflproto modfl math.h
14052 eval $hasproto
14053
14054 d_modfl_pow32_bug="$undef"
14055
14056 case "$d_longdbl$d_modfl" in
14057 $define$define)
14058         $cat <<EOM
14059 Checking to see whether your modfl() is okay for large values...
14060 EOM
14061 $cat >try.c <<EOCP
14062 #include <math.h> 
14063 #include <stdio.h>
14064 EOCP
14065 if $test "X$d_modflproto" != "X$define"; then
14066         $cat >>try.c <<EOCP
14067 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14068 long double modfl (long double, long double *);
14069 EOCP
14070 fi
14071 $cat >>try.c <<EOCP
14072 int main() {
14073     long double nv = 4294967303.15;
14074     long double v, w;
14075     v = modfl(nv, &w);         
14076 #ifdef __GLIBC__
14077     printf("glibc");
14078 #endif
14079     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14080     return 0;
14081 }
14082 EOCP
14083         case "$osname:$gccversion" in
14084         aix:)   saveccflags="$ccflags"
14085                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14086         esac
14087         set try
14088         if eval $compile; then
14089                 foo=`$run ./try`
14090                 case "$foo" in
14091                 *" 4294967303.150000 1.150000 4294967302.000000")
14092                         echo >&4 "Your modfl() is broken for large values."
14093                         d_modfl_pow32_bug="$define"
14094                         case "$foo" in
14095                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14096                         ;;
14097                         esac
14098                         ;;
14099                 *" 4294967303.150000 0.150000 4294967303.000000")
14100                         echo >&4 "Your modfl() seems okay for large values."
14101                         ;;
14102                 *)      echo >&4 "I don't understand your modfl() at all."
14103                         d_modfl="$undef"
14104                         ;;
14105                 esac
14106                 $rm -f try.* try core core.try.*
14107         else
14108                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14109                 d_modfl="$undef"
14110         fi
14111         case "$osname:$gccversion" in
14112         aix:)   ccflags="$saveccflags" ;; # restore
14113         esac
14114         ;;
14115 esac
14116
14117 if $test "$uselongdouble" = "$define"; then
14118     message=none
14119     case "$d_sqrtl:$d_modfl" in
14120     $define:$define)
14121         : You have both
14122         ;;
14123     $define:$undef)
14124         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14125             echo "You have both aintl and copysignl, so I can emulate modfl."
14126         else
14127             message="I could not find modfl."
14128         fi
14129         ;;
14130     $undef:$define)
14131         message="I could not find sqrtl."
14132         ;;
14133     $undef:$undef)
14134         message="I found neither sqrtl nor modfl."
14135         ;;
14136     esac
14137
14138     if $test "$message" != none; then
14139         $cat <<EOM >&4
14140
14141 *** You requested the use of long doubles but you do not seem to have
14142 *** the mathematic functions for long doubles.
14143 *** ($message)
14144 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14145 *** Cannot continue, aborting.
14146
14147 EOM
14148
14149         exit 1
14150     fi
14151 fi
14152
14153 : see if mprotect exists
14154 set mprotect d_mprotect
14155 eval $inlibc
14156
14157 : see if msgctl exists
14158 set msgctl d_msgctl
14159 eval $inlibc
14160
14161 : see if msgget exists
14162 set msgget d_msgget
14163 eval $inlibc
14164
14165 : see if msgsnd exists
14166 set msgsnd d_msgsnd
14167 eval $inlibc
14168
14169 : see if msgrcv exists
14170 set msgrcv d_msgrcv
14171 eval $inlibc
14172
14173 : see how much of the 'msg*(2)' library is present.
14174 h_msg=true
14175 echo " "
14176 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14177 *"$undef"*) h_msg=false;;
14178 esac
14179 case "$osname" in
14180 freebsd)
14181     case "`ipcs 2>&1`" in
14182     "SVID messages"*"not configured"*)
14183         echo "Your $osname does not have the msg*(2) configured." >&4
14184         h_msg=false
14185         val="$undef"
14186         set msgctl d_msgctl
14187         eval $setvar
14188         set msgget d_msgget
14189         eval $setvar
14190         set msgsnd d_msgsnd
14191         eval $setvar
14192         set msgrcv d_msgrcv
14193         eval $setvar
14194         ;;
14195     esac
14196     ;;
14197 esac
14198 : we could also check for sys/ipc.h ...
14199 if $h_msg && $test `./findhdr sys/msg.h`; then
14200         echo "You have the full msg*(2) library." >&4
14201         val="$define"
14202 else
14203         echo "You don't have the full msg*(2) library." >&4
14204         val="$undef"
14205 fi
14206 set d_msg
14207 eval $setvar
14208
14209
14210 echo " "
14211 echo "Checking to see if your system supports struct msghdr..." >&4
14212 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14213 eval $hasstruct
14214 case "$d_msghdr_s" in
14215 "$define")      echo "Yes, it does."   ;;
14216 *)              echo "No, it doesn't." ;;
14217 esac
14218
14219
14220 : see if msync exists
14221 set msync d_msync
14222 eval $inlibc
14223
14224 : see if munmap exists
14225 set munmap d_munmap
14226 eval $inlibc
14227
14228 : see if nanosleep exists
14229 set nanosleep d_nanosleep
14230 eval $inlibc
14231
14232 : see if nice exists
14233 set nice d_nice
14234 eval $inlibc
14235
14236 : see if this is a langinfo.h system
14237 set langinfo.h i_langinfo
14238 eval $inhdr
14239
14240 : see if nl_langinfo exists
14241 set nl_langinfo d_nl_langinfo
14242 eval $inlibc
14243
14244 : check for length of character
14245 echo " "
14246 case "$charsize" in
14247 '')
14248         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14249         $cat >try.c <<EOCP
14250 #include <stdio.h>
14251 #$i_stdlib I_STDLIB
14252 #ifdef I_STDLIB
14253 #include <stdlib.h>
14254 #endif
14255 int main()
14256 {
14257     printf("%d\n", (int)sizeof(char));
14258     exit(0);
14259 }
14260 EOCP
14261         set try
14262         if eval $compile_ok; then
14263                 dflt=`$run ./try`
14264         else
14265                 dflt='1'
14266                 echo "(I can't seem to compile the test program.  Guessing...)"
14267         fi
14268         ;;
14269 *)
14270         dflt="$charsize"
14271         ;;
14272 esac
14273 rp="What is the size of a character (in bytes)?"
14274 . ./myread
14275 charsize="$ans"
14276 $rm -f try.c try
14277
14278 : check for volatile keyword
14279 echo " "
14280 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14281 $cat >try.c <<'EOCP'
14282 int main()
14283 {
14284         typedef struct _goo_struct goo_struct;
14285         goo_struct * volatile goo = ((goo_struct *)0);
14286         struct _goo_struct {
14287                 long long_int;
14288                 int reg_int;
14289                 char char_var;
14290         };
14291         typedef unsigned short foo_t;
14292         char *volatile foo;
14293         volatile int bar;
14294         volatile foo_t blech;
14295         foo = foo;
14296 }
14297 EOCP
14298 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14299         val="$define"
14300         echo "Yup, it does."
14301 else
14302         val="$undef"
14303         echo "Nope, it doesn't."
14304 fi
14305 set d_volatile
14306 eval $setvar
14307 $rm -f try.*
14308
14309
14310 echo " "
14311 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14312
14313 case "$use64bitint:$d_quad:$quadtype" in
14314 define:define:?*)
14315         ivtype="$quadtype"
14316         uvtype="$uquadtype"
14317         ivsize=8
14318         uvsize=8
14319         ;;
14320 *)      ivtype="long"
14321         uvtype="unsigned long"
14322         ivsize=$longsize
14323         uvsize=$longsize
14324         ;;
14325 esac
14326
14327 case "$uselongdouble:$d_longdbl" in
14328 define:define)
14329         nvtype="long double"
14330         nvsize=$longdblsize
14331         ;;
14332 *)      nvtype=double
14333         nvsize=$doublesize
14334         ;;
14335 esac
14336
14337 $echo "(IV will be "$ivtype", $ivsize bytes)"
14338 $echo "(UV will be "$uvtype", $uvsize bytes)"
14339 $echo "(NV will be "$nvtype", $nvsize bytes)"
14340
14341 $cat >try.c <<EOCP
14342 #$i_inttypes I_INTTYPES
14343 #ifdef I_INTTYPES
14344 #include <inttypes.h>
14345 #endif
14346 #include <stdio.h>
14347 int main() {
14348 #ifdef INT8
14349    int8_t i =  INT8_MAX;
14350   uint8_t u = UINT8_MAX;
14351   printf("int8_t\n");
14352 #endif
14353 #ifdef INT16
14354    int16_t i =  INT16_MAX;
14355   uint16_t i = UINT16_MAX;
14356   printf("int16_t\n");
14357 #endif
14358 #ifdef INT32
14359    int32_t i =  INT32_MAX;
14360   uint32_t u = UINT32_MAX;
14361   printf("int32_t\n");
14362 #endif
14363 }
14364 EOCP
14365
14366 case "$i8type" in
14367 '')     case "$charsize" in
14368         1)      i8type=char
14369                 u8type="unsigned char"
14370                 i8size=$charsize
14371                 u8size=$charsize
14372                 ;;
14373         esac
14374         ;;
14375 esac
14376 case "$i8type" in
14377 '')     set try -DINT8
14378         if eval $compile; then
14379                 case "`$run ./try`" in
14380                 int8_t) i8type=int8_t
14381                         u8type=uint8_t
14382                         i8size=1
14383                         u8size=1
14384                         ;;
14385                 esac
14386         fi
14387         ;;
14388 esac
14389 case "$i8type" in
14390 '')     if $test $charsize -ge 1; then
14391                 i8type=char
14392                 u8type="unsigned char"
14393                 i8size=$charsize
14394                 u8size=$charsize
14395         fi
14396         ;;
14397 esac
14398
14399 case "$i16type" in
14400 '')     case "$shortsize" in
14401         2)      i16type=short
14402                 u16type="unsigned short"
14403                 i16size=$shortsize
14404                 u16size=$shortsize
14405                 ;;
14406         esac
14407         ;;
14408 esac
14409 case "$i16type" in
14410 '')     set try -DINT16
14411         if eval $compile; then
14412                 case "`$run ./try`" in
14413                 int16_t)
14414                         i16type=int16_t
14415                         u16type=uint16_t
14416                         i16size=2
14417                         u16size=2
14418                         ;;
14419                 esac
14420         fi
14421         ;;
14422 esac
14423 case "$i16type" in
14424 '')     if $test $shortsize -ge 2; then
14425                 i16type=short
14426                 u16type="unsigned short"
14427                 i16size=$shortsize
14428                 u16size=$shortsize
14429         fi
14430         ;;
14431 esac
14432
14433 case "$i32type" in
14434 '')     case "$longsize" in
14435         4)      i32type=long
14436                 u32type="unsigned long"
14437                 i32size=$longsize
14438                 u32size=$longsize
14439                 ;;
14440         *)      case "$intsize" in
14441                 4)      i32type=int
14442                         u32type="unsigned int"
14443                         i32size=$intsize
14444                         u32size=$intsize
14445                         ;;
14446                 esac
14447                 ;;
14448         esac
14449         ;;
14450 esac
14451 case "$i32type" in
14452 '')     set try -DINT32
14453         if eval $compile; then
14454                 case "`$run ./try`" in
14455                 int32_t)
14456                         i32type=int32_t
14457                         u32type=uint32_t
14458                         i32size=4
14459                         u32size=4
14460                         ;;
14461                 esac
14462         fi
14463         ;;
14464 esac
14465 case "$i32type" in
14466 '')     if $test $intsize -ge 4; then
14467                 i32type=int
14468                 u32type="unsigned int"
14469                 i32size=$intsize
14470                 u32size=$intsize
14471         fi
14472         ;;
14473 esac
14474
14475 case "$i64type" in
14476 '')     case "$d_quad:$quadtype" in
14477         define:?*)
14478                 i64type="$quadtype"
14479                 u64type="$uquadtype"
14480                 i64size=8
14481                 u64size=8
14482                 ;;
14483         esac
14484         ;;
14485 esac
14486
14487 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14488 : volatile so that the compiler has to store it out to memory.
14489 if test X"$d_volatile" = X"$define"; then
14490         volatile=volatile
14491 fi
14492 $cat <<EOP >try.c
14493 #include <stdio.h>
14494 #$i_stdlib I_STDLIB
14495 #ifdef I_STDLIB
14496 #include <stdlib.h>
14497 #endif
14498 #include <sys/types.h>
14499 #include <signal.h>
14500 #ifdef SIGFPE
14501 $volatile int bletched = 0;
14502 $signal_t blech(s) int s; { bletched = 1; }
14503 #endif
14504 int main() {
14505     $uvtype u = 0;
14506     $nvtype d;
14507     int     n = 8 * $uvsize;
14508     int     i;
14509 #ifdef SIGFPE
14510     signal(SIGFPE, blech);
14511 #endif
14512
14513     for (i = 0; i < n; i++) {
14514       u = u << 1 | ($uvtype)1;
14515       d = ($nvtype)u;
14516       if (($uvtype)d != u)
14517         break;
14518       if (d <= 0)
14519         break;
14520       d = ($nvtype)(u - 1);
14521       if (($uvtype)d != (u - 1))
14522         break;
14523 #ifdef SIGFPE
14524       if (bletched) {
14525         break;
14526 #endif
14527       } 
14528     }
14529     printf("%d\n", ((i == n) ? -n : i));
14530     exit(0);
14531 }
14532 EOP
14533 set try
14534
14535 d_nv_preserves_uv="$undef"
14536 if eval $compile; then
14537         nv_preserves_uv_bits="`$run ./try`"
14538 fi
14539 case "$nv_preserves_uv_bits" in
14540 \-[1-9]*)       
14541         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14542         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14543         d_nv_preserves_uv="$define"
14544         ;;
14545 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14546         d_nv_preserves_uv="$undef" ;;
14547 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14548         nv_preserves_uv_bits="$undef" ;;
14549 esac
14550
14551 $rm -f try.* try
14552
14553
14554 : check for off64_t
14555 echo " "
14556 echo "Checking to see if you have off64_t..." >&4
14557 $cat >try.c <<EOCP
14558 #include <sys/types.h>
14559 #include <unistd.h>
14560 int main() { off64_t x = 7; }
14561 EOCP
14562 set try
14563 if eval $compile; then
14564         val="$define"
14565         echo "You have off64_t."
14566 else
14567         val="$undef"
14568         echo "You do not have off64_t."
14569         case "$lseeksize" in
14570         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14571         esac
14572 fi
14573 $rm -f try.* try
14574 set d_off64_t
14575 eval $setvar
14576
14577 : how to create joinable pthreads
14578 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14579         echo " "
14580         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14581         $cat >try.c <<'EOCP'
14582 #include <pthread.h>
14583 int main() {
14584     int detachstate = JOINABLE;
14585 }
14586 EOCP
14587         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14588         if eval $compile; then
14589                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14590                 val="$undef" # Yes, undef.
14591                 set d_old_pthread_create_joinable
14592                 eval $setvar
14593                 val=""
14594                 set old_pthread_create_joinable
14595                 eval $setvar
14596         else
14597                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14598                 if eval $compile; then
14599                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14600                         val="$define"
14601                         set d_old_pthread_create_joinable
14602                         eval $setvar
14603                         val=PTHREAD_CREATE_UNDETACHED
14604                         set old_pthread_create_joinable
14605                         eval $setvar
14606                 else            
14607                         set try -DJOINABLE=__UNDETACHED
14608                         if eval $compile; then
14609                                 echo "You seem to use __UNDETACHED." >&4
14610                                 val="$define"
14611                                 set d_old_pthread_create_joinable
14612                                 eval $setvar
14613                                 val=__UNDETACHED
14614                                 set old_pthread_create_joinable
14615                                 eval $setvar
14616                         else
14617                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14618                                 val="$define"
14619                                 set d_old_pthread_create_joinable
14620                                 eval $setvar
14621                                 val=0
14622                                 set old_pthread_create_joinable
14623                                 eval $setvar
14624                         fi
14625                 fi
14626         fi
14627         $rm -f try try.*
14628 else
14629     d_old_pthread_create_joinable="$undef"
14630     old_pthread_create_joinable=""
14631 fi
14632
14633 : see if pause exists
14634 set pause d_pause
14635 eval $inlibc
14636
14637 : see if pipe exists
14638 set pipe d_pipe
14639 eval $inlibc
14640
14641 : see if poll exists
14642 set poll d_poll
14643 eval $inlibc
14644
14645 : see if readlink exists
14646 set readlink d_readlink
14647 eval $inlibc
14648
14649 echo " "
14650 procselfexe=''
14651 val="$undef"
14652 case "$d_readlink" in
14653 "$define")
14654         if $issymlink /proc/self/exe ; then
14655                 $ls -l /proc/self/exe > reflect
14656                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14657                         echo "You have Linux-like /proc/self/exe."
14658                         procselfexe='"/proc/self/exe"'
14659                         val="$define"
14660                 fi
14661         fi
14662         if $issymlink /proc/curproc/file ; then
14663                 $ls -l /proc/curproc/file > reflect
14664                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14665                         echo "You have BSD-like /proc/curproc/file."
14666                         procselfexe='"/proc/curproc/file"'
14667                         val="$define"
14668                 fi
14669         fi
14670         ;;
14671 esac
14672 $rm -f reflect
14673 set d_procselfexe
14674 eval $setvar
14675
14676 : see whether the pthread_atfork exists
14677 $cat >try.c <<EOP
14678 #include <pthread.h>
14679 #include <stdio.h>
14680 int main() {
14681 #ifdef  PTHREAD_ATFORK
14682         pthread_atfork(NULL,NULL,NULL);
14683 #endif
14684 }
14685 EOP
14686
14687 : see if pthread_atfork exists
14688 set try -DPTHREAD_ATFORK
14689 if eval $compile; then
14690     val="$define"
14691 else
14692     val="$undef"
14693 fi
14694 case "$usethreads" in
14695 $define)
14696         case "$val" in
14697         $define) echo 'pthread_atfork found.' >&4        ;;
14698         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14699         esac
14700 esac
14701 set d_pthread_atfork
14702 eval $setvar
14703
14704
14705 : see whether the various POSIXish _yields exist
14706 $cat >try.c <<EOP
14707 #include <pthread.h>
14708 #include <stdio.h>
14709 int main() {
14710 #ifdef SCHED_YIELD
14711         sched_yield();
14712 #else
14713 #ifdef PTHREAD_YIELD
14714         pthread_yield();
14715 #else
14716 #ifdef PTHREAD_YIELD_NULL
14717         pthread_yield(NULL);
14718 #endif
14719 #endif
14720 #endif
14721 }
14722 EOP
14723 : see if sched_yield exists
14724 set try -DSCHED_YIELD
14725 if eval $compile; then
14726     val="$define"
14727     sched_yield='sched_yield()'
14728 else
14729     val="$undef"
14730 fi
14731 case "$usethreads" in
14732 $define)
14733         case "$val" in
14734         $define) echo 'sched_yield() found.' >&4        ;;
14735         *)       echo 'sched_yield() NOT found.' >&4    ;;
14736         esac
14737 esac
14738 set d_sched_yield
14739 eval $setvar
14740
14741 : see if pthread_yield exists
14742 set try -DPTHREAD_YIELD
14743 if eval $compile; then
14744     val="$define"
14745     case "$sched_yield" in
14746     '') sched_yield='pthread_yield()' ;;
14747     esac
14748 else
14749     set try -DPTHREAD_YIELD_NULL
14750     if eval $compile; then
14751         val="$define"
14752         case "$sched_yield" in
14753         '') sched_yield='pthread_yield(NULL)' ;;
14754         esac
14755     else
14756         val="$undef"
14757     fi
14758 fi
14759 case "$usethreads" in
14760 $define)
14761         case "$val" in
14762         $define) echo 'pthread_yield() found.' >&4      ;;
14763         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14764         esac
14765         ;;
14766 esac
14767 set d_pthread_yield
14768 eval $setvar
14769
14770 case "$sched_yield" in
14771 '') sched_yield=undef ;;
14772 esac
14773
14774 $rm -f try try.*
14775
14776 : see if random_r exists
14777 set random_r d_random_r
14778 eval $inlibc
14779 case "$d_random_r" in
14780 "$define")
14781         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14782         case "$d_random_r_proto:$usethreads" in
14783         ":define")      d_random_r_proto=define
14784                 set d_random_r_proto random_r $hdrs
14785                 eval $hasproto ;;
14786         *)      ;;
14787         esac
14788         case "$d_random_r_proto" in
14789         define)
14790         case "$random_r_proto" in
14791         ''|0) try='int random_r(int*, struct random_data*);'
14792         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14793         esac
14794         case "$random_r_proto" in
14795         ''|0) try='int random_r(long*, struct random_data*);'
14796         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14797         esac
14798         case "$random_r_proto" in
14799         ''|0) try='int random_r(struct random_data*, int32_t*);'
14800         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14801         esac
14802         case "$random_r_proto" in
14803         ''|0)   d_random_r=undef
14804                 random_r_proto=0
14805                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14806         * )     case "$random_r_proto" in
14807                 REENTRANT_PROTO*) ;;
14808                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14809                 esac
14810                 echo "Prototype: $try" ;;
14811         esac
14812         ;;
14813         *)      case "$usethreads" in
14814                 define) echo "random_r has no prototype, not using it." >&4 ;;
14815                 esac
14816                 d_random_r=undef
14817                 random_r_proto=0
14818                 ;;
14819         esac
14820         ;;
14821 *)      random_r_proto=0
14822         ;;
14823 esac
14824
14825 : see if readdir and friends exist
14826 set readdir d_readdir
14827 eval $inlibc
14828 set seekdir d_seekdir
14829 eval $inlibc
14830 set telldir d_telldir
14831 eval $inlibc
14832 set rewinddir d_rewinddir
14833 eval $inlibc
14834
14835 : see if readdir64_r exists
14836 set readdir64_r d_readdir64_r
14837 eval $inlibc
14838 case "$d_readdir64_r" in
14839 "$define")
14840         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14841         case "$d_readdir64_r_proto:$usethreads" in
14842         ":define")      d_readdir64_r_proto=define
14843                 set d_readdir64_r_proto readdir64_r $hdrs
14844                 eval $hasproto ;;
14845         *)      ;;
14846         esac
14847         case "$d_readdir64_r_proto" in
14848         define)
14849         case "$readdir64_r_proto" in
14850         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14851         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14852         esac
14853         case "$readdir64_r_proto" in
14854         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14855         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14856         esac
14857         case "$readdir64_r_proto" in
14858         ''|0)   d_readdir64_r=undef
14859                 readdir64_r_proto=0
14860                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14861         * )     case "$readdir64_r_proto" in
14862                 REENTRANT_PROTO*) ;;
14863                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14864                 esac
14865                 echo "Prototype: $try" ;;
14866         esac
14867         ;;
14868         *)      case "$usethreads" in
14869                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14870                 esac
14871                 d_readdir64_r=undef
14872                 readdir64_r_proto=0
14873                 ;;
14874         esac
14875         ;;
14876 *)      readdir64_r_proto=0
14877         ;;
14878 esac
14879
14880 : see if readdir_r exists
14881 set readdir_r d_readdir_r
14882 eval $inlibc
14883 case "$d_readdir_r" in
14884 "$define")
14885         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14886         case "$d_readdir_r_proto:$usethreads" in
14887         ":define")      d_readdir_r_proto=define
14888                 set d_readdir_r_proto readdir_r $hdrs
14889                 eval $hasproto ;;
14890         *)      ;;
14891         esac
14892         case "$d_readdir_r_proto" in
14893         define)
14894         case "$readdir_r_proto" in
14895         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14896         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14897         esac
14898         case "$readdir_r_proto" in
14899         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14900         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14901         esac
14902         case "$readdir_r_proto" in
14903         ''|0)   d_readdir_r=undef
14904                 readdir_r_proto=0
14905                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14906         * )     case "$readdir_r_proto" in
14907                 REENTRANT_PROTO*) ;;
14908                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14909                 esac
14910                 echo "Prototype: $try" ;;
14911         esac
14912         ;;
14913         *)      case "$usethreads" in
14914                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14915                 esac
14916                 d_readdir_r=undef
14917                 readdir_r_proto=0
14918                 ;;
14919         esac
14920         ;;
14921 *)      readdir_r_proto=0
14922         ;;
14923 esac
14924
14925 : see if readv exists
14926 set readv d_readv
14927 eval $inlibc
14928
14929 : see if recvmsg exists
14930 set recvmsg d_recvmsg
14931 eval $inlibc
14932
14933 : see if rename exists
14934 set rename d_rename
14935 eval $inlibc
14936
14937 : see if rmdir exists
14938 set rmdir d_rmdir
14939 eval $inlibc
14940
14941 : see if memory.h is available.
14942 val=''
14943 set memory.h val
14944 eval $inhdr
14945
14946 : See if it conflicts with string.h
14947 case "$val" in
14948 $define)
14949         case "$strings" in
14950         '') ;;
14951         *)
14952                 $cppstdin $cppflags $cppminus < $strings > mem.h
14953                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14954                         echo " "
14955                         echo "We won't be including <memory.h>."
14956                         val="$undef"
14957                 fi
14958                 $rm -f mem.h
14959                 ;;
14960         esac
14961 esac
14962 set i_memory
14963 eval $setvar
14964
14965 : can bcopy handle overlapping blocks?
14966 echo " "
14967 val="$undef"
14968 case "$d_memmove" in
14969 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14970 *)      case "$d_bcopy" in
14971         "$define")
14972                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14973                 $cat >try.c <<EOCP
14974 #$i_memory I_MEMORY
14975 #$i_stdlib I_STDLIB
14976 #$i_string I_STRING
14977 #$i_unistd I_UNISTD
14978 EOCP
14979         $cat >>try.c <<'EOCP'
14980 #include <stdio.h>
14981 #ifdef I_MEMORY
14982 #  include <memory.h>
14983 #endif
14984 #ifdef I_STDLIB
14985 #  include <stdlib.h>
14986 #endif
14987 #ifdef I_STRING
14988 #  include <string.h>
14989 #else
14990 #  include <strings.h>
14991 #endif
14992 #ifdef I_UNISTD
14993 #  include <unistd.h>  /* Needed for NetBSD */
14994 #endif
14995 int main()
14996 {
14997 char buf[128], abc[128];
14998 char *b;
14999 int len;
15000 int off;
15001 int align;
15002
15003 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15004    try to store the string in read-only memory. */
15005 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15006
15007 for (align = 7; align >= 0; align--) {
15008         for (len = 36; len; len--) {
15009                 b = buf+align;
15010                 bcopy(abc, b, len);
15011                 for (off = 1; off <= len; off++) {
15012                         bcopy(b, b+off, len);
15013                         bcopy(b+off, b, len);
15014                         if (bcmp(b, abc, len))
15015                                 exit(1);
15016                 }
15017         }
15018 }
15019 exit(0);
15020 }
15021 EOCP
15022                 set try
15023                 if eval $compile_ok; then
15024                         if ./try 2>/dev/null; then
15025                                 echo "Yes, it can."
15026                                 val="$define"
15027                         else
15028                                 echo "It can't, sorry."
15029                         fi
15030                 else
15031                         echo "(I can't compile the test program, so we'll assume not...)"
15032                 fi
15033                 ;;
15034         esac
15035         $rm -f try.* try core
15036         ;;
15037 esac
15038 set d_safebcpy
15039 eval $setvar
15040
15041 : can memcpy handle overlapping blocks?
15042 echo " "
15043 val="$undef"
15044 case "$d_memmove" in
15045 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15046 *)      case "$d_memcpy" in
15047         "$define")
15048                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15049                 $cat >try.c <<EOCP
15050 #$i_memory I_MEMORY
15051 #$i_stdlib I_STDLIB
15052 #$i_string I_STRING
15053 #$i_unistd I_UNISTD
15054 EOCP
15055         $cat >>try.c <<'EOCP'
15056 #include <stdio.h>
15057 #ifdef I_MEMORY
15058 #  include <memory.h>
15059 #endif
15060 #ifdef I_STDLIB
15061 #  include <stdlib.h>
15062 #endif
15063 #ifdef I_STRING
15064 #  include <string.h>
15065 #else
15066 #  include <strings.h>
15067 #endif
15068 #ifdef I_UNISTD
15069 #  include <unistd.h>  /* Needed for NetBSD */
15070 #endif
15071 int main()
15072 {
15073 char buf[128], abc[128];
15074 char *b;
15075 int len;
15076 int off;
15077 int align;
15078
15079 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15080    try to store the string in read-only memory. */
15081 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15082
15083 for (align = 7; align >= 0; align--) {
15084         for (len = 36; len; len--) {
15085                 b = buf+align;
15086                 memcpy(b, abc, len);
15087                 for (off = 1; off <= len; off++) {
15088                         memcpy(b+off, b, len);
15089                         memcpy(b, b+off, len);
15090                         if (memcmp(b, abc, len))
15091                                 exit(1);
15092                 }
15093         }
15094 }
15095 exit(0);
15096 }
15097 EOCP
15098                 set try
15099                 if eval $compile_ok; then
15100                         if ./try 2>/dev/null; then
15101                                 echo "Yes, it can."
15102                                 val="$define"
15103                         else
15104                                 echo "It can't, sorry."
15105                         fi
15106                 else
15107                         echo "(I can't compile the test program, so we'll assume not...)"
15108                 fi
15109                 ;;
15110         esac
15111         $rm -f try.* try core
15112         ;;
15113 esac
15114 set d_safemcpy
15115 eval $setvar
15116
15117 : can memcmp be trusted to compare relative magnitude?
15118 val="$undef"
15119 case "$d_memcmp" in
15120 "$define")
15121         echo " "
15122         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15123         $cat >try.c <<EOCP
15124 #$i_memory I_MEMORY
15125 #$i_stdlib I_STDLIB
15126 #$i_string I_STRING
15127 #$i_unistd I_UNISTD
15128 EOCP
15129         $cat >>try.c <<'EOCP'
15130 #include <stdio.h>
15131 #ifdef I_MEMORY
15132 #  include <memory.h>
15133 #endif
15134 #ifdef I_STDLIB
15135 #  include <stdlib.h>
15136 #endif
15137 #ifdef I_STRING
15138 #  include <string.h>
15139 #else
15140 #  include <strings.h>
15141 #endif
15142 #ifdef I_UNISTD
15143 #  include <unistd.h>  /* Needed for NetBSD */
15144 #endif
15145 int main()
15146 {
15147 char a = -1;
15148 char b = 0;
15149 if ((a < b) && memcmp(&a, &b, 1) < 0)
15150         exit(1);
15151 exit(0);
15152 }
15153 EOCP
15154         set try
15155         if eval $compile_ok; then
15156                 if $run ./try 2>/dev/null; then
15157                         echo "Yes, it can."
15158                         val="$define"
15159                 else
15160                         echo "No, it can't (it uses signed chars)."
15161                 fi
15162         else
15163                 echo "(I can't compile the test program, so we'll assume not...)"
15164         fi
15165         ;;
15166 esac
15167 $rm -f try.* try core
15168 set d_sanemcmp
15169 eval $setvar
15170
15171 : see if prototype for sbrk is available
15172 echo " "
15173 set d_sbrkproto sbrk $i_unistd unistd.h
15174 eval $hasproto
15175
15176 : see if scalbnl exists
15177 set scalbnl d_scalbnl
15178 eval $inlibc
15179
15180 : see if select exists
15181 set select d_select
15182 eval $inlibc
15183
15184 : see if semctl exists
15185 set semctl d_semctl
15186 eval $inlibc
15187
15188 : see if semget exists
15189 set semget d_semget
15190 eval $inlibc
15191
15192 : see if semop exists
15193 set semop d_semop
15194 eval $inlibc
15195
15196 : see how much of the 'sem*(2)' library is present.
15197 h_sem=true
15198 echo " "
15199 case "$d_semctl$d_semget$d_semop" in
15200 *"$undef"*) h_sem=false;;
15201 esac
15202 case "$osname" in
15203 freebsd)
15204     case "`ipcs 2>&1`" in
15205     "SVID messages"*"not configured"*)
15206         echo "Your $osname does not have the sem*(2) configured." >&4
15207         h_sem=false
15208         val="$undef"
15209         set semctl d_semctl
15210         eval $setvar
15211         set semget d_semget
15212         eval $setvar
15213         set semop d_semop
15214         eval $setvar
15215         ;;
15216     esac
15217     ;;
15218 esac
15219 : we could also check for sys/ipc.h ...
15220 if $h_sem && $test `./findhdr sys/sem.h`; then
15221         echo "You have the full sem*(2) library." >&4
15222         val="$define"
15223 else
15224         echo "You don't have the full sem*(2) library." >&4
15225         val="$undef"
15226 fi
15227 set d_sem
15228 eval $setvar
15229
15230 : see whether sys/sem.h defines union semun
15231 echo " "
15232 $cat > try.c <<'END'
15233 #include <sys/types.h>
15234 #include <sys/ipc.h>
15235 #include <sys/sem.h>
15236 int main () { union semun semun; semun.buf = 0; }
15237 END
15238 set try
15239 if eval $compile; then
15240     echo "You have union semun in <sys/sem.h>." >&4
15241     val="$define"
15242 else
15243     echo "You do not have union semun in <sys/sem.h>." >&4
15244     val="$undef"
15245 fi
15246 $rm -f try try.c try.h
15247 set d_union_semun
15248 eval $setvar
15249
15250 : see how to do semctl IPC_STAT
15251 case "$d_sem" in
15252 $define)
15253     : see whether semctl IPC_STAT can use union semun
15254     echo " "
15255     $cat > try.h <<END
15256 #ifndef S_IRUSR
15257 #   ifdef S_IREAD
15258 #       define S_IRUSR S_IREAD
15259 #       define S_IWUSR S_IWRITE
15260 #       define S_IXUSR S_IEXEC
15261 #   else
15262 #       define S_IRUSR 0400
15263 #       define S_IWUSR 0200
15264 #       define S_IXUSR 0100
15265 #   endif
15266 #   define S_IRGRP (S_IRUSR>>3)
15267 #   define S_IWGRP (S_IWUSR>>3)
15268 #   define S_IXGRP (S_IXUSR>>3)
15269 #   define S_IROTH (S_IRUSR>>6)
15270 #   define S_IWOTH (S_IWUSR>>6)
15271 #   define S_IXOTH (S_IXUSR>>6)
15272 #endif
15273 #ifndef S_IRWXU
15274 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15275 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15276 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15277 #endif
15278 END
15279
15280     $cat > try.c <<END
15281 #include <sys/types.h>
15282 #include <sys/ipc.h>
15283 #include <sys/sem.h>
15284 #include <sys/stat.h>
15285 #include <stdio.h>
15286 #include <errno.h>
15287 #include "try.h"
15288 #ifndef errno
15289 extern int errno;
15290 #endif
15291 #$d_union_semun HAS_UNION_SEMUN
15292 int main() {
15293     union semun
15294 #ifndef HAS_UNION_SEMUN
15295     {
15296         int val;
15297         struct semid_ds *buf;
15298         unsigned short *array;
15299     }
15300 #endif
15301     arg;
15302     int sem, st;
15303
15304 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15305     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15306     if (sem > -1) {
15307         struct semid_ds argbuf;
15308         arg.buf = &argbuf;
15309 #       ifdef IPC_STAT
15310         st = semctl(sem, 0, IPC_STAT, arg);
15311         if (st == 0)
15312             printf("semun\n");
15313         else
15314 #       endif /* IPC_STAT */
15315             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15316 #       ifdef IPC_RMID
15317         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15318 #       endif /* IPC_RMID */
15319             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15320     } else
15321 #endif /* IPC_PRIVATE && ... */
15322         printf("semget failed: errno = %d\n", errno);
15323   return 0;
15324 }
15325 END
15326     val="$undef"
15327     set try
15328     if eval $compile; then
15329         xxx=`$run ./try`
15330         case "$xxx" in
15331         semun) val="$define" ;;
15332         esac
15333     fi
15334     $rm -f try try.c
15335     set d_semctl_semun
15336     eval $setvar
15337     case "$d_semctl_semun" in
15338     $define)
15339         echo "You can use union semun for semctl IPC_STAT." >&4
15340         also='also'
15341         ;;
15342     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15343         also=''
15344         ;;
15345     esac
15346
15347     : see whether semctl IPC_STAT can use struct semid_ds pointer
15348     $cat > try.c <<'END'
15349 #include <sys/types.h>
15350 #include <sys/ipc.h>
15351 #include <sys/sem.h>
15352 #include <sys/stat.h>
15353 #include "try.h"
15354 #include <stdio.h>
15355 #include <errno.h>
15356 #ifndef errno
15357 extern int errno;
15358 #endif
15359 int main() {
15360     struct semid_ds arg;
15361     int sem, st;
15362
15363 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15364     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15365     if (sem > -1) {
15366 #       ifdef IPC_STAT
15367         st = semctl(sem, 0, IPC_STAT, &arg);
15368         if (st == 0)
15369             printf("semid_ds\n");
15370         else
15371 #       endif /* IPC_STAT */
15372             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15373 #       ifdef IPC_RMID
15374         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15375 #       endif /* IPC_RMID */
15376             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15377     } else
15378 #endif /* IPC_PRIVATE && ... */
15379         printf("semget failed: errno = %d\n", errno);
15380
15381     return 0;
15382 }
15383 END
15384     val="$undef"
15385     set try
15386     if eval $compile; then
15387         xxx=`$run ./try`
15388         case "$xxx" in
15389         semid_ds) val="$define" ;;
15390         esac
15391     fi
15392     $rm -f try try.c
15393     set d_semctl_semid_ds
15394     eval $setvar
15395     case "$d_semctl_semid_ds" in
15396     $define)
15397         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15398         ;;
15399     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15400         ;;
15401     esac
15402     $rm -f try.h
15403     ;;
15404 *)  val="$undef"
15405
15406     # We do not have the full sem*(2) library, so assume we can not
15407     # use either.
15408
15409     set d_semctl_semun
15410     eval $setvar
15411
15412     set d_semctl_semid_ds
15413     eval $setvar
15414     ;;
15415 esac
15416
15417 : see if sendmsg exists
15418 set sendmsg d_sendmsg
15419 eval $inlibc
15420
15421 : see if setegid exists
15422 set setegid d_setegid
15423 eval $inlibc
15424
15425 : see if seteuid exists
15426 set seteuid d_seteuid
15427 eval $inlibc
15428
15429 : see if setgrent exists
15430 set setgrent d_setgrent
15431 eval $inlibc
15432
15433 : see if setgrent_r exists
15434 set setgrent_r d_setgrent_r
15435 eval $inlibc
15436 case "$d_setgrent_r" in
15437 "$define")
15438         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15439         case "$d_setgrent_r_proto:$usethreads" in
15440         ":define")      d_setgrent_r_proto=define
15441                 set d_setgrent_r_proto setgrent_r $hdrs
15442                 eval $hasproto ;;
15443         *)      ;;
15444         esac
15445         case "$d_setgrent_r_proto" in
15446         define)
15447         case "$setgrent_r_proto" in
15448         ''|0) try='int setgrent_r(FILE**);'
15449         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15450         esac
15451         case "$setgrent_r_proto" in
15452         ''|0) try='void setgrent_r(FILE**);'
15453         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15454         esac
15455         case "$setgrent_r_proto" in
15456         ''|0)   d_setgrent_r=undef
15457                 setgrent_r_proto=0
15458                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15459         * )     case "$setgrent_r_proto" in
15460                 REENTRANT_PROTO*) ;;
15461                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15462                 esac
15463                 echo "Prototype: $try" ;;
15464         esac
15465         ;;
15466         *)      case "$usethreads" in
15467                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15468                 esac
15469                 d_setgrent_r=undef
15470                 setgrent_r_proto=0
15471                 ;;
15472         esac
15473         ;;
15474 *)      setgrent_r_proto=0
15475         ;;
15476 esac
15477
15478 : see if sethostent exists
15479 set sethostent d_sethent
15480 eval $inlibc
15481
15482 : see if sethostent_r exists
15483 set sethostent_r d_sethostent_r
15484 eval $inlibc
15485 case "$d_sethostent_r" in
15486 "$define")
15487         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15488         case "$d_sethostent_r_proto:$usethreads" in
15489         ":define")      d_sethostent_r_proto=define
15490                 set d_sethostent_r_proto sethostent_r $hdrs
15491                 eval $hasproto ;;
15492         *)      ;;
15493         esac
15494         case "$d_sethostent_r_proto" in
15495         define)
15496         case "$sethostent_r_proto" in
15497         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15498         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15499         esac
15500         case "$sethostent_r_proto" in
15501         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15502         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15503         esac
15504         case "$sethostent_r_proto" in
15505         ''|0)   d_sethostent_r=undef
15506                 sethostent_r_proto=0
15507                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15508         * )     case "$sethostent_r_proto" in
15509                 REENTRANT_PROTO*) ;;
15510                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15511                 esac
15512                 echo "Prototype: $try" ;;
15513         esac
15514         ;;
15515         *)      case "$usethreads" in
15516                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15517                 esac
15518                 d_sethostent_r=undef
15519                 sethostent_r_proto=0
15520                 ;;
15521         esac
15522         ;;
15523 *)      sethostent_r_proto=0
15524         ;;
15525 esac
15526
15527 : see if setitimer exists
15528 set setitimer d_setitimer
15529 eval $inlibc
15530
15531 : see if setlinebuf exists
15532 set setlinebuf d_setlinebuf
15533 eval $inlibc
15534
15535 : see if setlocale exists
15536 set setlocale d_setlocale
15537 eval $inlibc
15538
15539 : see if locale.h is available
15540 set locale.h i_locale
15541 eval $inhdr
15542
15543 : see if setlocale_r exists
15544 set setlocale_r d_setlocale_r
15545 eval $inlibc
15546 case "$d_setlocale_r" in
15547 "$define")
15548         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15549         case "$d_setlocale_r_proto:$usethreads" in
15550         ":define")      d_setlocale_r_proto=define
15551                 set d_setlocale_r_proto setlocale_r $hdrs
15552                 eval $hasproto ;;
15553         *)      ;;
15554         esac
15555         case "$d_setlocale_r_proto" in
15556         define)
15557         case "$setlocale_r_proto" in
15558         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15559         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15560         esac
15561         case "$setlocale_r_proto" in
15562         ''|0)   d_setlocale_r=undef
15563                 setlocale_r_proto=0
15564                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15565         * )     case "$setlocale_r_proto" in
15566                 REENTRANT_PROTO*) ;;
15567                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15568                 esac
15569                 echo "Prototype: $try" ;;
15570         esac
15571         ;;
15572         *)      case "$usethreads" in
15573                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15574                 esac
15575                 d_setlocale_r=undef
15576                 setlocale_r_proto=0
15577                 ;;
15578         esac
15579         ;;
15580 *)      setlocale_r_proto=0
15581         ;;
15582 esac
15583
15584 : see if setnetent exists
15585 set setnetent d_setnent
15586 eval $inlibc
15587
15588 : see if setnetent_r exists
15589 set setnetent_r d_setnetent_r
15590 eval $inlibc
15591 case "$d_setnetent_r" in
15592 "$define")
15593         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15594         case "$d_setnetent_r_proto:$usethreads" in
15595         ":define")      d_setnetent_r_proto=define
15596                 set d_setnetent_r_proto setnetent_r $hdrs
15597                 eval $hasproto ;;
15598         *)      ;;
15599         esac
15600         case "$d_setnetent_r_proto" in
15601         define)
15602         case "$setnetent_r_proto" in
15603         ''|0) try='int setnetent_r(int, struct netent_data*);'
15604         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15605         esac
15606         case "$setnetent_r_proto" in
15607         ''|0) try='void setnetent_r(int, struct netent_data*);'
15608         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15609         esac
15610         case "$setnetent_r_proto" in
15611         ''|0)   d_setnetent_r=undef
15612                 setnetent_r_proto=0
15613                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15614         * )     case "$setnetent_r_proto" in
15615                 REENTRANT_PROTO*) ;;
15616                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15617                 esac
15618                 echo "Prototype: $try" ;;
15619         esac
15620         ;;
15621         *)      case "$usethreads" in
15622                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15623                 esac
15624                 d_setnetent_r=undef
15625                 setnetent_r_proto=0
15626                 ;;
15627         esac
15628         ;;
15629 *)      setnetent_r_proto=0
15630         ;;
15631 esac
15632
15633 : see if setprotoent exists
15634 set setprotoent d_setpent
15635 eval $inlibc
15636
15637 : see if setpgid exists
15638 set setpgid d_setpgid
15639 eval $inlibc
15640
15641 : see if setpgrp2 exists
15642 set setpgrp2 d_setpgrp2
15643 eval $inlibc
15644
15645 : see if setpriority exists
15646 set setpriority d_setprior
15647 eval $inlibc
15648
15649 : see if setproctitle exists
15650 set setproctitle d_setproctitle
15651 eval $inlibc
15652
15653 : see if setprotoent_r exists
15654 set setprotoent_r d_setprotoent_r
15655 eval $inlibc
15656 case "$d_setprotoent_r" in
15657 "$define")
15658         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15659         case "$d_setprotoent_r_proto:$usethreads" in
15660         ":define")      d_setprotoent_r_proto=define
15661                 set d_setprotoent_r_proto setprotoent_r $hdrs
15662                 eval $hasproto ;;
15663         *)      ;;
15664         esac
15665         case "$d_setprotoent_r_proto" in
15666         define)
15667         case "$setprotoent_r_proto" in
15668         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15669         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15670         esac
15671         case "$setprotoent_r_proto" in
15672         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15673         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15674         esac
15675         case "$setprotoent_r_proto" in
15676         ''|0)   d_setprotoent_r=undef
15677                 setprotoent_r_proto=0
15678                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15679         * )     case "$setprotoent_r_proto" in
15680                 REENTRANT_PROTO*) ;;
15681                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15682                 esac
15683                 echo "Prototype: $try" ;;
15684         esac
15685         ;;
15686         *)      case "$usethreads" in
15687                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15688                 esac
15689                 d_setprotoent_r=undef
15690                 setprotoent_r_proto=0
15691                 ;;
15692         esac
15693         ;;
15694 *)      setprotoent_r_proto=0
15695         ;;
15696 esac
15697
15698 : see if setpwent exists
15699 set setpwent d_setpwent
15700 eval $inlibc
15701
15702 : see if setpwent_r exists
15703 set setpwent_r d_setpwent_r
15704 eval $inlibc
15705 case "$d_setpwent_r" in
15706 "$define")
15707         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15708         case "$d_setpwent_r_proto:$usethreads" in
15709         ":define")      d_setpwent_r_proto=define
15710                 set d_setpwent_r_proto setpwent_r $hdrs
15711                 eval $hasproto ;;
15712         *)      ;;
15713         esac
15714         case "$d_setpwent_r_proto" in
15715         define)
15716         case "$setpwent_r_proto" in
15717         ''|0) try='int setpwent_r(FILE**);'
15718         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15719         esac
15720         case "$setpwent_r_proto" in
15721         ''|0) try='void setpwent_r(FILE**);'
15722         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15723         esac
15724         case "$setpwent_r_proto" in
15725         ''|0)   d_setpwent_r=undef
15726                 setpwent_r_proto=0
15727                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15728         * )     case "$setpwent_r_proto" in
15729                 REENTRANT_PROTO*) ;;
15730                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15731                 esac
15732                 echo "Prototype: $try" ;;
15733         esac
15734         ;;
15735         *)      case "$usethreads" in
15736                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15737                 esac
15738                 d_setpwent_r=undef
15739                 setpwent_r_proto=0
15740                 ;;
15741         esac
15742         ;;
15743 *)      setpwent_r_proto=0
15744         ;;
15745 esac
15746
15747 : see if setregid exists
15748 set setregid d_setregid
15749 eval $inlibc
15750 set setresgid d_setresgid
15751 eval $inlibc
15752
15753 : see if setreuid exists
15754 set setreuid d_setreuid
15755 eval $inlibc
15756 set setresuid d_setresuid
15757 eval $inlibc
15758
15759 : see if setrgid exists
15760 set setrgid d_setrgid
15761 eval $inlibc
15762
15763 : see if setruid exists
15764 set setruid d_setruid
15765 eval $inlibc
15766
15767 : see if setservent exists
15768 set setservent d_setsent
15769 eval $inlibc
15770
15771 : see if setservent_r exists
15772 set setservent_r d_setservent_r
15773 eval $inlibc
15774 case "$d_setservent_r" in
15775 "$define")
15776         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15777         case "$d_setservent_r_proto:$usethreads" in
15778         ":define")      d_setservent_r_proto=define
15779                 set d_setservent_r_proto setservent_r $hdrs
15780                 eval $hasproto ;;
15781         *)      ;;
15782         esac
15783         case "$d_setservent_r_proto" in
15784         define)
15785         case "$setservent_r_proto" in
15786         ''|0) try='int setservent_r(int, struct servent_data*);'
15787         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15788         esac
15789         case "$setservent_r_proto" in
15790         ''|0) try='void setservent_r(int, struct servent_data*);'
15791         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15792         esac
15793         case "$setservent_r_proto" in
15794         ''|0)   d_setservent_r=undef
15795                 setservent_r_proto=0
15796                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15797         * )     case "$setservent_r_proto" in
15798                 REENTRANT_PROTO*) ;;
15799                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15800                 esac
15801                 echo "Prototype: $try" ;;
15802         esac
15803         ;;
15804         *)      case "$usethreads" in
15805                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15806                 esac
15807                 d_setservent_r=undef
15808                 setservent_r_proto=0
15809                 ;;
15810         esac
15811         ;;
15812 *)      setservent_r_proto=0
15813         ;;
15814 esac
15815
15816 : see if setsid exists
15817 set setsid d_setsid
15818 eval $inlibc
15819
15820 : see if setvbuf exists
15821 set setvbuf d_setvbuf
15822 eval $inlibc
15823
15824 : see if sfio.h is available
15825 set sfio.h i_sfio
15826 eval $inhdr
15827
15828
15829 : see if sfio library is available
15830 case "$i_sfio" in
15831 $define)
15832         val=''
15833         set sfreserve val
15834         eval $inlibc
15835         ;;
15836 *)
15837         val="$undef"
15838         ;;
15839 esac
15840 : Ok, but do we want to use it.
15841 case "$val" in
15842 $define)
15843         case "$usesfio" in
15844         true|$define|[yY]*) dflt='y';;
15845         *) dflt='n';;
15846         esac
15847         echo "$package can use the sfio library, but it is experimental."
15848         case "$useperlio" in
15849         "$undef")
15850             echo "For sfio also the PerlIO abstraction layer is needed."
15851             echo "Earlier you said you wouldn't want that."
15852             ;;
15853         esac
15854         rp="You seem to have sfio available, do you want to try using it?"
15855         . ./myread
15856         case "$ans" in
15857         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15858                 useperlio="$define"
15859                 val="$define"
15860                 ;;
15861         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15862                 val="$undef"
15863                 ;;
15864         esac
15865         ;;
15866 *)      case "$usesfio" in
15867         true|$define|[yY]*)
15868                 echo "Sorry, cannot find sfio on this machine." >&4
15869                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15870                 val="$undef"
15871                 ;;
15872         esac
15873         ;;
15874 esac
15875 set d_sfio
15876 eval $setvar
15877 case "$d_sfio" in
15878 $define) usesfio='true';;
15879 *) usesfio='false';;
15880 esac
15881 case "$d_sfio" in
15882 $define) ;;
15883 *)      : Remove sfio from list of libraries to use
15884         case "$libs" in
15885         *-lsfio*)
15886                 echo "Removing unneeded -lsfio from library list" >&4
15887                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15888                 shift
15889                 libs="$*"
15890                 echo "libs = $libs" >&4
15891                 ;;
15892         esac
15893 ;;
15894 esac
15895
15896
15897 : see if shmctl exists
15898 set shmctl d_shmctl
15899 eval $inlibc
15900
15901 : see if shmget exists
15902 set shmget d_shmget
15903 eval $inlibc
15904
15905 : see if shmat exists
15906 set shmat d_shmat
15907 eval $inlibc
15908 : see what shmat returns
15909 case "$d_shmat" in
15910 "$define")
15911         $cat >shmat.c <<'END'
15912 #include <sys/shm.h>
15913 void *shmat();
15914 END
15915         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15916                 shmattype='void *'
15917         else
15918                 shmattype='char *'
15919         fi
15920         echo "and it returns ($shmattype)." >&4
15921         : see if a prototype for shmat is available
15922         xxx=`./findhdr sys/shm.h`
15923         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15924         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15925                 val="$define"
15926         else
15927                 val="$undef"
15928         fi
15929         $rm -f shmat.[co]
15930         ;;
15931 *)
15932         val="$undef"
15933         ;;
15934 esac
15935 set d_shmatprototype
15936 eval $setvar
15937
15938 : see if shmdt exists
15939 set shmdt d_shmdt
15940 eval $inlibc
15941
15942 : see how much of the 'shm*(2)' library is present.
15943 h_shm=true
15944 echo " "
15945 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15946 *"$undef"*) h_shm=false;;
15947 esac
15948 case "$osname" in
15949 freebsd)
15950     case "`ipcs 2>&1`" in
15951     "SVID shared memory"*"not configured"*)
15952         echo "Your $osname does not have the shm*(2) configured." >&4
15953         h_shm=false
15954         val="$undef"
15955         set shmctl d_shmctl
15956         evat $setvar
15957         set shmget d_shmget
15958         evat $setvar
15959         set shmat d_shmat
15960         evat $setvar
15961         set shmdt d_shmdt
15962         evat $setvar
15963         ;;
15964     esac
15965     ;;
15966 esac
15967 : we could also check for sys/ipc.h ...
15968 if $h_shm && $test `./findhdr sys/shm.h`; then
15969         echo "You have the full shm*(2) library." >&4
15970         val="$define"
15971 else
15972         echo "You don't have the full shm*(2) library." >&4
15973         val="$undef"
15974 fi
15975 set d_shm
15976 eval $setvar
15977
15978 echo " "
15979 : see if we have sigaction
15980 if set sigaction val -f d_sigaction; eval $csym; $val; then
15981         echo 'sigaction() found.' >&4
15982         $cat > try.c <<EOP
15983 #include <stdio.h>
15984 #include <sys/types.h>
15985 #include <signal.h>
15986 #$i_stdlib I_STDLIB
15987 #ifdef I_STDLIB
15988 #include <stdlib.h>
15989 #endif
15990 int main()
15991 {
15992     struct sigaction act, oact;
15993     act.sa_flags = 0;
15994     oact.sa_handler = 0;
15995     /* so that act and oact are used */
15996     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15997 }
15998 EOP
15999         set try
16000         if eval $compile_ok; then
16001                 val="$define"
16002         else
16003                 echo "But you don't seem to have a useable struct sigaction." >&4
16004                 val="$undef"
16005         fi
16006 else
16007         echo 'sigaction NOT found.' >&4
16008         val="$undef"
16009 fi
16010 set d_sigaction; eval $setvar
16011 $rm -f try try$_o try.c
16012
16013 : see if sigprocmask exists
16014 set sigprocmask d_sigprocmask
16015 eval $inlibc
16016
16017 : see if sigsetjmp exists
16018 echo " "
16019 case "$d_sigsetjmp" in
16020 '')
16021         $cat >try.c <<EOP
16022 #include <setjmp.h>
16023 #$i_stdlib I_STDLIB
16024 #ifdef I_STDLIB
16025 #include <stdlib.h>
16026 #endif
16027 sigjmp_buf env;
16028 int set = 1;
16029 int main()
16030 {
16031         if (sigsetjmp(env,1))
16032                 exit(set);
16033         set = 0;
16034         siglongjmp(env, 1);
16035         exit(1);
16036 }
16037 EOP
16038         set try
16039         if eval $compile; then
16040                 if $run ./try >/dev/null 2>&1; then
16041                         echo "POSIX sigsetjmp found." >&4
16042                         val="$define"
16043                 else
16044                         $cat >&4 <<EOM
16045 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16046 I'll ignore them.
16047 EOM
16048                         val="$undef"
16049                 fi
16050         else
16051                 echo "sigsetjmp not found." >&4
16052                 val="$undef"
16053         fi
16054         ;;
16055 *) val="$d_sigsetjmp"
16056         case "$d_sigsetjmp" in
16057         $define) echo "POSIX sigsetjmp found." >&4;;
16058         $undef) echo "sigsetjmp not found." >&4;;
16059         esac
16060         ;;
16061 esac
16062 set d_sigsetjmp
16063 eval $setvar
16064 $rm -f try.c try
16065
16066 : see if sockatmark exists
16067 set sockatmark d_sockatmark
16068 eval $inlibc
16069
16070 : see if prototype for sockatmark is available
16071 echo " "
16072 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16073 eval $hasproto
16074
16075 : see if socks5_init exists
16076 set socks5_init d_socks5_init
16077 eval $inlibc
16078
16079 : see if srand48_r exists
16080 set srand48_r d_srand48_r
16081 eval $inlibc
16082 case "$d_srand48_r" in
16083 "$define")
16084         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16085         case "$d_srand48_r_proto:$usethreads" in
16086         ":define")      d_srand48_r_proto=define
16087                 set d_srand48_r_proto srand48_r $hdrs
16088                 eval $hasproto ;;
16089         *)      ;;
16090         esac
16091         case "$d_srand48_r_proto" in
16092         define)
16093         case "$srand48_r_proto" in
16094         ''|0) try='int srand48_r(long, struct drand48_data*);'
16095         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16096         esac
16097         case "$srand48_r_proto" in
16098         ''|0)   d_srand48_r=undef
16099                 srand48_r_proto=0
16100                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16101         * )     case "$srand48_r_proto" in
16102                 REENTRANT_PROTO*) ;;
16103                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16104                 esac
16105                 echo "Prototype: $try" ;;
16106         esac
16107         ;;
16108         *)      case "$usethreads" in
16109                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16110                 esac
16111                 d_srand48_r=undef
16112                 srand48_r_proto=0
16113                 ;;
16114         esac
16115         ;;
16116 *)      srand48_r_proto=0
16117         ;;
16118 esac
16119
16120 : see if srandom_r exists
16121 set srandom_r d_srandom_r
16122 eval $inlibc
16123 case "$d_srandom_r" in
16124 "$define")
16125         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16126         case "$d_srandom_r_proto:$usethreads" in
16127         ":define")      d_srandom_r_proto=define
16128                 set d_srandom_r_proto srandom_r $hdrs
16129                 eval $hasproto ;;
16130         *)      ;;
16131         esac
16132         case "$d_srandom_r_proto" in
16133         define)
16134         case "$srandom_r_proto" in
16135         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16136         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16137         esac
16138         case "$srandom_r_proto" in
16139         ''|0)   d_srandom_r=undef
16140                 srandom_r_proto=0
16141                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16142         * )     case "$srandom_r_proto" in
16143                 REENTRANT_PROTO*) ;;
16144                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16145                 esac
16146                 echo "Prototype: $try" ;;
16147         esac
16148         ;;
16149         *)      case "$usethreads" in
16150                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16151                 esac
16152                 d_srandom_r=undef
16153                 srandom_r_proto=0
16154                 ;;
16155         esac
16156         ;;
16157 *)      srandom_r_proto=0
16158         ;;
16159 esac
16160
16161 : see if prototype for setresgid is available
16162 echo " "
16163 set d_sresgproto setresgid $i_unistd unistd.h
16164 eval $hasproto
16165
16166 : see if prototype for setresuid is available
16167 echo " "
16168 set d_sresuproto setresuid $i_unistd unistd.h
16169 eval $hasproto
16170
16171 : see if sys/stat.h is available
16172 set sys/stat.h i_sysstat
16173 eval $inhdr
16174
16175
16176 : see if stat knows about block sizes
16177 echo " "
16178 echo "Checking to see if your struct stat has st_blocks field..." >&4
16179 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16180 eval $hasfield
16181
16182
16183 : see if this is a sys/vfs.h system
16184 set sys/vfs.h i_sysvfs
16185 eval $inhdr
16186
16187
16188 : see if this is a sys/statfs.h system
16189 set sys/statfs.h i_sysstatfs
16190 eval $inhdr
16191
16192
16193 echo " "
16194 echo "Checking to see if your system supports struct statfs..." >&4
16195 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
16196 eval $hasstruct
16197 case "$d_statfs_s" in
16198 "$define")      echo "Yes, it does."   ;;
16199 *)              echo "No, it doesn't." ;;
16200 esac
16201
16202
16203
16204 : see if struct statfs knows about f_flags
16205 case "$d_statfs_s" in
16206 define) 
16207         echo " "
16208         echo "Checking to see if your struct statfs has f_flags field..." >&4
16209         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
16210         eval $hasfield
16211         ;;
16212 *)      val="$undef"
16213         set d_statfs_f_flags
16214         eval $setvar
16215         ;;
16216 esac
16217 case "$d_statfs_f_flags" in
16218 "$define")      echo "Yes, it does."   ;;
16219 *)              echo "No, it doesn't." ;;
16220 esac
16221
16222 $cat >&4 <<EOM
16223 Checking how to access stdio streams by file descriptor number...
16224 EOM
16225 case "$stdio_stream_array" in
16226 '')     $cat >try.c <<EOCP
16227 #include <stdio.h>
16228 int main() {
16229   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16230     printf("yes\n");
16231 }
16232 EOCP
16233         for s in _iob __iob __sF
16234         do
16235                 set try -DSTDIO_STREAM_ARRAY=$s
16236                 if eval $compile; then
16237                         case "`$run ./try`" in
16238                         yes)    stdio_stream_array=$s; break ;;
16239                         esac
16240                 fi
16241         done
16242         $rm -f try.* try$exe_ext
16243 esac
16244 case "$stdio_stream_array" in
16245 '')     $cat >&4 <<EOM
16246 I can't figure out how to access stdio streams by file descriptor number.
16247 EOM
16248         d_stdio_stream_array="$undef"
16249         ;;
16250 *)      $cat >&4 <<EOM
16251 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16252 EOM
16253         d_stdio_stream_array="$define"
16254         ;;
16255 esac
16256
16257 : see if strcoll exists
16258 set strcoll d_strcoll
16259 eval $inlibc
16260
16261 : check for structure copying
16262 echo " "
16263 echo "Checking to see if your C compiler can copy structs..." >&4
16264 $cat >try.c <<'EOCP'
16265 int main()
16266 {
16267         struct blurfl {
16268                 int dyick;
16269         } foo, bar;
16270
16271         foo = bar;
16272 }
16273 EOCP
16274 if $cc -c try.c >/dev/null 2>&1 ; then
16275         val="$define"
16276         echo "Yup, it can."
16277 else
16278         val="$undef"
16279         echo "Nope, it can't."
16280 fi
16281 set d_strctcpy
16282 eval $setvar
16283 $rm -f try.*
16284
16285 : see if strerror and/or sys_errlist[] exist
16286 echo " "
16287 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16288     if set strerror val -f d_strerror; eval $csym; $val; then
16289                 echo 'strerror() found.' >&4
16290                 d_strerror="$define"
16291                 d_strerrm='strerror(e)'
16292                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16293                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16294                         d_syserrlst="$define"
16295                 else
16296                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16297                         d_syserrlst="$undef"
16298                 fi
16299     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16300                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16301                 echo 'strerror() found in string header.' >&4
16302                 d_strerror="$define"
16303                 d_strerrm='strerror(e)'
16304                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16305                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16306                                 d_syserrlst="$define"
16307                 else
16308                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16309                         d_syserrlst="$undef"
16310                 fi
16311     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16312                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16313                 d_strerror="$undef"
16314                 d_syserrlst="$define"
16315                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16316     else
16317                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16318                 d_strerror="$undef"
16319                 d_syserrlst="$undef"
16320                 d_strerrm='"unknown"'
16321     fi
16322 fi
16323
16324 : see if strerror_r exists
16325 set strerror_r d_strerror_r
16326 eval $inlibc
16327 case "$d_strerror_r" in
16328 "$define")
16329         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16330         case "$d_strerror_r_proto:$usethreads" in
16331         ":define")      d_strerror_r_proto=define
16332                 set d_strerror_r_proto strerror_r $hdrs
16333                 eval $hasproto ;;
16334         *)      ;;
16335         esac
16336         case "$d_strerror_r_proto" in
16337         define)
16338         case "$strerror_r_proto" in
16339         ''|0) try='int strerror_r(int, char*, size_t);'
16340         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16341         esac
16342         case "$strerror_r_proto" in
16343         ''|0) try='int strerror_r(int, char*, int);'
16344         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16345         esac
16346         case "$strerror_r_proto" in
16347         ''|0) try='char* strerror_r(int, char*, size_t);'
16348         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16349         esac
16350         case "$strerror_r_proto" in
16351         ''|0)   d_strerror_r=undef
16352                 strerror_r_proto=0
16353                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16354         * )     case "$strerror_r_proto" in
16355                 REENTRANT_PROTO*) ;;
16356                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16357                 esac
16358                 echo "Prototype: $try" ;;
16359         esac
16360         ;;
16361         *)      case "$usethreads" in
16362                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16363                 esac
16364                 d_strerror_r=undef
16365                 strerror_r_proto=0
16366                 ;;
16367         esac
16368         ;;
16369 *)      strerror_r_proto=0
16370         ;;
16371 esac
16372
16373 : see if strftime exists
16374 set strftime d_strftime
16375 eval $inlibc
16376
16377 : see if strtod exists
16378 set strtod d_strtod
16379 eval $inlibc
16380
16381 : see if strtol exists
16382 set strtol d_strtol
16383 eval $inlibc
16384
16385 : see if strtold exists
16386 set strtold d_strtold
16387 eval $inlibc
16388
16389 : see if strtoll exists
16390 set strtoll d_strtoll
16391 eval $inlibc
16392
16393 case "$d_longlong-$d_strtoll" in
16394 "$define-$define")
16395         $cat <<EOM
16396 Checking whether your strtoll() works okay...
16397 EOM
16398         $cat >try.c <<'EOCP'
16399 #include <errno.h>
16400 #ifdef __hpux
16401 #define strtoll __strtoll
16402 #endif
16403 #ifdef __EMX__
16404 #define strtoll _strtoll
16405 #endif
16406 #include <stdio.h>
16407 extern long long int strtoll(char *s, char **, int); 
16408 static int bad = 0;
16409 int check(char *s, long long ell, int een) {
16410         long long gll;
16411         errno = 0;
16412         gll = strtoll(s, 0, 10);
16413         if (!((gll == ell) && (errno == een)))
16414                 bad++;
16415 }
16416 int main() {
16417         check(" 1",                                      1LL, 0);
16418         check(" 0",                                      0LL, 0);
16419         check("-1",                                     -1LL, 0);
16420         check("-9223372036854775808", -9223372036854775808LL, 0);
16421         check("-9223372036854775808", -9223372036854775808LL, 0);
16422         check(" 9223372036854775807",  9223372036854775807LL, 0);
16423         check("-9223372036854775808", -9223372036854775808LL, 0);
16424         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16425         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16426         if (!bad)
16427                 printf("ok\n");
16428 }
16429 EOCP
16430         set try
16431         if eval $compile; then
16432                 yyy=`$run ./try`
16433                 case "$yyy" in
16434                 ok) echo "Your strtoll() seems to be working okay." ;;
16435                 *) cat <<EOM >&4
16436 Your strtoll() doesn't seem to be working okay.
16437 EOM
16438                    d_strtoll="$undef"
16439                    ;;
16440                 esac
16441         else
16442                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16443                 d_strtoll="$undef"
16444         fi
16445         ;;
16446 esac
16447
16448 : see if strtoq exists
16449 set strtoq d_strtoq
16450 eval $inlibc
16451
16452 : see if strtoul exists
16453 set strtoul d_strtoul
16454 eval $inlibc
16455
16456 case "$d_strtoul" in
16457 "$define")
16458         $cat <<EOM
16459 Checking whether your strtoul() works okay...
16460 EOM
16461         $cat >try.c <<'EOCP'
16462 #include <errno.h>
16463 #include <stdio.h>
16464 extern unsigned long int strtoul(char *s, char **, int); 
16465 static int bad = 0;
16466 void check(char *s, unsigned long eul, int een) {
16467         unsigned long gul;
16468         errno = 0;
16469         gul = strtoul(s, 0, 10);
16470         if (!((gul == eul) && (errno == een)))
16471                 bad++;
16472 }
16473 int main() {
16474         check(" 1", 1L, 0);
16475         check(" 0", 0L, 0);
16476 EOCP
16477         case "$longsize" in
16478         8)
16479             $cat >>try.c <<'EOCP'
16480         check("18446744073709551615", 18446744073709551615UL, 0);
16481         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16482 #if 0 /* strtoul() for /^-/ strings is undefined. */
16483         check("-1", 18446744073709551615UL, 0);
16484         check("-18446744073709551614", 2, 0);
16485         check("-18446744073709551615", 1, 0);
16486         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16487         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16488 #endif
16489 EOCP
16490                 ;;
16491         4)
16492                     $cat >>try.c <<'EOCP'
16493         check("4294967295", 4294967295UL, 0);
16494         check("4294967296", 4294967295UL, ERANGE);
16495 #if 0 /* strtoul() for /^-/ strings is undefined. */
16496         check("-1", 4294967295UL, 0);
16497         check("-4294967294", 2, 0);
16498         check("-4294967295", 1, 0);
16499         check("-4294967296", 4294967295UL, ERANGE);
16500         check("-4294967297", 4294967295UL, ERANGE);
16501 #endif
16502 EOCP
16503                 ;;
16504         *)
16505 : Should we write these tests to be more portable by sprintf-ing
16506 : ~0 and then manipulating that char string as input for strtol?
16507                 ;;
16508         esac
16509         $cat >>try.c <<'EOCP'
16510         if (!bad)
16511                 printf("ok\n");
16512         return 0;
16513 }
16514 EOCP
16515         set try
16516         if eval $compile; then
16517                 case "`$run ./try`" in
16518                 ok) echo "Your strtoul() seems to be working okay." ;;
16519                 *) cat <<EOM >&4
16520 Your strtoul() doesn't seem to be working okay.
16521 EOM
16522                    d_strtoul="$undef"
16523                    ;;
16524                 esac
16525         fi
16526         ;;
16527 esac
16528
16529 : see if strtoull exists
16530 set strtoull d_strtoull
16531 eval $inlibc
16532
16533 case "$d_longlong-$d_strtoull" in
16534 "$define-$define")
16535         $cat <<EOM
16536 Checking whether your strtoull() works okay...
16537 EOM
16538         $cat >try.c <<'EOCP'
16539 #include <errno.h>
16540 #ifdef __hpux
16541 #define strtoull __strtoull
16542 #endif
16543 #include <stdio.h>
16544 extern unsigned long long int strtoull(char *s, char **, int); 
16545 static int bad = 0;
16546 int check(char *s, long long eull, int een) {
16547         long long gull;
16548         errno = 0;
16549         gull = strtoull(s, 0, 10);
16550         if (!((gull == eull) && (errno == een)))
16551                 bad++;
16552 }
16553 int main() {
16554         check(" 1",                                        1LL, 0);
16555         check(" 0",                                        0LL, 0);
16556         check("18446744073709551615",  18446744073709551615ULL, 0);
16557         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16558 #if 0 /* strtoull() for /^-/ strings is undefined. */
16559         check("-1",                    18446744073709551615ULL, 0);
16560         check("-18446744073709551614",                     2LL, 0);
16561         check("-18446744073709551615",                     1LL, 0);
16562         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16563         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16564 #endif
16565         if (!bad)
16566                 printf("ok\n");
16567 }
16568 EOCP
16569         set try
16570         if eval $compile; then
16571                 case "`$run ./try`" in
16572                 ok) echo "Your strtoull() seems to be working okay." ;;
16573                 *) cat <<EOM >&4
16574 Your strtoull() doesn't seem to be working okay.
16575 EOM
16576                    d_strtoull="$undef"
16577                    ;;
16578                 esac
16579         fi
16580         ;;
16581 esac
16582
16583 : see if strtouq exists
16584 set strtouq d_strtouq
16585 eval $inlibc
16586
16587 case "$d_strtouq" in
16588 "$define")
16589         $cat <<EOM
16590 Checking whether your strtouq() works okay...
16591 EOM
16592         $cat >try.c <<'EOCP'
16593 #include <errno.h>
16594 #include <stdio.h>
16595 extern unsigned long long int strtouq(char *s, char **, int); 
16596 static int bad = 0;
16597 void check(char *s, unsigned long long eull, int een) {
16598         unsigned long long gull;
16599         errno = 0;
16600         gull = strtouq(s, 0, 10);
16601         if (!((gull == eull) && (errno == een)))
16602                 bad++;
16603 }
16604 int main() {
16605         check(" 1",                                        1LL, 0);
16606         check(" 0",                                        0LL, 0);
16607         check("18446744073709551615",  18446744073709551615ULL, 0);
16608         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16609 #if 0 /* strtouq() for /^-/ strings is undefined. */
16610         check("-1",                    18446744073709551615ULL, 0);
16611         check("-18446744073709551614",                     2LL, 0);
16612         check("-18446744073709551615",                     1LL, 0);
16613         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16614         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16615 #endif
16616         if (!bad)
16617                 printf("ok\n");
16618         return 0;
16619 }
16620 EOCP
16621         set try
16622         if eval $compile; then
16623                 case "`$run ./try`" in
16624                 ok) echo "Your strtouq() seems to be working okay." ;;
16625                 *) cat <<EOM >&4
16626 Your strtouq() doesn't seem to be working okay.
16627 EOM
16628                    d_strtouq="$undef"
16629                    ;;
16630                 esac
16631         fi
16632         ;;
16633 esac
16634
16635 : see if strxfrm exists
16636 set strxfrm d_strxfrm
16637 eval $inlibc
16638
16639 : see if symlink exists
16640 set symlink d_symlink
16641 eval $inlibc
16642
16643 : see if syscall exists
16644 set syscall d_syscall
16645 eval $inlibc
16646
16647 : see if prototype for syscall is available
16648 echo " "
16649 set d_syscallproto syscall $i_unistd unistd.h
16650 eval $hasproto
16651
16652 : see if sysconf exists
16653 set sysconf d_sysconf
16654 eval $inlibc
16655
16656 : see if system exists
16657 set system d_system
16658 eval $inlibc
16659
16660 : see if tcgetpgrp exists
16661 set tcgetpgrp d_tcgetpgrp
16662 eval $inlibc
16663
16664 : see if tcsetpgrp exists
16665 set tcsetpgrp d_tcsetpgrp
16666 eval $inlibc
16667
16668 : see if prototype for telldir is available
16669 echo " "
16670 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16671 eval $hasproto
16672
16673 : see if time exists
16674 echo " "
16675 if test "X$d_time" = X -o X"$timetype" = X; then
16676     if set time val -f d_time; eval $csym; $val; then
16677                 echo 'time() found.' >&4
16678                 val="$define"
16679                 rp="What is the type returned by time() on this system?"
16680                 set time_t timetype long stdio.h sys/types.h
16681                 eval $typedef_ask
16682     else
16683                 echo 'time() not found, hope that will do.' >&4
16684                 val="$undef"
16685                 timetype='int';
16686     fi
16687     set d_time
16688     eval $setvar
16689 fi
16690
16691 : see if this is a sys/times.h system
16692 set sys/times.h i_systimes
16693 eval $inhdr
16694
16695 : see if times exists
16696 echo " "
16697 if set times val -f d_times; eval $csym; $val; then
16698         echo 'times() found.' >&4
16699         d_times="$define"
16700         inc=''
16701         case "$i_systimes" in
16702         "$define") inc='sys/times.h';;
16703         esac
16704         rp="What is the type returned by times() on this system?"
16705         set clock_t clocktype long stdio.h sys/types.h $inc
16706         eval $typedef_ask
16707 else
16708         echo 'times() NOT found, hope that will do.' >&4
16709         d_times="$undef"
16710         clocktype='int'
16711 fi
16712
16713 : see if tmpnam_r exists
16714 set tmpnam_r d_tmpnam_r
16715 eval $inlibc
16716 case "$d_tmpnam_r" in
16717 "$define")
16718         hdrs="$i_systypes sys/types.h define stdio.h "
16719         case "$d_tmpnam_r_proto:$usethreads" in
16720         ":define")      d_tmpnam_r_proto=define
16721                 set d_tmpnam_r_proto tmpnam_r $hdrs
16722                 eval $hasproto ;;
16723         *)      ;;
16724         esac
16725         case "$d_tmpnam_r_proto" in
16726         define)
16727         case "$tmpnam_r_proto" in
16728         ''|0) try='char* tmpnam_r(char*);'
16729         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16730         esac
16731         case "$tmpnam_r_proto" in
16732         ''|0)   d_tmpnam_r=undef
16733                 tmpnam_r_proto=0
16734                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16735         * )     case "$tmpnam_r_proto" in
16736                 REENTRANT_PROTO*) ;;
16737                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16738                 esac
16739                 echo "Prototype: $try" ;;
16740         esac
16741         ;;
16742         *)      case "$usethreads" in
16743                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16744                 esac
16745                 d_tmpnam_r=undef
16746                 tmpnam_r_proto=0
16747                 ;;
16748         esac
16749         ;;
16750 *)      tmpnam_r_proto=0
16751         ;;
16752 esac
16753
16754 : see if truncate exists
16755 set truncate d_truncate
16756 eval $inlibc
16757
16758 : see if ttyname_r exists
16759 set ttyname_r d_ttyname_r
16760 eval $inlibc
16761 case "$d_ttyname_r" in
16762 "$define")
16763         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16764         case "$d_ttyname_r_proto:$usethreads" in
16765         ":define")      d_ttyname_r_proto=define
16766                 set d_ttyname_r_proto ttyname_r $hdrs
16767                 eval $hasproto ;;
16768         *)      ;;
16769         esac
16770         case "$d_ttyname_r_proto" in
16771         define)
16772         case "$ttyname_r_proto" in
16773         ''|0) try='int ttyname_r(int, char*, size_t);'
16774         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16775         esac
16776         case "$ttyname_r_proto" in
16777         ''|0) try='int ttyname_r(int, char*, int);'
16778         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16779         esac
16780         case "$ttyname_r_proto" in
16781         ''|0) try='char* ttyname_r(int, char*, int);'
16782         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16783         esac
16784         case "$ttyname_r_proto" in
16785         ''|0)   d_ttyname_r=undef
16786                 ttyname_r_proto=0
16787                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16788         * )     case "$ttyname_r_proto" in
16789                 REENTRANT_PROTO*) ;;
16790                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16791                 esac
16792                 echo "Prototype: $try" ;;
16793         esac
16794         ;;
16795         *)      case "$usethreads" in
16796                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16797                 esac
16798                 d_ttyname_r=undef
16799                 ttyname_r_proto=0
16800                 ;;
16801         esac
16802         ;;
16803 *)      ttyname_r_proto=0
16804         ;;
16805 esac
16806
16807 : see if tzname[] exists
16808 echo " "
16809 if set tzname val -a d_tzname; eval $csym; $val; then
16810         val="$define"
16811         echo 'tzname[] found.' >&4
16812 else
16813         val="$undef"
16814         echo 'tzname[] NOT found.' >&4
16815 fi
16816 set d_tzname
16817 eval $setvar
16818
16819 case "$osname" in
16820 next|rhapsody|darwin) multiarch="$define" ;;
16821 esac
16822 case "$multiarch" in
16823 ''|[nN]*) multiarch="$undef" ;;
16824 esac
16825
16826 : check for ordering of bytes in a UV
16827 echo " "
16828 case "$usecrosscompile$multiarch" in
16829 *$define*)
16830         $cat <<EOM
16831 You seem to be either cross-compiling or doing a multiarchitecture build,
16832 skipping the byteorder check.
16833
16834 EOM
16835         byteorder='ffff'
16836         ;;
16837 *)
16838         case "$byteorder" in
16839         '')
16840                 $cat <<'EOM'
16841 In the following, larger digits indicate more significance.  A big-endian
16842 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16843 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16844 machines may have weird orders like 3412.  A Cray will report 87654321,
16845 an Alpha will report 12345678. If the test program works the default is
16846 probably right.
16847 I'm now running the test program...
16848 EOM
16849                 $cat >try.c <<EOCP
16850 #include <stdio.h>
16851 #$i_stdlib I_STDLIB
16852 #ifdef I_STDLIB
16853 #include <stdlib.h>
16854 #endif
16855 #include <sys/types.h>
16856 typedef $uvtype UV;
16857 int main()
16858 {
16859         int i;
16860         union {
16861                 UV l;
16862                 char c[$uvsize];
16863         } u;
16864
16865         if ($uvsize > 4)
16866                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16867         else
16868                 u.l = (UV)0x04030201;
16869         for (i = 0; i < $uvsize; i++)
16870                 printf("%c", u.c[i]+'0');
16871         printf("\n");
16872         exit(0);
16873 }
16874 EOCP
16875                 xxx_prompt=y
16876                 set try
16877                 if eval $compile && ./try > /dev/null; then
16878                         dflt=`$run ./try`
16879                         case "$dflt" in
16880                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16881                                 echo "(The test program ran ok.)"
16882                                 echo "byteorder=$dflt"
16883                                 xxx_prompt=n
16884                         ;;
16885                         ????|????????) echo "(The test program ran ok.)" ;;
16886                         *) echo "(The test program didn't run right for some reason.)" ;;
16887                         esac
16888                 else
16889                         dflt='4321'
16890                         cat <<'EOM'
16891 (I can't seem to compile the test program.  Guessing big-endian...)
16892 EOM
16893                 fi
16894                 case "$xxx_prompt" in
16895                 y)
16896                         rp="What is the order of bytes in $uvtype?"
16897                         . ./myread
16898                         byteorder="$ans"
16899                         ;;
16900                 *)      byteorder=$dflt
16901                         ;;
16902                 esac
16903                 ;;
16904         esac
16905         $rm -f try.c try
16906         ;;
16907 esac
16908
16909
16910 $cat <<EOM
16911
16912 Checking to see whether you can access character data unalignedly...
16913 EOM
16914 case "$d_u32align" in
16915 '')   $cat >try.c <<EOCP
16916 #include <stdio.h>
16917 #$i_stdlib I_STDLIB
16918 #ifdef I_STDLIB
16919 #include <stdlib.h>
16920 #endif
16921 #define U32 $u32type
16922 #define BYTEORDER 0x$byteorder
16923 #define U8 $u8type
16924 #include <signal.h>
16925 #ifdef SIGBUS
16926 $signal_t bletch(s) int s; { exit(4); }
16927 #endif
16928 int main() {
16929 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16930     U8 buf[8];
16931     U32 *up;
16932     int i;
16933
16934     if (sizeof(U32) != 4) {
16935         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16936         exit(1);
16937     }
16938
16939     fflush(stdout);
16940
16941 #ifdef SIGBUS
16942     signal(SIGBUS, bletch);
16943 #endif
16944
16945     buf[0] = 0;
16946     buf[1] = 0;
16947     buf[2] = 0;
16948     buf[3] = 1;
16949     buf[5] = 0;
16950     buf[6] = 0;
16951     buf[7] = 0;
16952     buf[8] = 1;
16953
16954     for (i = 0; i < 4; i++) {
16955         up = (U32*)(buf + i);
16956         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16957                (*up == 1 << (8*(3-i)))  /* little-endian */
16958               )
16959            )
16960         {
16961             printf("read failed (%x)\n", *up);
16962             exit(2);
16963         }
16964     }
16965
16966     /* write test */
16967     for (i = 0; i < 4; i++) {
16968         up = (U32*)(buf + i);
16969         *up = 0xBeef;
16970         if (*up != 0xBeef) {
16971             printf("write failed (%x)\n", *up);
16972             exit(3);
16973         }
16974     }
16975
16976     exit(0);
16977 #else
16978     printf("1\n");
16979     exit(1);
16980 #endif
16981     return 0;
16982 }
16983 EOCP
16984 set try
16985 if eval $compile_ok; then
16986         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16987         $run ./try 2>&1 >/dev/null
16988         case "$?" in
16989         0)      cat >&4 <<EOM
16990 You can access character data pretty unalignedly.
16991 EOM
16992                 d_u32align="$undef"
16993                 ;;
16994         *)      cat >&4 <<EOM
16995 It seems that you must access character data in an aligned manner.
16996 EOM
16997                 d_u32align="$define"
16998                 ;;
16999         esac
17000 else
17001         rp='Can you access character data at unaligned addresses?'
17002         dflt='n'
17003         . ./myread
17004         case "$ans" in
17005         [yY]*)  d_u32align="$undef"  ;;
17006         *)      d_u32align="$define" ;;
17007         esac
17008 fi
17009 $rm -f core core.try.* try.core
17010 ;;
17011 esac
17012
17013 : see if ualarm exists
17014 set ualarm d_ualarm
17015 eval $inlibc
17016
17017 : see if umask exists
17018 set umask d_umask
17019 eval $inlibc
17020
17021 : see if unordered exists
17022 set unordered d_unordered
17023 eval $inlibc
17024
17025 : see if usleep exists
17026 set usleep d_usleep
17027 eval $inlibc
17028
17029 : see if prototype for usleep is available
17030 echo " "
17031 set d_usleepproto usleep $i_unistd unistd.h
17032 eval $hasproto
17033
17034 : see if ustat exists
17035 set ustat d_ustat
17036 eval $inlibc
17037
17038 : backward compatibility for d_hvfork
17039 if test X$d_hvfork != X; then
17040         d_vfork="$d_hvfork"
17041         d_hvfork=''
17042 fi
17043 : see if there is a vfork
17044 val=''
17045 set vfork val
17046 eval $inlibc
17047
17048 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17049 : perl on Solaris 2.x, and probably elsewhere.
17050 case "$val" in
17051 $define)
17052         echo " "
17053         case "$usevfork" in
17054         false) dflt='n';;
17055         *) dflt='y';;
17056         esac
17057         cat <<'EOM'
17058  
17059 Perl can only use a vfork() that doesn't suffer from strict
17060 restrictions on calling functions or modifying global data in
17061 the child.  For example, glibc-2.1 contains such a vfork()
17062 that is unsuitable.  If your system provides a proper fork()
17063 call, chances are that you do NOT want perl to use vfork().
17064
17065 EOM
17066         rp="Do you still want to use vfork()?"
17067         . ./myread
17068         case "$ans" in
17069         y|Y) ;;
17070         *)
17071                 echo "Ok, we won't use vfork()."
17072                 val="$undef"
17073                 ;;
17074         esac
17075         ;;
17076 esac
17077 set d_vfork
17078 eval $setvar
17079 case "$d_vfork" in
17080 $define) usevfork='true';;
17081 *) usevfork='false';;
17082 esac
17083
17084 : see if closedir exists
17085 set closedir d_closedir
17086 eval $inlibc
17087
17088 case "$d_closedir" in
17089 "$define")
17090         echo " "
17091         echo "Checking whether closedir() returns a status..." >&4
17092         cat > try.c <<EOM
17093 #$i_dirent I_DIRENT             /**/
17094 #$i_sysdir I_SYS_DIR            /**/
17095 #$i_sysndir I_SYS_NDIR          /**/
17096 #$i_systypes I_SYS_TYPES        /**/
17097
17098 #if defined(I_SYS_TYPES)
17099 #include <sys/types.h>
17100 #endif
17101 #if defined(I_DIRENT)
17102 #include <dirent.h>
17103 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17104 #include <sys/dir.h>
17105 #endif
17106 #else
17107 #ifdef I_SYS_NDIR
17108 #include <sys/ndir.h>
17109 #else
17110 #ifdef I_SYS_DIR
17111 #ifdef hp9000s500
17112 #include <ndir.h>       /* may be wrong in the future */
17113 #else
17114 #include <sys/dir.h>
17115 #endif
17116 #endif
17117 #endif
17118 #endif 
17119 int main() { return closedir(opendir(".")); }
17120 EOM
17121         set try
17122         if eval $compile_ok; then
17123                 if $run ./try > /dev/null 2>&1 ; then
17124                         echo "Yes, it does."
17125                         val="$undef"
17126                 else
17127                         echo "No, it doesn't."
17128                         val="$define"
17129                 fi
17130         else
17131                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17132                 val="$define"
17133         fi
17134         ;;
17135 *)
17136         val="$undef";
17137         ;;
17138 esac
17139 set d_void_closedir
17140 eval $setvar
17141 $rm -f try try.*
17142 : see if there is a wait4
17143 set wait4 d_wait4
17144 eval $inlibc
17145
17146 : see if waitpid exists
17147 set waitpid d_waitpid
17148 eval $inlibc
17149
17150 : see if wcstombs exists
17151 set wcstombs d_wcstombs
17152 eval $inlibc
17153
17154 : see if wctomb exists
17155 set wctomb d_wctomb
17156 eval $inlibc
17157
17158 : see if writev exists
17159 set writev d_writev
17160 eval $inlibc
17161
17162 : preserve RCS keywords in files with variable substitution, grrr
17163 Date='$Date'
17164 Id='$Id'
17165 Log='$Log'
17166 RCSfile='$RCSfile'
17167 Revision='$Revision'
17168
17169 : check for alignment requirements
17170 echo " "
17171 case "$usecrosscompile$multiarch" in
17172 *$define*)
17173         $cat <<EOM
17174 You seem to be either cross-compiling or doing a multiarchitecture build,
17175 skipping the memory alignment check.
17176
17177 EOM
17178         case "$alignbytes" in
17179         '') alignbytes=8 ;;
17180         esac
17181         ;;
17182 *)
17183         case "$alignbytes" in
17184         '') echo "Checking alignment constraints..." >&4
17185                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17186                         $cat >try.c <<'EOCP'
17187 typedef long double NV;
17188 EOCP
17189                 else
17190                         $cat >try.c <<'EOCP'
17191 typedef double NV;
17192 EOCP
17193                 fi
17194                 $cat >>try.c <<'EOCP'
17195 #include <stdio.h>
17196 struct foobar {
17197         char foo;
17198         NV bar;
17199 } try_algn;
17200 int main()
17201 {
17202     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17203     return(0);
17204 }
17205 EOCP
17206                 set try
17207                 if eval $compile_ok; then
17208                         dflt=`$run ./try`
17209                 else
17210                         dflt='8'
17211                         echo "(I can't seem to compile the test program...)"
17212                 fi
17213                 ;;
17214         *) dflt="$alignbytes"
17215                 ;;
17216         esac
17217         rp="Doubles must be aligned on a how-many-byte boundary?"
17218         . ./myread
17219         alignbytes="$ans"
17220         $rm -f try.c try
17221         ;;
17222 esac
17223
17224
17225 : set the base revision
17226 baserev=5.0
17227
17228 : how do we catenate cpp tokens here?
17229 echo " "
17230 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17231 $cat >cpp_stuff.c <<'EOCP'
17232 #define RCAT(a,b)a/**/b
17233 #define ACAT(a,b)a ## b
17234 RCAT(Rei,ser)
17235 ACAT(Cir,cus)
17236 EOCP
17237 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17238 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17239         echo "Oh!  Smells like ANSI's been here." >&4
17240         echo "We can catify or stringify, separately or together!"
17241         cpp_stuff=42
17242 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17243         echo "Ah, yes!  The good old days!" >&4
17244         echo "However, in the good old days we don't know how to stringify and"
17245         echo "catify at the same time."
17246         cpp_stuff=1
17247 else
17248         $cat >&4 <<EOM
17249 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
17250 to have to edit the values of CAT[2-5] in config.h...
17251 EOM
17252         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17253 fi
17254 $rm -f cpp_stuff.*
17255
17256 : see if this is a db.h system
17257 set db.h i_db
17258 eval $inhdr
17259
17260 case "$i_db" in
17261 $define)
17262         : Check db version.
17263         echo " "
17264         echo "Checking Berkeley DB version ..." >&4
17265         $cat >try.c <<EOCP
17266 #$d_const HASCONST
17267 #ifndef HASCONST
17268 #define const
17269 #endif
17270 #include <sys/types.h>
17271 #include <stdio.h>
17272 #$i_stdlib I_STDLIB
17273 #ifdef I_STDLIB
17274 #include <stdlib.h>
17275 #endif
17276 #include <db.h>
17277 int main(int argc, char *argv[])
17278 {
17279 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17280     int Major, Minor, Patch ;
17281     unsigned long Version ;
17282     (void)db_version(&Major, &Minor, &Patch) ;
17283     if (argc == 2) {
17284         printf("%d %d %d %d %d %d\n",
17285                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17286                Major, Minor, Patch);
17287         exit(0);
17288     }
17289     printf("You have Berkeley DB Version 2 or greater.\n");
17290
17291     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17292                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17293     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17294                 Major, Minor, Patch) ;
17295
17296     /* check that db.h & libdb are compatible */
17297     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17298         printf("db.h and libdb are incompatible.\n") ;
17299         exit(3);        
17300     }
17301
17302     printf("db.h and libdb are compatible.\n") ;
17303
17304     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17305                 + DB_VERSION_PATCH ;
17306
17307     /* needs to be >= 2.3.4 */
17308     if (Version < 2003004) {
17309     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17310         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17311         exit(2);        
17312     }
17313
17314     exit(0);
17315 #else
17316 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17317     if (argc == 2) {
17318         printf("1 0 0\n");
17319         exit(0);
17320     }
17321     printf("You have Berkeley DB Version 1.\n");
17322     exit(0);    /* DB version < 2: the coast is clear. */
17323 #else
17324     exit(1);    /* <db.h> not Berkeley DB? */
17325 #endif
17326 #endif
17327 }
17328 EOCP
17329         set try
17330         if eval $compile_ok && $run ./try; then
17331                 echo 'Looks OK.' >&4
17332                 set `$run ./try 1`
17333                 db_version_major=$1
17334                 db_version_minor=$2
17335                 db_version_patch=$3
17336         else
17337                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17338                 i_db=$undef
17339                 case " $libs " in
17340                 *"-ldb "*)
17341                         : Remove db from list of libraries to use
17342                         echo "Removing unusable -ldb from library list" >&4
17343                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17344                         shift
17345                         libs="$*"
17346                         echo "libs = $libs" >&4
17347                         ;;
17348                 esac
17349         fi
17350         $rm -f try.*
17351         ;;
17352 esac
17353
17354 case "$i_db" in
17355 define)
17356         : Check the return type needed for hash 
17357         echo " "
17358         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17359         $cat >try.c <<EOCP
17360 #$d_const HASCONST
17361 #ifndef HASCONST
17362 #define const
17363 #endif
17364 #include <sys/types.h>
17365 #include <db.h>
17366
17367 #ifndef DB_VERSION_MAJOR
17368 u_int32_t hash_cb (ptr, size)
17369 const void *ptr;
17370 size_t size;
17371 {
17372 }
17373 HASHINFO info;
17374 int main()
17375 {
17376         info.hash = hash_cb;
17377 }
17378 #endif
17379 EOCP
17380         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17381                 if $contains warning try.out >>/dev/null 2>&1 ; then
17382                         db_hashtype='int'
17383                 else
17384                         db_hashtype='u_int32_t'
17385                 fi
17386         else
17387                 : XXX Maybe we should just give up here.
17388                 db_hashtype=u_int32_t
17389                 $cat try.out >&4
17390                 echo "Help:  I can't seem to compile the db test program." >&4
17391                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17392         fi
17393         $rm -f try.*
17394         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17395         ;;
17396 *)      db_hashtype=u_int32_t
17397         ;;
17398 esac
17399 case "$i_db" in
17400 define)
17401         : Check the return type needed for prefix 
17402         echo " "
17403         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17404         cat >try.c <<EOCP
17405 #$d_const HASCONST
17406 #ifndef HASCONST
17407 #define const
17408 #endif
17409 #include <sys/types.h>
17410 #include <db.h>
17411
17412 #ifndef DB_VERSION_MAJOR
17413 size_t prefix_cb (key1, key2)
17414 const DBT *key1;
17415 const DBT *key2;
17416 {
17417 }
17418 BTREEINFO info;
17419 int main()
17420 {
17421         info.prefix = prefix_cb;
17422 }
17423 #endif
17424 EOCP
17425         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17426                 if $contains warning try.out >>/dev/null 2>&1 ; then
17427                         db_prefixtype='int'
17428                 else
17429                         db_prefixtype='size_t'
17430                 fi
17431         else
17432                 db_prefixtype='size_t'
17433                 : XXX Maybe we should just give up here.
17434                 $cat try.out >&4
17435                 echo "Help:  I can't seem to compile the db test program." >&4
17436                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17437         fi
17438         $rm -f try.*
17439         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17440         ;;
17441 *)      db_prefixtype='size_t'
17442         ;;
17443 esac
17444
17445
17446 : How can we generate normalized random numbers ?
17447 echo " "
17448 echo "Looking for a random number function..." >&4
17449 case "$randfunc" in
17450 '')
17451         if set drand48 val -f; eval $csym; $val; then
17452                 dflt="drand48"
17453                 echo "Good, found drand48()." >&4
17454         elif set random val -f; eval $csym; $val; then
17455                 dflt="random"
17456                 echo "OK, found random()." >&4
17457         else
17458                 dflt="rand"
17459                 echo "Yick, looks like I have to use rand()." >&4
17460         fi
17461         echo " "
17462         ;;
17463 *)
17464         dflt="$randfunc"
17465         ;;
17466 esac
17467 cont=true
17468
17469 case "$ccflags" in
17470 *-Dmy_rand=*|*-Dmy_srand=*)
17471         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17472         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17473         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17474         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17475         ;;
17476 esac
17477
17478 while $test "$cont"; do
17479         rp="Use which function to generate random numbers?"
17480         . ./myread
17481         if $test "$ans" = "$dflt"; then
17482                 : null
17483         else
17484                 randbits=''
17485         fi
17486         randfunc="$ans"
17487         if set $ans val -f; eval $csym; $val; then
17488                 cont=''
17489         else
17490                 dflt=y
17491                 rp="I cannot find function $ans. Use that name anyway?"
17492                 . ./myread
17493                 dflt=rand
17494                 case "$ans" in
17495                         [yY]*) cont='';;
17496                 esac
17497         fi
17498         case "$cont" in
17499         '')
17500                 case "$randfunc" in
17501                 drand48)
17502                         drand01="drand48()"
17503                         seedfunc="srand48"
17504                         randbits=48
17505                         randseedtype=long
17506                         ;;
17507                 rand|random)
17508                         case "$randbits" in
17509                         '')
17510 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17511                                 $cat >try.c <<EOCP
17512 #$i_unistd I_UNISTD
17513 #$i_stdlib I_STDLIB
17514 #include <stdio.h>
17515 #ifdef I_UNISTD
17516 #  include <unistd.h>
17517 #endif
17518 #ifdef I_STDLIB
17519 #  include <stdlib.h>
17520 #endif
17521 int main()
17522 {
17523         register int i;
17524         register unsigned long tmp;
17525         register unsigned long max = 0L;
17526
17527         for (i = 1000; i; i--) {
17528                 tmp = (unsigned long) $randfunc();
17529                 if (tmp > max) max = tmp;
17530         }
17531         for (i = 0; max; i++)
17532                 max /= 2;
17533         printf("%d\n",i);
17534 }
17535 EOCP
17536                                 set try
17537                                 if eval $compile_ok; then
17538                                         dflt=`try`
17539                                 else
17540                                         dflt='?'
17541                                         echo "(I can't seem to compile the test program...)"
17542                                 fi
17543                                 ;;
17544                         *)
17545                                 dflt="$randbits"
17546                                 ;;
17547                         esac
17548                         rp="How many bits does your $randfunc() function produce?"
17549                         . ./myread
17550                         randbits="$ans"
17551                         $rm -f try.c try
17552                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17553                         seedfunc="s$randfunc"
17554                         randseedtype=unsigned
17555                         ;;
17556                 *)
17557                         dflt="31"
17558                         rp="How many bits does your $randfunc() function produce?"
17559                         . ./myread
17560                         randbits="$ans"
17561                         seedfunc="s$randfunc"
17562                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17563                         if set $seedfunc val -f; eval $csym; $val; then
17564                                 echo "(Using $seedfunc() to seed random generator)"
17565                         else
17566                                 echo "(Warning: no $seedfunc() to seed random generator)"
17567                                 seedfunc=rand
17568                         fi
17569                         randseedtype=unsigned
17570                         ;;
17571                 esac
17572                 ;;
17573         esac
17574 done
17575
17576 echo " "
17577 echo "Determining whether or not we are on an EBCDIC system..." >&4
17578 $cat >try.c <<'EOM'
17579 int main()
17580 {
17581   if ('M'==0xd4) return 0;
17582   return 1;
17583 }
17584 EOM
17585
17586 val=$undef
17587 set try
17588 if eval $compile_ok; then
17589         if $run ./try; then
17590                 echo "You seem to speak EBCDIC." >&4
17591                 val="$define"
17592         else
17593                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17594         fi
17595 else
17596         echo "I'm unable to compile the test program." >&4
17597         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17598 fi
17599 $rm -f try try.*
17600 set ebcdic
17601 eval $setvar
17602
17603 echo " "
17604 $cat >&4 <<EOM
17605 Checking how to flush all pending stdio output...
17606 EOM
17607 # I only know how to find the first 32 possibly open files on SunOS.
17608 # See also hints/sunos_4_1.sh and util.c  --AD
17609 case "$osname" in
17610 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17611 esac
17612 $cat >>try.c <<EOCP
17613 #include <stdio.h>
17614 #$i_stdlib I_STDLIB
17615 #ifdef I_STDLIB
17616 #include <stdlib.h>
17617 #endif
17618 #$i_unistd I_UNISTD
17619 #ifdef I_UNISTD
17620 # include <unistd.h>
17621 #endif
17622 #$d_sysconf HAS_SYSCONF
17623 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17624 #ifdef HAS_STDIO_STREAM_ARRAY
17625 # define STDIO_STREAM_ARRAY $stdio_stream_array
17626 #endif
17627 int main() {
17628   FILE* p;
17629   unlink("try.out");
17630   p = fopen("try.out", "w");
17631 #ifdef TRY_FPUTC
17632   fputc('x', p);
17633 #else
17634 # ifdef TRY_FPRINTF
17635   fprintf(p, "x");
17636 # endif
17637 #endif
17638 #ifdef TRY_FFLUSH_NULL
17639   fflush(NULL);
17640 #endif
17641 #ifdef TRY_FFLUSH_ALL
17642   {
17643     long open_max = -1;
17644 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17645     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17646 # else
17647 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17648     open_max = sysconf(_SC_OPEN_MAX);
17649 #  else
17650 #   ifdef FOPEN_MAX
17651     open_max = FOPEN_MAX;
17652 #   else
17653 #    ifdef OPEN_MAX
17654     open_max = OPEN_MAX;
17655 #    else
17656 #     ifdef _NFILE
17657     open_max = _NFILE;
17658 #     endif
17659 #    endif
17660 #   endif
17661 #  endif
17662 # endif 
17663 # ifdef HAS_STDIO_STREAM_ARRAY
17664     if (open_max > 0) {
17665       long i;
17666       for (i = 0; i < open_max; i++)
17667             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17668                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17669                 STDIO_STREAM_ARRAY[i]._flag)
17670                 fflush(&STDIO_STREAM_ARRAY[i]);
17671     }   
17672   }
17673 # endif
17674 #endif
17675   _exit(42);
17676 }
17677 EOCP
17678 : first we have to find out how _not_ to flush
17679 $to try.c
17680 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17681     output=''
17682     set try -DTRY_FPUTC
17683     if eval $compile; then
17684             $run ./try 2>/dev/null
17685             code="$?"
17686             $from try.out
17687             if $test ! -s try.out -a "X$code" = X42; then
17688                 output=-DTRY_FPUTC
17689             fi
17690     fi
17691     case "$output" in
17692     '')
17693             set try -DTRY_FPRINTF
17694             if eval $compile; then
17695                     $run ./try 2>/dev/null
17696                     code="$?"
17697                     $from try.out
17698                     if $test ! -s try.out -a "X$code" = X42; then
17699                         output=-DTRY_FPRINTF
17700                     fi
17701             fi
17702         ;;
17703     esac
17704 fi
17705 : check for fflush NULL behaviour
17706 case "$fflushNULL" in
17707 '')     set try -DTRY_FFLUSH_NULL $output
17708         if eval $compile; then
17709                 $run ./try 2>/dev/null
17710                 code="$?"
17711                 $from try.out
17712                 if $test -s try.out -a "X$code" = X42; then
17713                         fflushNULL="`$cat try.out`"
17714                 else
17715                         if $test "X$code" != X42; then
17716                                 $cat >&4 <<EOM
17717 (If this test failed, don't worry, we'll try another method shortly.)
17718 EOM
17719                         fi
17720                 fi
17721         fi
17722         $rm -f core try.core core.try.*
17723         case "$fflushNULL" in
17724         x)      $cat >&4 <<EOM
17725 Your fflush(NULL) works okay for output streams.
17726 Let's see if it clobbers input pipes...
17727 EOM
17728 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17729 # bug that improperly flushes the input end of pipes.  So we avoid the
17730 # autoflush on fork/system/exec support for now. :-(
17731 $cat >tryp.c <<EOCP
17732 #include <stdio.h>
17733 int
17734 main(int argc, char **argv)
17735 {
17736     char buf[1024];
17737     int i;
17738     char *bp = buf;
17739     while (1) {
17740         while ((i = getc(stdin)) != -1
17741                && (*bp++ = i) != '\n'
17742                && bp < &buf[1024])
17743         /* DO NOTHING */ ;
17744         *bp = '\0';
17745         fprintf(stdout, "%s", buf);
17746         fflush(NULL);
17747         if (i == -1)
17748             return 0;
17749         bp = buf;
17750     }
17751 }
17752 EOCP
17753                 fflushNULL="$define"
17754                 set tryp
17755                 if eval $compile; then
17756                     $rm -f tryp.out
17757                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17758                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17759                        $cat >&4 <<EOM
17760 fflush(NULL) seems to behave okay with input streams.
17761 EOM
17762                         fflushNULL="$define"
17763                     else
17764                         $cat >&4 <<EOM
17765 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17766 EOM
17767                         fflushNULL="$undef"
17768                     fi
17769                 fi
17770                 $rm -f core tryp.c tryp.core core.tryp.*
17771                 ;;
17772         '')     $cat >&4 <<EOM
17773 Your fflush(NULL) isn't working (contrary to ANSI C).
17774 EOM
17775                 fflushNULL="$undef"
17776                 ;;
17777         *)      $cat >&4 <<EOM
17778 Cannot figure out whether your fflush(NULL) works or not.
17779 I'm assuming it doesn't (contrary to ANSI C).
17780 EOM
17781                 fflushNULL="$undef"
17782                 ;;
17783         esac
17784         ;;
17785 $define|true|[yY]*)
17786         fflushNULL="$define"
17787         ;;
17788 *)
17789         fflushNULL="$undef"
17790         ;;
17791 esac
17792 : check explicit looping only if NULL did not work, and if the pipe
17793 : bug does not show up on an explicit flush too
17794 case "$fflushNULL" in
17795 "$undef")
17796         $cat >tryp.c <<EOCP
17797 #include <stdio.h>
17798 int
17799 main(int argc, char **argv)
17800 {
17801     char buf[1024];
17802     int i;
17803     char *bp = buf;
17804     while (1) {
17805         while ((i = getc(stdin)) != -1
17806                && (*bp++ = i) != '\n'
17807                && bp < &buf[1024])
17808         /* DO NOTHING */ ;
17809         *bp = '\0';
17810         fprintf(stdout, "%s", buf);
17811         fflush(stdin);
17812         if (i == -1)
17813             return 0;
17814         bp = buf;
17815     }
17816 }
17817 EOCP
17818         set tryp
17819         if eval $compile; then
17820             $rm -f tryp.out
17821             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17822             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17823                $cat >&4 <<EOM
17824 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17825 EOM
17826                 : now check for fflushall behaviour
17827                 case "$fflushall" in
17828                 '')     set try -DTRY_FFLUSH_ALL $output
17829                         if eval $compile; then
17830                                 $cat >&4 <<EOM
17831 (Now testing the other method--but note that this also may fail.)
17832 EOM
17833                                 $run ./try 2>/dev/null
17834                                 code=$?
17835                                 $from try.out
17836                                 if $test -s try.out -a "X$code" = X42; then
17837                                         fflushall="`$cat try.out`"
17838                                 fi
17839                         fi
17840                         $rm -f core try.core core.try.*
17841                         case "$fflushall" in
17842                         x)      $cat >&4 <<EOM
17843 Whew. Flushing explicitly all the stdio streams works.
17844 EOM
17845                                 fflushall="$define"
17846                                 ;;
17847                         '')     $cat >&4 <<EOM
17848 Sigh. Flushing explicitly all the stdio streams doesn't work.
17849 EOM
17850                                 fflushall="$undef"
17851                                 ;;
17852                         *)      $cat >&4 <<EOM
17853 Cannot figure out whether flushing stdio streams explicitly works or not.
17854 I'm assuming it doesn't.
17855 EOM
17856                                 fflushall="$undef"
17857                                 ;;
17858                         esac
17859                         ;;
17860                 "$define"|true|[yY]*)
17861                         fflushall="$define"
17862                         ;;
17863                 *)
17864                         fflushall="$undef"
17865                         ;;
17866                 esac
17867             else
17868                 $cat >&4 <<EOM
17869 All is futile.  Even fflush(stdin) clobbers input pipes!
17870 EOM
17871                 fflushall="$undef"
17872             fi
17873         else
17874             fflushall="$undef"
17875         fi
17876         $rm -f core tryp.c tryp.core core.tryp.*
17877         ;;
17878 *)      fflushall="$undef"
17879         ;;
17880 esac
17881
17882 case "$fflushNULL$fflushall" in
17883 undefundef)
17884         $cat <<EOM
17885 OK, I give up.  I cannot figure out how to flush pending stdio output.
17886 We won't be flushing handles at all before fork/exec/popen.
17887 EOM
17888         ;;
17889 esac
17890 $rm -f try.* try$exe_ext
17891
17892 : Store the full pathname to the ar program for use in the C program
17893 : Respect a hint or command line value for full_ar.
17894 case "$full_ar" in
17895 '') full_ar=$ar ;;
17896 esac
17897
17898 : Store the full pathname to the sed program for use in the C program
17899 full_sed=$sed
17900
17901 : see what type gids are declared as in the kernel
17902 echo " "
17903 echo "Looking for the type for group ids returned by getgid()."
17904 set gid_t gidtype xxx stdio.h sys/types.h
17905 eval $typedef
17906 case "$gidtype" in
17907 xxx)
17908         xxx=`./findhdr sys/user.h`
17909         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17910         case $1 in
17911         unsigned) dflt="$1 $2" ;;
17912         *) dflt="$1" ;;
17913         esac
17914         ;;
17915 *) dflt="$gidtype";;
17916 esac
17917 case "$gidtype" in
17918 gid_t) echo "gid_t found." ;;
17919 *)      rp="What is the type for group ids returned by getgid()?"
17920         . ./myread
17921         gidtype="$ans"
17922         ;;
17923 esac
17924
17925 echo " "
17926 case "$gidtype" in
17927 *_t) zzz="$gidtype"     ;;
17928 *)   zzz="gid"          ;;
17929 esac
17930 echo "Checking the size of $zzz..." >&4 
17931 cat > try.c <<EOCP
17932 #include <sys/types.h>
17933 #include <stdio.h>
17934 #$i_stdlib I_STDLIB
17935 #ifdef I_STDLIB
17936 #include <stdlib.h>
17937 #endif
17938 int main() {
17939     printf("%d\n", (int)sizeof($gidtype));
17940     exit(0);
17941 }
17942 EOCP
17943 set try
17944 if eval $compile_ok; then
17945         yyy=`$run ./try`
17946         case "$yyy" in
17947         '')     gidsize=4
17948                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17949                 ;;
17950         *)      gidsize=$yyy
17951                 echo "Your $zzz is $gidsize bytes long."
17952                 ;;
17953         esac
17954 else
17955         gidsize=4
17956         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17957 fi
17958
17959
17960 echo " "
17961 case "$gidtype" in
17962 *_t) zzz="$gidtype"     ;;
17963 *)   zzz="gid"          ;;
17964 esac
17965 echo "Checking the sign of $zzz..." >&4 
17966 cat > try.c <<EOCP
17967 #include <sys/types.h>
17968 #include <stdio.h>
17969 int main() {
17970         $gidtype foo = -1;
17971         if (foo < 0)
17972                 printf("-1\n");
17973         else
17974                 printf("1\n");
17975 }
17976 EOCP
17977 set try
17978 if eval $compile; then
17979         yyy=`$run ./try`
17980         case "$yyy" in
17981         '')     gidsign=1
17982                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17983                 ;;
17984         *)      gidsign=$yyy
17985                 case "$gidsign" in
17986                  1) echo "Your $zzz is unsigned." ;;
17987                 -1) echo "Your $zzz is signed."   ;;
17988                 esac
17989                 ;;
17990         esac
17991 else
17992         gidsign=1
17993         echo "(I can't compile the test program--guessing unsigned.)" >&4
17994 fi
17995
17996
17997 echo " "
17998
17999 if $test X"$quadtype" != X; then
18000
18001 echo "Checking how to print 64-bit integers..." >&4
18002
18003 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18004         $cat >try.c <<'EOCP'
18005 #include <sys/types.h>
18006 #include <stdio.h>
18007 int main() {
18008   int q = 12345678901;
18009   printf("%ld\n", q);
18010 }
18011 EOCP
18012         set try
18013         if eval $compile; then
18014                 yyy=`$run ./try`
18015                 case "$yyy" in
18016                 12345678901)
18017                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18018                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18019                         echo "We will use %d."
18020                         ;;
18021                 esac
18022         fi
18023 fi
18024
18025 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18026         $cat >try.c <<'EOCP'
18027 #include <sys/types.h>
18028 #include <stdio.h>
18029 int main() {
18030   long q = 12345678901;
18031   printf("%ld\n", q);
18032 }
18033 EOCP
18034         set try
18035         if eval $compile; then
18036                 yyy=`$run ./try`
18037                 case "$yyy" in
18038                 12345678901)
18039                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18040                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18041                         echo "We will use %ld."
18042                         ;;
18043                 esac
18044         fi
18045 fi
18046
18047 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18048         $cat >try.c <<'EOCP'
18049 #include <sys/types.h>
18050 #include <inttypes.h>
18051 #include <stdio.h>
18052 int main() {
18053   int64_t q = 12345678901;
18054   printf("%" PRId64 "\n", q);
18055 }
18056 EOCP
18057         set try
18058         if eval $compile; then
18059                 yyy=`$run ./try`
18060                 case "$yyy" in
18061                 12345678901)
18062                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18063                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18064                         echo "We will use the C9X style."
18065                         ;;
18066                 esac
18067         fi
18068 fi
18069
18070 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18071         $cat >try.c <<EOCP
18072 #include <sys/types.h>
18073 #include <stdio.h>
18074 int main() {
18075   $quadtype q = 12345678901;
18076   printf("%Ld\n", q);
18077 }
18078 EOCP
18079         set try
18080         if eval $compile; then
18081                 yyy=`$run ./try`
18082                 case "$yyy" in
18083                 12345678901)
18084                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18085                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18086                         echo "We will use %Ld."
18087                         ;;
18088                 esac
18089         fi
18090 fi
18091
18092 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18093         $cat >try.c <<'EOCP'
18094 #include <sys/types.h>
18095 #include <stdio.h>
18096 int main() {
18097   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18098   printf("%lld\n", q);
18099 }
18100 EOCP
18101         set try
18102         if eval $compile; then
18103                 yyy=`$run ./try`
18104                 case "$yyy" in
18105                 12345678901)
18106                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18107                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18108                         echo "We will use the %lld style."
18109                         ;;
18110                 esac
18111         fi
18112 fi
18113
18114 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18115         $cat >try.c <<EOCP
18116 #include <sys/types.h>
18117 #include <stdio.h>
18118 int main() {
18119   $quadtype q = 12345678901;
18120   printf("%qd\n", q);
18121 }
18122 EOCP
18123         set try
18124         if eval $compile; then
18125                 yyy=`$run ./try`
18126                 case "$yyy" in
18127                 12345678901)
18128                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18129                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18130                         echo "We will use %qd."
18131                         ;;
18132                 esac
18133         fi
18134 fi
18135
18136 if $test X"$sPRId64" = X; then
18137         echo "Cannot figure out how to print 64-bit integers." >&4
18138 fi
18139
18140 $rm -f try try.*
18141
18142 fi
18143
18144 case "$sPRId64" in
18145 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18146         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18147         ;;
18148 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18149         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18150         ;;
18151 esac
18152
18153
18154 echo " "
18155 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18156
18157 if $test X"$ivsize" = X8; then
18158         ivdformat="$sPRId64"
18159         uvuformat="$sPRIu64"
18160         uvoformat="$sPRIo64"
18161         uvxformat="$sPRIx64"
18162         uvXUformat="$sPRIXU64"
18163 else
18164         if $test X"$ivsize" = X"$longsize"; then
18165                 ivdformat='"ld"'
18166                 uvuformat='"lu"'
18167                 uvoformat='"lo"'
18168                 uvxformat='"lx"'
18169                 uvXUformat='"lX"'
18170         else
18171                 if $test X"$ivsize" = X"$intsize"; then
18172                         ivdformat='"d"'
18173                         uvuformat='"u"'
18174                         uvoformat='"o"'
18175                         uvxformat='"x"'
18176                         uvXUformat='"X"'
18177                 else
18178                         : far out
18179                         if $test X"$ivsize" = X"$shortsize"; then
18180                                 ivdformat='"hd"'
18181                                 uvuformat='"hu"'
18182                                 uvoformat='"ho"'
18183                                 uvxformat='"hx"'
18184                                 uvXUformat='"hX"'
18185                         fi
18186                 fi
18187         fi
18188 fi
18189
18190 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18191         nveformat="$sPRIeldbl"
18192         nvfformat="$sPRIfldbl"
18193         nvgformat="$sPRIgldbl"
18194         nvEUformat="$sPRIEUldbl"
18195         nvFUformat="$sPRIFUldbl"
18196         nvGUformat="$sPRIGUldbl"
18197 else
18198         nveformat='"e"'
18199         nvfformat='"f"'
18200         nvgformat='"g"'
18201         nvEUformat='"E"'
18202         nvFUformat='"F"'
18203         nvGUformat='"G"'
18204 fi
18205
18206 case "$ivdformat" in
18207 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18208     exit 1
18209     ;;
18210 esac
18211
18212
18213 echo " "
18214 $echo "Checking the format string to be used for gids..." >&4
18215
18216 case "$gidsign" in
18217 -1)     if $test X"$gidsize" = X"$ivsize"; then
18218                 gidformat="$ivdformat"
18219         else
18220                 if $test X"$gidsize" = X"$longsize"; then
18221                         gidformat='"ld"'
18222                 else
18223                         if $test X"$gidsize" = X"$intsize"; then
18224                                 gidformat='"d"'
18225                         else
18226                                 if $test X"$gidsize" = X"$shortsize"; then
18227                                         gidformat='"hd"'
18228                                 fi
18229                         fi
18230                 fi
18231         fi
18232         ;;
18233 *)      if $test X"$gidsize" = X"$uvsize"; then
18234                 gidformat="$uvuformat"
18235         else
18236                 if $test X"$gidsize" = X"$longsize"; then
18237                         gidformat='"lu"'
18238                 else
18239                         if $test X"$gidsize" = X"$intsize"; then
18240                                 gidformat='"u"'
18241                         else
18242                                 if $test X"$gidsize" = X"$shortsize"; then
18243                                         gidformat='"hu"'
18244                                 fi
18245                         fi
18246                 fi
18247         fi
18248         ;;
18249 esac
18250
18251 : see if getgroups exists
18252 set getgroups d_getgrps
18253 eval $inlibc
18254
18255 : see if setgroups exists
18256 set setgroups d_setgrps
18257 eval $inlibc
18258
18259
18260 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18261 echo " "
18262 case "$d_getgrps$d_setgrps" in
18263 *define*)
18264         case "$groupstype" in
18265         '') dflt="$gidtype" ;;
18266         *)  dflt="$groupstype" ;;
18267         esac
18268         $cat <<EOM
18269 What type of pointer is the second argument to getgroups() and setgroups()?
18270 Usually this is the same as group ids, $gidtype, but not always.
18271
18272 EOM
18273         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18274         . ./myread
18275         groupstype="$ans"
18276         ;;
18277 *)  groupstype="$gidtype";;
18278 esac
18279
18280 echo " "
18281 echo "Checking if your $make program sets \$(MAKE)..." >&4
18282 case "$make_set_make" in
18283 '')
18284         $sed 's/^X //' > testmake.mak << 'EOF'
18285 Xall:
18286 X       @echo 'maketemp="$(MAKE)"'
18287 EOF
18288         case "`$make -f testmake.mak 2>/dev/null`" in
18289         *maketemp=*) make_set_make='#' ;;
18290         *)      make_set_make="MAKE=$make" ;;
18291         esac
18292         $rm -f testmake.mak
18293         ;;
18294 esac
18295 case "$make_set_make" in
18296 '#') echo "Yup, it does.";;
18297 *) echo "Nope, it doesn't.";;
18298 esac
18299
18300 : see what type is used for mode_t
18301 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18302 set mode_t modetype int stdio.h sys/types.h
18303 eval $typedef_ask
18304
18305 : see if stdarg is available
18306 echo " "
18307 if $test `./findhdr stdarg.h`; then
18308         echo "<stdarg.h> found." >&4
18309         valstd="$define"
18310 else
18311         echo "<stdarg.h> NOT found." >&4
18312         valstd="$undef"
18313 fi
18314
18315 : see if varags is available
18316 echo " "
18317 if $test `./findhdr varargs.h`; then
18318         echo "<varargs.h> found." >&4
18319 else
18320         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18321 fi
18322
18323 : set up the varargs testing programs
18324 $cat > varargs.c <<EOP
18325 #ifdef I_STDARG
18326 #include <stdarg.h>
18327 #endif
18328 #ifdef I_VARARGS
18329 #include <varargs.h>
18330 #endif
18331
18332 #ifdef I_STDARG
18333 int f(char *p, ...)
18334 #else
18335 int f(va_alist)
18336 va_dcl
18337 #endif
18338 {
18339         va_list ap;
18340 #ifndef I_STDARG
18341         char *p;
18342 #endif
18343 #ifdef I_STDARG
18344         va_start(ap,p);
18345 #else
18346         va_start(ap);
18347         p = va_arg(ap, char *);
18348 #endif
18349         va_end(ap);
18350 }
18351 EOP
18352 $cat > varargs <<EOP
18353 $startsh
18354 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18355         echo "true"
18356 else
18357         echo "false"
18358 fi
18359 $rm -f varargs$_o
18360 EOP
18361 chmod +x varargs
18362
18363 : now check which varargs header should be included
18364 echo " "
18365 i_varhdr=''
18366 case "$valstd" in
18367 "$define")
18368         if `./varargs I_STDARG`; then
18369                 val='stdarg.h'
18370         elif `./varargs I_VARARGS`; then
18371                 val='varargs.h'
18372         fi
18373         ;;
18374 *)
18375         if `./varargs I_VARARGS`; then
18376                 val='varargs.h'
18377         fi
18378         ;;
18379 esac
18380 case "$val" in
18381 '')
18382 echo "I could not find the definition for va_dcl... You have problems..." >&4
18383         val="$undef"; set i_stdarg; eval $setvar
18384         val="$undef"; set i_varargs; eval $setvar
18385         ;;
18386 *) 
18387         set i_varhdr
18388         eval $setvar
18389         case "$i_varhdr" in
18390         stdarg.h)
18391                 val="$define"; set i_stdarg; eval $setvar
18392                 val="$undef"; set i_varargs; eval $setvar
18393                 ;;
18394         varargs.h)
18395                 val="$undef"; set i_stdarg; eval $setvar
18396                 val="$define"; set i_varargs; eval $setvar
18397                 ;;
18398         esac
18399         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18400 esac
18401 $rm -f varargs*
18402
18403 : see if we need va_copy
18404 echo " "
18405 case "$i_stdarg" in
18406 "$define")
18407         $cat >try.c <<EOCP
18408 #include <stdarg.h>
18409 #include <stdio.h>
18410 #$i_stdlib I_STDLIB
18411 #ifdef I_STDLIB
18412 #include <stdlib.h>
18413 #endif
18414 #include <signal.h>
18415
18416 int
18417 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18418 {
18419   return vfprintf(f, fmt, *valp);
18420 }
18421  
18422 int    
18423 myvfprintf(FILE *f, const  char *fmt, va_list val)
18424 {
18425   return ivfprintf(f, fmt, &val);
18426 }
18427       
18428 int
18429 myprintf(char *fmt, ...) 
18430 {
18431   va_list val;
18432   va_start(val, fmt);
18433   return myvfprintf(stdout, fmt, val); 
18434 }         
18435
18436 int
18437 main(int ac, char **av)
18438 {
18439   signal(SIGSEGV, exit);
18440
18441   myprintf("%s%cs all right, then\n", "that", '\'');                            
18442   exit(0);      
18443 }
18444 EOCP
18445         set try
18446         if eval $compile && $run ./try 2>&1 >/dev/null; then
18447                 case "`$run ./try`" in
18448                 "that's all right, then")
18449                         okay=yes
18450                         ;;
18451                 esac
18452         fi
18453         case "$okay" in
18454         yes)    echo "It seems that you don't need va_copy()." >&4
18455                 need_va_copy="$undef"
18456                 ;;
18457         *)      echo "It seems that va_copy() or similar will be needed." >&4
18458                 need_va_copy="$define"
18459                 ;;
18460         esac
18461         $rm -f try.* core core.* *.core *.core.*
18462         ;;
18463 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18464         ;;
18465 esac
18466
18467 : see what type is used for size_t
18468 rp="What is the type used for the length parameter for string functions?"
18469 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18470 eval $typedef_ask
18471
18472 : check for type of arguments to gethostbyaddr. 
18473 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18474         case "$d_gethbyaddr" in
18475         $define)
18476                 $cat <<EOM
18477
18478 Checking to see what type of arguments are accepted by gethostbyaddr().
18479 EOM
18480                 hdrs="$define sys/types.h
18481                         $d_socket sys/socket.h 
18482                         $i_niin netinet/in.h 
18483                         $i_netdb netdb.h
18484                         $i_unistd unistd.h"
18485                 : The first arg can 'char *' or 'void *'
18486                 : The second arg is some of integral type
18487                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18488                         for yyy in size_t long int; do
18489                                 case "$netdb_host_type" in
18490                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18491                                         if ./protochk "$try" $hdrs; then
18492                                                 echo "Your system accepts $xxx for the first arg."
18493                                                 echo "...and $yyy for the second arg."
18494                                                 netdb_host_type="$xxx"
18495                                                 netdb_hlen_type="$yyy"
18496                                         fi
18497                                         ;;
18498                                 esac
18499                         done
18500                 done
18501                 : In case none of those worked, prompt the user.
18502                 case "$netdb_host_type" in
18503                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18504                         dflt='char *'
18505                         . ./myread
18506                         netdb_host_type=$ans
18507                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18508                         dflt="$sizetype"
18509                         . ./myread
18510                         netdb_hlen_type=$ans
18511                         ;;
18512                 esac
18513                 ;;
18514         *)      : no gethostbyaddr, so pick harmless defaults
18515                 netdb_host_type='char *'
18516                 netdb_hlen_type="$sizetype"
18517                 ;;
18518         esac
18519         # Remove the "const" if needed. -- but then we'll have a 
18520         # prototype clash!
18521         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18522 fi
18523
18524 : check for type of argument to gethostbyname. 
18525 if test "X$netdb_name_type" = X ; then
18526         case "$d_gethbyname" in
18527         $define)
18528                 $cat <<EOM
18529
18530 Checking to see what type of argument is accepted by gethostbyname().
18531 EOM
18532                 hdrs="$define sys/types.h
18533                         $d_socket sys/socket.h 
18534                         $i_niin netinet/in.h 
18535                         $i_netdb netdb.h
18536                         $i_unistd unistd.h"
18537                 for xxx in "const char *" "char *"; do
18538                         case "$netdb_name_type" in
18539                         '')     try="extern struct hostent *gethostbyname($xxx);"
18540                                 if ./protochk "$try" $hdrs; then
18541                                         echo "Your system accepts $xxx."
18542                                         netdb_name_type="$xxx"
18543                                 fi
18544                                 ;;
18545                         esac
18546                 done
18547                 : In case none of those worked, prompt the user.
18548                 case "$netdb_name_type" in
18549                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18550                         dflt='char *'
18551                         . ./myread
18552                         netdb_name_type=$ans
18553                         ;;
18554                 esac
18555                 ;;
18556         *)      : no gethostbyname, so pick harmless default
18557                 netdb_name_type='char *'
18558                 ;;
18559         esac
18560 fi
18561
18562 : check for type of 1st argument to getnetbyaddr. 
18563 if test "X$netdb_net_type" = X ; then
18564         case "$d_getnbyaddr" in
18565         $define)
18566                 $cat <<EOM
18567
18568 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18569 EOM
18570                 hdrs="$define sys/types.h
18571                         $d_socket sys/socket.h 
18572                         $i_niin netinet/in.h 
18573                         $i_netdb netdb.h
18574                         $i_unistd unistd.h"
18575                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18576                         case "$netdb_net_type" in
18577                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18578                                 if ./protochk "$try" $hdrs; then
18579                                         echo "Your system accepts $xxx."
18580                                         netdb_net_type="$xxx"
18581                                 fi
18582                                 ;;
18583                         esac
18584                 done
18585                 : In case none of those worked, prompt the user.
18586                 case "$netdb_net_type" in
18587                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18588                         dflt='long'
18589                         . ./myread
18590                         netdb_net_type=$ans
18591                         ;;
18592                 esac
18593                 ;;
18594         *)      : no getnetbyaddr, so pick harmless default
18595                 netdb_net_type='long'
18596                 ;;
18597         esac
18598 fi
18599 : locate the preferred pager for this system
18600 fn=f/
18601 case "$pager" in
18602 '')
18603         dflt=''
18604         case "$pg" in
18605         /*) dflt=$pg;;
18606         [a-zA-Z]:/*) dflt=$pg;;
18607         esac
18608         case "$more" in
18609         /*) dflt=$more;;
18610         [a-zA-Z]:/*) dflt=$more;;
18611         esac
18612         case "$less" in
18613         /*) dflt=$less;;
18614         [a-zA-Z]:/*) dflt=$less;;
18615         esac
18616         case "$dflt" in
18617         '') dflt=/usr/ucb/more;;
18618         esac
18619         ;;
18620 *)      dflt="$pager"
18621         : Instruct ./getfile to trust the hinted or previous pager value,
18622         : even if it does not begin with a slash.  For example, on os2,
18623         : pager might be cmd /c more.  See comments in UU/getfile.
18624         fn="f/($pager)"
18625         ;;
18626 esac
18627 echo " "
18628 rp='What pager is used on your system?'
18629 . ./getfile
18630 pager="$ans"
18631
18632 : see what type pids are declared as in the kernel
18633 rp="What is the type of process ids on this system?"
18634 set pid_t pidtype int stdio.h sys/types.h
18635 eval $typedef_ask
18636
18637 : Find earliest binary compatible site_perl subdirectory perl can use.
18638 xs_apiversion=$version # The current site_perl version.
18639 : Find earliest pure perl site_perl subdirectory perl can use.
18640 : The versioned directories started at 5.005.
18641 pm_apiversion='5.005'
18642
18643 : see if ar generates random libraries by itself
18644 echo " "
18645 echo "Checking how to generate random libraries on your machine..." >&4
18646 echo 'int bar1() { return bar2(); }' > bar1.c
18647 echo 'int bar2() { return 2; }' > bar2.c
18648 $cat > foo.c <<EOP
18649 #$i_stdlib I_STDLIB
18650 #ifdef I_STDLIB
18651 #include <stdlib.h>
18652 #endif
18653 int main() { printf("%d\n", bar1()); exit(0); }
18654 EOP
18655 $cc $ccflags -c bar1.c >/dev/null 2>&1
18656 $cc $ccflags -c bar2.c >/dev/null 2>&1
18657 $cc $ccflags -c foo.c >/dev/null 2>&1
18658 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18659 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18660         $run ./foobar >/dev/null 2>&1; then
18661         echo "$ar appears to generate random libraries itself."
18662         orderlib=false
18663         ranlib=":"
18664 elif $ar ts bar$_a >/dev/null 2>&1 &&
18665         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18666         $run ./foobar >/dev/null 2>&1; then
18667                 echo "a table of contents needs to be added with '$ar ts'."
18668                 orderlib=false
18669                 ranlib="$ar ts"
18670 else
18671         case "$ranlib" in
18672         :) ranlib='';;
18673         '')
18674                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18675                 $test -f $ranlib || ranlib=''
18676                 ;;
18677         esac
18678         if $test -n "$ranlib"; then
18679                 echo "your system has '$ranlib'; we'll use that."
18680                 orderlib=false
18681         else
18682                 echo "your system doesn't seem to support random libraries"
18683                 echo "so we'll use lorder and tsort to order the libraries."
18684                 orderlib=true
18685                 ranlib=":"
18686         fi
18687 fi
18688 $rm -f foo* bar* 
18689
18690 : check for type of arguments to select. 
18691 case "$selecttype" in
18692 '') case "$d_select" in
18693         $define)
18694                 echo " "
18695                 $cat <<EOM
18696 Checking to see what type of arguments are accepted by select().
18697 EOM
18698                 hdrs="$define sys/types.h
18699                         $i_systime sys/time.h 
18700                         $i_sysselct sys/select.h
18701                         $d_socket sys/socket.h"
18702                 : The first arg can be int, unsigned, or size_t
18703                 : The last arg may or may not be 'const'
18704                 val=''
18705                 : void pointer has been seen but using that
18706                 : breaks the selectminbits test
18707                 for xxx in 'fd_set *' 'int *'; do
18708                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18709                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18710                                         case "$val" in
18711                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18712                                                 if ./protochk "$try" $hdrs; then
18713                                                         echo "Your system accepts $xxx."
18714                                                         val="$xxx"
18715                                                 fi
18716                                                 ;;
18717                                         esac
18718                                 done
18719                         done
18720                 done
18721                 case "$val" in
18722                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18723                         case "$d_fd_set" in
18724                                 $define) dflt="fd_set *" ;;
18725                                 *)              dflt="int *" ;;
18726                         esac
18727                         . ./myread
18728                         val=$ans
18729                         ;;
18730                 esac
18731                 selecttype="$val"
18732                 ;;
18733         *)      : no select, so pick a harmless default
18734                 selecttype='int *'
18735                 ;;
18736         esac
18737         ;;
18738 esac
18739
18740 : check for the select 'width'
18741 case "$selectminbits" in
18742 '') safebits=`expr $ptrsize \* 8`
18743     case "$d_select" in
18744         $define)
18745                 $cat <<EOM
18746
18747 Checking to see on how many bits at a time your select() operates...
18748 EOM
18749                 $cat >try.c <<EOCP
18750 #include <sys/types.h>
18751 #$i_time I_TIME
18752 #$i_systime I_SYS_TIME
18753 #$i_systimek I_SYS_TIME_KERNEL
18754 #ifdef I_TIME
18755 #   include <time.h>
18756 #endif
18757 #ifdef I_SYS_TIME
18758 #   ifdef I_SYS_TIME_KERNEL
18759 #       define KERNEL
18760 #   endif
18761 #   include <sys/time.h>
18762 #   ifdef I_SYS_TIME_KERNEL
18763 #       undef KERNEL
18764 #   endif
18765 #endif
18766 #$i_sysselct I_SYS_SELECT
18767 #ifdef I_SYS_SELECT
18768 #include <sys/select.h>
18769 #endif
18770 #$d_socket HAS_SOCKET
18771 #ifdef HAS_SOCKET
18772 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18773 #endif
18774 #include <stdio.h>
18775 #$i_stdlib I_STDLIB
18776 #ifdef I_STDLIB
18777 #include <stdlib.h>
18778 #endif
18779 $selecttype b;
18780 #define S sizeof(*(b))
18781 #define MINBITS 64
18782 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18783 #define NBITS  (NBYTES * 8)
18784 int main() {
18785     char *s = malloc(NBYTES);
18786     struct timeval t;
18787     int i;
18788     FILE* fp;
18789     int fd;
18790
18791     if (!s)
18792         exit(1);
18793     fclose(stdin);
18794     fp = fopen("try.c", "r");
18795     if (fp == 0)
18796       exit(2);
18797     fd = fileno(fp);
18798     if (fd < 0)
18799       exit(3);
18800     b = ($selecttype)s;
18801     for (i = 0; i < NBITS; i++)
18802         FD_SET(i, b);
18803     t.tv_sec  = 0;
18804     t.tv_usec = 0;
18805     select(fd + 1, b, 0, 0, &t);
18806     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18807     free(s);
18808     printf("%d\n", i + 1);
18809     return 0;
18810 }
18811 EOCP
18812                 set try
18813                 if eval $compile_ok; then
18814                         selectminbits=`$run ./try`
18815                         case "$selectminbits" in
18816                         '')     cat >&4 <<EOM
18817 Cannot figure out on how many bits at a time your select() operates.
18818 I'll play safe and guess it is $safebits bits.
18819 EOM
18820                                 selectminbits=$safebits
18821                                 bits="$safebits bits"
18822                                 ;;
18823                         1)      bits="1 bit" ;;
18824                         *)      bits="$selectminbits bits" ;;
18825                         esac
18826                         echo "Your select() operates on $bits at a time." >&4
18827                 else
18828                         rp='What is the minimum number of bits your select() operates on?'
18829                         case "$byteorder" in
18830                         12345678)       dflt=64 ;;
18831                         1234)           dflt=32 ;;
18832                         *)              dflt=1  ;;
18833                         esac
18834                         . ./myread
18835                         val=$ans
18836                         selectminbits="$val"
18837                 fi
18838                 $rm -f try.* try
18839                 ;;
18840         *)      : no select, so pick a harmless default
18841                 selectminbits=$safebits
18842                 ;;
18843         esac
18844         ;;
18845 esac
18846
18847 : Trace out the files included by signal.h, then look for SIGxxx names.
18848 : Remove SIGARRAYSIZE used by HPUX.
18849 : Remove SIGSTKSIZE used by Linux.
18850 : Remove SIGSTKSZ used by Posix.
18851 : Remove SIGTYP void lines used by OS2.
18852 : Some cpps, like os390, dont give the file name anywhere
18853 if [ "X$fieldn" = X ]; then
18854         : Just make some guesses.  We check them later.
18855         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18856 else
18857         xxx=`echo '#include <signal.h>' |
18858         $cppstdin $cppminus $cppflags 2>/dev/null |
18859         $grep '^[       ]*#.*include' | 
18860         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18861 fi
18862 : Check this list of files to be sure we have parsed the cpp output ok.
18863 : This will also avoid potentially non-existent files, such 
18864 : as ../foo/bar.h
18865 xxxfiles=''
18866 for xx in $xxx /dev/null ; do
18867         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18868 done
18869 : If we have found no files, at least try signal.h
18870 case "$xxxfiles" in
18871 '')     xxxfiles=`./findhdr signal.h` ;;
18872 esac
18873 xxx=`awk '
18874 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18875         print substr($2, 4, 20)
18876 }
18877 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18878         print substr($3, 4, 20)
18879 }' $xxxfiles`
18880 : Append some common names just in case the awk scan failed.
18881 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18882 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18883 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18884 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18885 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18886
18887 : generate a few handy files for later
18888 $cat > signal.c <<EOCP
18889 #include <sys/types.h>
18890 #include <signal.h>
18891 #$i_stdlib I_STDLIB
18892 #ifdef I_STDLIB
18893 #include <stdlib.h>
18894 #endif
18895 #include <stdio.h>
18896 int main() {
18897
18898 /* Strange style to avoid deeply-nested #if/#else/#endif */
18899 #ifndef NSIG
18900 #  ifdef _NSIG
18901 #    define NSIG (_NSIG)
18902 #  endif
18903 #endif
18904
18905 #ifndef NSIG
18906 #  ifdef SIGMAX
18907 #    define NSIG (SIGMAX+1)
18908 #  endif
18909 #endif
18910
18911 #ifndef NSIG
18912 #  ifdef SIG_MAX
18913 #    define NSIG (SIG_MAX+1)
18914 #  endif
18915 #endif
18916
18917 #ifndef NSIG
18918 #  ifdef MAXSIG
18919 #    define NSIG (MAXSIG+1)
18920 #  endif
18921 #endif
18922
18923 #ifndef NSIG
18924 #  ifdef MAX_SIG
18925 #    define NSIG (MAX_SIG+1)
18926 #  endif
18927 #endif
18928
18929 #ifndef NSIG
18930 #  ifdef SIGARRAYSIZE
18931 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18932 #  endif
18933 #endif
18934
18935 #ifndef NSIG
18936 #  ifdef _sys_nsig
18937 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18938 #  endif
18939 #endif
18940
18941 /* Default to some arbitrary number that's big enough to get most
18942    of the common signals.
18943 */
18944 #ifndef NSIG
18945 #    define NSIG 50
18946 #endif
18947
18948 printf("NSIG %d\n", NSIG);
18949
18950 #ifndef JUST_NSIG
18951
18952 EOCP
18953
18954 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18955 {
18956         printf "#ifdef SIG"; printf $1; printf "\n"
18957         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18958         printf $1; printf ");\n"
18959         printf "#endif\n"
18960 }
18961 END {
18962         printf "#endif /* JUST_NSIG */\n";
18963         printf "exit(0);\n}\n";
18964 }
18965 ' >>signal.c
18966 $cat >signal.awk <<'EOP'
18967 BEGIN { ndups = 0 }
18968 $1 ~ /^NSIG$/ { nsig = $2 }
18969 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18970     if ($2 > maxsig) { maxsig = $2 }
18971     if (sig_name[$2]) {
18972         dup_name[ndups] = $1
18973         dup_num[ndups] = $2
18974         ndups++ 
18975     }
18976     else {
18977         sig_name[$2] = $1
18978         sig_num[$2] = $2
18979     }
18980 }
18981 END { 
18982     if (nsig == 0) {
18983         nsig = maxsig + 1
18984     }
18985     printf("NSIG %d\n", nsig);
18986     for (n = 1; n < nsig; n++) {
18987         if (sig_name[n]) {
18988             printf("%s %d\n", sig_name[n], sig_num[n])
18989         }
18990         else {
18991             printf("NUM%d %d\n", n, n) 
18992         }
18993     }
18994     for (n = 0; n < ndups; n++) {
18995         printf("%s %d\n", dup_name[n], dup_num[n])
18996     }
18997 }
18998 EOP
18999 $cat >signal_cmd <<EOS
19000 $startsh
19001 if $test -s signal.lst; then
19002     echo "Using your existing signal.lst file"
19003         exit 0
19004 fi
19005 xxx="$xxx"
19006 EOS
19007 $cat >>signal_cmd <<'EOS'
19008
19009 set signal
19010 if eval $compile_ok; then
19011         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19012 else
19013         echo "(I can't seem be able to compile the whole test program)" >&4
19014         echo "(I'll try it in little pieces.)" >&4
19015         set signal -DJUST_NSIG
19016         if eval $compile_ok; then
19017                 $run ./signal$_exe > signal.nsg
19018                 $cat signal.nsg
19019         else
19020                 echo "I can't seem to figure out how many signals you have." >&4
19021                 echo "Guessing 50." >&4
19022                 echo 'NSIG 50' > signal.nsg
19023         fi
19024         : Now look at all the signal names, one at a time.
19025         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19026                 $cat > signal.c <<EOCP
19027 #include <sys/types.h>
19028 #include <signal.h>
19029 #include <stdio.h>
19030 int main() {
19031 printf("$xx %d\n", SIG${xx});
19032 return 0;
19033 }
19034 EOCP
19035                 set signal
19036                 if eval $compile; then
19037                         echo "SIG${xx} found."
19038                         $run ./signal$_exe  >> signal.ls1
19039                 else
19040                         echo "SIG${xx} NOT found."
19041                 fi
19042         done
19043         if $test -s signal.ls1; then
19044                 $cat signal.nsg signal.ls1 |
19045                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19046         fi
19047
19048 fi
19049 if $test -s signal.lst; then
19050         :
19051 else
19052         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19053         echo 'kill -l' >signal
19054         set X `csh -f <signal`
19055         $rm -f signal
19056         shift
19057         case $# in
19058         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19059         esac
19060         echo $@ | $tr ' ' $trnl | \
19061             $awk '{ printf "%s %d\n", $1, ++s; }
19062                   END { printf "NSIG %d\n", ++s }' >signal.lst
19063 fi
19064 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19065 EOS
19066 chmod a+x signal_cmd
19067 $eunicefix signal_cmd
19068
19069 : generate list of signal names
19070 echo " "
19071 case "$sig_name_init" in
19072 '') doinit=yes ;;
19073 *)  case "$sig_num_init" in
19074     ''|*,*) doinit=yes ;;
19075     esac ;;
19076 esac
19077 case "$doinit" in
19078 yes)
19079         echo "Generating a list of signal names and numbers..." >&4
19080         . ./signal_cmd
19081         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19082         sig_name=`$awk 'BEGIN { printf "ZERO " }
19083                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19084         sig_num=`$awk  'BEGIN { printf "0 " }
19085                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19086         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19087                              !/^NSIG/   { printf "\"%s\", ", $1 }
19088                              END        { printf "0\n" }' signal.lst`
19089         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19090                              !/^NSIG/   { printf "%d, ", $2}
19091                              END        { printf "0\n"}' signal.lst`
19092         ;;
19093 esac
19094 echo "The following $sig_count signals are available:"
19095 echo " "
19096 echo $sig_name | $awk \
19097 'BEGIN { linelen = 0 }
19098 {
19099         for (i = 1; i <= NF; i++) {
19100                 name = "SIG" $i " "
19101                 linelen = linelen + length(name)
19102                 if (linelen > 70) {
19103                         printf "\n"
19104                         linelen = length(name)
19105                 }
19106                 printf "%s", name
19107         }
19108         printf "\n"
19109 }'
19110 sig_size=`echo $sig_name | awk '{print NF}'`
19111 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19112
19113 echo " "
19114 case "$sizetype" in
19115 *_t) zzz="$sizetype"    ;;
19116 *)   zzz="filesize"     ;;
19117 esac
19118 echo "Checking the size of $zzz..." >&4 
19119 cat > try.c <<EOCP
19120 #include <sys/types.h>
19121 #include <stdio.h>
19122 #$i_stdlib I_STDLIB
19123 #ifdef I_STDLIB
19124 #include <stdlib.h>
19125 #endif
19126 int main() {
19127     printf("%d\n", (int)sizeof($sizetype));
19128     exit(0);
19129 }
19130 EOCP
19131 set try
19132 if eval $compile_ok; then
19133         yyy=`$run ./try`
19134         case "$yyy" in
19135         '')     sizesize=4
19136                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19137                 ;;
19138         *)      sizesize=$yyy
19139                 echo "Your $zzz size is $sizesize bytes."
19140                 ;;
19141         esac
19142 else
19143         sizesize=4
19144         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19145 fi
19146
19147
19148 : check for socklen_t
19149 echo " "
19150 echo "Checking to see if you have socklen_t..." >&4
19151 $cat >try.c <<EOCP
19152 #include <sys/types.h>
19153 #$d_socket HAS_SOCKET
19154 #ifdef HAS_SOCKET
19155 #include <sys/socket.h>
19156 #endif
19157 int main() { socklen_t x = 16; }
19158 EOCP
19159 set try
19160 if eval $compile; then
19161         val="$define"
19162         echo "You have socklen_t."
19163 else
19164         val="$undef"
19165         echo "You do not have socklen_t."
19166         case "$sizetype" in
19167         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19168         esac
19169 fi
19170 $rm -f try try.*
19171 set d_socklen_t
19172 eval $setvar
19173
19174 : see if this is a socks.h system
19175 set socks.h i_socks
19176 eval $inhdr
19177
19178 : check for type of the size argument to socket calls
19179 case "$d_socket" in
19180 "$define")
19181         $cat <<EOM
19182
19183 Checking to see what type is the last argument of accept().
19184 EOM
19185         yyy=''
19186         case "$d_socklen_t" in
19187         "$define") yyy="$yyy socklen_t"
19188         esac
19189         yyy="$yyy $sizetype int long unsigned"
19190         for xxx in $yyy; do
19191                 case "$socksizetype" in
19192                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19193                         case "$usesocks" in
19194                         "$define")
19195                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19196                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19197                                         socksizetype="$xxx"
19198                                 fi
19199                                 ;;
19200                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19201                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19202                                         socksizetype="$xxx"
19203                                 fi
19204                                 ;;
19205                         esac
19206                         ;;
19207                 esac
19208         done
19209 : In case none of those worked, prompt the user.
19210         case "$socksizetype" in
19211         '')     rp='What is the type for socket address structure sizes?'
19212                 dflt='int'
19213                 . ./myread
19214                 socksizetype=$ans
19215                 ;;
19216         esac
19217         ;;
19218 *)      : no sockets, so pick relatively harmless default
19219         socksizetype='int'
19220         ;;
19221 esac
19222
19223 : see what type is used for signed size_t
19224 set ssize_t ssizetype int stdio.h sys/types.h
19225 eval $typedef
19226 dflt="$ssizetype"
19227 $cat > try.c <<EOM
19228 #include <stdio.h>
19229 #$i_stdlib I_STDLIB
19230 #ifdef I_STDLIB
19231 #include <stdlib.h>
19232 #endif
19233 #include <sys/types.h>
19234 #define Size_t $sizetype
19235 #define SSize_t $dflt
19236 int main()
19237 {
19238         if (sizeof(Size_t) == sizeof(SSize_t))
19239                 printf("$dflt\n");
19240         else if (sizeof(Size_t) == sizeof(int))
19241                 printf("int\n");
19242         else 
19243                 printf("long\n");
19244         exit(0);
19245 }
19246 EOM
19247 echo " "
19248 set try
19249 if eval $compile_ok && $run ./try > /dev/null; then
19250         ssizetype=`$run ./try`
19251         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19252 else
19253         $cat >&4 <<EOM
19254 Help! I can't compile and run the ssize_t test program: please enlighten me!
19255 (This is probably a misconfiguration in your system or libraries, and
19256 you really ought to fix it.  Still, I'll try anyway.)
19257
19258 I need a type that is the same size as $sizetype, but is guaranteed to
19259 be signed.  Common values are ssize_t, int and long.
19260
19261 EOM
19262         rp="What signed type is the same size as $sizetype?"
19263         . ./myread
19264         ssizetype="$ans"
19265 fi
19266 $rm -f try try.*
19267
19268 : see what type of char stdio uses.
19269 echo " "
19270 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19271 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19272         echo "Your stdio uses unsigned chars." >&4
19273         stdchar="unsigned char"
19274 else
19275         echo "Your stdio uses signed chars." >&4
19276         stdchar="char"
19277 fi
19278 $rm -f stdioh
19279
19280
19281
19282 : see what type uids are declared as in the kernel
19283 echo " "
19284 echo "Looking for the type for user ids returned by getuid()."
19285 set uid_t uidtype xxx stdio.h sys/types.h
19286 eval $typedef
19287 case "$uidtype" in
19288 xxx)
19289         xxx=`./findhdr sys/user.h`
19290         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19291         case $1 in
19292         unsigned) dflt="$1 $2" ;;
19293         *) dflt="$1" ;;
19294         esac
19295         ;;
19296 *) dflt="$uidtype";;
19297 esac
19298 case "$uidtype" in
19299 uid_t)  echo "uid_t found." ;;
19300 *)      rp="What is the type for user ids returned by getuid()?"
19301         . ./myread
19302         uidtype="$ans"
19303         ;;
19304 esac
19305
19306 echo " "
19307 case "$uidtype" in
19308 *_t) zzz="$uidtype"     ;;
19309 *)   zzz="uid"          ;;
19310 esac
19311 echo "Checking the size of $zzz..." >&4 
19312 cat > try.c <<EOCP
19313 #include <sys/types.h>
19314 #include <stdio.h>
19315 #$i_stdlib I_STDLIB
19316 #ifdef I_STDLIB
19317 #include <stdlib.h>
19318 #endif
19319 int main() {
19320     printf("%d\n", (int)sizeof($uidtype));
19321     exit(0);
19322 }
19323 EOCP
19324 set try
19325 if eval $compile_ok; then
19326         yyy=`$run ./try`
19327         case "$yyy" in
19328         '')     uidsize=4
19329                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19330                 ;;
19331         *)      uidsize=$yyy
19332                 echo "Your $zzz is $uidsize bytes long."
19333                 ;;
19334         esac
19335 else
19336         uidsize=4
19337         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19338 fi
19339
19340 echo " "
19341 case "$uidtype" in
19342 *_t) zzz="$uidtype"     ;;
19343 *)   zzz="uid"          ;;
19344 esac
19345 echo "Checking the sign of $zzz..." >&4
19346 cat > try.c <<EOCP
19347 #include <sys/types.h>
19348 #include <stdio.h>
19349 int main() {
19350         $uidtype foo = -1;
19351         if (foo < 0)
19352                 printf("-1\n");
19353         else
19354                 printf("1\n");
19355 }
19356 EOCP
19357 set try
19358 if eval $compile; then
19359         yyy=`$run ./try`
19360         case "$yyy" in
19361         '')     uidsign=1
19362                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19363                 ;;
19364         *)      uidsign=$yyy
19365                 case "$uidsign" in
19366                  1) echo "Your $zzz is unsigned." ;;
19367                 -1) echo "Your $zzz is signed."   ;;
19368                 esac
19369                 ;;
19370         esac
19371 else
19372         uidsign=1
19373         echo "(I can't compile the test program--guessing unsigned.)" >&4
19374 fi
19375
19376
19377
19378 echo " "
19379 $echo "Checking the format string to be used for uids..." >&4
19380
19381 case "$uidsign" in
19382 -1)     if $test X"$uidsize" = X"$ivsize"; then
19383                 uidformat="$ivdformat"
19384         else
19385                 if $test X"$uidsize" = X"$longsize"; then
19386                         uidformat='"ld"'
19387                 else
19388                         if $test X"$uidsize" = X"$intsize"; then
19389                                 uidformat='"d"'
19390                         else
19391                                 if $test X"$uidsize" = X"$shortsize"; then
19392                                         uidformat='"hd"'
19393                                 fi
19394                         fi
19395                 fi
19396         fi
19397         ;;
19398 *)      if $test X"$uidsize" = X"$uvsize"; then
19399                 uidformat="$uvuformat"
19400         else
19401                 if $test X"$uidsize" = X"$longsize"; then
19402                         uidformat='"lu"'
19403                 else
19404                         if $test X"$uidsize" = X"$intsize"; then
19405                                 uidformat='"u"'
19406                         else
19407                                 if $test X"$uidsize" = X"$shortsize"; then
19408                                         uidformat='"hu"'
19409                                 fi
19410                         fi
19411                 fi
19412         fi
19413         ;;
19414 esac
19415
19416 : determine compiler compiler
19417 case "$yacc" in
19418 '')
19419         dflt=yacc;;
19420 *)
19421         dflt="$yacc";;
19422 esac
19423 echo " "
19424 comp='yacc'
19425 if $test -f "$byacc$_exe"; then
19426         dflt="$byacc"
19427         comp="byacc or $comp"
19428 fi
19429 if $test -f "$bison$_exe"; then
19430         comp="$comp or bison -y"
19431 fi
19432 rp="Which compiler compiler ($comp) shall I use?"
19433 . ./myread
19434 yacc="$ans"
19435 case "$yacc" in
19436 *bis*)
19437         case "$yacc" in
19438         *-y*) ;;
19439         *)
19440                 yacc="$yacc -y"
19441                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19442                 ;;
19443         esac
19444         ;;
19445 esac
19446
19447 : see if this is a fp.h system
19448 set fp.h i_fp
19449 eval $inhdr
19450
19451 : see if this is a fp_class.h system
19452 set fp_class.h i_fp_class
19453 eval $inhdr
19454
19455 : see if this is a ieeefp.h system
19456 case "$i_ieeefp" in
19457 '' ) set ieeefp.h i_ieeefp
19458      eval $inhdr
19459      ;;
19460 esac
19461
19462 : see if this is a libutil.h system
19463 set libutil.h i_libutil
19464 eval $inhdr
19465
19466 : see if mach cthreads are available
19467 if test "X$usethreads" = "X$define"; then
19468         set mach/cthreads.h i_machcthr
19469         eval $inhdr
19470 else
19471         i_machcthr="$undef"
19472 fi
19473
19474
19475
19476 : see if this is a math.h system
19477 set math.h i_math
19478 eval $inhdr
19479
19480 : see if this is a mntent.h system
19481 set mntent.h i_mntent
19482 eval $inhdr
19483
19484 : see if ndbm.h is available
19485 set ndbm.h t_ndbm
19486 eval $inhdr
19487
19488 case "$t_ndbm" in
19489 $undef)
19490     # Some Linux distributions such as RedHat 7.1 put the
19491     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19492     if $test -f /usr/include/gdbm/ndbm.h; then
19493         echo '<gdbm/ndbm.h> found.'
19494         ccflags="$ccflags -I/usr/include/gdbm"
19495         cppflags="$cppflags -I/usr/include/gdbm"
19496         t_ndbm=$define
19497     fi
19498     ;;
19499 esac
19500
19501 case "$t_ndbm" in
19502 $define)
19503         : see if dbm_open exists
19504         set dbm_open d_dbm_open
19505         eval $inlibc
19506         case "$d_dbm_open" in
19507         $undef)
19508                 t_ndbm="$undef"
19509                 echo "We won't be including <ndbm.h>"
19510                 ;;
19511         esac
19512         ;;
19513 esac
19514 val="$t_ndbm"
19515 set i_ndbm
19516 eval $setvar
19517
19518 : see if net/errno.h is available
19519 val=''
19520 set net/errno.h val
19521 eval $inhdr
19522
19523 : Unfortunately, it causes problems on some systems.  Arrgh.
19524 case "$val" in
19525 $define)
19526         cat > try.c <<'EOM'
19527 #include <stdio.h>
19528 #include <errno.h>
19529 #include <net/errno.h>
19530 int func()
19531 {
19532         return ENOTSOCK;
19533 }
19534 EOM
19535         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19536                 echo "We'll be including <net/errno.h>." >&4
19537         else
19538                 echo "We won't be including <net/errno.h>." >&4
19539                 val="$undef"
19540         fi
19541         $rm -f try.* try
19542         ;;
19543 esac
19544 set i_neterrno
19545 eval $setvar
19546
19547 : see if netinet/tcp.h is available
19548 set netinet/tcp.h i_netinettcp
19549 eval $inhdr
19550
19551 : see if this is a poll.h system
19552 set poll.h i_poll
19553 eval $inhdr
19554
19555 : see if this is a prot.h system
19556 set prot.h i_prot
19557 eval $inhdr
19558
19559 echo " "
19560 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19561 $cat <<'EOSH' > Cppsym.know
19562 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19563 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19564 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19565 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19566 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19567 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19568 bull c cadmus clipper CMU COFF COMPILER_VERSION
19569 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19570 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19571 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19572 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19573 GLIBC GLIBC_MINOR
19574 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19575 H3050R H3050RX hbullx20 hcx host_mips
19576 hp200 hp300 hp700 HP700 hp800 hp9000
19577 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19578 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19579 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19580 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19581 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19582 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19583 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19584 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19585 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19586 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19587 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19588 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19589 MATH_HAS_NO_SIDE_EFFECTS
19590 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19591 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19592 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19593 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19594 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19595 NetBSD news1500 news1700 news1800 news1900 news3700
19596 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19597 ns32016 ns32332 ns32k nsc32000
19598 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19599 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19600 pc532 pdp11 PGC PIC plexus PORTAR posix
19601 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19602 POSIX_C_SOURCE POSIX_SOURCE POWER
19603 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19604 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19605 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19606 sony sony_news sonyrisc sparc sparclite spectrum
19607 stardent stdc STDC_EXT stratos sun sun3 sun386
19608 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19609 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19610 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19611 sysV68 sysV88 Tek4132 Tek4300 titan
19612 TM3200 TM5400 TM5600
19613 tower tower32 tower32_200 tower32_600 tower32_700
19614 tower32_800 tower32_850 tss
19615 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19616 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19617 unix UNIX95 UNIX99 unixpc unos
19618 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19619 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19620 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19621 USGr4 USGr4_2
19622 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19623 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19624 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19625 z8000
19626 EOSH
19627 # Maybe put other stuff here too.
19628 cat <<EOSH >>Cppsym.know
19629 $osname
19630 EOSH
19631 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19632 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19633 $cat Cppsym.know > Cppsym.c
19634 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19635 $rm -f Cppsym.a Cppsym.b Cppsym.c
19636 cat <<EOSH > Cppsym
19637 $startsh
19638 if $test \$# -gt 0; then
19639     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19640     if $test -s Cppsym.got; then
19641         $rm -f Cppsym.got
19642         exit 0
19643     fi
19644     $rm -f Cppsym.got
19645     exit 1
19646 else
19647     $tr " " "$trnl" | ./Cppsym.try
19648     exit 0
19649 fi
19650 EOSH
19651 chmod +x Cppsym
19652 $eunicefix Cppsym
19653 cat <<EOSH > Cppsym.try
19654 $startsh
19655 cat <<'EOCP' > try.c
19656 #include <stdio.h>
19657 int main() {
19658 EOCP
19659 $awk \\
19660 EOSH
19661 cat <<'EOSH' >> Cppsym.try
19662 'length($1) > 0 {
19663     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
19664     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
19665     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
19666     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
19667 }'       >> try.c
19668 echo 'return 0;}' >> try.c
19669 EOSH
19670 cat <<EOSH >> Cppsym.try
19671 ccflags="$ccflags"
19672 case "$osname-$gccversion" in
19673 irix-) ccflags="\$ccflags -woff 1178" ;;
19674 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19675 esac
19676 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19677 EOSH
19678 chmod +x Cppsym.try
19679 $eunicefix Cppsym.try
19680 ./Cppsym < Cppsym.know > Cppsym.true
19681 : now check the C compiler for additional symbols
19682 postprocess_cc_v=''
19683 case "$osname" in
19684 aix) postprocess_cc_v="|$tr , ' '" ;;
19685 esac
19686 $cat >ccsym <<EOS
19687 $startsh
19688 $cat >tmp.c <<EOF
19689 extern int foo;
19690 EOF
19691 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19692 do
19693         case "\$i" in
19694         -D*) echo "\$i" | $sed 's/^-D//';;
19695         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19696         esac
19697 done
19698 $rm -f try.c
19699 EOS
19700 postprocess_cc_v=''
19701 chmod +x ccsym
19702 $eunicefix ccsym
19703 ./ccsym > ccsym1.raw
19704 if $test -s ccsym1.raw; then
19705        $sort ccsym1.raw | $uniq >ccsym.raw
19706 else
19707        mv ccsym1.raw ccsym.raw
19708 fi
19709
19710 $awk '/\=/ { print $0; next }
19711         { print $0"=1" }' ccsym.raw >ccsym.list
19712 $awk '/\=/ { print $0; next }
19713         { print $0"=1" }' Cppsym.true >ccsym.true
19714 $comm -13 ccsym.true ccsym.list >ccsym.own
19715 $comm -12 ccsym.true ccsym.list >ccsym.com
19716 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19717 also=''
19718 if $test -z ccsym.raw; then
19719         echo "Your C compiler doesn't seem to define any symbols!" >&4
19720         echo " "
19721         echo "However, your C preprocessor defines the following symbols:"
19722         $cat Cppsym.true
19723         ccsymbols=''
19724         cppsymbols=`$cat Cppsym.true`
19725         cppsymbols=`echo $cppsymbols`
19726         cppccsymbols="$cppsymbols"
19727 else
19728         if $test -s ccsym.com; then
19729                 echo "Your C compiler and pre-processor define these symbols:"
19730                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19731                 also='also '
19732                 symbols='ones'
19733                 cppccsymbols=`$cat ccsym.com`
19734                 cppccsymbols=`echo $cppccsymbols`
19735                 $test "$silent" || sleep 1
19736         fi
19737         if $test -s ccsym.cpp; then
19738                 $test "$also" && echo " "
19739                 echo "Your C pre-processor ${also}defines the following symbols:"
19740                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19741                 also='further '
19742                 cppsymbols=`$cat ccsym.cpp`
19743                 cppsymbols=`echo $cppsymbols`
19744                 $test "$silent" || sleep 1
19745         fi
19746         if $test -s ccsym.own; then
19747                 $test "$also" && echo " "
19748                 echo "Your C compiler ${also}defines the following cpp symbols:"
19749                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19750                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19751                 ccsymbols=`$cat ccsym.own`
19752                 ccsymbols=`echo $ccsymbols`
19753                 $test "$silent" || sleep 1
19754         fi
19755 fi
19756
19757 : see if this is a termio system
19758 val="$undef"
19759 val2="$undef"
19760 val3="$undef"
19761 if $test `./findhdr termios.h`; then
19762         set tcsetattr i_termios
19763         eval $inlibc
19764         val3="$i_termios"
19765 fi
19766 echo " "
19767 case "$val3" in
19768 "$define") echo "You have POSIX termios.h... good!" >&4;;
19769 *) if ./Cppsym pyr; then
19770                 case "`/bin/universe`" in
19771                 ucb) if $test `./findhdr sgtty.h`; then
19772                                 val2="$define"
19773                                 echo "<sgtty.h> found." >&4
19774                         else
19775                                 echo "System is pyramid with BSD universe."
19776                                 echo "<sgtty.h> not found--you could have problems." >&4
19777                         fi;;
19778                 *) if $test `./findhdr termio.h`; then
19779                                 val="$define"
19780                                 echo "<termio.h> found." >&4
19781                         else
19782                                 echo "System is pyramid with USG universe."
19783                                 echo "<termio.h> not found--you could have problems." >&4
19784                         fi;;
19785                 esac
19786         elif ./usg; then
19787                 if $test `./findhdr termio.h`; then
19788                         echo "<termio.h> found." >&4
19789                         val="$define"
19790                 elif $test `./findhdr sgtty.h`; then
19791                         echo "<sgtty.h> found." >&4
19792                         val2="$define"
19793                 else
19794 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19795                 fi
19796         else
19797                 if $test `./findhdr sgtty.h`; then
19798                         echo "<sgtty.h> found." >&4
19799                         val2="$define"
19800                 elif $test `./findhdr termio.h`; then
19801                         echo "<termio.h> found." >&4
19802                         val="$define"
19803                 else
19804 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19805                 fi
19806         fi;;
19807 esac
19808 set i_termio; eval $setvar
19809 val=$val2; set i_sgtty; eval $setvar
19810 val=$val3; set i_termios; eval $setvar
19811
19812 : see if stddef is available
19813 set stddef.h i_stddef
19814 eval $inhdr
19815
19816 : see if this is a sunmath.h system
19817 set sunmath.h i_sunmath
19818 eval $inhdr
19819
19820 : see if sys/access.h is available
19821 set sys/access.h i_sysaccess
19822 eval $inhdr
19823
19824 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19825 set sys/filio.h i_sysfilio
19826 eval $inhdr
19827 echo " "
19828 if $test `./findhdr sys/ioctl.h`; then
19829         val="$define"
19830         echo '<sys/ioctl.h> found.' >&4
19831 else
19832         val="$undef"
19833         if $test $i_sysfilio = "$define"; then
19834             echo '<sys/ioctl.h> NOT found.' >&4
19835         else
19836                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19837                 $test $i_termio = "$define" && xxx="termio.h"
19838                 $test $i_termios = "$define" && xxx="termios.h"
19839 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19840         fi
19841 fi
19842 set i_sysioctl
19843 eval $setvar
19844
19845 : see if socket ioctl defs are in sys/sockio.h
19846 echo " "
19847 xxx=`./findhdr sys/sockio.h`
19848 if $test "$xxx"; then
19849         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19850                 val="$define"
19851                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19852         else
19853                 val="$undef"
19854                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19855         fi
19856 else
19857         val="$undef"
19858         $cat <<EOM
19859 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19860 EOM
19861 fi
19862 set i_syssockio
19863 eval $setvar
19864
19865
19866 : see if this is a syslog.h system
19867 set syslog.h i_syslog
19868 eval $inhdr
19869
19870
19871 : see if this is a sys/mode.h system
19872 set sys/mode.h i_sysmode
19873 eval $inhdr
19874
19875 : see if sys/resource.h has to be included
19876 set sys/resource.h i_sysresrc
19877 eval $inhdr
19878
19879 : see if sys/security.h is available
19880 set sys/security.h i_syssecrt
19881 eval $inhdr
19882
19883 : see if this is a sys/statvfs.h system
19884 set sys/statvfs.h i_sysstatvfs
19885 eval $inhdr
19886
19887 : see if this is a sys/un.h system
19888 set sys/un.h i_sysun
19889 eval $inhdr
19890
19891
19892 : see if this is a sys/utsname.h system
19893 set sys/utsname.h i_sysutsname
19894 eval $inhdr
19895
19896 : see if this is a syswait system
19897 set sys/wait.h i_syswait
19898 eval $inhdr
19899
19900 : see if this is a ustat.h system
19901 set ustat.h i_ustat
19902 eval $inhdr
19903
19904 : see if this is an utime system
19905 set utime.h i_utime
19906 eval $inhdr
19907
19908 : see if this is a values.h system
19909 set values.h i_values
19910 eval $inhdr
19911
19912 : see if this is a vfork system
19913 case "$d_vfork" in
19914 "$define")
19915         set vfork.h i_vfork
19916         eval $inhdr
19917         ;;
19918 *)
19919         i_vfork="$undef"
19920         ;;
19921 esac
19922
19923 : see if gdbm.h is available
19924 set gdbm.h t_gdbm
19925 eval $inhdr
19926 case "$t_gdbm" in
19927 $define)
19928         : see if gdbm_open exists
19929         set gdbm_open d_gdbm_open
19930         eval $inlibc
19931         case "$d_gdbm_open" in
19932         $undef)
19933                 t_gdbm="$undef"
19934                 echo "We won't be including <gdbm.h>"
19935                 ;;
19936         esac
19937         ;;
19938 esac
19939 val="$t_gdbm"
19940 set i_gdbm
19941 eval $setvar
19942
19943 echo " "
19944 echo "Looking for extensions..." >&4
19945 : If we are using the old config.sh, known_extensions may contain
19946 : old or inaccurate or duplicate values.
19947 known_extensions=''
19948 nonxs_extensions=''
19949 : We do not use find because it might not be available.
19950 : We do not just use MANIFEST because the user may have dropped
19951 : some additional extensions into the source tree and expect them
19952 : to be built.
19953
19954 : Function to recursively find available extensions, ignoring DynaLoader
19955 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19956 find_extensions='
19957     for xxx in *; do
19958        case "$xxx" in
19959            DynaLoader|dynaload) ;;
19960            *)
19961            if $test -f $xxx/$xxx.xs; then
19962                known_extensions="$known_extensions $1$xxx";
19963            elif $test -f $xxx/Makefile.PL; then
19964                nonxs_extensions="$nonxs_extensions $1$xxx";
19965            else
19966                if $test -d $xxx -a $# -lt 10; then
19967                    set $1$xxx/ $*;
19968                    cd "$xxx";
19969                    eval $find_extensions;
19970                    cd ..;
19971                    shift;
19972                fi;
19973            fi
19974            ;;
19975        esac;
19976     done'
19977 tdir=`pwd`
19978 cd "$rsrc/ext"
19979 set X
19980 shift
19981 eval $find_extensions
19982 # Special case:  Add in threads/shared since it is not picked up by the
19983 # recursive find above (and adding in general recursive finding breaks
19984 # SDBM_File/sdbm).  A.D.  10/25/2001.
19985 known_extensions="$known_extensions threads/shared"
19986 set X $nonxs_extensions
19987 shift
19988 nonxs_extensions="$*"
19989 set X $known_extensions
19990 shift
19991 known_extensions="$*"
19992 cd "$tdir"
19993
19994 : Now see which are supported on this system.
19995 avail_ext=''
19996 for xxx in $known_extensions ; do
19997         case "$xxx" in
19998         DB_File|db_file)
19999                 case "$i_db" in
20000                 $define) avail_ext="$avail_ext $xxx" ;;
20001                 esac
20002                 ;;
20003         GDBM_File|gdbm_fil)
20004                 case "$i_gdbm" in 
20005                 $define) avail_ext="$avail_ext $xxx" ;;
20006                 esac
20007                 ;;
20008         I18N/Langinfo|i18n_lan)
20009                 case "$i_langinfo$d_nl_langinfo" in 
20010                 $define$define) avail_ext="$avail_ext $xxx" ;;
20011                 esac
20012                 ;;
20013         NDBM_File|ndbm_fil)
20014                 case "$i_ndbm" in
20015                 $define)
20016                     case "$osname-$use64bitint" in
20017                     hpux-define)
20018                         case "$libs" in
20019                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20020                         esac
20021                         ;;
20022                     *) avail_ext="$avail_ext $xxx" ;;
20023                     esac
20024                     ;;
20025                 esac
20026                 ;;
20027         ODBM_File|odbm_fil) 
20028                 case "${i_dbm}${i_rpcsvcdbm}" in
20029                 *"${define}"*)
20030                     case "$osname-$use64bitint" in
20031                     hpux-define)
20032                         case "$libs" in
20033                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20034                         esac
20035                         ;;
20036                     *) avail_ext="$avail_ext $xxx" ;;
20037                     esac
20038                     ;;
20039                 esac
20040                 ;;
20041         POSIX|posix)
20042                 case "$useposix" in
20043                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20044                 esac
20045                 ;;
20046         Opcode|opcode)
20047                 case "$useopcode" in
20048                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20049                 esac
20050                 ;;
20051         Socket|socket)
20052                 case "$d_socket" in 
20053                 true|$define|y)
20054                     case "$osname" in
20055                     beos) ;; # not unless BONE
20056                     *) avail_ext="$avail_ext $xxx" ;;
20057                     esac
20058                     ;;
20059                 esac
20060                 ;;
20061         Sys/Syslog|sys/syslog)
20062                 : XXX syslog requires socket
20063                 case "$d_socket" in 
20064                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20065                 esac
20066                 ;;
20067         Thread|thread)
20068                 case "$usethreads" in
20069                 true|$define|y)
20070                         case "$useithreads" in
20071                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20072                         esac
20073                 esac
20074                 ;;
20075         XS/APItest|xs/apitest)
20076                 # This is just for testing.  Skip it unless we have dynamic loading.
20077
20078                 case "$usedl" in
20079                 $define) avail_ext="$avail_ext $xxx" ;;
20080                 esac
20081                 ;;
20082         XS/Typemap|xs/typemap)
20083                 # This is just for testing.  Skip it unless we have dynamic loading.
20084                 case "$usedl" in
20085                 $define) avail_ext="$avail_ext $xxx" ;;
20086                 esac
20087                 ;;
20088         threads|threads/shared)
20089                 # threads and threads::shared are special cases.
20090                 # To stop people from asking "Perl 5.8.0 was supposed
20091                 # to have this new fancy threads implementation but my
20092                 # perl doesn't have it" and from people trying to
20093                 # (re)install the threads module using CPAN.pm and
20094                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20095                 # the threads.pm and threads/shared.pm will always be
20096                 # there, croaking informatively ("you need to rebuild
20097                 # all of Perl with threads, sorry") when threads haven't
20098                 # been compiled in.
20099                 # --jhi
20100                 avail_ext="$avail_ext $xxx"
20101                 ;;
20102         IPC/SysV|ipc/sysv)
20103                 : XXX Do we need a useipcsysv variable here
20104                 case "${d_msg}${d_sem}${d_shm}" in 
20105                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20106                 esac
20107                 ;;
20108         *)      avail_ext="$avail_ext $xxx"
20109                 ;;
20110         esac
20111 done
20112
20113 set X $avail_ext
20114 shift
20115 avail_ext="$*"
20116
20117 case "$onlyextensions" in
20118 '') ;;
20119 *)  keepextensions=''
20120     echo "You have requested that only certains extensions be included..." >&4
20121     for i in $onlyextensions; do
20122         case " $avail_ext " in
20123         *" $i "*)
20124             echo "Keeping extension $i."
20125             keepextensions="$keepextensions $i"
20126             ;;
20127         *) echo "Ignoring extension $i." ;;
20128         esac
20129     done
20130     avail_ext="$keepextensions"
20131     ;;
20132 esac
20133
20134 case "$noextensions" in
20135 '') ;;
20136 *)  keepextensions=''
20137     echo "You have requested that certain extensions be ignored..." >&4
20138     for i in $avail_ext; do
20139         case " $i " in
20140         " $noextensions ") echo "Ignoring extension $i." ;;
20141         *) echo "Keeping extension $i.";
20142            keepextensions="$keepextensions $i"
20143            ;;
20144         esac
20145     done
20146     avail_ext="$keepextensions"
20147     ;;
20148 esac
20149
20150 : Now see which nonxs extensions are supported on this system.
20151 : For now assume all are.
20152 nonxs_ext=''
20153 for xxx in $nonxs_extensions ; do
20154         case "$xxx" in
20155         *)      nonxs_ext="$nonxs_ext $xxx"
20156                 ;;
20157         esac
20158 done
20159
20160 set X $nonxs_ext
20161 shift
20162 nonxs_ext="$*"
20163
20164 case $usedl in
20165 $define)
20166         $cat <<EOM
20167 A number of extensions are supplied with $package.  You may choose to
20168 compile these extensions for dynamic loading (the default), compile
20169 them into the $package executable (static loading), or not include
20170 them at all.  Answer "none" to include no extensions.
20171 Note that DynaLoader is always built and need not be mentioned here.
20172
20173 EOM
20174         case "$dynamic_ext" in
20175         '')
20176                 : Exclude those listed in static_ext
20177                 dflt=''
20178                 for xxx in $avail_ext; do
20179                         case " $static_ext " in
20180                         *" $xxx "*) ;;
20181                         *) dflt="$dflt $xxx" ;;
20182                         esac
20183                 done
20184                 set X $dflt
20185                 shift
20186                 dflt="$*"
20187                 ;;
20188         *)      dflt="$dynamic_ext"
20189                 # Perhaps we are reusing an old out-of-date config.sh.
20190                 case "$hint" in
20191                 previous)
20192                         if test X"$dynamic_ext" != X"$avail_ext"; then
20193                                 $cat <<EOM
20194 NOTICE:  Your previous config.sh list may be incorrect. 
20195 The extensions now available to you are 
20196         ${avail_ext}
20197 but the default list from your previous config.sh is
20198         ${dynamic_ext} 
20199
20200 EOM
20201                         fi
20202                         ;;
20203                 esac
20204                 ;;
20205         esac
20206         case "$dflt" in
20207         '')     dflt=none;;
20208         esac
20209         rp="What extensions do you wish to load dynamically?"
20210         . ./myread
20211         case "$ans" in
20212         none) dynamic_ext=' ' ;;
20213         *) dynamic_ext="$ans" ;;
20214         esac
20215
20216         case "$static_ext" in
20217         '')
20218                 : Exclude those already listed in dynamic linking
20219                 dflt=''
20220                 for xxx in $avail_ext; do
20221                         case " $dynamic_ext " in
20222                         *" $xxx "*) ;;
20223                         *) dflt="$dflt $xxx" ;;
20224                         esac
20225                 done
20226                 set X $dflt
20227                 shift
20228                 dflt="$*"
20229                 ;;
20230         *)  dflt="$static_ext" 
20231                 ;;
20232         esac
20233
20234         case "$dflt" in
20235         '')     dflt=none;;
20236         esac
20237         rp="What extensions do you wish to load statically?"
20238         . ./myread
20239         case "$ans" in
20240         none) static_ext=' ' ;;
20241         *) static_ext="$ans" ;;
20242         esac
20243         ;;
20244 *)
20245         $cat <<EOM
20246 A number of extensions are supplied with $package.  Answer "none" 
20247 to include no extensions. 
20248 Note that DynaLoader is always built and need not be mentioned here.
20249
20250 EOM
20251         case "$static_ext" in
20252         '') dflt="$avail_ext" ;;
20253         *)      dflt="$static_ext"
20254                 # Perhaps we are reusing an old out-of-date config.sh.
20255                 case "$hint" in
20256                 previous)
20257                         if test X"$static_ext" != X"$avail_ext"; then
20258                                 $cat <<EOM
20259 NOTICE:  Your previous config.sh list may be incorrect. 
20260 The extensions now available to you are 
20261         ${avail_ext}
20262 but the default list from your previous config.sh is
20263         ${static_ext} 
20264
20265 EOM
20266                         fi
20267                         ;;
20268                 esac
20269                 ;;
20270         esac
20271         : Exclude those that are not xs extensions
20272         case "$dflt" in
20273         '')     dflt=none;;
20274         esac
20275         rp="What extensions do you wish to include?"
20276         . ./myread
20277         case "$ans" in
20278         none) static_ext=' ' ;;
20279         *) static_ext="$ans" ;;
20280         esac
20281         ;;
20282 esac
20283 #        
20284 # Encode is a special case.  If we are building Encode as a static
20285 # extension, we need to explicitly list its subextensions as well.
20286 # For other nested extensions, this is handled automatically by
20287 # the appropriate Makefile.PL.
20288 case " $static_ext " in
20289         *" Encode "*) # Add the subextensions of Encode
20290         cd "$rsrc/ext"
20291         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20292                 static_ext="$static_ext Encode/$xxx"
20293         done
20294         cd "$tdir"
20295         ;;
20296 esac
20297
20298 set X $dynamic_ext $static_ext $nonxs_ext
20299 shift
20300 extensions="$*"
20301
20302 # Sanity check:  We require an extension suitable for use with
20303 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20304 # should show up as failures in the test suite, but it's helpful to
20305 # catch them now.) The 'extensions' list is normally sorted
20306 # alphabetically, so we need to accept either
20307 #    DB_File ... Fcntl ... IO  ....
20308 # or something like
20309 #    Fcntl ... NDBM_File ... IO  ....
20310 case "$extensions" in
20311 *"_File "*" Fcntl "*" IO "*) ;;
20312 *" Fcntl "*"_File "*" IO "*) ;;
20313 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20314    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20315    ;;
20316 esac
20317
20318 : Remove libraries needed only for extensions
20319 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20320 : The exception is SunOS 4.x, which needs them.
20321 case "${osname}X${osvers}" in
20322 sunos*X4*)
20323     perllibs="$libs"
20324     ;;
20325 *) case "$usedl" in
20326     $define|true|[yY]*)
20327             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20328             shift
20329             perllibs="$*"
20330             ;;
20331     *)  perllibs="$libs"
20332             ;;
20333     esac
20334     ;;
20335 esac
20336
20337 : Remove build directory name from cppstdin so it can be used from
20338 : either the present location or the final installed location.
20339 echo " "
20340 : Get out of the UU directory to get correct path name.
20341 cd ..
20342 case "$cppstdin" in
20343 `pwd`/cppstdin)
20344         echo "Stripping down cppstdin path name"
20345         cppstdin=cppstdin
20346         ;;
20347 esac
20348 cd UU
20349
20350 : end of configuration questions
20351 echo " "
20352 echo "End of configuration questions."
20353 echo " "
20354
20355 : back to where it started
20356 if test -d ../UU; then
20357         cd ..
20358 fi
20359
20360 : configuration may be patched via a 'config.arch' file
20361 if $test -f config.arch; then
20362         echo "I see a config.arch file, loading it."
20363         . ./config.arch
20364 fi
20365
20366 : configuration may be patched via a 'config.over' file
20367 if $test -f config.over; then
20368         echo " "
20369         dflt=y
20370         rp='I see a config.over file.  Do you wish to load it?'
20371         . UU/myread
20372         case "$ans" in
20373         n*) echo "OK, I'll ignore it.";;
20374         *)      . ./config.over
20375                 echo "Configuration override changes have been loaded."
20376                 ;;
20377         esac
20378 fi
20379
20380 : in case they want portability, strip down executable paths
20381 case "$d_portable" in
20382 "$define")
20383         echo " "
20384         echo "Stripping down executable paths..." >&4
20385         for file in $loclist $trylist; do
20386                 eval temp=\$$file
20387                 eval $file=`basename $temp`
20388         done
20389         ;;
20390 esac
20391
20392 : create config.sh file
20393 echo " "
20394 echo "Creating config.sh..." >&4
20395 $spitshell <<EOT >config.sh
20396 $startsh
20397 #
20398 # This file was produced by running the Configure script. It holds all the
20399 # definitions figured out by Configure. Should you modify one of these values,
20400 # do not forget to propagate your changes by running "Configure -der". You may
20401 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20402 #
20403
20404 # Package name      : $package
20405 # Source directory  : $src
20406 # Configuration time: $cf_time
20407 # Configured by     : $cf_by
20408 # Target system     : $myuname
20409
20410 Author='$Author'
20411 Date='$Date'
20412 Header='$Header'
20413 Id='$Id'
20414 Locker='$Locker'
20415 Log='$Log'
20416 Mcc='$Mcc'
20417 RCSfile='$RCSfile'
20418 Revision='$Revision'
20419 Source='$Source'
20420 State='$State'
20421 _a='$_a'
20422 _exe='$_exe'
20423 _o='$_o'
20424 afs='$afs'
20425 afsroot='$afsroot'
20426 alignbytes='$alignbytes'
20427 ansi2knr='$ansi2knr'
20428 aphostname='$aphostname'
20429 api_revision='$api_revision'
20430 api_subversion='$api_subversion'
20431 api_version='$api_version'
20432 api_versionstring='$api_versionstring'
20433 ar='$ar'
20434 archlib='$archlib'
20435 archlibexp='$archlibexp'
20436 archname64='$archname64'
20437 archname='$archname'
20438 archobjs='$archobjs'
20439 asctime_r_proto='$asctime_r_proto'
20440 awk='$awk'
20441 baserev='$baserev'
20442 bash='$bash'
20443 bin='$bin'
20444 binexp='$binexp'
20445 bison='$bison'
20446 byacc='$byacc'
20447 byteorder='$byteorder'
20448 c='$c'
20449 castflags='$castflags'
20450 cat='$cat'
20451 cc='$cc'
20452 cccdlflags='$cccdlflags'
20453 ccdlflags='$ccdlflags'
20454 ccflags='$ccflags'
20455 ccflags_uselargefiles='$ccflags_uselargefiles'
20456 ccname='$ccname'
20457 ccsymbols='$ccsymbols'
20458 ccversion='$ccversion'
20459 cf_by='$cf_by'
20460 cf_email='$cf_email'
20461 cf_time='$cf_time'
20462 charsize='$charsize'
20463 chgrp='$chgrp'
20464 chmod='$chmod'
20465 chown='$chown'
20466 clocktype='$clocktype'
20467 comm='$comm'
20468 compress='$compress'
20469 contains='$contains'
20470 cp='$cp'
20471 cpio='$cpio'
20472 cpp='$cpp'
20473 cpp_stuff='$cpp_stuff'
20474 cppccsymbols='$cppccsymbols'
20475 cppflags='$cppflags'
20476 cpplast='$cpplast'
20477 cppminus='$cppminus'
20478 cpprun='$cpprun'
20479 cppstdin='$cppstdin'
20480 cppsymbols='$cppsymbols'
20481 crypt_r_proto='$crypt_r_proto'
20482 cryptlib='$cryptlib'
20483 csh='$csh'
20484 ctermid_r_proto='$ctermid_r_proto'
20485 ctime_r_proto='$ctime_r_proto'
20486 d_Gconvert='$d_Gconvert'
20487 d_PRIEUldbl='$d_PRIEUldbl'
20488 d_PRIFUldbl='$d_PRIFUldbl'
20489 d_PRIGUldbl='$d_PRIGUldbl'
20490 d_PRIXU64='$d_PRIXU64'
20491 d_PRId64='$d_PRId64'
20492 d_PRIeldbl='$d_PRIeldbl'
20493 d_PRIfldbl='$d_PRIfldbl'
20494 d_PRIgldbl='$d_PRIgldbl'
20495 d_PRIi64='$d_PRIi64'
20496 d_PRIo64='$d_PRIo64'
20497 d_PRIu64='$d_PRIu64'
20498 d_PRIx64='$d_PRIx64'
20499 d_SCNfldbl='$d_SCNfldbl'
20500 d__fwalk='$d__fwalk'
20501 d_access='$d_access'
20502 d_accessx='$d_accessx'
20503 d_aintl='$d_aintl'
20504 d_alarm='$d_alarm'
20505 d_archlib='$d_archlib'
20506 d_asctime_r='$d_asctime_r'
20507 d_atolf='$d_atolf'
20508 d_atoll='$d_atoll'
20509 d_attribut='$d_attribut'
20510 d_bcmp='$d_bcmp'
20511 d_bcopy='$d_bcopy'
20512 d_bsd='$d_bsd'
20513 d_bsdgetpgrp='$d_bsdgetpgrp'
20514 d_bsdsetpgrp='$d_bsdsetpgrp'
20515 d_bzero='$d_bzero'
20516 d_casti32='$d_casti32'
20517 d_castneg='$d_castneg'
20518 d_charvspr='$d_charvspr'
20519 d_chown='$d_chown'
20520 d_chroot='$d_chroot'
20521 d_chsize='$d_chsize'
20522 d_class='$d_class'
20523 d_closedir='$d_closedir'
20524 d_cmsghdr_s='$d_cmsghdr_s'
20525 d_const='$d_const'
20526 d_copysignl='$d_copysignl'
20527 d_crypt='$d_crypt'
20528 d_crypt_r='$d_crypt_r'
20529 d_csh='$d_csh'
20530 d_ctermid_r='$d_ctermid_r'
20531 d_ctime_r='$d_ctime_r'
20532 d_cuserid='$d_cuserid'
20533 d_dbl_dig='$d_dbl_dig'
20534 d_dbminitproto='$d_dbminitproto'
20535 d_difftime='$d_difftime'
20536 d_dirfd='$d_dirfd'
20537 d_dirnamlen='$d_dirnamlen'
20538 d_dlerror='$d_dlerror'
20539 d_dlopen='$d_dlopen'
20540 d_dlsymun='$d_dlsymun'
20541 d_dosuid='$d_dosuid'
20542 d_drand48_r='$d_drand48_r'
20543 d_drand48proto='$d_drand48proto'
20544 d_dup2='$d_dup2'
20545 d_eaccess='$d_eaccess'
20546 d_endgrent='$d_endgrent'
20547 d_endgrent_r='$d_endgrent_r'
20548 d_endhent='$d_endhent'
20549 d_endhostent_r='$d_endhostent_r'
20550 d_endnent='$d_endnent'
20551 d_endnetent_r='$d_endnetent_r'
20552 d_endpent='$d_endpent'
20553 d_endprotoent_r='$d_endprotoent_r'
20554 d_endpwent='$d_endpwent'
20555 d_endpwent_r='$d_endpwent_r'
20556 d_endsent='$d_endsent'
20557 d_endservent_r='$d_endservent_r'
20558 d_eofnblk='$d_eofnblk'
20559 d_eunice='$d_eunice'
20560 d_faststdio='$d_faststdio'
20561 d_fchdir='$d_fchdir'
20562 d_fchmod='$d_fchmod'
20563 d_fchown='$d_fchown'
20564 d_fcntl='$d_fcntl'
20565 d_fcntl_can_lock='$d_fcntl_can_lock'
20566 d_fd_macros='$d_fd_macros'
20567 d_fd_set='$d_fd_set'
20568 d_fds_bits='$d_fds_bits'
20569 d_fgetpos='$d_fgetpos'
20570 d_finite='$d_finite'
20571 d_finitel='$d_finitel'
20572 d_flexfnam='$d_flexfnam'
20573 d_flock='$d_flock'
20574 d_flockproto='$d_flockproto'
20575 d_fork='$d_fork'
20576 d_fp_class='$d_fp_class'
20577 d_fpathconf='$d_fpathconf'
20578 d_fpclass='$d_fpclass'
20579 d_fpclassify='$d_fpclassify'
20580 d_fpclassl='$d_fpclassl'
20581 d_fpos64_t='$d_fpos64_t'
20582 d_frexpl='$d_frexpl'
20583 d_fs_data_s='$d_fs_data_s'
20584 d_fseeko='$d_fseeko'
20585 d_fsetpos='$d_fsetpos'
20586 d_fstatfs='$d_fstatfs'
20587 d_fstatvfs='$d_fstatvfs'
20588 d_fsync='$d_fsync'
20589 d_ftello='$d_ftello'
20590 d_ftime='$d_ftime'
20591 d_getcwd='$d_getcwd'
20592 d_getespwnam='$d_getespwnam'
20593 d_getfsstat='$d_getfsstat'
20594 d_getgrent='$d_getgrent'
20595 d_getgrent_r='$d_getgrent_r'
20596 d_getgrgid_r='$d_getgrgid_r'
20597 d_getgrnam_r='$d_getgrnam_r'
20598 d_getgrps='$d_getgrps'
20599 d_gethbyaddr='$d_gethbyaddr'
20600 d_gethbyname='$d_gethbyname'
20601 d_gethent='$d_gethent'
20602 d_gethname='$d_gethname'
20603 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20604 d_gethostbyname_r='$d_gethostbyname_r'
20605 d_gethostent_r='$d_gethostent_r'
20606 d_gethostprotos='$d_gethostprotos'
20607 d_getitimer='$d_getitimer'
20608 d_getlogin='$d_getlogin'
20609 d_getlogin_r='$d_getlogin_r'
20610 d_getmnt='$d_getmnt'
20611 d_getmntent='$d_getmntent'
20612 d_getnbyaddr='$d_getnbyaddr'
20613 d_getnbyname='$d_getnbyname'
20614 d_getnent='$d_getnent'
20615 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20616 d_getnetbyname_r='$d_getnetbyname_r'
20617 d_getnetent_r='$d_getnetent_r'
20618 d_getnetprotos='$d_getnetprotos'
20619 d_getpagsz='$d_getpagsz'
20620 d_getpbyname='$d_getpbyname'
20621 d_getpbynumber='$d_getpbynumber'
20622 d_getpent='$d_getpent'
20623 d_getpgid='$d_getpgid'
20624 d_getpgrp2='$d_getpgrp2'
20625 d_getpgrp='$d_getpgrp'
20626 d_getppid='$d_getppid'
20627 d_getprior='$d_getprior'
20628 d_getprotobyname_r='$d_getprotobyname_r'
20629 d_getprotobynumber_r='$d_getprotobynumber_r'
20630 d_getprotoent_r='$d_getprotoent_r'
20631 d_getprotoprotos='$d_getprotoprotos'
20632 d_getprpwnam='$d_getprpwnam'
20633 d_getpwent='$d_getpwent'
20634 d_getpwent_r='$d_getpwent_r'
20635 d_getpwnam_r='$d_getpwnam_r'
20636 d_getpwuid_r='$d_getpwuid_r'
20637 d_getsbyname='$d_getsbyname'
20638 d_getsbyport='$d_getsbyport'
20639 d_getsent='$d_getsent'
20640 d_getservbyname_r='$d_getservbyname_r'
20641 d_getservbyport_r='$d_getservbyport_r'
20642 d_getservent_r='$d_getservent_r'
20643 d_getservprotos='$d_getservprotos'
20644 d_getspnam='$d_getspnam'
20645 d_getspnam_r='$d_getspnam_r'
20646 d_gettimeod='$d_gettimeod'
20647 d_gmtime_r='$d_gmtime_r'
20648 d_gnulibc='$d_gnulibc'
20649 d_grpasswd='$d_grpasswd'
20650 d_hasmntopt='$d_hasmntopt'
20651 d_htonl='$d_htonl'
20652 d_ilogbl='$d_ilogbl'
20653 d_index='$d_index'
20654 d_inetaton='$d_inetaton'
20655 d_int64_t='$d_int64_t'
20656 d_isascii='$d_isascii'
20657 d_isfinite='$d_isfinite'
20658 d_isinf='$d_isinf'
20659 d_isnan='$d_isnan'
20660 d_isnanl='$d_isnanl'
20661 d_killpg='$d_killpg'
20662 d_lchown='$d_lchown'
20663 d_ldbl_dig='$d_ldbl_dig'
20664 d_link='$d_link'
20665 d_localtime_r='$d_localtime_r'
20666 d_locconv='$d_locconv'
20667 d_lockf='$d_lockf'
20668 d_longdbl='$d_longdbl'
20669 d_longlong='$d_longlong'
20670 d_lseekproto='$d_lseekproto'
20671 d_lstat='$d_lstat'
20672 d_madvise='$d_madvise'
20673 d_mblen='$d_mblen'
20674 d_mbstowcs='$d_mbstowcs'
20675 d_mbtowc='$d_mbtowc'
20676 d_memchr='$d_memchr'
20677 d_memcmp='$d_memcmp'
20678 d_memcpy='$d_memcpy'
20679 d_memmove='$d_memmove'
20680 d_memset='$d_memset'
20681 d_mkdir='$d_mkdir'
20682 d_mkdtemp='$d_mkdtemp'
20683 d_mkfifo='$d_mkfifo'
20684 d_mkstemp='$d_mkstemp'
20685 d_mkstemps='$d_mkstemps'
20686 d_mktime='$d_mktime'
20687 d_mmap='$d_mmap'
20688 d_modfl='$d_modfl'
20689 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20690 d_modflproto='$d_modflproto'
20691 d_mprotect='$d_mprotect'
20692 d_msg='$d_msg'
20693 d_msg_ctrunc='$d_msg_ctrunc'
20694 d_msg_dontroute='$d_msg_dontroute'
20695 d_msg_oob='$d_msg_oob'
20696 d_msg_peek='$d_msg_peek'
20697 d_msg_proxy='$d_msg_proxy'
20698 d_msgctl='$d_msgctl'
20699 d_msgget='$d_msgget'
20700 d_msghdr_s='$d_msghdr_s'
20701 d_msgrcv='$d_msgrcv'
20702 d_msgsnd='$d_msgsnd'
20703 d_msync='$d_msync'
20704 d_munmap='$d_munmap'
20705 d_mymalloc='$d_mymalloc'
20706 d_nanosleep='$d_nanosleep'
20707 d_nice='$d_nice'
20708 d_nl_langinfo='$d_nl_langinfo'
20709 d_nv_preserves_uv='$d_nv_preserves_uv'
20710 d_off64_t='$d_off64_t'
20711 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20712 d_oldpthreads='$d_oldpthreads'
20713 d_oldsock='$d_oldsock'
20714 d_open3='$d_open3'
20715 d_pathconf='$d_pathconf'
20716 d_pause='$d_pause'
20717 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20718 d_phostname='$d_phostname'
20719 d_pipe='$d_pipe'
20720 d_poll='$d_poll'
20721 d_portable='$d_portable'
20722 d_procselfexe='$d_procselfexe'
20723 d_pthread_atfork='$d_pthread_atfork'
20724 d_pthread_yield='$d_pthread_yield'
20725 d_pwage='$d_pwage'
20726 d_pwchange='$d_pwchange'
20727 d_pwclass='$d_pwclass'
20728 d_pwcomment='$d_pwcomment'
20729 d_pwexpire='$d_pwexpire'
20730 d_pwgecos='$d_pwgecos'
20731 d_pwpasswd='$d_pwpasswd'
20732 d_pwquota='$d_pwquota'
20733 d_qgcvt='$d_qgcvt'
20734 d_quad='$d_quad'
20735 d_random_r='$d_random_r'
20736 d_readdir64_r='$d_readdir64_r'
20737 d_readdir='$d_readdir'
20738 d_readdir_r='$d_readdir_r'
20739 d_readlink='$d_readlink'
20740 d_readv='$d_readv'
20741 d_recvmsg='$d_recvmsg'
20742 d_rename='$d_rename'
20743 d_rewinddir='$d_rewinddir'
20744 d_rmdir='$d_rmdir'
20745 d_safebcpy='$d_safebcpy'
20746 d_safemcpy='$d_safemcpy'
20747 d_sanemcmp='$d_sanemcmp'
20748 d_sbrkproto='$d_sbrkproto'
20749 d_scalbnl='$d_scalbnl'
20750 d_sched_yield='$d_sched_yield'
20751 d_scm_rights='$d_scm_rights'
20752 d_seekdir='$d_seekdir'
20753 d_select='$d_select'
20754 d_sem='$d_sem'
20755 d_semctl='$d_semctl'
20756 d_semctl_semid_ds='$d_semctl_semid_ds'
20757 d_semctl_semun='$d_semctl_semun'
20758 d_semget='$d_semget'
20759 d_semop='$d_semop'
20760 d_sendmsg='$d_sendmsg'
20761 d_setegid='$d_setegid'
20762 d_seteuid='$d_seteuid'
20763 d_setgrent='$d_setgrent'
20764 d_setgrent_r='$d_setgrent_r'
20765 d_setgrps='$d_setgrps'
20766 d_sethent='$d_sethent'
20767 d_sethostent_r='$d_sethostent_r'
20768 d_setitimer='$d_setitimer'
20769 d_setlinebuf='$d_setlinebuf'
20770 d_setlocale='$d_setlocale'
20771 d_setlocale_r='$d_setlocale_r'
20772 d_setnent='$d_setnent'
20773 d_setnetent_r='$d_setnetent_r'
20774 d_setpent='$d_setpent'
20775 d_setpgid='$d_setpgid'
20776 d_setpgrp2='$d_setpgrp2'
20777 d_setpgrp='$d_setpgrp'
20778 d_setprior='$d_setprior'
20779 d_setproctitle='$d_setproctitle'
20780 d_setprotoent_r='$d_setprotoent_r'
20781 d_setpwent='$d_setpwent'
20782 d_setpwent_r='$d_setpwent_r'
20783 d_setregid='$d_setregid'
20784 d_setresgid='$d_setresgid'
20785 d_setresuid='$d_setresuid'
20786 d_setreuid='$d_setreuid'
20787 d_setrgid='$d_setrgid'
20788 d_setruid='$d_setruid'
20789 d_setsent='$d_setsent'
20790 d_setservent_r='$d_setservent_r'
20791 d_setsid='$d_setsid'
20792 d_setvbuf='$d_setvbuf'
20793 d_sfio='$d_sfio'
20794 d_shm='$d_shm'
20795 d_shmat='$d_shmat'
20796 d_shmatprototype='$d_shmatprototype'
20797 d_shmctl='$d_shmctl'
20798 d_shmdt='$d_shmdt'
20799 d_shmget='$d_shmget'
20800 d_sigaction='$d_sigaction'
20801 d_sigprocmask='$d_sigprocmask'
20802 d_sigsetjmp='$d_sigsetjmp'
20803 d_sockatmark='$d_sockatmark'
20804 d_sockatmarkproto='$d_sockatmarkproto'
20805 d_socket='$d_socket'
20806 d_socklen_t='$d_socklen_t'
20807 d_sockpair='$d_sockpair'
20808 d_socks5_init='$d_socks5_init'
20809 d_sqrtl='$d_sqrtl'
20810 d_srand48_r='$d_srand48_r'
20811 d_srandom_r='$d_srandom_r'
20812 d_sresgproto='$d_sresgproto'
20813 d_sresuproto='$d_sresuproto'
20814 d_statblks='$d_statblks'
20815 d_statfs_f_flags='$d_statfs_f_flags'
20816 d_statfs_s='$d_statfs_s'
20817 d_statvfs='$d_statvfs'
20818 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20819 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20820 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20821 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20822 d_stdio_stream_array='$d_stdio_stream_array'
20823 d_stdiobase='$d_stdiobase'
20824 d_stdstdio='$d_stdstdio'
20825 d_strchr='$d_strchr'
20826 d_strcoll='$d_strcoll'
20827 d_strctcpy='$d_strctcpy'
20828 d_strerrm='$d_strerrm'
20829 d_strerror='$d_strerror'
20830 d_strerror_r='$d_strerror_r'
20831 d_strftime='$d_strftime'
20832 d_strtod='$d_strtod'
20833 d_strtol='$d_strtol'
20834 d_strtold='$d_strtold'
20835 d_strtoll='$d_strtoll'
20836 d_strtoq='$d_strtoq'
20837 d_strtoul='$d_strtoul'
20838 d_strtoull='$d_strtoull'
20839 d_strtouq='$d_strtouq'
20840 d_strxfrm='$d_strxfrm'
20841 d_suidsafe='$d_suidsafe'
20842 d_symlink='$d_symlink'
20843 d_syscall='$d_syscall'
20844 d_syscallproto='$d_syscallproto'
20845 d_sysconf='$d_sysconf'
20846 d_sysernlst='$d_sysernlst'
20847 d_syserrlst='$d_syserrlst'
20848 d_system='$d_system'
20849 d_tcgetpgrp='$d_tcgetpgrp'
20850 d_tcsetpgrp='$d_tcsetpgrp'
20851 d_telldir='$d_telldir'
20852 d_telldirproto='$d_telldirproto'
20853 d_time='$d_time'
20854 d_times='$d_times'
20855 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20856 d_tm_tm_zone='$d_tm_tm_zone'
20857 d_tmpnam_r='$d_tmpnam_r'
20858 d_truncate='$d_truncate'
20859 d_ttyname_r='$d_ttyname_r'
20860 d_tzname='$d_tzname'
20861 d_u32align='$d_u32align'
20862 d_ualarm='$d_ualarm'
20863 d_umask='$d_umask'
20864 d_uname='$d_uname'
20865 d_union_semun='$d_union_semun'
20866 d_unordered='$d_unordered'
20867 d_usleep='$d_usleep'
20868 d_usleepproto='$d_usleepproto'
20869 d_ustat='$d_ustat'
20870 d_vendorarch='$d_vendorarch'
20871 d_vendorbin='$d_vendorbin'
20872 d_vendorlib='$d_vendorlib'
20873 d_vendorscript='$d_vendorscript'
20874 d_vfork='$d_vfork'
20875 d_void_closedir='$d_void_closedir'
20876 d_voidsig='$d_voidsig'
20877 d_voidtty='$d_voidtty'
20878 d_volatile='$d_volatile'
20879 d_vprintf='$d_vprintf'
20880 d_wait4='$d_wait4'
20881 d_waitpid='$d_waitpid'
20882 d_wcstombs='$d_wcstombs'
20883 d_wctomb='$d_wctomb'
20884 d_writev='$d_writev'
20885 d_xenix='$d_xenix'
20886 date='$date'
20887 db_hashtype='$db_hashtype'
20888 db_prefixtype='$db_prefixtype'
20889 db_version_major='$db_version_major'
20890 db_version_minor='$db_version_minor'
20891 db_version_patch='$db_version_patch'
20892 defvoidused='$defvoidused'
20893 direntrytype='$direntrytype'
20894 dlext='$dlext'
20895 dlsrc='$dlsrc'
20896 doublesize='$doublesize'
20897 drand01='$drand01'
20898 drand48_r_proto='$drand48_r_proto'
20899 dynamic_ext='$dynamic_ext'
20900 eagain='$eagain'
20901 ebcdic='$ebcdic'
20902 echo='$echo'
20903 egrep='$egrep'
20904 emacs='$emacs'
20905 endgrent_r_proto='$endgrent_r_proto'
20906 endhostent_r_proto='$endhostent_r_proto'
20907 endnetent_r_proto='$endnetent_r_proto'
20908 endprotoent_r_proto='$endprotoent_r_proto'
20909 endpwent_r_proto='$endpwent_r_proto'
20910 endservent_r_proto='$endservent_r_proto'
20911 eunicefix='$eunicefix'
20912 exe_ext='$exe_ext'
20913 expr='$expr'
20914 extensions='$extensions'
20915 extras='$extras'
20916 fflushNULL='$fflushNULL'
20917 fflushall='$fflushall'
20918 find='$find'
20919 firstmakefile='$firstmakefile'
20920 flex='$flex'
20921 fpossize='$fpossize'
20922 fpostype='$fpostype'
20923 freetype='$freetype'
20924 from='$from'
20925 full_ar='$full_ar'
20926 full_csh='$full_csh'
20927 full_sed='$full_sed'
20928 gccansipedantic='$gccansipedantic'
20929 gccosandvers='$gccosandvers'
20930 gccversion='$gccversion'
20931 getgrent_r_proto='$getgrent_r_proto'
20932 getgrgid_r_proto='$getgrgid_r_proto'
20933 getgrnam_r_proto='$getgrnam_r_proto'
20934 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20935 gethostbyname_r_proto='$gethostbyname_r_proto'
20936 gethostent_r_proto='$gethostent_r_proto'
20937 getlogin_r_proto='$getlogin_r_proto'
20938 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20939 getnetbyname_r_proto='$getnetbyname_r_proto'
20940 getnetent_r_proto='$getnetent_r_proto'
20941 getprotobyname_r_proto='$getprotobyname_r_proto'
20942 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20943 getprotoent_r_proto='$getprotoent_r_proto'
20944 getpwent_r_proto='$getpwent_r_proto'
20945 getpwnam_r_proto='$getpwnam_r_proto'
20946 getpwuid_r_proto='$getpwuid_r_proto'
20947 getservbyname_r_proto='$getservbyname_r_proto'
20948 getservbyport_r_proto='$getservbyport_r_proto'
20949 getservent_r_proto='$getservent_r_proto'
20950 getspnam_r_proto='$getspnam_r_proto'
20951 gidformat='$gidformat'
20952 gidsign='$gidsign'
20953 gidsize='$gidsize'
20954 gidtype='$gidtype'
20955 glibpth='$glibpth'
20956 gmake='$gmake'
20957 gmtime_r_proto='$gmtime_r_proto'
20958 gnulibc_version='$gnulibc_version'
20959 grep='$grep'
20960 groupcat='$groupcat'
20961 groupstype='$groupstype'
20962 gzip='$gzip'
20963 h_fcntl='$h_fcntl'
20964 h_sysfile='$h_sysfile'
20965 hint='$hint'
20966 hostcat='$hostcat'
20967 html1dir='$html1dir'
20968 html1direxp='$html1direxp'
20969 html3dir='$html3dir'
20970 html3direxp='$html3direxp'
20971 i16size='$i16size'
20972 i16type='$i16type'
20973 i32size='$i32size'
20974 i32type='$i32type'
20975 i64size='$i64size'
20976 i64type='$i64type'
20977 i8size='$i8size'
20978 i8type='$i8type'
20979 i_arpainet='$i_arpainet'
20980 i_bsdioctl='$i_bsdioctl'
20981 i_crypt='$i_crypt'
20982 i_db='$i_db'
20983 i_dbm='$i_dbm'
20984 i_dirent='$i_dirent'
20985 i_dld='$i_dld'
20986 i_dlfcn='$i_dlfcn'
20987 i_fcntl='$i_fcntl'
20988 i_float='$i_float'
20989 i_fp='$i_fp'
20990 i_fp_class='$i_fp_class'
20991 i_gdbm='$i_gdbm'
20992 i_grp='$i_grp'
20993 i_ieeefp='$i_ieeefp'
20994 i_inttypes='$i_inttypes'
20995 i_langinfo='$i_langinfo'
20996 i_libutil='$i_libutil'
20997 i_limits='$i_limits'
20998 i_locale='$i_locale'
20999 i_machcthr='$i_machcthr'
21000 i_malloc='$i_malloc'
21001 i_math='$i_math'
21002 i_memory='$i_memory'
21003 i_mntent='$i_mntent'
21004 i_ndbm='$i_ndbm'
21005 i_netdb='$i_netdb'
21006 i_neterrno='$i_neterrno'
21007 i_netinettcp='$i_netinettcp'
21008 i_niin='$i_niin'
21009 i_poll='$i_poll'
21010 i_prot='$i_prot'
21011 i_pthread='$i_pthread'
21012 i_pwd='$i_pwd'
21013 i_rpcsvcdbm='$i_rpcsvcdbm'
21014 i_sfio='$i_sfio'
21015 i_sgtty='$i_sgtty'
21016 i_shadow='$i_shadow'
21017 i_socks='$i_socks'
21018 i_stdarg='$i_stdarg'
21019 i_stddef='$i_stddef'
21020 i_stdlib='$i_stdlib'
21021 i_string='$i_string'
21022 i_sunmath='$i_sunmath'
21023 i_sysaccess='$i_sysaccess'
21024 i_sysdir='$i_sysdir'
21025 i_sysfile='$i_sysfile'
21026 i_sysfilio='$i_sysfilio'
21027 i_sysin='$i_sysin'
21028 i_sysioctl='$i_sysioctl'
21029 i_syslog='$i_syslog'
21030 i_sysmman='$i_sysmman'
21031 i_sysmode='$i_sysmode'
21032 i_sysmount='$i_sysmount'
21033 i_sysndir='$i_sysndir'
21034 i_sysparam='$i_sysparam'
21035 i_sysresrc='$i_sysresrc'
21036 i_syssecrt='$i_syssecrt'
21037 i_sysselct='$i_sysselct'
21038 i_syssockio='$i_syssockio'
21039 i_sysstat='$i_sysstat'
21040 i_sysstatfs='$i_sysstatfs'
21041 i_sysstatvfs='$i_sysstatvfs'
21042 i_systime='$i_systime'
21043 i_systimek='$i_systimek'
21044 i_systimes='$i_systimes'
21045 i_systypes='$i_systypes'
21046 i_sysuio='$i_sysuio'
21047 i_sysun='$i_sysun'
21048 i_sysutsname='$i_sysutsname'
21049 i_sysvfs='$i_sysvfs'
21050 i_syswait='$i_syswait'
21051 i_termio='$i_termio'
21052 i_termios='$i_termios'
21053 i_time='$i_time'
21054 i_unistd='$i_unistd'
21055 i_ustat='$i_ustat'
21056 i_utime='$i_utime'
21057 i_values='$i_values'
21058 i_varargs='$i_varargs'
21059 i_varhdr='$i_varhdr'
21060 i_vfork='$i_vfork'
21061 ignore_versioned_solibs='$ignore_versioned_solibs'
21062 inc_version_list='$inc_version_list'
21063 inc_version_list_init='$inc_version_list_init'
21064 incpath='$incpath'
21065 inews='$inews'
21066 installarchlib='$installarchlib'
21067 installbin='$installbin'
21068 installhtml1dir='$installhtml1dir'
21069 installhtml3dir='$installhtml3dir'
21070 installman1dir='$installman1dir'
21071 installman3dir='$installman3dir'
21072 installprefix='$installprefix'
21073 installprefixexp='$installprefixexp'
21074 installprivlib='$installprivlib'
21075 installscript='$installscript'
21076 installsitearch='$installsitearch'
21077 installsitebin='$installsitebin'
21078 installsitehtml1='$installsitehtml1'
21079 installsitehtml3='$installsitehtml3'
21080 installsitelib='$installsitelib'
21081 installsiteman1='$installsiteman1'
21082 installsiteman3='$installsiteman3'
21083 installsitescript='$installsitescript'
21084 installstyle='$installstyle'
21085 installusrbinperl='$installusrbinperl'
21086 installvendorarch='$installvendorarch'
21087 installvendorbin='$installvendorbin'
21088 installvendorhtml1='$installvendorhtml1'
21089 installvendorhtml3='$installvendorhtml3'
21090 installvendorlib='$installvendorlib'
21091 installvendorman1='$installvendorman1'
21092 installvendorman3='$installvendorman3'
21093 installvendorscript='$installvendorscript'
21094 intsize='$intsize'
21095 issymlink='$issymlink'
21096 ivdformat='$ivdformat'
21097 ivsize='$ivsize'
21098 ivtype='$ivtype'
21099 known_extensions='$known_extensions'
21100 ksh='$ksh'
21101 ld='$ld'
21102 lddlflags='$lddlflags'
21103 ldflags='$ldflags'
21104 ldflags_uselargefiles='$ldflags_uselargefiles'
21105 ldlibpthname='$ldlibpthname'
21106 less='$less'
21107 lib_ext='$lib_ext'
21108 libc='$libc'
21109 libperl='$libperl'
21110 libpth='$libpth'
21111 libs='$libs'
21112 libsdirs='$libsdirs'
21113 libsfiles='$libsfiles'
21114 libsfound='$libsfound'
21115 libspath='$libspath'
21116 libswanted='$libswanted'
21117 libswanted_uselargefiles='$libswanted_uselargefiles'
21118 line='$line'
21119 lint='$lint'
21120 lkflags='$lkflags'
21121 ln='$ln'
21122 lns='$lns'
21123 localtime_r_proto='$localtime_r_proto'
21124 locincpth='$locincpth'
21125 loclibpth='$loclibpth'
21126 longdblsize='$longdblsize'
21127 longlongsize='$longlongsize'
21128 longsize='$longsize'
21129 lp='$lp'
21130 lpr='$lpr'
21131 ls='$ls'
21132 lseeksize='$lseeksize'
21133 lseektype='$lseektype'
21134 mail='$mail'
21135 mailx='$mailx'
21136 make='$make'
21137 make_set_make='$make_set_make'
21138 mallocobj='$mallocobj'
21139 mallocsrc='$mallocsrc'
21140 malloctype='$malloctype'
21141 man1dir='$man1dir'
21142 man1direxp='$man1direxp'
21143 man1ext='$man1ext'
21144 man3dir='$man3dir'
21145 man3direxp='$man3direxp'
21146 man3ext='$man3ext'
21147 mips_type='$mips_type'
21148 mkdir='$mkdir'
21149 mmaptype='$mmaptype'
21150 modetype='$modetype'
21151 more='$more'
21152 multiarch='$multiarch'
21153 mv='$mv'
21154 myarchname='$myarchname'
21155 mydomain='$mydomain'
21156 myhostname='$myhostname'
21157 myuname='$myuname'
21158 n='$n'
21159 need_va_copy='$need_va_copy'
21160 netdb_hlen_type='$netdb_hlen_type'
21161 netdb_host_type='$netdb_host_type'
21162 netdb_name_type='$netdb_name_type'
21163 netdb_net_type='$netdb_net_type'
21164 nm='$nm'
21165 nm_opt='$nm_opt'
21166 nm_so_opt='$nm_so_opt'
21167 nonxs_ext='$nonxs_ext'
21168 nroff='$nroff'
21169 nvEUformat='$nvEUformat'
21170 nvFUformat='$nvFUformat'
21171 nvGUformat='$nvGUformat'
21172 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21173 nveformat='$nveformat'
21174 nvfformat='$nvfformat'
21175 nvgformat='$nvgformat'
21176 nvsize='$nvsize'
21177 nvtype='$nvtype'
21178 o_nonblock='$o_nonblock'
21179 obj_ext='$obj_ext'
21180 old_pthread_create_joinable='$old_pthread_create_joinable'
21181 optimize='$optimize'
21182 orderlib='$orderlib'
21183 osname='$osname'
21184 osvers='$osvers'
21185 otherlibdirs='$otherlibdirs'
21186 package='$package'
21187 pager='$pager'
21188 passcat='$passcat'
21189 patchlevel='$patchlevel'
21190 path_sep='$path_sep'
21191 perl5='$perl5'
21192 perl='$perl'
21193 perl_patchlevel='$perl_patchlevel'
21194 perladmin='$perladmin'
21195 perllibs='$perllibs'
21196 perlpath='$perlpath'
21197 pg='$pg'
21198 phostname='$phostname'
21199 pidtype='$pidtype'
21200 plibpth='$plibpth'
21201 pm_apiversion='$pm_apiversion'
21202 pmake='$pmake'
21203 pr='$pr'
21204 prefix='$prefix'
21205 prefixexp='$prefixexp'
21206 privlib='$privlib'
21207 privlibexp='$privlibexp'
21208 procselfexe='$procselfexe'
21209 prototype='$prototype'
21210 ptrsize='$ptrsize'
21211 quadkind='$quadkind'
21212 quadtype='$quadtype'
21213 randbits='$randbits'
21214 randfunc='$randfunc'
21215 random_r_proto='$random_r_proto'
21216 randseedtype='$randseedtype'
21217 ranlib='$ranlib'
21218 rd_nodata='$rd_nodata'
21219 readdir64_r_proto='$readdir64_r_proto'
21220 readdir_r_proto='$readdir_r_proto'
21221 revision='$revision'
21222 rm='$rm'
21223 rmail='$rmail'
21224 run='$run'
21225 runnm='$runnm'
21226 sPRIEUldbl='$sPRIEUldbl'
21227 sPRIFUldbl='$sPRIFUldbl'
21228 sPRIGUldbl='$sPRIGUldbl'
21229 sPRIXU64='$sPRIXU64'
21230 sPRId64='$sPRId64'
21231 sPRIeldbl='$sPRIeldbl'
21232 sPRIfldbl='$sPRIfldbl'
21233 sPRIgldbl='$sPRIgldbl'
21234 sPRIi64='$sPRIi64'
21235 sPRIo64='$sPRIo64'
21236 sPRIu64='$sPRIu64'
21237 sPRIx64='$sPRIx64'
21238 sSCNfldbl='$sSCNfldbl'
21239 sched_yield='$sched_yield'
21240 scriptdir='$scriptdir'
21241 scriptdirexp='$scriptdirexp'
21242 sed='$sed'
21243 seedfunc='$seedfunc'
21244 selectminbits='$selectminbits'
21245 selecttype='$selecttype'
21246 sendmail='$sendmail'
21247 setgrent_r_proto='$setgrent_r_proto'
21248 sethostent_r_proto='$sethostent_r_proto'
21249 setlocale_r_proto='$setlocale_r_proto'
21250 setnetent_r_proto='$setnetent_r_proto'
21251 setprotoent_r_proto='$setprotoent_r_proto'
21252 setpwent_r_proto='$setpwent_r_proto'
21253 setservent_r_proto='$setservent_r_proto'
21254 sh='$sh'
21255 shar='$shar'
21256 sharpbang='$sharpbang'
21257 shmattype='$shmattype'
21258 shortsize='$shortsize'
21259 shrpenv='$shrpenv'
21260 shsharp='$shsharp'
21261 sig_count='$sig_count'
21262 sig_name='$sig_name'
21263 sig_name_init='$sig_name_init'
21264 sig_num='$sig_num'
21265 sig_num_init='$sig_num_init'
21266 sig_size='$sig_size'
21267 signal_t='$signal_t'
21268 sitearch='$sitearch'
21269 sitearchexp='$sitearchexp'
21270 sitebin='$sitebin'
21271 sitebinexp='$sitebinexp'
21272 sitehtml1='$sitehtml1'
21273 sitehtml1exp='$sitehtml1exp'
21274 sitehtml3='$sitehtml3'
21275 sitehtml3exp='$sitehtml3exp'
21276 sitelib='$sitelib'
21277 sitelib_stem='$sitelib_stem'
21278 sitelibexp='$sitelibexp'
21279 siteman1='$siteman1'
21280 siteman1exp='$siteman1exp'
21281 siteman3='$siteman3'
21282 siteman3exp='$siteman3exp'
21283 siteprefix='$siteprefix'
21284 siteprefixexp='$siteprefixexp'
21285 sitescript='$sitescript'
21286 sitescriptexp='$sitescriptexp'
21287 sizesize='$sizesize'
21288 sizetype='$sizetype'
21289 sleep='$sleep'
21290 smail='$smail'
21291 so='$so'
21292 sockethdr='$sockethdr'
21293 socketlib='$socketlib'
21294 socksizetype='$socksizetype'
21295 sort='$sort'
21296 spackage='$spackage'
21297 spitshell='$spitshell'
21298 srand48_r_proto='$srand48_r_proto'
21299 srandom_r_proto='$srandom_r_proto'
21300 src='$src'
21301 ssizetype='$ssizetype'
21302 startperl='$startperl'
21303 startsh='$startsh'
21304 static_ext='$static_ext'
21305 stdchar='$stdchar'
21306 stdio_base='$stdio_base'
21307 stdio_bufsiz='$stdio_bufsiz'
21308 stdio_cnt='$stdio_cnt'
21309 stdio_filbuf='$stdio_filbuf'
21310 stdio_ptr='$stdio_ptr'
21311 stdio_stream_array='$stdio_stream_array'
21312 strerror_r_proto='$strerror_r_proto'
21313 strings='$strings'
21314 submit='$submit'
21315 subversion='$subversion'
21316 sysman='$sysman'
21317 tail='$tail'
21318 tar='$tar'
21319 targetarch='$targetarch'
21320 tbl='$tbl'
21321 tee='$tee'
21322 test='$test'
21323 timeincl='$timeincl'
21324 timetype='$timetype'
21325 tmpnam_r_proto='$tmpnam_r_proto'
21326 to='$to'
21327 touch='$touch'
21328 tr='$tr'
21329 trnl='$trnl'
21330 troff='$troff'
21331 ttyname_r_proto='$ttyname_r_proto'
21332 u16size='$u16size'
21333 u16type='$u16type'
21334 u32size='$u32size'
21335 u32type='$u32type'
21336 u64size='$u64size'
21337 u64type='$u64type'
21338 u8size='$u8size'
21339 u8type='$u8type'
21340 uidformat='$uidformat'
21341 uidsign='$uidsign'
21342 uidsize='$uidsize'
21343 uidtype='$uidtype'
21344 uname='$uname'
21345 uniq='$uniq'
21346 uquadtype='$uquadtype'
21347 use5005threads='$use5005threads'
21348 use64bitall='$use64bitall'
21349 use64bitint='$use64bitint'
21350 usecrosscompile='$usecrosscompile'
21351 usedl='$usedl'
21352 usefaststdio='$usefaststdio'
21353 useithreads='$useithreads'
21354 uselargefiles='$uselargefiles'
21355 uselongdouble='$uselongdouble'
21356 usemorebits='$usemorebits'
21357 usemultiplicity='$usemultiplicity'
21358 usemymalloc='$usemymalloc'
21359 usenm='$usenm'
21360 useopcode='$useopcode'
21361 useperlio='$useperlio'
21362 useposix='$useposix'
21363 usereentrant='$usereentrant'
21364 usesfio='$usesfio'
21365 useshrplib='$useshrplib'
21366 usesocks='$usesocks'
21367 usethreads='$usethreads'
21368 usevendorprefix='$usevendorprefix'
21369 usevfork='$usevfork'
21370 usrinc='$usrinc'
21371 uuname='$uuname'
21372 uvXUformat='$uvXUformat'
21373 uvoformat='$uvoformat'
21374 uvsize='$uvsize'
21375 uvtype='$uvtype'
21376 uvuformat='$uvuformat'
21377 uvxformat='$uvxformat'
21378 vendorarch='$vendorarch'
21379 vendorarchexp='$vendorarchexp'
21380 vendorbin='$vendorbin'
21381 vendorbinexp='$vendorbinexp'
21382 vendorhtml1='$vendorhtml1'
21383 vendorhtml1exp='$vendorhtml1exp'
21384 vendorhtml3='$vendorhtml3'
21385 vendorhtml3exp='$vendorhtml3exp'
21386 vendorlib='$vendorlib'
21387 vendorlib_stem='$vendorlib_stem'
21388 vendorlibexp='$vendorlibexp'
21389 vendorman1='$vendorman1'
21390 vendorman1exp='$vendorman1exp'
21391 vendorman3='$vendorman3'
21392 vendorman3exp='$vendorman3exp'
21393 vendorprefix='$vendorprefix'
21394 vendorprefixexp='$vendorprefixexp'
21395 vendorscript='$vendorscript'
21396 vendorscriptexp='$vendorscriptexp'
21397 version='$version'
21398 version_patchlevel_string='$version_patchlevel_string'
21399 versiononly='$versiononly'
21400 vi='$vi'
21401 voidflags='$voidflags'
21402 xlibpth='$xlibpth'
21403 xs_apiversion='$xs_apiversion'
21404 yacc='$yacc'
21405 yaccflags='$yaccflags'
21406 zcat='$zcat'
21407 zip='$zip'
21408 EOT
21409
21410 : Add in command line options if available
21411 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21412
21413 : add special variables
21414 $test -f $src/patchlevel.h && \
21415 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21416 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21417 echo "PERL_CONFIG_SH=true" >>config.sh
21418
21419 : propagate old symbols
21420 if $test -f UU/config.sh; then
21421         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21422         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21423         $sort | $uniq -u >UU/oldsyms
21424         set X `cat UU/oldsyms`
21425         shift
21426         case $# in
21427         0) ;;
21428         *)
21429                 cat <<EOM
21430 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21431 EOM
21432                 echo "# Variables propagated from previous config.sh file." >>config.sh
21433                 for sym in `cat UU/oldsyms`; do
21434                         echo "    Propagating $hint variable "'$'"$sym..."
21435                         eval 'tmp="$'"${sym}"'"'
21436                         echo "$tmp" | \
21437                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21438                 done
21439                 ;;
21440         esac
21441 fi
21442
21443 : Finish up by extracting the .SH files
21444 case "$alldone" in
21445 exit)
21446         $rm -rf UU
21447         echo "Extraction done."
21448         exit 0
21449         ;;
21450 cont)
21451         ;;
21452 '')
21453         dflt=''
21454         nostick=true
21455         $cat <<EOM
21456
21457 If you'd like to make any changes to the config.sh file before I begin
21458 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21459
21460 EOM
21461         rp="Press return or use a shell escape to edit config.sh:"
21462         . UU/myread
21463         nostick=''
21464         case "$ans" in
21465         '') ;;
21466         *) : in case they cannot read
21467                 sh 1>&4 -c "$ans";;
21468         esac
21469         ;;
21470 esac
21471
21472 : if this fails, just run all the .SH files by hand
21473 . ./config.sh
21474
21475 echo " "
21476 exec 1>&4
21477 pwd=`pwd`
21478 . ./UU/extract
21479 cd "$pwd"
21480
21481 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21482         dflt=y
21483         case "$silent" in
21484         true) ;;
21485         *)
21486                 $cat <<EOM
21487
21488 Now you need to generate make dependencies by running "$make depend".
21489 You might prefer to run it in background: "$make depend > makedepend.out &"
21490 It can take a while, so you might not want to run it right now.
21491
21492 EOM
21493                 ;;
21494         esac
21495         rp="Run $make depend now?"
21496         . UU/myread
21497         case "$ans" in
21498         y*)
21499                 $make depend && echo "Now you must run '$make'."
21500                 ;;
21501         *)
21502                 echo "You must run '$make depend' then '$make'."
21503                 ;;
21504         esac
21505 elif test -f [Mm]akefile; then
21506         echo " "
21507         echo "Now you must run a $make."
21508 else
21509         echo "Configure done."
21510 fi
21511
21512 if $test -f Policy.sh; then
21513     $cat <<EOM
21514
21515 If you compile $package on a different machine or from a different object
21516 directory, copy the Policy.sh file from this object directory to the
21517 new one before you run Configure -- this will help you with most of
21518 the policy defaults.
21519
21520 EOM
21521 fi
21522 if $test -f config.msg; then
21523     echo "Hmm.  I also noted the following information while running:"
21524     echo " "
21525     $cat config.msg >&4
21526     $rm -f config.msg
21527 fi
21528 $rm -f kit*isdone ark*isdone
21529 $rm -rf UU
21530
21531 : End of Configure
21532