Patch from Enache Adrian for the new tricks of gcc 3.4
[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 Thu Sep 18 08:54:57 EEST 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 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 usemymalloc=''
946 installman1dir=''
947 man1dir=''
948 man1direxp=''
949 man1ext=''
950 installman3dir=''
951 man3dir=''
952 man3direxp=''
953 man3ext=''
954 modetype=''
955 multiarch=''
956 mydomain=''
957 myhostname=''
958 phostname=''
959 c=''
960 n=''
961 d_eofnblk=''
962 eagain=''
963 o_nonblock=''
964 rd_nodata=''
965 need_va_copy=''
966 netdb_hlen_type=''
967 netdb_host_type=''
968 netdb_name_type=''
969 netdb_net_type=''
970 groupcat=''
971 hostcat=''
972 passcat=''
973 orderlib=''
974 ranlib=''
975 d_perl_otherlibdirs=''
976 otherlibdirs=''
977 package=''
978 spackage=''
979 pager=''
980 api_revision=''
981 api_subversion=''
982 api_version=''
983 api_versionstring=''
984 patchlevel=''
985 perl_patchlevel=''
986 revision=''
987 subversion=''
988 version=''
989 version_patchlevel_string=''
990 perl5=''
991 perladmin=''
992 perlpath=''
993 d_nv_preserves_uv=''
994 i16size=''
995 i16type=''
996 i32size=''
997 i32type=''
998 i64size=''
999 i64type=''
1000 i8size=''
1001 i8type=''
1002 ivsize=''
1003 ivtype=''
1004 nv_preserves_uv_bits=''
1005 nvsize=''
1006 nvtype=''
1007 u16size=''
1008 u16type=''
1009 u32size=''
1010 u32type=''
1011 u64size=''
1012 u64type=''
1013 u8size=''
1014 u8type=''
1015 uvsize=''
1016 uvtype=''
1017 ivdformat=''
1018 nvEUformat=''
1019 nvFUformat=''
1020 nvGUformat=''
1021 nveformat=''
1022 nvfformat=''
1023 nvgformat=''
1024 uvXUformat=''
1025 uvoformat=''
1026 uvuformat=''
1027 uvxformat=''
1028 pidtype=''
1029 prefix=''
1030 prefixexp=''
1031 installprivlib=''
1032 privlib=''
1033 privlibexp=''
1034 prototype=''
1035 ptrsize=''
1036 d_PRIXU64=''
1037 d_PRId64=''
1038 d_PRIi64=''
1039 d_PRIo64=''
1040 d_PRIu64=''
1041 d_PRIx64=''
1042 sPRIXU64=''
1043 sPRId64=''
1044 sPRIi64=''
1045 sPRIo64=''
1046 sPRIu64=''
1047 sPRIx64=''
1048 d_quad=''
1049 quadkind=''
1050 quadtype=''
1051 uquadtype=''
1052 drand01=''
1053 randbits=''
1054 randfunc=''
1055 randseedtype=''
1056 seedfunc=''
1057 installscript=''
1058 scriptdir=''
1059 scriptdirexp=''
1060 selectminbits=''
1061 selecttype=''
1062 sh=''
1063 sig_count=''
1064 sig_name=''
1065 sig_name_init=''
1066 sig_num=''
1067 sig_num_init=''
1068 sig_size=''
1069 installsitearch=''
1070 sitearch=''
1071 sitearchexp=''
1072 installsitebin=''
1073 sitebin=''
1074 sitebinexp=''
1075 installsitehtml1dir=''
1076 sitehtml1dir=''
1077 sitehtml1direxp=''
1078 installsitehtml3dir=''
1079 sitehtml3dir=''
1080 sitehtml3direxp=''
1081 installsitelib=''
1082 sitelib=''
1083 sitelib_stem=''
1084 sitelibexp=''
1085 installsiteman1dir=''
1086 siteman1dir=''
1087 siteman1direxp=''
1088 installsiteman3dir=''
1089 siteman3dir=''
1090 siteman3direxp=''
1091 siteprefix=''
1092 siteprefixexp=''
1093 installsitescript=''
1094 sitescript=''
1095 sitescriptexp=''
1096 sizesize=''
1097 sizetype=''
1098 so=''
1099 socksizetype=''
1100 sharpbang=''
1101 shsharp=''
1102 spitshell=''
1103 src=''
1104 ssizetype=''
1105 startperl=''
1106 startsh=''
1107 stdchar=''
1108 d_stdio_stream_array=''
1109 stdio_stream_array=''
1110 sysman=''
1111 trnl=''
1112 uidformat=''
1113 uidsign=''
1114 uidsize=''
1115 uidtype=''
1116 archname64=''
1117 use64bitall=''
1118 use64bitint=''
1119 usefaststdio=''
1120 ccflags_uselargefiles=''
1121 ldflags_uselargefiles=''
1122 libswanted_uselargefiles=''
1123 uselargefiles=''
1124 uselongdouble=''
1125 usemorebits=''
1126 usemultiplicity=''
1127 nm_opt=''
1128 nm_so_opt=''
1129 runnm=''
1130 usenm=''
1131 useperlio=''
1132 usesocks=''
1133 d_oldpthreads=''
1134 use5005threads=''
1135 useithreads=''
1136 usereentrant=''
1137 usethreads=''
1138 incpath=''
1139 mips_type=''
1140 usrinc=''
1141 d_vendorarch=''
1142 installvendorarch=''
1143 vendorarch=''
1144 vendorarchexp=''
1145 d_vendorbin=''
1146 installvendorbin=''
1147 vendorbin=''
1148 vendorbinexp=''
1149 installvendorhtml1dir=''
1150 vendorhtml1dir=''
1151 vendorhtml1direxp=''
1152 installvendorhtml3dir=''
1153 vendorhtml3dir=''
1154 vendorhtml3direxp=''
1155 d_vendorlib=''
1156 installvendorlib=''
1157 vendorlib=''
1158 vendorlib_stem=''
1159 vendorlibexp=''
1160 installvendorman1dir=''
1161 vendorman1dir=''
1162 vendorman1direxp=''
1163 installvendorman3dir=''
1164 vendorman3dir=''
1165 vendorman3direxp=''
1166 usevendorprefix=''
1167 vendorprefix=''
1168 vendorprefixexp=''
1169 d_vendorscript=''
1170 installvendorscript=''
1171 vendorscript=''
1172 vendorscriptexp=''
1173 versiononly=''
1174 defvoidused=''
1175 voidflags=''
1176 pm_apiversion=''
1177 xs_apiversion=''
1178 yacc=''
1179 yaccflags=''
1180 CONFIG=''
1181
1182 define='define'
1183 undef='undef'
1184 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1185 rmlist=''
1186
1187 : We must find out about Eunice early
1188 eunicefix=':'
1189 if test -f /etc/unixtovms; then
1190         eunicefix=/etc/unixtovms
1191 fi
1192 if test -f /etc/unixtovms.exe; then
1193         eunicefix=/etc/unixtovms.exe
1194 fi
1195
1196 : Set executable suffix now -- needed before hints available
1197 if test -f "/libs/version.library"; then
1198 : Amiga OS
1199     _exe=""
1200 elif test -f "/system/gnu_library/bin/ar.pm"; then
1201 : Stratus VOS
1202     _exe=".pm"
1203 elif test -n "$DJGPP"; then
1204 : DOS DJGPP
1205     _exe=".exe"
1206 elif test -d c:/. -o -n "$is_os2" ; then
1207 : OS/2 or cygwin
1208     _exe=".exe"
1209 fi
1210
1211 i_whoami=''
1212 : Possible local include directories to search.
1213 : Set locincpth to "" in a hint file to defeat local include searches.
1214 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1215 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1216 :
1217 : no include file wanted by default
1218 inclwanted=''
1219
1220 siteman1dir=''
1221 siteman3dir=''
1222 sitescript=''
1223 : Trailing extension.  Override this in a hint file, if needed.
1224 : Extra object files, if any, needed on this platform.
1225 archobjs=''
1226 groupstype=''
1227 libnames=''
1228 : change the next line if compiling for Xenix/286 on Xenix/386
1229 xlibpth='/usr/lib/386 /lib/386'
1230 : Possible local library directories to search.
1231 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1232 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1233
1234 : general looking path for locating libraries
1235 glibpth="/lib /usr/lib $xlibpth"
1236 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1237 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1238 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1239
1240 : Private path used by Configure to find libraries.  Its value
1241 : is prepended to libpth. This variable takes care of special
1242 : machines, like the mips.  Usually, it should be empty.
1243 plibpth=''
1244
1245 : default library list
1246 libswanted=''
1247 : some systems want to use only the non-versioned libso:s
1248 ignore_versioned_solibs=''
1249 : full support for void wanted by default
1250 defvoidused=15
1251
1252 ccname=''
1253 ccversion=''
1254 perllibs=''
1255 : set useposix=false in your hint file to disable the POSIX extension.
1256 useposix=true
1257 : set useopcode=false in your hint file to disable the Opcode extension.
1258 useopcode=true
1259 archname64=''
1260 ccflags_uselargefiles=''
1261 ldflags_uselargefiles=''
1262 libswanted_uselargefiles=''
1263 : set usemultiplicity on the Configure command line to enable multiplicity.
1264 : set usesocks on the Configure command line to enable socks.
1265 archname=''
1266 : set usethreads on the Configure command line to enable threads.
1267 usereentrant='undef'
1268 : List of libraries we want.
1269 : If anyone needs extra -lxxx, put those in a hint file.
1270 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1271 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1272 : We probably want to search /usr/shlib before most other libraries.
1273 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1274 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1275 glibpth="/usr/shlib $glibpth"
1276 : Do not use vfork unless overridden by a hint file.
1277 usevfork=false
1278
1279 : Find the basic shell for Bourne shell scripts
1280 case "$sh" in
1281 '')
1282         case "$SYSTYPE" in
1283         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1284         *) xxx='/bin/sh';;
1285         esac
1286         if test -f "$xxx"; then
1287                 sh="$xxx"
1288         else
1289                 : Build up a list and do a single loop so we can 'break' out.
1290                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1291                 for xxx in sh bash ksh pdksh ash; do
1292                         for p in $pth; do
1293                                 try="$try ${p}/${xxx}"
1294                         done
1295                 done
1296                 for xxx in $try; do
1297                         if test -f "$xxx"; then
1298                                 sh="$xxx";
1299                                 break
1300                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1301                                 sh="$xxx";
1302                                 break
1303                         elif test -f "$xxx.exe"; then
1304                                 sh="$xxx";
1305                                 break
1306                         fi
1307                 done
1308         fi
1309         ;;
1310 esac
1311
1312 case "$sh" in
1313 '')     cat >&2 <<EOM
1314 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1315
1316 Usually it's in /bin/sh.  How did you even get this far?
1317 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1318 we'll try to straighten this all out.
1319 EOM
1320         exit 1
1321         ;;
1322 esac
1323
1324 : see if sh knows # comments
1325 if `$sh -c '#' >/dev/null 2>&1`; then
1326         shsharp=true
1327         spitshell=cat
1328         xcat=/bin/cat
1329         test -f $xcat$_exe || xcat=/usr/bin/cat
1330         if test ! -f $xcat$_exe; then
1331                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1332                         if test -f $p/cat$_exe; then
1333                                 xcat=$p/cat
1334                                 break
1335                         fi
1336                 done
1337                 if test ! -f $xcat$_exe; then
1338                         echo "Can't find cat anywhere!"
1339                         exit 1
1340                 fi
1341         fi
1342         echo "#!$xcat" >sharp
1343         $eunicefix sharp
1344         chmod +x sharp
1345         ./sharp > today
1346         if test -s today; then
1347                 sharpbang='#!'
1348         else
1349                 echo "#! $xcat" > sharp
1350                 $eunicefix sharp
1351                 chmod +x sharp
1352                 ./sharp > today
1353                 if test -s today; then
1354                         sharpbang='#! '
1355                 else
1356                         sharpbang=': use '
1357                 fi
1358         fi
1359 else
1360         echo " "
1361         echo "Your $sh doesn't grok # comments--I will strip them later on."
1362         shsharp=false
1363         cd ..
1364         echo "exec grep -v '^[  ]*#'" >spitshell
1365         chmod +x spitshell
1366         $eunicefix spitshell
1367         spitshell=`pwd`/spitshell
1368         cd UU
1369         echo "I presume that if # doesn't work, #! won't work either!"
1370         sharpbang=': use '
1371 fi
1372 rm -f sharp today
1373
1374 : figure out how to guarantee sh startup
1375 case "$startsh" in
1376 '') startsh=${sharpbang}${sh} ;;
1377 *)
1378 esac
1379 cat >sharp <<EOSS
1380 $startsh
1381 set abc
1382 test "$?abc" != 1
1383 EOSS
1384
1385 chmod +x sharp
1386 $eunicefix sharp
1387 if ./sharp; then
1388         : echo "Yup, it does."
1389 else
1390         echo "Hmm... '$startsh' does not guarantee sh startup..."
1391         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1392 fi
1393 rm -f sharp
1394
1395
1396 : Save command line options in file UU/cmdline.opt for later use in
1397 : generating config.sh.
1398 cat > cmdline.opt <<EOSH
1399 # Configure command line arguments.
1400 config_arg0='$0'
1401 config_args='$*'
1402 config_argc=$#
1403 EOSH
1404 argn=1
1405 args_exp=''
1406 args_sep=''
1407 for arg in "$@"; do
1408         cat >>cmdline.opt <<EOSH
1409 config_arg$argn='$arg'
1410 EOSH
1411         # Extreme backslashitis: replace each ' by '"'"'
1412         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1413 $arg
1414 EOC
1415         arg_exp=`cat cmdl.opt`
1416         args_exp="$args_exp$args_sep'$arg_exp'"
1417         argn=`expr $argn + 1`
1418         args_sep=' '
1419 done
1420 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1421 # used by ./hints/os2.sh
1422 rm -f cmdl.opt
1423
1424 : produce awk script to parse command line options
1425 cat >options.awk <<'EOF'
1426 BEGIN {
1427         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1428
1429         len = length(optstr);
1430         for (i = 1; i <= len; i++) {
1431                 c = substr(optstr, i, 1);
1432                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1433                 if (a == ":") {
1434                         arg[c] = 1;
1435                         i++;
1436                 }
1437                 opt[c] = 1;
1438         }
1439 }
1440 {
1441         expect = 0;
1442         str = $0;
1443         if (substr(str, 1, 1) != "-") {
1444                 printf("'%s'\n", str);
1445                 next;
1446         }
1447         len = length($0);
1448         for (i = 2; i <= len; i++) {
1449                 c = substr(str, i, 1);
1450                 if (!opt[c]) {
1451                         printf("-%s\n", substr(str, i));
1452                         next;
1453                 }
1454                 printf("-%s\n", c);
1455                 if (arg[c]) {
1456                         if (i < len)
1457                                 printf("'%s'\n", substr(str, i + 1));
1458                         else
1459                                 expect = 1;
1460                         next;
1461                 }
1462         }
1463 }
1464 END {
1465         if (expect)
1466                 print "?";
1467 }
1468 EOF
1469
1470 : process the command line options
1471 set X `for arg in "$@"; do echo "X$arg"; done |
1472         sed -e s/X// | awk -f options.awk`
1473 eval "set $*"
1474 shift
1475 rm -f options.awk
1476
1477 : set up default values
1478 fastread=''
1479 reuseval=false
1480 config_sh=''
1481 alldone=''
1482 error=''
1483 silent=''
1484 extractsh=''
1485 override=''
1486 knowitall=''
1487 rm -f optdef.sh posthint.sh
1488 cat >optdef.sh <<EOS
1489 $startsh
1490 EOS
1491
1492
1493 : option parsing
1494 while test $# -gt 0; do
1495         case "$1" in
1496         -d) shift; fastread=yes;;
1497         -e) shift; alldone=cont;;
1498         -f)
1499                 shift
1500                 cd ..
1501                 if test -r "$1"; then
1502                         config_sh="$1"
1503                 else
1504                         echo "$me: cannot read config file $1." >&2
1505                         error=true
1506                 fi
1507                 cd UU
1508                 shift;;
1509         -h) shift; error=true;;
1510         -r) shift; reuseval=true;;
1511         -s) shift; silent=true; realsilent=true;;
1512         -E) shift; alldone=exit;;
1513         -K) shift; knowitall=true;;
1514         -O) shift; override=true;;
1515         -S) shift; silent=true; extractsh=true;;
1516         -D)
1517                 shift
1518                 case "$1" in
1519                 *=)
1520                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1521                         echo "$me: ignoring -D $1" >&2
1522                         ;;
1523                 *=*) echo "$1" | \
1524                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1525                 *) echo "$1='define'" >> optdef.sh;;
1526                 esac
1527                 shift
1528                 ;;
1529         -U)
1530                 shift
1531                 case "$1" in
1532                 *=) echo "$1" >> optdef.sh;;
1533                 *=*)
1534                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1535                         echo "$me: ignoring -U $1" >&2
1536                         ;;
1537                 *) echo "$1='undef'" >> optdef.sh;;
1538                 esac
1539                 shift
1540                 ;;
1541         -A)
1542             shift
1543             xxx=''
1544             yyy="$1"
1545             zzz=''
1546             uuu=undef
1547             case "$yyy" in
1548             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1549                  case "$zzz" in
1550                  *:*) zzz='' ;;
1551                  *)   xxx=append
1552                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1553                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1554                  esac
1555                  ;;
1556             esac
1557             case "$xxx" in
1558             '')  case "$yyy" in
1559                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1560                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1561                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1562                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1563                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1564                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1565                  esac
1566                  ;;       
1567             esac
1568             case "$xxx" in
1569             append)
1570                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1571             clear)
1572                 echo "$yyy=''"                  >> posthint.sh ;;
1573             define)
1574                 case "$zzz" in
1575                 '') zzz=define ;;
1576                 esac
1577                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1578             eval)
1579                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1580             prepend)
1581                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1582             undef)
1583                 case "$zzz" in
1584                 '') zzz="$uuu" ;;
1585                 esac
1586                 echo "$yyy=$zzz"                >> posthint.sh ;;
1587             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1588             esac
1589             shift
1590             ;;
1591         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1592             exit 0;;
1593         --) break;;
1594         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1595         *) break;;
1596         esac
1597 done
1598
1599 case "$error" in
1600 true)
1601         cat >&2 <<EOM
1602 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1603                  [-U symbol] [-U symbol=] [-A command:symbol...]
1604   -d : use defaults for all answers.
1605   -e : go on without questioning past the production of config.sh.
1606   -f : specify an alternate default configuration file.
1607   -h : print this help message and exit (with an error status).
1608   -r : reuse C symbols value if possible (skips costly nm extraction).
1609   -s : silent mode, only echoes questions and essential information.
1610   -D : define symbol to have some value:
1611          -D symbol         symbol gets the value 'define'
1612          -D symbol=value   symbol gets the value 'value'
1613   -E : stop at the end of questions, after having produced config.sh.
1614   -K : do not use unless you know what you are doing.
1615   -O : let -D and -U override definitions from loaded configuration file.
1616   -S : perform variable substitutions on all .SH files (can mix with -f)
1617   -U : undefine symbol:
1618          -U symbol    symbol gets the value 'undef'
1619          -U symbol=   symbol gets completely empty
1620   -A : manipulate symbol after the platform specific hints have been applied:
1621          -A symbol=value                append " "value to symbol
1622          -A append:symbol=value         append value to symbol
1623          -A define:symbol=value         define symbol to have value
1624          -A clear:symbol                define symbol to be ''
1625          -A define:symbol               define symbol to be 'define'
1626          -A eval:symbol=value           define symbol to be eval of value
1627          -A prepend:symbol=value        prepend value to symbol
1628          -A undef:symbol                define symbol to be 'undef'
1629          -A undef:symbol=               define symbol to be ''
1630   -V : print version number and exit (with a zero status).
1631 EOM
1632         exit 1
1633         ;;
1634 esac
1635
1636 : Sanity checks
1637 case "$fastread$alldone" in
1638 yescont|yesexit) ;;
1639 *)
1640         case "$extractsh" in
1641         true) ;;
1642         *)
1643                 if test ! -t 0; then
1644                         echo "Say 'sh Configure', not 'sh <Configure'"
1645                         exit 1
1646                 fi
1647                 ;;
1648         esac
1649         ;;
1650 esac
1651
1652 exec 4>&1
1653 case "$silent" in
1654 true) exec 1>/dev/null;;
1655 esac
1656
1657 : run the defines and the undefines, if any, but leave the file out there...
1658 touch optdef.sh
1659 . ./optdef.sh
1660 : create the posthint manipulation script and leave the file out there...
1661 touch posthint.sh
1662
1663 : set package name
1664 package=perl5
1665 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1666 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1667 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1668 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1669 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1670 esac
1671
1672 : Some greps do not return status, grrr.
1673 echo "grimblepritz" >grimble
1674 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1675         contains=contains
1676 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1677         contains=grep
1678 else
1679         contains=contains
1680 fi
1681 rm -f grimble
1682 : the following should work in any shell
1683 case "$contains" in
1684 contains*)
1685         echo " "
1686         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1687         cat >contains <<'EOSS'
1688 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1689 EOSS
1690 chmod +x contains
1691 esac
1692
1693 : Find the path to the source tree
1694 case "$src" in
1695 '') case "$0" in
1696     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1697          case "$src" in
1698          /*)    ;;
1699          .)     ;;
1700          *)     src=`cd ../$src && pwd` ;;
1701          esac
1702          ;;
1703     *)   src='.';;
1704     esac;;
1705 esac
1706 case "$src" in
1707 '')     src=/
1708         rsrc=/
1709         ;;
1710 /*) rsrc="$src";;
1711 *) rsrc="../$src";;
1712 esac
1713 if test -f $rsrc/Configure && \
1714         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1715 then
1716    : found it, so we are ok.
1717 else
1718         rsrc=''
1719         for src in . .. ../.. ../../.. ../../../..; do
1720                 if test -f ../$src/Configure && \
1721                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1722                 then
1723                         rsrc=../$src
1724                         break
1725                 fi
1726         done
1727 fi
1728 case "$rsrc" in
1729 '')
1730         cat <<EOM >&4
1731
1732 Sorry, I can't seem to locate the source dir for $package.  Please start
1733 Configure with an explicit path -- i.e. /some/path/Configure.
1734
1735 EOM
1736         exit 1
1737         ;;
1738 ../.)   rsrc='..';;
1739 *)
1740         echo " "
1741         echo "Sources for $package found in \"$src\"." >&4
1742         ;;
1743 esac
1744
1745 : script used to extract .SH files with variable substitutions
1746 cat >extract <<'EOS'
1747 PERL_CONFIG_SH=true
1748 echo "Doing variable substitutions on .SH files..."
1749 if test -f MANIFEST; then
1750         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1751 else
1752         echo "(Looking for .SH files under the source directory.)"
1753         set x `(cd "$src"; find . -name "*.SH" -print)`
1754 fi
1755 shift
1756 case $# in
1757 0) set x `(cd "$src"; echo *.SH)`; shift;;
1758 esac
1759 if test ! -f "$src/$1"; then
1760         shift
1761 fi
1762 mkdir_p='
1763 name=$1;
1764 create="";
1765 while test $name; do
1766         if test ! -d "$name"; then
1767                 create="$name $create";
1768                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1769                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1770         else
1771                 name="";
1772         fi;
1773 done;
1774 for file in $create; do
1775         mkdir $file;
1776 done
1777 '
1778 for file in $*; do
1779         case "$src" in
1780         ".")
1781                 case "$file" in
1782                 */*)
1783                         dir=`expr X$file : 'X\(.*\)/'`
1784                         file=`expr X$file : 'X.*/\(.*\)'`
1785                         (cd "$dir" && . ./$file)
1786                         ;;
1787                 *)
1788                         . ./$file
1789                         ;;
1790                 esac
1791                 ;;
1792         *)
1793                 case "$file" in
1794                 */*)
1795                         dir=`expr X$file : 'X\(.*\)/'`
1796                         file=`expr X$file : 'X.*/\(.*\)'`
1797                         (set x $dir; shift; eval $mkdir_p)
1798                         sh <"$src/$dir/$file"
1799                         ;;
1800                 *)
1801                         sh <"$src/$file"
1802                         ;;
1803                 esac
1804                 ;;
1805         esac
1806 done
1807 if test -f "$src/config_h.SH"; then
1808         if test ! -f config.h; then
1809         : oops, they left it out of MANIFEST, probably, so do it anyway.
1810         . "$src/config_h.SH"
1811         fi
1812 fi
1813 EOS
1814
1815 : extract files and exit if asked to do so
1816 case "$extractsh" in
1817 true)
1818         case "$realsilent" in
1819         true) ;;
1820         *) exec 1>&4;;
1821         esac
1822         case "$config_sh" in
1823         '') config_sh='config.sh';;
1824         esac
1825         echo " "
1826         echo "Fetching answers from $config_sh..."
1827         cd ..
1828         . $config_sh
1829         test "$override" && . ./optdef.sh
1830         echo " "
1831         . UU/extract
1832         rm -rf UU
1833         echo "Extraction done."
1834         exit 0
1835         ;;
1836 esac
1837
1838 : Eunice requires " " instead of "", can you believe it
1839 echo " "
1840 : Here we go...
1841 echo "Beginning of configuration questions for $package."
1842
1843 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1844
1845 : first determine how to suppress newline on echo command
1846 echo " "
1847 echo "Checking echo to see how to suppress newlines..."
1848 (echo "hi there\c" ; echo " ") >.echotmp
1849 if $contains c .echotmp >/dev/null 2>&1 ; then
1850         echo "...using -n."
1851         n='-n'
1852         c=''
1853 else
1854         cat <<'EOM'
1855 ...using \c
1856 EOM
1857         n=''
1858         c='\c'
1859 fi
1860 echo $n "The star should be here-->$c"
1861 echo '*'
1862 rm -f .echotmp
1863
1864 : Now test for existence of everything in MANIFEST
1865 echo " "
1866 if test -f "$rsrc/MANIFEST"; then
1867         echo "First let's make sure your kit is complete.  Checking..." >&4
1868         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1869         rm -f missing
1870         tmppwd=`pwd`
1871         for filelist in x??; do
1872                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1873         done
1874         if test -s missing; then
1875                 cat missing >&4
1876                 cat >&4 <<'EOM'
1877
1878 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1879
1880 You have the option of continuing the configuration process, despite the
1881 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1882 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1883 and contact the author (perlbug@perl.org).
1884
1885 EOM
1886                 echo $n "Continue? [n] $c" >&4
1887                 read ans
1888                 case "$ans" in
1889                 y*)
1890                         echo "Continuing..." >&4
1891                         rm -f missing
1892                         ;;
1893                 *)
1894                         echo "ABORTING..." >&4
1895                         kill $$
1896                         ;;
1897                 esac
1898         else
1899                 echo "Looks good..."
1900         fi
1901 else
1902         echo "There is no MANIFEST file.  I hope your kit is complete !"
1903 fi
1904 rm -f missing x??
1905
1906 echo " "
1907 : Find the appropriate value for a newline for tr
1908 if test -n "$DJGPP"; then
1909        trnl='\012'
1910 fi
1911 if test X"$trnl" = X; then
1912         case "`echo foo|tr '\n' x 2>/dev/null`" in
1913         foox) trnl='\n' ;;
1914         esac
1915 fi
1916 if test X"$trnl" = X; then
1917         case "`echo foo|tr '\012' x 2>/dev/null`" in
1918         foox) trnl='\012' ;;
1919         esac
1920 fi
1921 if test X"$trnl" = X; then
1922        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1923        fooxy) trnl='\n\r' ;;
1924        esac
1925 fi
1926 if test X"$trnl" = X; then
1927         cat <<EOM >&2
1928
1929 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1930
1931 EOM
1932         exit 1
1933 fi
1934
1935 : compute the number of columns on the terminal for proper question formatting
1936 case "$COLUMNS" in
1937 '') COLUMNS='80';;
1938 esac
1939
1940 : set up the echo used in my read
1941 myecho="case \"\$xxxm\" in
1942 '') echo $n \"\$rp $c\" >&4;;
1943 *) case \"\$rp\" in
1944         '') echo $n \"[\$xxxm] $c\";;
1945         *)
1946                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1947                         echo \"\$rp\" >&4
1948                         echo $n \"[\$xxxm] $c\" >&4
1949                 else
1950                         echo $n \"\$rp [\$xxxm] $c\" >&4
1951                 fi
1952                 ;;
1953         esac;;
1954 esac"
1955
1956 : now set up to do reads with possible shell escape and default assignment
1957 cat <<EOSC >myread
1958 $startsh
1959 xxxm=\$dflt
1960 $myecho
1961 ans='!'
1962 case "\$fastread" in
1963 yes) case "\$dflt" in
1964         '') ;;
1965         *) ans='';
1966                 case "\$silent-\$rp" in
1967                 true-) ;;
1968                 *) echo " " >&4;;
1969                 esac;;
1970         esac;;
1971 *) case "\$silent" in
1972         true) case "\$rp" in
1973                 '') ans='';;
1974                 esac;;
1975         esac;;
1976 esac
1977 while expr "X\$ans" : "X!" >/dev/null; do
1978         read answ
1979         set x \$xxxm
1980         shift
1981         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1982         case  "\$answ" in
1983         "!")
1984                 sh 1>&4
1985                 echo " "
1986                 $myecho
1987                 ;;
1988         !*)
1989                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1990                 shift
1991                 sh 1>&4 -c "\$*"
1992                 echo " "
1993                 $myecho
1994                 ;;
1995         "\$ans")
1996                 case "\$ans" in
1997                 \\&*)
1998                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1999                         shift
2000                         case "\$1" in
2001                         -d)
2002                                 fastread=yes
2003                                 echo "(OK, I'll run with -d after this question.)" >&4
2004                                 ;;
2005                         -*)
2006                                 echo "*** Sorry, \$1 not supported yet." >&4
2007                                 ;;
2008                         esac
2009                         $myecho
2010                         ans=!
2011                         ;;
2012                 esac;;
2013         *)
2014                 case "\$aok" in
2015                 y)
2016                         echo "*** Substitution done -- please confirm."
2017                         xxxm="\$ans"
2018                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2019                         xxxm="\$ans"
2020                         ans=!
2021                         ;;
2022                 *)
2023                         echo "*** Error -- try again."
2024                         ans=!
2025                         ;;
2026                 esac
2027                 $myecho
2028                 ;;
2029         esac
2030         case "\$ans\$xxxm\$nostick" in
2031         '')
2032                 ans=!
2033                 $myecho
2034                 ;;
2035         esac
2036 done
2037 case "\$ans" in
2038 '') ans="\$xxxm";;
2039 esac
2040 EOSC
2041
2042 : create .config dir to save info across Configure sessions
2043 test -d ../.config || mkdir ../.config
2044 cat >../.config/README <<EOF
2045 This directory created by Configure to save information that should
2046 persist across sessions for $package.
2047
2048 You may safely delete it if you wish.
2049 EOF
2050
2051 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2052 case "$usedevel" in
2053 $define|true|[yY]*) ;;
2054 *) case "$xversion" in
2055    *[13579])
2056         cat >&4 <<EOH
2057 *** WHOA THERE!!! ***
2058
2059     This is an UNSTABLE DEVELOPMENT release.
2060     The version of this $package distribution is $xversion, that is, odd,
2061     (as opposed to even) and that signifies a development release.
2062     If you want a maintenance release, you want an even-numbered version.
2063
2064     Do ***NOT*** install this into production use.
2065     Data corruption and crashes are possible.
2066
2067     It is most seriously suggested that you do not continue any further
2068     unless you want to help in developing and debugging Perl.
2069
2070     If you *still* want to build perl, you can answer 'y' now,
2071     or pass -Dusedevel to Configure.
2072
2073 EOH
2074         rp='Do you really want to continue?'
2075         dflt='n'
2076         . ./myread
2077         case "$ans" in
2078         [yY]) echo >&4 "Okay, continuing."
2079               usedevel="$define" ;;
2080         *) echo >&4 "Okay, bye."
2081            exit 1
2082            ;;
2083         esac
2084         ;;
2085     esac
2086     ;;
2087 esac
2088 case "$usedevel" in
2089 $define|true|[yY]*)
2090         case "$versiononly" in
2091         '') versiononly="$define" ;;
2092         esac
2093         case "$installusrbinperl" in
2094         '') installusrbinperl="$undef" ;;
2095         esac
2096         ;;
2097 esac
2098
2099 : general instructions
2100 needman=true
2101 firsttime=true
2102 user=`(logname) 2>/dev/null`
2103 case "$user" in
2104 '') user=`whoami 2>&1`;;
2105 esac
2106 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2107         firsttime=false
2108         echo " "
2109         rp='Would you like to see the instructions?'
2110         dflt=n
2111         . ./myread
2112         case "$ans" in
2113         [yY]*) ;;
2114         *) needman=false;;
2115         esac
2116 fi
2117 if $needman; then
2118         cat <<EOH
2119
2120 This installation shell script will examine your system and ask you questions
2121 to determine how the perl5 package should be installed. If you get
2122 stuck on a question, you may use a ! shell escape to start a subshell or
2123 execute a command.  Many of the questions will have default answers in square
2124 brackets; typing carriage return will give you the default.
2125
2126 On some of the questions which ask for file or directory names you are allowed
2127 to use the ~name construct to specify the login directory belonging to "name",
2128 even if you don't have a shell which knows about that.  Questions where this is
2129 allowed will be marked "(~name ok)".
2130
2131 EOH
2132         rp=''
2133         dflt='Type carriage return to continue'
2134         . ./myread
2135         cat <<'EOH'
2136
2137 The prompter used in this script allows you to use shell variables and
2138 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2139 in the default answer, as if the default line was a set of arguments given to a
2140 script shell.  This means you may also use $* to repeat the whole default line,
2141 so you do not have to re-type everything to add something to the default.
2142
2143 Everytime there is a substitution, you will have to confirm.  If there is an
2144 error (e.g. an unmatched backtick), the default answer will remain unchanged
2145 and you will be prompted again.
2146
2147 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2148 the questions and use the computed defaults (or the previous answers if there
2149 was already a config.sh file). Type 'Configure -h' for a list of options.
2150 You may also start interactively and then answer '& -d' at any prompt to turn
2151 on the non-interactive behaviour for the remainder of the execution.
2152
2153 EOH
2154         . ./myread
2155         cat <<EOH
2156
2157 Much effort has been expended to ensure that this shell script will run on any
2158 Unix system.  If despite that it blows up on yours, your best bet is to edit
2159 Configure and run it again.  If you can't run Configure for some reason,
2160 you'll have to generate a config.sh file by hand.  Whatever problems you
2161 have, let me (perlbug@perl.org) know how I blew it.
2162
2163 This installation script affects things in two ways:
2164
2165 1) it may do direct variable substitutions on some of the files included
2166    in this kit.
2167 2) it builds a config.h file for inclusion in C programs.  You may edit
2168    any of these files as the need arises after running this script.
2169
2170 If you make a mistake on a question, there is no easy way to back up to it
2171 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2172 files.  Configure will offer to let you do this before it runs the SH files.
2173
2174 EOH
2175         dflt='Type carriage return to continue'
2176         . ./myread
2177         case "$firsttime" in
2178         true) echo $user >>../.config/instruct;;
2179         esac
2180 fi
2181
2182 : find out where common programs are
2183 echo " "
2184 echo "Locating common programs..." >&4
2185 cat <<EOSC >loc
2186 $startsh
2187 case \$# in
2188 0) exit 1;;
2189 esac
2190 thing=\$1
2191 shift
2192 dflt=\$1
2193 shift
2194 for dir in \$*; do
2195         case "\$thing" in
2196         .)
2197         if test -d \$dir/\$thing; then
2198                 echo \$dir
2199                 exit 0
2200         fi
2201         ;;
2202         *)
2203         for thisthing in \$dir/\$thing; do
2204                 : just loop through to pick last item
2205         done
2206         if test -f \$thisthing; then
2207                 echo \$thisthing
2208                 exit 0
2209         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2210                 echo \$thisthing
2211                 exit 0
2212         elif test -f \$dir/\$thing.exe; then
2213                 if test -n "$DJGPP"; then
2214                         echo \$dir/\$thing.exe
2215                 elif test "$eunicefix" != ":"; then
2216                         : on Eunice apparently
2217                         echo \$dir/\$thing
2218                         exit 0
2219                 fi
2220                 exit 0
2221         fi
2222         ;;
2223         esac
2224 done
2225 echo \$dflt
2226 exit 1
2227 EOSC
2228 chmod +x loc
2229 $eunicefix loc
2230 loclist="
2231 awk
2232 cat
2233 chmod
2234 comm
2235 cp
2236 echo
2237 expr
2238 grep
2239 ls
2240 mkdir
2241 rm
2242 sed
2243 sort
2244 touch
2245 tr
2246 uniq
2247 "
2248 trylist="
2249 Mcc
2250 ar
2251 bison
2252 byacc
2253 cpp
2254 csh
2255 date
2256 egrep
2257 gmake
2258 gzip
2259 less
2260 ln
2261 make
2262 more
2263 nm
2264 nroff
2265 pg
2266 test
2267 uname
2268 zip
2269 "
2270 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2271 pth="$pth /lib /usr/lib"
2272 for file in $loclist; do
2273         eval xxx=\$$file
2274         case "$xxx" in
2275         /*|?:[\\/]*)
2276                 if test -f "$xxx"; then
2277                         : ok
2278                 else
2279                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2280                         xxx=`./loc $file $file $pth`
2281                 fi
2282                 ;;
2283         '') xxx=`./loc $file $file $pth`;;
2284         *) xxx=`./loc $xxx $xxx $pth`;;
2285         esac
2286         eval $file=$xxx$_exe
2287         eval _$file=$xxx
2288         case "$xxx" in
2289         /*)
2290                 echo $file is in $xxx.
2291                 ;;
2292         ?:[\\/]*)
2293                 echo $file is in $xxx.
2294                 ;;
2295         *)
2296                 echo "I don't know where '$file' is, and my life depends on it." >&4
2297                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2298                 exit 1
2299                 ;;
2300         esac
2301 done
2302 echo " "
2303 echo "Don't worry if any of the following aren't found..."
2304 say=offhand
2305 for file in $trylist; do
2306         eval xxx=\$$file
2307         case "$xxx" in
2308         /*|?:[\\/]*)
2309                 if test -f "$xxx"; then
2310                         : ok
2311                 else
2312                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2313                         xxx=`./loc $file $file $pth`
2314                 fi
2315                 ;;
2316         '') xxx=`./loc $file $file $pth`;;
2317         *) xxx=`./loc $xxx $xxx $pth`;;
2318         esac
2319         eval $file=$xxx$_exe
2320         eval _$file=$xxx
2321         case "$xxx" in
2322         /*)
2323                 echo $file is in $xxx.
2324                 ;;
2325         ?:[\\/]*)
2326                 echo $file is in $xxx.
2327                 ;;
2328         *)
2329                 echo "I don't see $file out there, $say."
2330                 say=either
2331                 ;;
2332         esac
2333 done
2334 case "$egrep" in
2335 egrep)
2336         echo "Substituting grep for egrep."
2337         egrep=$grep
2338         _egrep=$grep
2339         ;;
2340 esac
2341 case "$ln" in
2342 ln)
2343         echo "Substituting cp for ln."
2344         ln=$cp
2345         _ln=$cp
2346         ;;
2347 esac
2348 case "$make" in
2349 make)   
2350         case "$gmake" in
2351         gmake)
2352         echo "I can't find make or gmake, and my life depends on it." >&4
2353         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2354         exit 1
2355         ;;
2356         esac
2357         ;;
2358 esac    
2359 case "$gmake" in
2360 gmake)  ;;
2361 *)      # We can't have osname yet.
2362         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2363                 # Assume that gmake, if found, is definitely GNU make
2364                 # and prefer it over the system make.
2365                 echo "Substituting gmake for make."
2366                 make=$gmake
2367                 _make=$gmake
2368         fi
2369         ;;
2370 esac
2371 case "$test" in
2372 test)
2373         echo "Hopefully test is built into your sh."
2374         ;;
2375 *)
2376         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2377                 echo "Using the test built into your sh."
2378                 test=test
2379                 _test=test
2380         fi
2381         ;;
2382 esac
2383 case "$echo" in
2384 echo)
2385         echo "Hopefully echo is built into your sh."
2386         ;;
2387 '') ;;
2388 *)
2389         echo " "
2390 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2391         $echo $n "hi there$c" >foo1
2392         echo $n "hi there$c" >foo2
2393         if cmp foo1 foo2 >/dev/null 2>&1; then
2394                 echo "They are compatible.  In fact, they may be identical."
2395         else
2396                 case "$n" in
2397                 '-n') n='' c='\c';;
2398                 *) n='-n' c='';;
2399                 esac
2400                 cat <<FOO
2401 They are not compatible!  You are probably running ksh on a non-USG system.
2402 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2403 have echo built in and we may have to run some Bourne shell scripts.  That
2404 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2405
2406 FOO
2407                 $echo $n "The star should be here-->$c"
2408                 $echo "*"
2409         fi
2410         $rm -f foo1 foo2
2411         ;;
2412 esac
2413
2414 cat <<EOS >trygcc
2415 $startsh
2416 EOS
2417 cat <<'EOSC' >>trygcc
2418 case "$cc" in
2419 '') ;;
2420 *)  $rm -f try try.*
2421     $cat >try.c <<EOM
2422 int main(int argc, char *argv[]) {
2423   return 0;
2424 }
2425 EOM
2426     if $cc -o try $ccflags $ldflags try.c; then
2427        :
2428     else
2429         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2430         despair=yes
2431         trygcc=yes
2432         case "$cc" in
2433         *gcc*) trygcc=no ;;
2434         esac
2435         case "`$cc -v -c try.c 2>&1`" in
2436         *gcc*) trygcc=no ;;
2437         esac
2438         if $test X"$trygcc" = Xyes; then
2439             if gcc -o try -c try.c; then
2440                 echo " "
2441                 echo "You seem to have a working gcc, though." >&4
2442                 rp="Would you like to use it?"
2443                 dflt=y
2444                 if $test -f myread; then
2445                     . ./myread
2446                 else
2447                     if $test -f UU/myread; then
2448                         . ./UU/myread
2449                     else
2450                         echo "Cannot find myread, sorry.  Aborting." >&2
2451                         exit 1
2452                     fi
2453                 fi  
2454                 case "$ans" in
2455                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2456                        if $test -f usethreads.cbu; then
2457                            $cat >&4 <<EOM 
2458
2459 *** However, any setting of the C compiler flags (e.g. for thread support)
2460 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2461 *** (together with e.g. -Dusethreads).
2462
2463 EOM
2464                        fi;;
2465                 esac
2466             fi
2467         fi
2468     fi
2469     $rm -f try try.*
2470     ;;
2471 esac
2472 EOSC
2473
2474 cat <<EOS >checkcc
2475 $startsh
2476 EOS
2477 cat <<'EOSC' >>checkcc
2478 case "$cc" in        
2479 '') ;;
2480 *)  $rm -f try try.*              
2481     $cat >try.c <<EOM
2482 int main(int argc, char *argv[]) {
2483   return 0;
2484 }
2485 EOM
2486     if $cc -o try $ccflags $ldflags try.c; then
2487        :
2488     else
2489         if $test X"$despair" = Xyes; then
2490            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2491         fi
2492         $cat >&4 <<EOM         
2493 You need to find a working C compiler.
2494 Either (purchase and) install the C compiler supplied by your OS vendor,
2495 or for a free C compiler try http://gcc.gnu.org/
2496 I cannot continue any further, aborting.
2497 EOM
2498         exit 1
2499     fi
2500     $rm -f try try.*
2501     ;;
2502 esac
2503 EOSC
2504
2505 : determine whether symbolic links are supported
2506 echo " "
2507 $touch blurfl
2508 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2509         echo "Symbolic links are supported." >&4
2510         lns="$ln -s"
2511 else
2512         echo "Symbolic links are NOT supported." >&4
2513         lns="$ln"
2514 fi
2515 $rm -f blurfl sym
2516
2517 : determine whether symbolic links are supported
2518 echo " "
2519 case "$lns" in
2520 *"ln"*" -s")
2521         echo "Checking how to test for symbolic links..." >&4
2522         $lns blurfl sym
2523         if $test "X$issymlink" = X; then
2524                 case "$newsh" in
2525                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2527                 esac
2528                 if test $? = 0; then
2529                         issymlink="test -h"
2530                 else
2531                         echo "Your builtin 'test -h' may be broken." >&4
2532                         case "$test" in
2533                         /*)     ;;
2534                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2535                                 for p in $pth
2536                                 do
2537                                         if test -f "$p/$test"; then
2538                                                 test="$p/$test"
2539                                                 break
2540                                         fi
2541                                 done
2542                                 ;;
2543                         esac
2544                         case "$test" in
2545                         /*)
2546                                 echo "Trying external '$test -h'." >&4
2547                                 issymlink="$test -h"
2548                                 if $test ! -h sym >/dev/null 2>&1; then
2549                                         echo "External '$test -h' is broken, too." >&4
2550                                         issymlink=''
2551                                 fi
2552                                 ;;
2553                         *)      issymlink='' ;;
2554                         esac
2555                 fi              
2556         fi
2557         if $test "X$issymlink" = X; then
2558                 if $test -L sym 2>/dev/null; then
2559                         issymlink="$test -L"
2560                         echo "The builtin '$test -L' worked." >&4
2561                 fi
2562         fi
2563         if $test "X$issymlink" != X; then
2564                 echo "You can test for symbolic links with '$issymlink'." >&4
2565         else
2566                 echo "I do not know how you can test for symbolic links." >&4
2567         fi
2568         $rm -f blurfl sym
2569         ;;
2570 *)      echo "No symbolic links, so not testing for their testing..." >&4
2571         ;;
2572 esac
2573 echo " "
2574
2575
2576 case "$mksymlinks" in
2577 $define|true|[yY]*)
2578         case "$src" in
2579         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2580                 exit 1
2581                 ;;
2582         *)      case "$lns:$issymlink" in
2583                 *"ln"*" -s:"*"test -"?)
2584                         echo "Creating the symbolic links..." >&4
2585                         echo "(First creating the subdirectories...)" >&4
2586                         cd ..
2587                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2588                                 read directory
2589                                 test -z "$directory" && break
2590                                 mkdir -p $directory
2591                         done
2592                         # Sanity check 1.
2593                         if test ! -d t/base; then
2594                                 echo "Failed to create the subdirectories.  Aborting." >&4
2595                                 exit 1
2596                         fi
2597                         echo "(Then creating the symlinks...)" >&4
2598                         awk '{print $1}' $src/MANIFEST | while true; do
2599                                 read filename
2600                                 test -z "$filename" && break
2601                                 if test -f $filename; then
2602                                         if $issymlink $filename; then
2603                                                 rm -f $filename
2604                                         fi
2605                                 fi
2606                                 if test -f $filename; then
2607                                         echo "$filename already exists, not symlinking."
2608                                 else
2609                                         ln -s $src/$filename $filename
2610                                 fi
2611                         done
2612                         # Sanity check 2.
2613                         if test ! -f t/base/lex.t; then
2614                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2615                                 exit 1
2616                         fi
2617                         cd UU
2618                         ;;
2619                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2620                         ;;
2621                 esac
2622                 ;;
2623         esac
2624         ;;
2625 esac
2626
2627
2628 case "$usecrosscompile" in
2629 $define|true|[yY]*)
2630         $echo "Cross-compiling..."
2631         croak=''
2632         case "$cc" in
2633         *-*-gcc) # A cross-compiling gcc, probably.
2634             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2635             ar=$targetarch-ar
2636             # leave out ld, choosing it is more complex
2637             nm=$targetarch-nm
2638             ranlib=$targetarch-ranlib
2639             $echo 'extern int foo;' > try.c
2640             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2641             shift
2642             if $test $# -gt 0; then
2643                 incpth="$incpth $*"
2644                 incpth="`$echo $incpth|$sed 's/^ //'`"
2645                 echo "Guessing incpth '$incpth'." >&4
2646                 for i in $*; do
2647                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2648                     if $test -d $j; then
2649                         libpth="$libpth $j"
2650                     fi
2651                 done   
2652                 libpth="`$echo $libpth|$sed 's/^ //'`"
2653                 echo "Guessing libpth '$libpth'." >&4
2654             fi
2655             $rm -f try.c
2656             ;;
2657         esac
2658         case "$targetarch" in
2659         '') echo "Targetarch not defined." >&4; croak=y ;;
2660         *)  echo "Using targetarch $targetarch." >&4 ;;
2661         esac
2662         case "$incpth" in
2663         '') echo "Incpth not defined." >&4; croak=y ;;
2664         *)  echo "Using incpth '$incpth'." >&4 ;;
2665         esac
2666         case "$libpth" in
2667         '') echo "Libpth not defined." >&4; croak=y ;;
2668         *)  echo "Using libpth '$libpth'." >&4 ;;
2669         esac
2670         case "$usrinc" in
2671         '') for i in $incpth; do
2672                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2673                     usrinc=$i
2674                     echo "Guessing usrinc $usrinc." >&4
2675                     break
2676                 fi
2677             done
2678             case "$usrinc" in
2679             '') echo "Usrinc not defined." >&4; croak=y ;;
2680             esac
2681             ;;
2682         *)  echo "Using usrinc $usrinc." >&4 ;;
2683         esac
2684         case "$targethost" in
2685         '') echo "Targethost not defined." >&4; croak=y ;;
2686         *)  echo "Using targethost $targethost." >&4
2687         esac
2688         locincpth=' '
2689         loclibpth=' '
2690         case "$croak" in
2691         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2692         esac
2693         case "$src" in
2694         /*) run=$src/Cross/run
2695             targetmkdir=$src/Cross/mkdir
2696             to=$src/Cross/to
2697             from=$src/Cross/from
2698             ;;
2699         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2700             run=$pwd/Cross/run
2701             targetmkdir=$pwd/Cross/mkdir
2702             to=$pwd/Cross/to
2703             from=$pwd/Cross/from
2704             ;;
2705         esac
2706         case "$targetrun" in
2707         '') targetrun=ssh ;;
2708         esac
2709         case "$targetto" in
2710         '') targetto=scp ;;
2711         esac
2712         case "$targetfrom" in
2713         '') targetfrom=scp ;;
2714         esac
2715         run=$run-$targetrun
2716         to=$to-$targetto
2717         from=$from-$targetfrom
2718         case "$targetdir" in
2719         '')  targetdir=/tmp
2720              echo "Guessing targetdir $targetdir." >&4
2721              ;;
2722         esac
2723         case "$targetuser" in
2724         '')  targetuser=root
2725              echo "Guessing targetuser $targetuser." >&4
2726              ;;
2727         esac
2728         case "$targetfrom" in
2729         scp)    q=-q ;;
2730         *)      q='' ;;
2731         esac
2732         case "$targetrun" in
2733         ssh|rsh)
2734             cat >$run <<EOF
2735 #!/bin/sh
2736 case "\$1" in
2737 -cwd)
2738   shift
2739   cwd=\$1
2740   shift
2741   ;;
2742 esac
2743 case "\$cwd" in
2744 '') cwd=$targetdir ;;
2745 esac
2746 exe=\$1
2747 shift
2748 if $test ! -f \$exe.xok; then
2749   $to \$exe
2750   $touch \$exe.xok
2751 fi
2752 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2753 EOF
2754             ;;
2755         *)  echo "Unknown targetrun '$targetrun'" >&4
2756             exit 1
2757             ;;
2758         esac
2759         case "$targetmkdir" in
2760         */Cross/mkdir)
2761             cat >$targetmkdir <<EOF
2762 #!/bin/sh
2763 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2764 EOF
2765             $chmod a+rx $targetmkdir
2766             ;;
2767         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2768             exit 1
2769             ;;
2770         esac
2771         case "$targetto" in
2772         scp|rcp)
2773             cat >$to <<EOF
2774 #!/bin/sh
2775 for f in \$@
2776 do
2777   case "\$f" in
2778   /*)
2779     $targetmkdir \`dirname \$f\`
2780     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2781     ;;
2782   *)
2783     $targetmkdir $targetdir/\`dirname \$f\`
2784     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2785     ;;
2786   esac
2787 done
2788 exit 0
2789 EOF
2790             ;;
2791         cp) cat >$to <<EOF
2792 #!/bin/sh
2793 for f in \$@
2794 do
2795   case "\$f" in
2796   /*)
2797     $mkdir -p $targetdir/\`dirname \$f\`
2798     $cp \$f $targetdir/\$f || exit 1
2799     ;;
2800   *)
2801     $targetmkdir $targetdir/\`dirname \$f\`
2802     $cp \$f $targetdir/\$f || exit 1
2803     ;;
2804   esac
2805 done
2806 exit 0
2807 EOF
2808             ;;
2809         *)  echo "Unknown targetto '$targetto'" >&4
2810             exit 1
2811             ;;
2812         esac
2813         case "$targetfrom" in
2814         scp|rcp)
2815           cat >$from <<EOF
2816 #!/bin/sh
2817 for f in \$@
2818 do
2819   $rm -f \$f
2820   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2821 done
2822 exit 0
2823 EOF
2824             ;;
2825         cp) cat >$from <<EOF
2826 #!/bin/sh
2827 for f in \$@
2828 do
2829   $rm -f \$f
2830   cp $targetdir/\$f . || exit 1
2831 done
2832 exit 0
2833 EOF
2834             ;;
2835         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2836             exit 1
2837             ;;
2838         esac
2839         if $test ! -f $run; then
2840             echo "Target 'run' script '$run' not found." >&4
2841         else
2842             $chmod a+rx $run
2843         fi
2844         if $test ! -f $to; then
2845             echo "Target 'to' script '$to' not found." >&4
2846         else
2847             $chmod a+rx $to
2848         fi
2849         if $test ! -f $from; then
2850             echo "Target 'from' script '$from' not found." >&4
2851         else
2852             $chmod a+rx $from
2853         fi
2854         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2855             exit 1
2856         fi
2857         cat >&4 <<EOF
2858 Using '$run' for remote execution,
2859 and '$from' and '$to'
2860 for remote file transfer.
2861 EOF
2862         ;;
2863 *)      run=''
2864         to=:
2865         from=:
2866         usecrosscompile='undef'
2867         targetarch=''
2868         ;;
2869 esac
2870
2871 : see whether [:lower:] and [:upper:] are supported character classes
2872 echo " "
2873 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2874 ABYZ)
2875         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2876         up='[:upper:]'
2877         low='[:lower:]'
2878         ;;
2879 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2880         # (0xc9 and 0xd1), therefore that is a nice testing point.
2881         if test "X$up" = X -o "X$low" = X; then
2882             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2883             ij) up='[A-Z]'
2884                 low='[a-z]'
2885                 ;;
2886             esac
2887         fi
2888         if test "X$up" = X -o "X$low" = X; then
2889             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2890             ij) up='A-Z'
2891                 low='a-z'
2892                 ;;
2893             esac
2894         fi
2895         if test "X$up" = X -o "X$low" = X; then
2896             case "`echo IJ | od -x 2>/dev/null`" in
2897             *C9D1*|*c9d1*)
2898                 echo "Hey, this might be EBCDIC." >&4
2899                 if test "X$up" = X -o "X$low" = X; then
2900                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2901                     ij) up='[A-IJ-RS-Z]'
2902                         low='[a-ij-rs-z]'
2903                         ;;
2904                     esac
2905                 fi
2906                 if test "X$up" = X -o "X$low" = X; then
2907                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2908                     ij) up='A-IJ-RS-Z'
2909                         low='a-ij-rs-z'
2910                         ;;
2911                     esac
2912                 fi
2913                 ;;
2914             esac
2915         fi
2916 esac
2917 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2918 ij)
2919     echo "Using $up and $low to convert case." >&4
2920     ;;
2921 *)
2922     echo "I don't know how to translate letters from upper to lower case." >&4
2923     echo "Your tr is not acting any way I know of." >&4
2924     exit 1
2925     ;;
2926 esac
2927 : set up the translation script tr, must be called with ./tr of course
2928 cat >tr <<EOSC
2929 $startsh
2930 case "\$1\$2" in
2931 '[A-Z][a-z]') exec $tr '$up' '$low';;
2932 '[a-z][A-Z]') exec $tr '$low' '$up';;
2933 esac
2934 exec $tr "\$@"
2935 EOSC
2936 chmod +x tr
2937 $eunicefix tr
2938
2939 : Try to determine whether config.sh was made on this system
2940 case "$config_sh" in
2941 '')
2942 myuname=`$uname -a 2>/dev/null`
2943 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2944 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2945 # because the A-Z/a-z are not consecutive.
2946 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2947         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2948 newmyuname="$myuname"
2949 dflt=n
2950 case "$knowitall" in
2951 '')
2952         if test -f ../config.sh; then
2953                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2954                         eval "`grep myuname= ../config.sh`"
2955                 fi
2956                 if test "X$myuname" = "X$newmyuname"; then
2957                         dflt=y
2958                 fi
2959         fi
2960         ;;
2961 *) dflt=y;;
2962 esac
2963
2964 : Get old answers from old config file if Configure was run on the
2965 : same system, otherwise use the hints.
2966 hint=default
2967 cd ..
2968 if test -f config.sh; then
2969         echo " "
2970         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2971         . UU/myread
2972         case "$ans" in
2973         n*|N*) echo "OK, I'll ignore it."
2974                 mv config.sh config.sh.old
2975                 myuname="$newmyuname"
2976                 ;;
2977         *)  echo "Fetching default answers from your old config.sh file..." >&4
2978                 tmp_n="$n"
2979                 tmp_c="$c"
2980                 tmp_sh="$sh"
2981                 . ./config.sh
2982                 cp config.sh UU
2983                 n="$tmp_n"
2984                 c="$tmp_c"
2985                 : Older versions did not always set $sh.  Catch re-use of such
2986                 : an old config.sh.
2987                 case "$sh" in
2988                 '') sh="$tmp_sh" ;;
2989                 esac
2990                 hint=previous
2991                 ;;
2992         esac
2993 fi
2994 . ./UU/checkcc
2995 if test ! -f config.sh; then
2996         $cat <<EOM
2997
2998 First time through, eh?  I have some defaults handy for some systems
2999 that need some extra help getting the Configure answers right:
3000
3001 EOM
3002         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3003         dflt=''
3004         : Half the following guesses are probably wrong... If you have better
3005         : tests or hints, please send them to perlbug@perl.org
3006         : The metaconfig authors would also appreciate a copy...
3007         $test -f /irix && osname=irix
3008         $test -f /xenix && osname=sco_xenix
3009         $test -f /dynix && osname=dynix
3010         $test -f /dnix && osname=dnix
3011         $test -f /lynx.os && osname=lynxos
3012         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3013         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3015         $test -f /bin/mips && /bin/mips && osname=mips
3016         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3017                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3018         $test -d /usr/apollo/bin && osname=apollo
3019         $test -f /etc/saf/_sactab && osname=svr4
3020         $test -d /usr/include/minix && osname=minix
3021         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3022         if $test -d /MachTen -o -d /MachTen_Folder; then
3023                 osname=machten
3024                 if $test -x /sbin/version; then
3025                         osvers=`/sbin/version | $awk '{print $2}' |
3026                         $sed -e 's/[A-Za-z]$//'`
3027                 elif $test -x /usr/etc/version; then
3028                         osvers=`/usr/etc/version | $awk '{print $2}' |
3029                         $sed -e 's/[A-Za-z]$//'`
3030                 else
3031                         osvers="$2.$3"
3032                 fi
3033         fi
3034
3035         $test -f /sys/posix.dll &&
3036                 $test -f /usr/bin/what &&
3037                 set X `/usr/bin/what /sys/posix.dll` &&
3038                 $test "$3" = UWIN &&
3039                 osname=uwin &&
3040                 osvers="$5"
3041
3042         if $test -f $uname; then
3043                 set X $myuname
3044                 shift
3045
3046                 case "$5" in
3047                 fps*) osname=fps ;;
3048                 mips*)
3049                         case "$4" in
3050                         umips) osname=umips ;;
3051                         *) osname=mips ;;
3052                         esac;;
3053                 [23]100) osname=mips ;;
3054                 next*) osname=next ;;
3055                 i386*)
3056                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3057                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3058                                 osname='sco'
3059                                 osvers=$tmp
3060                         elif $test -f /etc/kconfig; then
3061                                 osname=isc
3062                                 if test "$lns" = "$ln -s"; then
3063                                         osvers=4
3064                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3065                                         osvers=3
3066                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3067                                         osvers=2
3068                                 fi
3069                         fi
3070                         tmp=''
3071                         ;;
3072                 pc*)
3073                         if test -n "$DJGPP"; then
3074                                 osname=dos
3075                                 osvers=djgpp
3076                         fi
3077                         ;;
3078                 esac
3079
3080                 case "$1" in
3081                 aix) osname=aix
3082                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3083                         case "$tmp" in
3084                         'not found') osvers="$4"."$3" ;;
3085                         '<3240'|'<>3240') osvers=3.2.0 ;;
3086                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3087                         '=3250'|'>3250') osvers=3.2.5 ;;
3088                         *) osvers=$tmp;;
3089                         esac
3090                         ;;
3091                 bsd386) osname=bsd386
3092                         osvers=`$uname -r`
3093                         ;;
3094                 cygwin*) osname=cygwin
3095                         osvers="$3"
3096                         ;;
3097                 *dc.osx) osname=dcosx
3098                         osvers="$3"
3099                         ;;
3100                 dnix) osname=dnix
3101                         osvers="$3"
3102                         ;;
3103                 domainos) osname=apollo
3104                         osvers="$3"
3105                         ;;
3106                 dgux) osname=dgux 
3107                         osvers="$3"
3108                         ;;
3109                 dynixptx*) osname=dynixptx
3110                         osvers=`echo "$4"|sed 's/^v//'`
3111                         ;;
3112                 freebsd) osname=freebsd 
3113                         osvers="$3" ;;
3114                 genix) osname=genix ;;
3115                 hp*) osname=hpux 
3116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3117                         ;;
3118                 irix*) osname=irix
3119                         case "$3" in
3120                         4*) osvers=4 ;;
3121                         5*) osvers=5 ;;
3122                         *)      osvers="$3" ;;
3123                         esac
3124                         ;;
3125                 linux) osname=linux
3126                         case "$3" in
3127                         *)      osvers="$3" ;;
3128                         esac
3129                         ;;
3130                 MiNT) osname=mint
3131                         ;;
3132                 netbsd*) osname=netbsd
3133                         osvers="$3"
3134                         ;;
3135                 news-os) osvers="$3"
3136                         case "$3" in
3137                         4*) osname=newsos4 ;;
3138                         *) osname=newsos ;;
3139                         esac
3140                         ;;
3141                 next*) osname=next ;;
3142                 nonstop-ux) osname=nonstopux ;;
3143                 openbsd) osname=openbsd
3144                         osvers="$3"
3145                         ;;
3146                 os2)    osname=os2
3147                         osvers="$4"
3148                         ;;
3149                 POSIX-BC | posix-bc ) osname=posix-bc
3150                         osvers="$3"
3151                         ;;
3152                 powerux | power_ux | powermax_os | powermaxos | \
3153                 powerunix | power_unix) osname=powerux
3154                         osvers="$3"
3155                         ;;
3156                 qnx) osname=qnx
3157                         osvers="$4"
3158                         ;;
3159                 solaris) osname=solaris
3160                         case "$3" in
3161                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3162                         *)      osvers="$3" ;;
3163                         esac
3164                         ;;
3165                 sunos) osname=sunos
3166                         case "$3" in
3167                         5*) osname=solaris
3168                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3169                         *)      osvers="$3" ;;
3170                         esac
3171                         ;;
3172                 titanos) osname=titanos
3173                         case "$3" in
3174                         1*) osvers=1 ;;
3175                         2*) osvers=2 ;;
3176                         3*) osvers=3 ;;
3177                         4*) osvers=4 ;;
3178                         *)      osvers="$3" ;;
3179                         esac
3180                         ;;
3181                 ultrix) osname=ultrix
3182                         osvers="$3"
3183                         ;;
3184                 osf1|mls+)      case "$5" in
3185                                 alpha)
3186                                         osname=dec_osf
3187                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3188                                         case "$osvers" in
3189                                         [1-9].[0-9]*) ;;
3190                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3191                                         esac
3192                                         ;;
3193                         hp*)    osname=hp_osf1  ;;
3194                         mips)   osname=mips_osf1 ;;
3195                         esac
3196                         ;;
3197                 # UnixWare 7.1.2 is known as Open UNIX 8
3198                 openunix|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 if $test -f archname.cbu; then
5696         echo "Your platform has some specific hints for architecture name, using them..."
5697         . ./archname.cbu
5698 fi
5699
5700 : determine root of directory hierarchy where package will be installed.
5701 case "$prefix" in
5702 '')
5703         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5704         ;;
5705 *?/)
5706         dflt=`echo "$prefix" | sed 's/.$//'`
5707         ;;
5708 *)
5709         dflt="$prefix"
5710         ;;
5711 esac
5712 $cat <<EOM
5713
5714 By default, $package will be installed in $dflt/bin, manual pages
5715 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5716 installation directories. Typically this is something like /usr/local.
5717 If you wish to have binaries under /usr/bin but other parts of the
5718 installation under /usr/local, that's ok: you will be prompted
5719 separately for each of the installation directories, the prefix being
5720 only used to set the defaults.
5721
5722 EOM
5723 fn=d~
5724 rp='Installation prefix to use?'
5725 . ./getfile
5726 oldprefix=''
5727 case "$prefix" in
5728 '') ;;
5729 *)
5730         case "$ans" in
5731         "$prefix") ;;
5732         *) oldprefix="$prefix";;
5733         esac
5734         ;;
5735 esac
5736 prefix="$ans"
5737 prefixexp="$ansexp"
5738
5739 case "$afsroot" in
5740 '')     afsroot=/afs ;;
5741 *)      afsroot=$afsroot ;;
5742 esac
5743
5744 : is AFS running?
5745 echo " "
5746 case "$afs" in
5747 $define|true)   afs=true ;;
5748 $undef|false)   afs=false ;;
5749 *)      if test -d $afsroot; then
5750                 afs=true
5751         else
5752                 afs=false
5753         fi
5754         ;;
5755 esac
5756 if $afs; then
5757         echo "AFS may be running... I'll be extra cautious then..." >&4
5758 else
5759         echo "AFS does not seem to be running..." >&4
5760 fi
5761
5762 : determine installation prefix for where package is to be installed.
5763 if $afs; then 
5764 $cat <<EOM
5765
5766 Since you are running AFS, I need to distinguish the directory in which
5767 files will reside from the directory in which they are installed (and from
5768 which they are presumably copied to the former directory by occult means).
5769
5770 EOM
5771         case "$installprefix" in
5772         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5773         *) dflt="$installprefix";;
5774         esac
5775 else
5776 $cat <<EOM
5777
5778 In some special cases, particularly when building $package for distribution,
5779 it is convenient to distinguish the directory in which files should be
5780 installed from the directory ($prefix) in which they will
5781 eventually reside.  For most users, these two directories are the same.
5782
5783 EOM
5784         case "$installprefix" in
5785         '') dflt=$prefix ;;
5786         *) dflt=$installprefix;;
5787         esac
5788 fi
5789 fn=d~
5790 rp='What installation prefix should I use for installing files?'
5791 . ./getfile
5792 installprefix="$ans"
5793 installprefixexp="$ansexp"
5794
5795 : set the prefixit variable, to compute a suitable default value
5796 prefixit='case "$3" in
5797 ""|none)
5798         case "$oldprefix" in
5799         "") eval "$1=\"\$$2\"";;
5800         *)
5801                 case "$3" in
5802                 "") eval "$1=";;
5803                 none)
5804                         eval "tp=\"\$$2\"";
5805                         case "$tp" in
5806                         ""|" ") eval "$1=\"\$$2\"";;
5807                         *) eval "$1=";;
5808                         esac;;
5809                 esac;;
5810         esac;;
5811 *)
5812         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5813         case "$tp" in
5814         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5815         /*-$oldprefix/*|\~*-$oldprefix/*)
5816                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5817         *) eval "$1=\"\$$2\"";;
5818         esac;;
5819 esac'
5820
5821 : get the patchlevel
5822 echo " "
5823 echo "Getting the current patchlevel..." >&4
5824 if $test -r $rsrc/patchlevel.h;then
5825         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5826         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5827         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5828         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5829         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5830         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5831        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5832 else
5833         revision=0
5834         patchlevel=0
5835         subversion=0
5836         api_revision=0
5837         api_version=0
5838         api_subversion=0
5839         perl_patchlevel=0
5840         $echo "(You do not have patchlevel.h.  Eek.)"
5841 fi
5842 if $test -r $rsrc/.patch ; then  
5843         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5844                 perl_patchlevel=`cat $rsrc/.patch`
5845         fi
5846 fi
5847 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5848 version_patchlevel_string="version $patchlevel subversion $subversion"
5849 case "$perl_patchlevel" in
5850 0|'') ;;
5851 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5852 esac
5853
5854 $echo "(You have $package $version_patchlevel_string.)"
5855
5856 case "$osname" in
5857 dos|vms)
5858         : XXX Should be a Configure test for double-dots in filenames.
5859         version=`echo $revision $patchlevel $subversion | \
5860                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5861         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5862                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5863         ;;
5864 *)
5865         version=`echo $revision $patchlevel $subversion | \
5866                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5867         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5868                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5869         ;;
5870 esac
5871 : Special case the 5.005_xx maintenance series, which used 5.005
5872 : without any subversion label as a subdirectory in $sitelib
5873 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5874         api_versionstring='5.005'
5875 fi
5876
5877 : determine installation style
5878 : For now, try to deduce it from prefix unless it is already set.
5879 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5880 case "$installstyle" in
5881 '')     case "$prefix" in
5882                 *perl*) dflt='lib';;
5883                 *) dflt='lib/perl5' ;;
5884         esac
5885         ;;
5886 *)      dflt="$installstyle" ;;
5887 esac
5888 : Probably not worth prompting for this since we prompt for all
5889 : the directories individually, and the prompt would be too long and
5890 : confusing anyway.
5891 installstyle=$dflt
5892
5893 : determine where private library files go
5894 : Usual default is /usr/local/lib/perl5/$version.
5895 : Also allow things like /opt/perl/lib/$version, since 
5896 : /opt/perl/lib/perl5... would be redundant.
5897 : The default "style" setting is made in installstyle.U
5898 case "$installstyle" in
5899 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5900 *)       set dflt privlib lib/$version ;;
5901 esac
5902 eval $prefixit
5903 $cat <<EOM
5904
5905 There are some auxiliary files for $package that need to be put into a
5906 private library directory that is accessible by everyone.
5907
5908 EOM
5909 fn=d~+
5910 rp='Pathname where the private library files will reside?'
5911 . ./getfile
5912 privlib="$ans"
5913 privlibexp="$ansexp"
5914 : Change installation prefix, if necessary.
5915 if $test X"$prefix" != X"$installprefix"; then
5916         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5917 else
5918         installprivlib="$privlibexp"
5919 fi
5920
5921 : set the prefixup variable, to restore leading tilda escape
5922 prefixup='case "$prefixexp" in
5923 "$prefix") ;;
5924 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5925 esac'
5926
5927 : determine where public architecture dependent libraries go
5928 set archlib archlib
5929 eval $prefixit
5930 : privlib default is /usr/local/lib/$package/$version
5931 : archlib default is /usr/local/lib/$package/$version/$archname
5932 : privlib may have an optional trailing /share.
5933 tdflt=`echo $privlib | $sed 's,/share$,,'`
5934 tdflt=$tdflt/$archname
5935 case "$archlib" in
5936 '')     dflt=$tdflt
5937         ;;
5938 *)      dflt="$archlib"
5939     ;;
5940 esac
5941 $cat <<EOM
5942
5943 $spackage contains architecture-dependent library files.  If you are
5944 sharing libraries in a heterogeneous environment, you might store
5945 these files in a separate location.  Otherwise, you can just include
5946 them with the rest of the public library files.
5947
5948 EOM
5949 fn=d+~
5950 rp='Where do you want to put the public architecture-dependent libraries?'
5951 . ./getfile
5952 archlib="$ans"
5953 archlibexp="$ansexp"
5954 if $test X"$archlib" = X"$privlib"; then
5955         d_archlib="$undef"
5956 else
5957         d_archlib="$define"
5958 fi
5959 : Change installation prefix, if necessary.
5960 if $test X"$prefix" != X"$installprefix"; then
5961         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5962 else
5963         installarchlib="$archlibexp"
5964 fi
5965
5966 : see if setuid scripts can be secure
5967 $cat <<EOM
5968
5969 Some kernels have a bug that prevents setuid #! scripts from being
5970 secure.  Some sites have disabled setuid #! scripts because of this.
5971
5972 First let's decide if your kernel supports secure setuid #! scripts.
5973 (If setuid #! scripts would be secure but have been disabled anyway,
5974 don't say that they are secure if asked.)
5975
5976 EOM
5977
5978 val="$undef"
5979 if $test -d /dev/fd; then
5980         echo "#!$ls" >reflect
5981         chmod +x,u+s reflect
5982         ./reflect >flect 2>&1
5983         if $contains "/dev/fd" flect >/dev/null; then
5984                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5985                 val="$define"
5986         else
5987                 $cat <<EOM
5988 If you are not sure if they are secure, I can check but I'll need a
5989 username and password different from the one you are using right now.
5990 If you don't have such a username or don't want me to test, simply
5991 enter 'none'.
5992
5993 EOM
5994                 rp='Other username to test security of setuid scripts with?'
5995                 dflt='none'
5996                 . ./myread
5997                 case "$ans" in
5998                 n|none)
5999                         case "$d_suidsafe" in
6000                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6001                                 dflt=n;;
6002                         "$undef")
6003                                 echo "Well, the $hint value is *not* secure." >&4
6004                                 dflt=n;;
6005                         *)      echo "Well, the $hint value *is* secure." >&4
6006                                 dflt=y;;
6007                         esac
6008                         ;;
6009                 *)
6010                         $rm -f reflect flect
6011                         echo "#!$ls" >reflect
6012                         chmod +x,u+s reflect
6013                         echo >flect
6014                         chmod a+w flect
6015                         echo '"su" will (probably) prompt you for '"$ans's password."
6016                         su $ans -c './reflect >flect'
6017                         if $contains "/dev/fd" flect >/dev/null; then
6018                                 echo "Okay, it looks like setuid scripts are secure." >&4
6019                                 dflt=y
6020                         else
6021                                 echo "I don't think setuid scripts are secure." >&4
6022                                 dflt=n
6023                         fi
6024                         ;;
6025                 esac
6026                 rp='Does your kernel have *secure* setuid scripts?'
6027                 . ./myread
6028                 case "$ans" in
6029                 [yY]*)  val="$define";;
6030                 *)      val="$undef";;
6031                 esac
6032         fi
6033 else
6034         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6035         echo "(That's for file descriptors, not floppy disks.)"
6036         val="$undef"
6037 fi
6038 set d_suidsafe
6039 eval $setvar
6040
6041 $rm -f reflect flect
6042
6043 : now see if they want to do setuid emulation
6044 echo " "
6045 val="$undef"
6046 case "$d_suidsafe" in
6047 "$define")
6048         val="$undef"
6049         echo "No need to emulate SUID scripts since they are secure here." >&4
6050         ;;
6051 *)
6052         $cat <<EOM
6053 Some systems have disabled setuid scripts, especially systems where
6054 setuid scripts cannot be secure.  On systems where setuid scripts have
6055 been disabled, the setuid/setgid bits on scripts are currently
6056 useless.  It is possible for $package to detect those bits and emulate
6057 setuid/setgid in a secure fashion.  This emulation will only work if
6058 setuid scripts have been disabled in your kernel.
6059
6060 EOM
6061         case "$d_dosuid" in
6062         "$define") dflt=y ;;
6063         *) dflt=n ;;
6064         esac
6065         rp="Do you want to do setuid/setgid emulation?"
6066         . ./myread
6067         case "$ans" in
6068         [yY]*)  val="$define";;
6069         *)      val="$undef";;
6070         esac
6071         ;;
6072 esac
6073 set d_dosuid
6074 eval $setvar
6075
6076 : see if this is a malloc.h system
6077 : we want a real compile instead of Inhdr because some systems have a
6078 : malloc.h that just gives a compile error saying to use stdlib.h instead
6079 echo " "
6080 $cat >try.c <<EOCP
6081 #include <stdlib.h>
6082 #include <malloc.h>
6083 int main () { return 0; }
6084 EOCP
6085 set try
6086 if eval $compile; then
6087     echo "<malloc.h> found." >&4
6088     val="$define"
6089 else
6090     echo "<malloc.h> NOT found." >&4
6091     val="$undef"
6092 fi
6093 $rm -f try.c try
6094 set i_malloc
6095 eval $setvar
6096
6097 : check for void type
6098 echo " "
6099 echo "Checking to see how well your C compiler groks the void type..." >&4
6100 case "$voidflags" in
6101 '')
6102         $cat >try.c <<EOCP
6103 #$i_stdlib I_STDLIB
6104 #ifdef I_STDLIB
6105 #include <stdlib.h>
6106 #endif
6107 #if TRY & 1
6108 void sub() {
6109 #else
6110 sub() {
6111 #endif
6112         extern void moo();      /* function returning void */
6113         void (*goo)();          /* ptr to func returning void */
6114 #if TRY & 8
6115         void *hue;              /* generic ptr */
6116 #endif
6117 #if TRY & 2
6118         void (*foo[10])();
6119 #endif
6120
6121 #if TRY & 4
6122         if(goo == moo) {
6123                 exit(0);
6124         }
6125 #endif
6126         exit(0);
6127 }
6128 int main() { sub(); }
6129 EOCP
6130         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6131                 voidflags=$defvoidused
6132         echo "Good.  It appears to support void to the level $package wants.">&4
6133                 if $contains warning .out >/dev/null 2>&1; then
6134                         echo "However, you might get some warnings that look like this:"
6135                         $cat .out
6136                 fi
6137         else
6138 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6139                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6140                         echo "It supports 1..."
6141                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6142                                 echo "It also supports 2..."
6143                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6144                                         voidflags=7
6145                                         echo "And it supports 4 but not 8 definitely."
6146                                 else
6147                                         echo "It doesn't support 4..."
6148                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6149                                                 voidflags=11
6150                                                 echo "But it supports 8."
6151                                         else
6152                                                 voidflags=3
6153                                                 echo "Neither does it support 8."
6154                                         fi
6155                                 fi
6156                         else
6157                                 echo "It does not support 2..."
6158                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6159                                         voidflags=13
6160                                         echo "But it supports 4 and 8."
6161                                 else
6162                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6163                                                 voidflags=5
6164                                                 echo "And it supports 4 but has not heard about 8."
6165                                         else
6166                                                 echo "However it supports 8 but not 4."
6167                                         fi
6168                                 fi
6169                         fi
6170                 else
6171                         echo "There is no support at all for void."
6172                         voidflags=0
6173                 fi
6174         fi
6175 esac
6176 case "$voidflags" in
6177 "$defvoidused") ;;
6178 *)      $cat >&4 <<'EOM'
6179   Support flag bits are:
6180     1: basic void declarations.
6181     2: arrays of pointers to functions returning void.
6182     4: operations between pointers to and addresses of void functions.
6183     8: generic void pointers.
6184 EOM
6185         dflt="$voidflags";
6186         rp="Your void support flags add up to what?"
6187         . ./myread
6188         voidflags="$ans"
6189         ;;
6190 esac
6191 $rm -f try.* .out
6192
6193 : check for length of pointer
6194 echo " "
6195 case "$ptrsize" in
6196 '')
6197         echo "Checking to see how big your pointers are..." >&4
6198         if test "$voidflags" -gt 7; then
6199                 echo '#define VOID_PTR char *' > try.c
6200         else
6201                 echo '#define VOID_PTR void *' > try.c
6202         fi
6203         $cat >>try.c <<EOCP
6204 #include <stdio.h>
6205 #$i_stdlib I_STDLIB
6206 #ifdef I_STDLIB
6207 #include <stdlib.h>
6208 #endif
6209 int main()
6210 {
6211     printf("%d\n", (int)sizeof(VOID_PTR));
6212     exit(0);
6213 }
6214 EOCP
6215         set try
6216         if eval $compile_ok; then
6217                 ptrsize=`$run ./try`
6218                 echo "Your pointers are $ptrsize bytes long."
6219         else
6220                 dflt='4'
6221                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6222                 rp="What is the size of a pointer (in bytes)?"
6223                 . ./myread
6224                 ptrsize="$ans"
6225         fi
6226         ;;
6227 esac
6228 $rm -f try.c try
6229 case "$use64bitall" in
6230 "$define"|true|[yY]*)
6231         case "$ptrsize" in
6232         4)      cat <<EOM >&4
6233
6234 *** You have chosen a maximally 64-bit build,
6235 *** but your pointers are only 4 bytes wide.
6236 *** Please rerun Configure without -Duse64bitall.
6237 EOM
6238                 case "$d_quad" in
6239                 define)
6240                         cat <<EOM >&4
6241 *** Since you have quads, you could possibly try with -Duse64bitint.
6242 EOM
6243                         ;;
6244                 esac
6245                 cat <<EOM >&4
6246 *** Cannot continue, aborting.
6247
6248 EOM
6249
6250                 exit 1
6251                 ;;
6252         esac
6253         ;;
6254 esac
6255
6256
6257 : determine which malloc to compile in
6258 echo " "
6259 case "$usemymalloc" in
6260 [yY]*|true|$define)     dflt='y' ;;
6261 [nN]*|false|$undef)     dflt='n' ;;
6262 *)      case "$ptrsize" in
6263         4) dflt='y' ;;
6264         *) dflt='n' ;;
6265         esac
6266         ;;
6267 esac
6268 rp="Do you wish to attempt to use the malloc that comes with $package?"
6269 . ./myread
6270 usemymalloc="$ans"
6271 case "$ans" in
6272 y*|true)
6273         usemymalloc='y'
6274         mallocsrc='malloc.c'
6275         mallocobj="malloc$_o"
6276         d_mymalloc="$define"
6277         case "$libs" in
6278         *-lmalloc*)
6279                 : Remove malloc from list of libraries to use
6280                 echo "Removing unneeded -lmalloc from library list" >&4
6281                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6282                 shift
6283                 libs="$*"
6284                 echo "libs = $libs" >&4
6285                 ;;
6286         esac
6287         ;;
6288 *)
6289         usemymalloc='n'
6290         mallocsrc=''
6291         mallocobj=''
6292         d_mymalloc="$undef"
6293         ;;
6294 esac
6295
6296 : compute the return types of malloc and free
6297 echo " "
6298 $cat >malloc.c <<END
6299 #$i_malloc I_MALLOC
6300 #$i_stdlib I_STDLIB
6301 #include <stdio.h>
6302 #include <sys/types.h>
6303 #ifdef I_MALLOC
6304 #include <malloc.h>
6305 #endif
6306 #ifdef I_STDLIB
6307 #include <stdlib.h>
6308 #endif
6309 #ifdef TRY_MALLOC
6310 void *malloc();
6311 #endif
6312 #ifdef TRY_FREE
6313 void free();
6314 #endif
6315 END
6316 case "$malloctype" in
6317 '')
6318         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6319                 malloctype='void *'
6320         else
6321                 malloctype='char *'
6322         fi
6323         ;;
6324 esac
6325 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6326
6327 case "$freetype" in
6328 '')
6329         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6330                 freetype='void'
6331         else
6332                 freetype='int'
6333         fi
6334         ;;
6335 esac
6336 echo "Your system uses $freetype free(), it would seem." >&4
6337 $rm -f malloc.[co]
6338 $cat <<EOM
6339
6340 After $package is installed, you may wish to install various
6341 add-on modules and utilities.  Typically, these add-ons will
6342 be installed under $prefix with the rest
6343 of this package.  However, you may wish to install such add-ons
6344 elsewhere under a different prefix.
6345
6346 If you do not wish to put everything under a single prefix, that's
6347 ok.  You will be prompted for the individual locations; this siteprefix
6348 is only used to suggest the defaults.
6349
6350 The default should be fine for most people.
6351
6352 EOM
6353 fn=d~+
6354 rp='Installation prefix to use for add-on modules and utilities?'
6355 : XXX Here might be another good place for an installstyle setting.
6356 case "$siteprefix" in
6357 '') dflt=$prefix ;;
6358 *)  dflt=$siteprefix ;;
6359 esac
6360 . ./getfile
6361 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6362 oldsiteprefix=''
6363 case "$siteprefix" in
6364 '') ;;
6365 *)      case "$ans" in
6366         "$prefix") ;;
6367         *) oldsiteprefix="$prefix";;
6368         esac
6369         ;;
6370 esac
6371 siteprefix="$ans"
6372 siteprefixexp="$ansexp"
6373
6374 : determine where site specific libraries go.
6375 : Usual default is /usr/local/lib/perl5/site_perl/$version
6376 : The default "style" setting is made in installstyle.U
6377 : XXX No longer works with Prefixit stuff.
6378 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6379 case "$sitelib" in
6380 '') case "$installstyle" in
6381         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6382         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6383         esac
6384         ;;
6385 *)      dflt="$sitelib"
6386         ;;
6387 esac
6388 $cat <<EOM
6389
6390 The installation process will create a directory for
6391 site-specific extensions and modules.  Most users find it convenient
6392 to place all site-specific files in this directory rather than in the
6393 main distribution directory.
6394
6395 EOM
6396 fn=d~+
6397 rp='Pathname for the site-specific library files?'
6398 . ./getfile
6399 sitelib="$ans"
6400 sitelibexp="$ansexp"
6401 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6402 : Change installation prefix, if necessary.
6403 if $test X"$prefix" != X"$installprefix"; then
6404         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6405 else
6406         installsitelib="$sitelibexp"
6407 fi
6408
6409 : determine where site specific architecture-dependent libraries go.
6410 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6411 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6412 : sitelib may have an optional trailing /share.
6413 case "$sitearch" in
6414 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6415         dflt="$dflt/$archname"
6416         ;;
6417 *)      dflt="$sitearch"
6418         ;;
6419 esac
6420 set sitearch sitearch none
6421 eval $prefixit
6422 $cat <<EOM
6423
6424 The installation process will also create a directory for
6425 architecture-dependent site-specific extensions and modules.
6426
6427 EOM
6428 fn=d~+
6429 rp='Pathname for the site-specific architecture-dependent library files?'
6430 . ./getfile
6431 sitearch="$ans"
6432 sitearchexp="$ansexp"
6433 : Change installation prefix, if necessary.
6434 if $test X"$prefix" != X"$installprefix"; then
6435         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6436 else
6437         installsitearch="$sitearchexp"
6438 fi
6439
6440 $cat <<EOM
6441
6442 The installation process will also create a directory for
6443 vendor-supplied add-ons.  Vendors who supply perl with their system
6444 may find it convenient to place all vendor-supplied files in this
6445 directory rather than in the main distribution directory.  This will
6446 ease upgrades between binary-compatible maintenance versions of perl.
6447
6448 Of course you may also use these directories in whatever way you see
6449 fit.  For example, you might use them to access modules shared over a
6450 company-wide network.
6451
6452 The default answer should be fine for most people.
6453 This causes further questions about vendor add-ons to be skipped
6454 and no vendor-specific directories will be configured for perl.
6455
6456 EOM
6457 rp='Do you want to configure vendor-specific add-on directories?'
6458 case "$usevendorprefix" in
6459 define|true|[yY]*) dflt=y ;;
6460 *)      : User may have set vendorprefix directly on Configure command line.
6461         case "$vendorprefix" in
6462         ''|' ') dflt=n ;;
6463         *)      dflt=y ;;
6464         esac
6465         ;;
6466 esac
6467 . ./myread
6468 case "$ans" in
6469 [yY]*)  fn=d~+
6470         rp='Installation prefix to use for vendor-supplied add-ons?'
6471         case "$vendorprefix" in
6472         '') dflt='' ;;
6473         *)  dflt=$vendorprefix ;;
6474         esac
6475         . ./getfile
6476         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6477         oldvendorprefix=''
6478         case "$vendorprefix" in
6479         '') ;;
6480         *)      case "$ans" in
6481                 "$prefix") ;;
6482                 *) oldvendorprefix="$prefix";;
6483                 esac
6484                 ;;
6485         esac
6486         usevendorprefix="$define"
6487         vendorprefix="$ans"
6488         vendorprefixexp="$ansexp"
6489         ;;
6490 *)      usevendorprefix="$undef"
6491         vendorprefix=''
6492         vendorprefixexp=''
6493         ;;
6494 esac
6495
6496 case "$vendorprefix" in
6497 '')     d_vendorlib="$undef"
6498         vendorlib=''
6499         vendorlibexp=''
6500         ;;
6501 *)      d_vendorlib="$define"
6502         : determine where vendor-supplied modules go.
6503         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6504         case "$vendorlib" in
6505         '')
6506                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6507                 case "$installstyle" in
6508                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6509                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6510                 esac
6511                 ;;
6512         *)      dflt="$vendorlib"
6513                 ;;
6514         esac
6515         fn=d~+
6516         rp='Pathname for the vendor-supplied library files?'
6517         . ./getfile
6518         vendorlib="$ans"
6519         vendorlibexp="$ansexp"
6520         ;;
6521 esac
6522 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6523 : Change installation prefix, if necessary.
6524 if $test X"$prefix" != X"$installprefix"; then
6525         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6526 else
6527         installvendorlib="$vendorlibexp"
6528 fi
6529
6530 case "$vendorprefix" in
6531 '')     d_vendorarch="$undef"
6532         vendorarch=''
6533         vendorarchexp=''
6534         ;;
6535 *)      d_vendorarch="$define"
6536         : determine where vendor-supplied architecture-dependent libraries go.
6537         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6538         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6539         : vendorlib may have an optional trailing /share.
6540         case "$vendorarch" in
6541         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6542                 dflt="$dflt/$archname"
6543                 ;;
6544         *)      dflt="$vendorarch" ;;
6545         esac
6546         fn=d~+
6547         rp='Pathname for vendor-supplied architecture-dependent files?'
6548         . ./getfile
6549         vendorarch="$ans"
6550         vendorarchexp="$ansexp"
6551         ;;
6552 esac
6553 : Change installation prefix, if necessary.
6554 if $test X"$prefix" != X"$installprefix"; then
6555         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6556 else
6557         installvendorarch="$vendorarchexp"
6558 fi
6559
6560 : Final catch-all directories to search
6561 $cat <<EOM
6562
6563 Lastly, you can have perl look in other directories for extensions and
6564 modules in addition to those already specified.
6565 These directories will be searched after 
6566         $sitearch 
6567         $sitelib 
6568 EOM
6569 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6570 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6571 echo ' '
6572 case "$otherlibdirs" in
6573 ''|' ') dflt='none' ;;
6574 *)      dflt="$otherlibdirs" ;;
6575 esac
6576 $cat <<EOM
6577 Enter a colon-separated set of extra paths to include in perl's @INC
6578 search path, or enter 'none' for no extra paths.
6579
6580 EOM
6581
6582 rp='Colon-separated list of additional directories for perl to search?'
6583 . ./myread
6584 case "$ans" in
6585 ' '|''|none)    otherlibdirs=' ' ;;     
6586 *)      otherlibdirs="$ans" ;;
6587 esac
6588 case "$otherlibdirs" in
6589 ' ') val=$undef ;;
6590 *)      val=$define ;;
6591 esac
6592 set d_perl_otherlibdirs
6593 eval $setvar
6594
6595 : Cruising for prototypes
6596 echo " "
6597 echo "Checking out function prototypes..." >&4
6598 $cat >prototype.c <<EOCP
6599 #$i_stdlib I_STDLIB
6600 #ifdef I_STDLIB
6601 #include <stdlib.h>
6602 #endif
6603 int main(int argc, char *argv[]) {
6604         exit(0);}
6605 EOCP
6606 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6607         echo "Your C compiler appears to support function prototypes."
6608         val="$define"
6609 else
6610         echo "Your C compiler doesn't seem to understand function prototypes."
6611         val="$undef"
6612 fi
6613 set prototype
6614 eval $setvar
6615 $rm -f prototype*
6616
6617 case "$prototype" in
6618 "$define") ;;
6619 *)      ansi2knr='ansi2knr'
6620         echo " "
6621         cat <<EOM >&4
6622
6623 $me:  FATAL ERROR:
6624 This version of $package can only be compiled by a compiler that 
6625 understands function prototypes.  Unfortunately, your C compiler 
6626         $cc $ccflags
6627 doesn't seem to understand them.  Sorry about that.
6628
6629 If GNU cc is available for your system, perhaps you could try that instead.  
6630
6631 Eventually, we hope to support building Perl with pre-ANSI compilers.
6632 If you would like to help in that effort, please contact <perlbug@perl.org>.
6633
6634 Aborting Configure now.
6635 EOM
6636         exit 2
6637         ;;
6638 esac
6639
6640 : determine where public executables go
6641 echo " "
6642 set dflt bin bin
6643 eval $prefixit
6644 fn=d~
6645 rp='Pathname where the public executables will reside?'
6646 . ./getfile
6647 if $test "X$ansexp" != "X$binexp"; then
6648         installbin=''
6649 fi
6650 bin="$ans"
6651 binexp="$ansexp"
6652 : Change installation prefix, if necessary.
6653 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6654 if $test X"$prefix" != X"$installprefix"; then
6655         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6656 else
6657         installbin="$binexp"
6658 fi
6659
6660 echo " "
6661 case "$extras" in
6662 '') dflt='n';;
6663 *) dflt='y';;
6664 esac
6665 cat <<EOM
6666 Perl can be built with extra modules or bundles of modules which
6667 will be fetched from the CPAN and installed alongside Perl.
6668
6669 Notice that you will need access to the CPAN; either via the Internet,
6670 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6671 be asked later to configure the CPAN.pm module which will in turn do
6672 the installation of the rest of the extra modules or bundles.)
6673
6674 Notice also that if the modules require any external software such as
6675 libraries and headers (the libz library and the zlib.h header for the
6676 Compress::Zlib module, for example) you MUST have any such software
6677 already installed, this configuration process will NOT install such
6678 things for you.
6679
6680 If this doesn't make any sense to you, just accept the default '$dflt'.
6681 EOM
6682 rp='Install any extra modules (y or n)?'
6683 . ./myread
6684 case "$ans" in
6685 y|Y)
6686         cat <<EOM
6687
6688 Please list any extra modules or bundles to be installed from CPAN,
6689 with spaces between the names.  The names can be in any format the
6690 'install' command of CPAN.pm will understand.  (Answer 'none',
6691 without the quotes, to install no extra modules or bundles.)
6692 EOM
6693         rp='Extras?'
6694         dflt="$extras"
6695         . ./myread
6696         extras="$ans"
6697 esac
6698 case "$extras" in
6699 ''|'none')
6700         val=''
6701         $rm -f ../extras.lst
6702         ;;
6703 *)      echo "(Saving the list of extras for later...)"
6704         echo "$extras" > ../extras.lst
6705         val="'$extras'"
6706         ;;
6707 esac
6708 set extras
6709 eval $setvar
6710 echo " "
6711
6712 : determine where html pages for programs go
6713 set html1dir html1dir none
6714 eval $prefixit
6715 $cat <<EOM
6716
6717 If you wish to install html files for programs in $spackage, indicate 
6718 the appropriate directory here.  To skip installing html files,
6719 answer "none".
6720 EOM
6721 case "$html1dir" in
6722 ''|none|$undef|' ') dflt=none ;;
6723 *) dflt=$html1dir ;;
6724 esac
6725 fn=dn+~
6726 rp="Directory for the main $spackage html pages?"
6727 . ./getfile
6728 html1dir="$ans"
6729 html1direxp="$ansexp"
6730 : Use ' ' for none so value is preserved next time through Configure
6731 $test X"$html1dir" = "X" && html1dir=' '
6732 : Change installation prefix, if necessary.
6733 if $test X"$prefix" != X"$installprefix"; then
6734         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6735 else
6736         installhtml1dir="$html1direxp"
6737 fi
6738
6739 : determine where html pages for libraries and modules go
6740 set html3dir html3dir none
6741 eval $prefixit
6742 $cat <<EOM
6743
6744 If you wish to install html files for modules associated with $spackage,
6745 indicate the appropriate directory here.  To skip installing html files,
6746 answer "none".
6747 EOM
6748 : There is no obvious default.  If they have specified html1dir, then
6749 : try to key off that, possibly changing .../html1 into .../html3.
6750 case "$html3dir" in
6751 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6752 *) dflt=$html3dir ;;
6753 esac
6754 fn=dn+~
6755 rp="Directory for the $spackage module html pages?"
6756 . ./getfile
6757 html3dir="$ans"
6758 html3direxp="$ansexp"
6759 : Use ' ' for none so value is preserved next time through Configure
6760 $test X"$html3dir" = "X" && html3dir=' '
6761 : Change installation prefix, if necessary.
6762 if $test X"$prefix" != X"$installprefix"; then
6763         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6764 else
6765         installhtml3dir="$html3direxp"
6766 fi
6767
6768 : Find perl5.005 or later.
6769 echo "Looking for a previously installed perl5.005 or later... "
6770 case "$perl5" in
6771 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6772                 : Check if this perl is recent and can load a simple module
6773                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6774                         perl5=$tdir/perl
6775                         break;
6776                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6777                         perl5=$tdir/perl5
6778                         break;
6779                 fi
6780         done
6781         ;;
6782 *)      perl5="$perl5"
6783         ;;
6784 esac
6785 case "$perl5" in
6786 '')     echo "None found.  That's ok.";;
6787 *)      echo "Using $perl5." ;;
6788 esac
6789
6790 : Determine list of previous versions to include in @INC
6791 $cat > getverlist <<EOPL
6792 #!$perl5 -w
6793 use File::Basename;
6794 \$api_versionstring = "$api_versionstring";
6795 \$version = "$version";
6796 \$stem = "$sitelib_stem";
6797 \$archname = "$archname";
6798 EOPL
6799         $cat >> getverlist <<'EOPL'
6800 # Can't have leading @ because metaconfig interprets it as a command!
6801 ;@inc_version_list=();
6802 # XXX Redo to do opendir/readdir? 
6803 if (-d $stem) {
6804     chdir($stem);
6805     ;@candidates = glob("5.*");
6806 }
6807 else {
6808     ;@candidates = ();
6809 }
6810
6811 # XXX ToDo:  These comparisons must be reworked when two-digit
6812 # subversions come along, so that 5.7.10 compares as greater than
6813 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6814 # widespread that we can use the built-in version vectors rather
6815 # than reinventing them here.  For 5.6.0, however, we must
6816 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6817 foreach $d (@candidates) {
6818     if ($d lt $version) {
6819         if ($d ge $api_versionstring) {
6820             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6821         }
6822         elsif ($d ge "5.005") {
6823             unshift(@inc_version_list, grep { -d } $d);
6824         }
6825     }
6826     else {
6827         # Skip newer version.  I.e. don't look in
6828         # 5.7.0 if we're installing 5.6.1.
6829     }
6830 }
6831
6832 if (@inc_version_list) {
6833     print join(' ', @inc_version_list);
6834 }
6835 else {
6836     # Blank space to preserve value for next Configure run.
6837     print " ";
6838 }
6839 EOPL
6840 chmod +x getverlist
6841 case "$inc_version_list" in
6842 '')     if test -x "$perl5$exe_ext"; then
6843                 dflt=`$perl5 getverlist`
6844         else
6845                 dflt='none'
6846         fi
6847         ;;
6848 $undef) dflt='none' ;;
6849 *)  eval dflt=\"$inc_version_list\" ;;
6850 esac
6851 case "$dflt" in
6852 ''|' ') dflt=none ;;
6853 esac
6854 case "$dflt" in
6855 5.005) dflt=none ;;
6856 esac
6857 $cat <<EOM
6858
6859 In order to ease the process of upgrading, this version of perl 
6860 can be configured to use modules built and installed with earlier 
6861 versions of perl that were installed under $prefix.  Specify here
6862 the list of earlier versions that this version of perl should check.
6863 If Configure detected no earlier versions of perl installed under
6864 $prefix, then the list will be empty.  Answer 'none' to tell perl
6865 to not search earlier versions.
6866
6867 The default should almost always be sensible, so if you're not sure,
6868 just accept the default.
6869 EOM
6870
6871 rp='List of earlier versions to include in @INC?'
6872 . ./myread
6873 case "$ans" in
6874 [Nn]one|''|' ') inc_version_list=' ' ;;
6875 *) inc_version_list="$ans" ;;
6876 esac
6877 case "$inc_version_list" in
6878 ''|' ') 
6879         inc_version_list_init='0';;
6880 *)      inc_version_list_init=`echo $inc_version_list |
6881                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6882         ;;
6883 esac
6884 $rm -f getverlist
6885
6886 : determine whether to install perl also as /usr/bin/perl
6887
6888 echo " "
6889 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6890         $cat <<EOM
6891 Many scripts expect perl to be installed as /usr/bin/perl.
6892
6893 If you want to, I can install the perl you are about to compile
6894 as /usr/bin/perl (in addition to $bin/perl).
6895 EOM
6896         if test -f /usr/bin/perl; then
6897             $cat <<EOM
6898
6899 However, please note that because you already have a /usr/bin/perl,
6900 overwriting that with a new Perl would very probably cause problems.
6901 Therefore I'm assuming you don't want to do that (unless you insist).
6902
6903 EOM
6904             case "$installusrbinperl" in
6905             "$define"|[yY]*)    dflt='y';;
6906             *)                  dflt='n';;
6907             esac
6908         else
6909             $cat <<EOM
6910
6911 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6912
6913 EOM
6914             case "$installusrbinperl" in
6915             "$undef"|[nN]*)     dflt='n';;
6916             *)                  dflt='y';;
6917             esac
6918         fi
6919         rp="Do you want to install perl as /usr/bin/perl?"
6920         . ./myread
6921         case "$ans" in
6922         [yY]*)  val="$define";;
6923         *)      val="$undef" ;;
6924         esac
6925 else
6926         val="$undef"
6927 fi
6928 set installusrbinperl
6929 eval $setvar
6930
6931 echo " "
6932 echo "Checking for GNU C Library..." >&4
6933 cat >try.c <<'EOCP'
6934 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6935    alone are insufficient to distinguish different versions, such as
6936    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6937    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6938 */
6939 #include <stdio.h>
6940 int main(void)
6941 {
6942 #ifdef __GLIBC__
6943 #   ifdef __GLIBC_MINOR__
6944 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6945 #           include <gnu/libc-version.h>
6946             printf("%s\n",  gnu_get_libc_version());
6947 #       else
6948             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6949 #       endif
6950 #   else
6951         printf("%d\n",  __GLIBC__);
6952 #   endif
6953     return 0;
6954 #else
6955     return 1;
6956 #endif
6957 }
6958 EOCP
6959 set try
6960 if eval $compile_ok && $run ./try > glibc.ver; then
6961         val="$define"
6962         gnulibc_version=`$cat glibc.ver`
6963         echo "You are using the GNU C Library version $gnulibc_version"
6964 else
6965         val="$undef"
6966         gnulibc_version=''
6967         echo "You are not using the GNU C Library"
6968 fi
6969 $rm -f try try.* glibc.ver
6970 set d_gnulibc
6971 eval $setvar
6972
6973 : see if nm is to be used to determine whether a symbol is defined or not
6974 case "$usenm" in
6975 '')
6976         dflt=''
6977         case "$d_gnulibc" in
6978         "$define")
6979                 echo " "
6980                 echo "nm probably won't work on the GNU C Library." >&4
6981                 dflt=n
6982                 ;;
6983         esac
6984         case "$dflt" in
6985         '') 
6986                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6987                         echo " "
6988                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6989                         echo "'nm' won't be sufficient on this sytem." >&4
6990                         dflt=n
6991                 fi
6992                 ;;
6993         esac
6994         case "$dflt" in
6995         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6996                 if $test $dflt -gt 20; then
6997                         dflt=y
6998                 else
6999                         dflt=n
7000                 fi
7001                 ;;
7002         esac
7003         ;;
7004 *)
7005         case "$usenm" in
7006         true|$define) dflt=y;;
7007         *) dflt=n;;
7008         esac
7009         ;;
7010 esac
7011 $cat <<EOM
7012
7013 I can use $nm to extract the symbols from your C libraries. This
7014 is a time consuming task which may generate huge output on the disk (up
7015 to 3 megabytes) but that should make the symbols extraction faster. The
7016 alternative is to skip the 'nm' extraction part and to compile a small
7017 test program instead to determine whether each symbol is present. If
7018 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7019 this may be the best solution.
7020
7021 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7022
7023 EOM
7024 rp="Shall I use $nm to extract C symbols from the libraries?"
7025 . ./myread
7026 case "$ans" in
7027 [Nn]*) usenm=false;;
7028 *) usenm=true;;
7029 esac
7030
7031 runnm=$usenm
7032 case "$reuseval" in
7033 true) runnm=false;;
7034 esac
7035
7036 : nm options which may be necessary
7037 case "$nm_opt" in
7038 '') if $test -f /mach_boot; then
7039                 nm_opt=''       # Mach
7040         elif $test -d /usr/ccs/lib; then
7041                 nm_opt='-p'     # Solaris (and SunOS?)
7042         elif $test -f /dgux; then
7043                 nm_opt='-p'     # DG-UX
7044         elif $test -f /lib64/rld; then
7045                 nm_opt='-p'     # 64-bit Irix
7046         else
7047                 nm_opt=''
7048         fi;;
7049 esac
7050
7051 : nm options which may be necessary for shared libraries but illegal
7052 : for archive libraries.  Thank you, Linux.
7053 case "$nm_so_opt" in
7054 '')     case "$myuname" in
7055         *linux*)
7056                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7057                         nm_so_opt='--dynamic'
7058                 fi
7059                 ;;
7060         esac
7061         ;;
7062 esac
7063
7064 case "$runnm" in
7065 true)
7066 : get list of predefined functions in a handy place
7067 echo " "
7068 case "$libc" in
7069 '') libc=unknown
7070         case "$libs" in
7071         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7072         esac
7073         ;;
7074 esac
7075 case "$libs" in
7076 '') ;;
7077 *)  for thislib in $libs; do
7078         case "$thislib" in
7079         -lc|-lc_s)
7080                 : Handle C library specially below.
7081                 ;;
7082         -l*)
7083                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7084                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7085                         :
7086                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7087                         :
7088                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7089                         :
7090                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7091                         :
7092                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7093                         :
7094                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7095                         :
7096                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7097                         :
7098                 else
7099                         try=''
7100                 fi
7101                 libnames="$libnames $try"
7102                 ;;
7103         *) libnames="$libnames $thislib" ;;
7104         esac
7105         done
7106         ;;
7107 esac
7108 xxx=normal
7109 case "$libc" in
7110 unknown)
7111         set /lib/libc.$so
7112         for xxx in $libpth; do
7113                 $test -r $1 || set $xxx/libc.$so
7114                 : The messy sed command sorts on library version numbers.
7115                 $test -r $1 || \
7116                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7117                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7118                                 h
7119                                 s/[0-9][0-9]*/0000&/g
7120                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7121                                 G
7122                                 s/\n/ /' | \
7123                          $sort | $sed -e 's/^.* //'`
7124                 eval set \$$#
7125         done
7126         $test -r $1 || set /usr/ccs/lib/libc.$so
7127         $test -r $1 || set /lib/libsys_s$_a
7128         ;;
7129 *)
7130         set blurfl
7131         ;;
7132 esac
7133 if $test -r "$1"; then
7134         echo "Your (shared) C library seems to be in $1."
7135         libc="$1"
7136 elif $test -r /lib/libc && $test -r /lib/clib; then
7137         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7138         xxx=apollo
7139         libc='/lib/clib /lib/libc'
7140         if $test -r /lib/syslib; then
7141                 echo "(Your math library is in /lib/syslib.)"
7142                 libc="$libc /lib/syslib"
7143         fi
7144 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7145         echo "Your C library seems to be in $libc, as you said before."
7146 elif $test -r $incpath/usr/lib/libc$_a; then
7147         libc=$incpath/usr/lib/libc$_a;
7148         echo "Your C library seems to be in $libc.  That's fine."
7149 elif $test -r /lib/libc$_a; then
7150         libc=/lib/libc$_a;
7151         echo "Your C library seems to be in $libc.  You're normal."
7152 else
7153         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7154                 :
7155         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7156                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7157         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7158                 :
7159         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7160                 :
7161         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7162                 :
7163         else
7164                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7165         fi
7166         if $test -r "$tans"; then
7167                 echo "Your C library seems to be in $tans, of all places."
7168                 libc=$tans
7169         else
7170                 libc='blurfl'
7171         fi
7172 fi
7173 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7174         dflt="$libc"
7175         cat <<EOM
7176
7177 If the guess above is wrong (which it might be if you're using a strange
7178 compiler, or your machine supports multiple models), you can override it here.
7179
7180 EOM
7181 else
7182         dflt=''
7183         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7184         cat >&4 <<EOM
7185 I can't seem to find your C library.  I've looked in the following places:
7186
7187 EOM
7188         $sed 's/^/      /' libpath
7189         cat <<EOM
7190
7191 None of these seems to contain your C library. I need to get its name...
7192
7193 EOM
7194 fi
7195 fn=f
7196 rp='Where is your C library?'
7197 . ./getfile
7198 libc="$ans"
7199
7200 echo " "
7201 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7202 set X `cat libnames`
7203 shift
7204 xxx=files
7205 case $# in 1) xxx=file; esac
7206 echo "Extracting names from the following $xxx for later perusal:" >&4
7207 echo " "
7208 $sed 's/^/      /' libnames >&4
7209 echo " "
7210 $echo $n "This may take a while...$c" >&4
7211
7212 for file in $*; do
7213         case $file in
7214         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7215         *) $nm $nm_opt $file 2>/dev/null;;
7216         esac
7217 done >libc.tmp
7218
7219 $echo $n ".$c"
7220 $grep fprintf libc.tmp > libc.ptf
7221 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7222 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7223 xxx='[ADTSIW]'
7224 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7225         eval $xscan;\
7226         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7227                 eval $xrun
7228 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7229         eval $xscan;\
7230         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7231                 eval $xrun
7232 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7233         eval $xscan;\
7234         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7235                 eval $xrun
7236 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7237         eval $xscan;\
7238         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7239                 eval $xrun
7240 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7241         eval $xscan;\
7242         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7243                 eval $xrun
7244 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7245         eval $xscan;\
7246         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7247                 eval $xrun
7248 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7249                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7250         eval $xscan;\
7251         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7252                 eval $xrun
7253 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7254         eval $xscan;\
7255         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7256                 eval $xrun
7257 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7258         eval $xscan;\
7259         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7260                 eval $xrun
7261 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7262         eval $xscan;\
7263         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7264                 eval $xrun
7265 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\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/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7270         eval $xscan;\
7271         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7272                 eval $xrun
7273 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7274         eval $xscan;\
7275         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7276                 eval $xrun
7277 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7278         eval $xscan;\
7279         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7280                 eval $xrun
7281 else
7282         $nm -p $* 2>/dev/null >libc.tmp
7283         $grep fprintf libc.tmp > libc.ptf
7284         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7285                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7286         then
7287                 nm_opt='-p'
7288                 eval $xrun
7289         else
7290                 echo " "
7291                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7292                 com=''
7293                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7294                         for thisname in $libnames $libc; do
7295                                 $ar t $thisname >>libc.tmp
7296                         done
7297                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7298                         echo "Ok." >&4
7299                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7300                         # Repeat libc to extract forwarders to DLL entries too
7301                         for thisname in $libnames $libc; do
7302                                 $ar tv $thisname >>libc.tmp
7303                                 # Revision 50 of EMX has bug in $ar.
7304                                 # it will not extract forwarders to DLL entries
7305                                 # Use emximp which will extract exactly them.
7306                                 emximp -o tmp.imp $thisname \
7307                                     2>/dev/null && \
7308                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7309                                     < tmp.imp >>libc.tmp
7310                                 $rm tmp.imp
7311                         done
7312                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7313                         echo "Ok." >&4
7314                 else
7315                         echo "$ar didn't seem to work right." >&4
7316                         echo "Maybe this is a Cray...trying bld instead..." >&4
7317                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7318                         then
7319                                 for thisname in $libnames; do
7320                                         bld t $libnames | \
7321                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7322                                         $ar t $thisname >>libc.tmp
7323                                 done
7324                                 echo "Ok." >&4
7325                         else
7326                                 echo "That didn't work either.  Giving up." >&4
7327                                 exit 1
7328                         fi
7329                 fi
7330         fi
7331 fi
7332 nm_extract="$com"
7333 case "$PASE" in
7334 define)
7335     echo " "
7336     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7337     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7338     ;;
7339 *)  if $test -f /lib/syscalls.exp; then
7340         echo " "
7341         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7342         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7343     fi
7344     ;;
7345 esac
7346 ;;
7347 esac
7348 $rm -f libnames libpath
7349
7350 : see if dld is available
7351 set dld.h i_dld
7352 eval $inhdr
7353
7354 : is a C symbol defined?
7355 csym='tlook=$1;
7356 case "$3" in
7357 -v) tf=libc.tmp; tdc="";;
7358 -a) tf=libc.tmp; tdc="[]";;
7359 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7360 esac;
7361 tx=yes;
7362 case "$reuseval-$4" in
7363 true-) ;;
7364 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7365 esac;
7366 case "$tx" in
7367 yes)
7368         tval=false;
7369         if $test "$runnm" = true; then
7370                 if $contains $tlook $tf >/dev/null 2>&1; then
7371                         tval=true;
7372                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7373                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7374                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7375                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7376                         $rm -f try$_exe try.c core core.* try.core;
7377                 fi;
7378         else
7379                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7380                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7381                 $rm -f try$_exe try.c;
7382         fi;
7383         ;;
7384 *)
7385         case "$tval" in
7386         $define) tval=true;;
7387         *) tval=false;;
7388         esac;
7389         ;;
7390 esac;
7391 eval "$2=$tval"'
7392
7393 : define an is-in-libc? function
7394 inlibc='echo " "; td=$define; tu=$undef;
7395 sym=$1; var=$2; eval "was=\$$2";
7396 tx=yes;
7397 case "$reuseval$was" in
7398 true) ;;
7399 true*) tx=no;;
7400 esac;
7401 case "$tx" in
7402 yes)
7403         set $sym tres -f;
7404         eval $csym;
7405         case "$tres" in
7406         true)
7407                 echo "$sym() found." >&4;
7408                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7409         *)
7410                 echo "$sym() NOT found." >&4;
7411                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7412         esac;;
7413 *)
7414         case "$was" in
7415         $define) echo "$sym() found." >&4;;
7416         *) echo "$sym() NOT found." >&4;;
7417         esac;;
7418 esac'
7419
7420 : see if dlopen exists
7421 xxx_runnm="$runnm"
7422 runnm=false
7423 set dlopen d_dlopen
7424 eval $inlibc
7425 runnm="$xxx_runnm"
7426
7427 : determine which dynamic loading, if any, to compile in
7428 echo " "
7429 dldir="ext/DynaLoader"
7430 case "$usedl" in
7431 $define|y|true)
7432         dflt='y'
7433         usedl="$define"
7434         ;;
7435 $undef|n|false)
7436         dflt='n'
7437         usedl="$undef"
7438         ;;
7439 *) 
7440         dflt='n'
7441         case "$d_dlopen" in
7442             $define) dflt='y' ;;
7443         esac
7444         case "$i_dld" in
7445             $define) dflt='y' ;;
7446         esac
7447         : Does a dl_xxx.xs file exist for this operating system
7448         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7449         ;;
7450 esac
7451 rp="Do you wish to use dynamic loading?"
7452 . ./myread
7453 usedl="$ans"
7454 case "$ans" in
7455 y*) usedl="$define"
7456         case "$dlsrc" in
7457         '')
7458                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7459                         dflt="$dldir/dl_${osname}.xs"
7460                 elif $test "$d_dlopen" = "$define" ; then
7461                         dflt="$dldir/dl_dlopen.xs"
7462                 elif $test "$i_dld" = "$define" ; then
7463                         dflt="$dldir/dl_dld.xs"
7464                 else
7465                         dflt=''
7466                 fi
7467                 ;;
7468         *)      dflt="$dldir/$dlsrc"
7469                 ;;
7470         esac
7471     echo "The following dynamic loading files are available:"
7472         : Can not go over to $dldir because getfile has path hard-coded in.
7473         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7474         rp="Source file to use for dynamic loading"
7475         fn="fne"
7476         gfpth="$src"
7477         . ./getfile
7478         usedl="$define"
7479         : emulate basename
7480         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7481
7482         $cat << EOM
7483
7484 Some systems may require passing special flags to $cc -c to
7485 compile modules that will be used to create a shared library.
7486 To use no flags, say "none".
7487
7488 EOM
7489     case "$cccdlflags" in
7490     '') case "$gccversion" in
7491                 '') case "$osname" in
7492                         hpux)   dflt='+z' ;;
7493                         next)   dflt='none' ;;
7494                         irix*)  dflt='-KPIC' ;;
7495                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7496                         sunos)  dflt='-pic' ;;
7497                         *)      dflt='none' ;;
7498                     esac
7499                         ;;
7500                 *)  case "$osname" in
7501                         darwin) dflt='none' ;;
7502                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7503                         *)      dflt='-fpic' ;;
7504                     esac ;;
7505             esac ;;
7506         ' ') dflt='none' ;;
7507     *)  dflt="$cccdlflags" ;;
7508     esac
7509     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7510     . ./myread
7511     case "$ans" in
7512     none) cccdlflags=' ' ;;
7513     *) cccdlflags="$ans" ;;
7514     esac
7515
7516     cat << EOM
7517
7518 Some systems use ld to create libraries that can be dynamically loaded,
7519 while other systems (such as those using ELF) use $cc.
7520
7521 EOM
7522         case "$ld" in
7523         '')     $cat >try.c <<EOM
7524 /* Test for whether ELF binaries are produced */
7525 #include <fcntl.h>
7526 #$i_stdlib I_STDLIB
7527 #ifdef I_STDLIB
7528 #include <stdlib.h>
7529 #endif
7530 int main() {
7531         char b[4];
7532         int i = open("a.out",O_RDONLY);
7533         if(i == -1) 
7534                 exit(1); /* fail */
7535         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7536                 exit(0); /* succeed (yes, it's ELF) */
7537         else
7538                 exit(1); /* fail */
7539 }
7540 EOM
7541                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7542                         cat <<EOM
7543 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7544 EOM
7545                         dflt="$cc"
7546                 else
7547                         echo "I'll use ld to build dynamic libraries."
7548                         dflt='ld'
7549                 fi
7550                 rm -f try.c a.out
7551                 ;;
7552         *)      dflt="$ld"
7553                 ;;
7554         esac
7555
7556     rp="What command should be used to create dynamic libraries?"
7557     . ./myread
7558         ld="$ans"
7559
7560     cat << EOM
7561
7562 Some systems may require passing special flags to $ld to create a
7563 library that can be dynamically loaded.  If your ld flags include
7564 -L/other/path options to locate libraries outside your loader's normal
7565 search path, you may need to specify those -L options here as well.  To
7566 use no flags, say "none".
7567
7568 EOM
7569     case "$lddlflags" in
7570     '') case "$osname" in
7571                         beos) dflt='-nostart' ;;
7572                         hpux) dflt='-b';
7573                               case "$gccversion" in
7574                               '') dflt="$dflt +vnocompatwarnings" ;;
7575                               esac
7576                               ;;        
7577                         linux|irix*)    dflt='-shared' ;;
7578                         next)  dflt='none' ;;
7579                         solaris) dflt='-G' ;;
7580                         sunos) dflt='-assert nodefinitions' ;;
7581                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7582                 *)     dflt='none' ;;
7583                         esac
7584                         ;;
7585     *) dflt="$lddlflags" ;;
7586     esac
7587
7588         : Try to guess additional flags to pick up local libraries.
7589         : Be careful not to append to a plain 'none'
7590         case "$dflt" in
7591         none) dflt='' ;;
7592         esac
7593         for thisflag in $ldflags; do
7594                 case "$thisflag" in
7595                 -L*|-R*|-Wl,-R*)
7596                         case " $dflt " in
7597                         *" $thisflag "*) ;;
7598                         *) dflt="$dflt $thisflag" ;;
7599                         esac
7600                         ;;
7601                 esac
7602         done
7603
7604         case "$dflt" in
7605         ''|' ') dflt='none' ;;
7606         esac
7607
7608     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7609     . ./myread
7610     case "$ans" in
7611     none) lddlflags=' ' ;;
7612     *) lddlflags="$ans" ;;
7613     esac
7614
7615         cat <<EOM
7616
7617 Some systems may require passing special flags to $cc to indicate that
7618 the resulting executable will use dynamic linking.  To use no flags,
7619 say "none".
7620
7621 EOM
7622     case "$ccdlflags" in
7623     '') case "$osname" in
7624                 hpux)   dflt='-Wl,-E' ;;
7625                 linux)  dflt='-rdynamic' ;;
7626                 next)   dflt='none' ;;
7627                 sunos)  dflt='none' ;;
7628                 *)      dflt='none' ;;
7629             esac ;;
7630     ' ')  dflt='none' ;;
7631     *)  dflt="$ccdlflags" ;;
7632     esac
7633     rp="Any special flags to pass to $cc to use dynamic linking?"
7634     . ./myread
7635     case "$ans" in
7636     none) ccdlflags=' ' ;;
7637     *) ccdlflags="$ans" ;;
7638     esac
7639     ;;
7640 *)  usedl="$undef"
7641         ld='ld'
7642     dlsrc='dl_none.xs'
7643     lddlflags=''
7644     ccdlflags=''
7645     ;;
7646 esac
7647
7648 also=''
7649 case "$usedl" in
7650 $undef)
7651         # No dynamic loading being used, so don't bother even to prompt.
7652         useshrplib='false'
7653         ;;
7654 *)      case "$useshrplib" in
7655         '')     case "$osname" in
7656                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7657                         dflt=y
7658                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7659                         ;;
7660                 next*)
7661                         case "$osvers" in
7662                         4*)     dflt=y
7663                                 also='Building a shared libperl is needed for MAB support.'
7664                                 ;;
7665                         *)      dflt=n
7666                                 ;;
7667                         esac
7668                         ;;
7669                 *)      dflt=n
7670                         ;;
7671                 esac
7672                 ;;
7673         $define|true|[Yy]*)
7674                 dflt=y
7675                 ;;
7676         *)      dflt=n
7677                 ;;
7678         esac
7679         $cat << EOM
7680
7681 The perl executable is normally obtained by linking perlmain.c with
7682 libperl${_a}, any static extensions (usually just DynaLoader), and
7683 any other libraries needed on this system (such as -lm, etc.).  Since
7684 your system supports dynamic loading, it is probably possible to build
7685 a shared libperl.$so.  If you will have more than one executable linked
7686 to libperl.$so, this will significantly reduce the size of each
7687 executable, but it may have a noticeable affect on performance.  The
7688 default is probably sensible for your system.
7689 $also
7690
7691 EOM
7692         rp="Build a shared libperl.$so (y/n)"
7693         . ./myread
7694         case "$ans" in
7695         true|$define|[Yy]*)
7696                 useshrplib='true'  ;;
7697         *)      useshrplib='false' ;;
7698         esac
7699         ;;
7700 esac
7701
7702 case "$useshrplib" in
7703 true)
7704         case "$libperl" in
7705         '')
7706                 # Figure out a good name for libperl.so.  Since it gets stored in
7707                 # a version-specific architecture-dependent library, the version
7708                 # number isn't really that important, except for making cc/ld happy.
7709                 #
7710                 # A name such as libperl.so.3.1
7711                 majmin="libperl.$so.$patchlevel.$subversion"
7712                 # A name such as libperl.so.301
7713                 majonly=`echo $patchlevel $subversion |
7714                         $awk '{printf "%d%02d", $1, $2}'`
7715                 majonly=libperl.$so.$majonly
7716                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7717                 # rely on figuring it out from the naming of libc.
7718                 case "${osname}${osvers}" in
7719                 next4*)
7720                         dflt=libperl.5.$so
7721                         # XXX How handle the --version stuff for MAB?
7722                         ;;
7723                 linux*)  # ld won't link with a bare -lperl otherwise.
7724                         dflt=libperl.$so
7725                         ;;
7726                 cygwin*) # ld links against an importlib
7727                         dflt=libperl$lib_ext
7728                         ;;
7729                 *)      # Try to guess based on whether libc has major.minor.
7730                         case "$libc" in
7731                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7732                         *libc.$so.[0-9]*) dflt=$majonly ;;
7733                         *)      dflt=libperl.$so ;;
7734                         esac
7735                         ;;
7736                 esac
7737                 ;;
7738         *)      dflt=$libperl
7739                 ;;
7740         esac
7741         cat << EOM
7742
7743 I need to select a good name for the shared libperl.  If your system uses
7744 library names with major and minor numbers, then you might want something
7745 like $majmin.  Alternatively, if your system uses a single version
7746 number for shared libraries, then you might want to use $majonly.
7747 Or, your system might be quite happy with a simple libperl.$so.
7748
7749 Since the shared libperl will get installed into a version-specific
7750 architecture-dependent directory, the version number of the shared perl
7751 library probably isn't important, so the default should be o.k.
7752
7753 EOM
7754         rp='What name do you want to give to the shared libperl?'
7755         . ./myread
7756         libperl=$ans
7757         echo "Ok, I'll use $libperl"
7758         ;;
7759 *)
7760         libperl="libperl${_a}"
7761         ;;
7762 esac
7763
7764 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7765 case "$shrpdir" in
7766 '') ;;
7767 *)      $cat >&4 <<EOM
7768 WARNING:  Use of the shrpdir variable for the installation location of
7769 the shared $libperl is not supported.  It was never documented and
7770 will not work in this version.  Let me (perlbug@perl.org)
7771 know of any problems this may cause.
7772
7773 EOM
7774         case "$shrpdir" in
7775         "$archlibexp/CORE")
7776                 $cat >&4 <<EOM
7777 But your current setting of $shrpdir is
7778 the default anyway, so it's harmless.
7779 EOM
7780                 ;;
7781         *)
7782                 $cat >&4 <<EOM
7783 Further, your current attempted setting of $shrpdir
7784 conflicts with the value of $archlibexp/CORE
7785 that installperl will use.
7786 EOM
7787                 ;;
7788         esac
7789         ;;
7790 esac
7791
7792 # How will the perl executable find the installed shared $libperl?
7793 # Add $xxx to ccdlflags.
7794 # If we can't figure out a command-line option, use $shrpenv to
7795 # set env LD_RUN_PATH.  The main perl makefile uses this.
7796 shrpdir=$archlibexp/CORE
7797 xxx=''
7798 tmp_shrpenv=''
7799 if "$useshrplib"; then
7800     case "$osname" in 
7801         aix)
7802                 # We'll set it in Makefile.SH...
7803                 ;;
7804         solaris)
7805                 xxx="-R $shrpdir"
7806                 ;;
7807         freebsd|netbsd|openbsd)
7808                 xxx="-Wl,-R$shrpdir"
7809                 ;;
7810         bsdos|linux|irix*|dec_osf)
7811                 xxx="-Wl,-rpath,$shrpdir"
7812                 ;;
7813         next)
7814                 # next doesn't like the default...
7815                 ;;
7816         beos)
7817                 # beos doesn't like the default, either.
7818                 ;;
7819         hpux*)
7820                 # hpux doesn't like the default, either.
7821                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7822                 ;;
7823         *)
7824                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7825                 ;;
7826         esac
7827         case "$xxx" in
7828         '') ;;
7829         *)      
7830                 # Only add $xxx if it isn't already in ccdlflags.
7831                 case " $ccdlflags " in
7832                 *" $xxx "*)     ;;
7833                 *)      ccdlflags="$ccdlflags $xxx"
7834                         cat <<EOM >&4
7835
7836 Adding $xxx to the flags
7837 passed to $ld so that the perl executable will find the 
7838 installed shared $libperl.
7839
7840 EOM
7841                         ;;
7842                 esac
7843                 ;;
7844         esac
7845 fi
7846 # Fix ccdlflags in AIX for building external extensions.
7847 # (For building Perl itself bare -bE:perl.exp is needed,
7848 #  Makefile.SH takes care of this.)
7849 case "$osname" in
7850 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7851 esac
7852 # Respect a hint or command-line value.
7853 case "$shrpenv" in
7854 '') shrpenv="$tmp_shrpenv" ;;
7855 esac
7856 case "$ldlibpthname" in
7857 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7858 none)   ldlibpthname='' ;;
7859 esac
7860
7861 : determine where manual pages are on this system
7862 echo " "
7863 case "$sysman" in
7864 '') 
7865         syspath='/usr/share/man/man1 /usr/man/man1'
7866         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7867         syspath="$syspath /usr/man/u_man/man1"
7868         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7869         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7870         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7871         sysman=`./loc . /usr/man/man1 $syspath`
7872         ;;
7873 esac
7874 if $test -d "$sysman"; then
7875         echo "System manual is in $sysman." >&4
7876 else
7877         echo "Could not find manual pages in source form." >&4
7878 fi
7879
7880 : determine where manual pages go
7881 set man1dir man1dir none
7882 eval $prefixit
7883 $cat <<EOM
7884
7885 $spackage has manual pages available in source form.
7886 EOM
7887 case "$nroff" in
7888 nroff)
7889         echo "However, you don't have nroff, so they're probably useless to you."
7890         case "$man1dir" in
7891         '') man1dir="none";;
7892         esac;;
7893 esac
7894 echo "If you don't want the manual sources installed, answer 'none'."
7895 case "$man1dir" in
7896 ' ') dflt=none
7897         ;;
7898 '')
7899         lookpath="$prefixexp/share/man/man1"
7900         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7901         lookpath="$lookpath $prefixexp/man/p_man/man1"
7902         lookpath="$lookpath $prefixexp/man/u_man/man1"
7903         lookpath="$lookpath $prefixexp/man/man.1"
7904         case "$sysman" in
7905         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7906         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7907         esac
7908         set dflt
7909         eval $prefixup
7910         ;;
7911 *)  dflt="$man1dir"
7912         ;;
7913 esac
7914 echo " "
7915 fn=dn+~
7916 rp="Where do the main $spackage manual pages (source) go?"
7917 . ./getfile
7918 if $test "X$man1direxp" != "X$ansexp"; then
7919         installman1dir=''
7920 fi
7921 man1dir="$ans"
7922 man1direxp="$ansexp"
7923 case "$man1dir" in
7924 '')     man1dir=' '
7925         installman1dir='';;
7926 esac
7927
7928 : Change installation prefix, if necessary.
7929 if $test X"$prefix" != X"$installprefix"; then
7930         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7931 else
7932         installman1dir="$man1direxp"
7933 fi
7934
7935 : What suffix to use on installed man pages
7936
7937 case "$man1dir" in
7938 ' ')
7939         man1ext='0'
7940         ;;
7941 *)
7942         rp="What suffix should be used for the main $spackage man pages?"
7943         case "$man1ext" in
7944         '')     case "$man1dir" in
7945                 *1)  dflt=1 ;;
7946                 *1p) dflt=1p ;;
7947                 *1pm) dflt=1pm ;;
7948                 *l) dflt=l;;
7949                 *n) dflt=n;;
7950                 *o) dflt=o;;
7951                 *p) dflt=p;;
7952                 *C) dflt=C;;
7953                 *L) dflt=L;;
7954                 *L1) dflt=L1;;
7955                 *) dflt=1;;
7956                 esac
7957                 ;;
7958         *)      dflt="$man1ext";;
7959         esac
7960         . ./myread
7961         man1ext="$ans"
7962         ;;
7963 esac
7964
7965 : see if we can have long filenames
7966 echo " "
7967 first=123456789abcdef
7968 $rm -f $first
7969 if (echo hi >$first) 2>/dev/null; then
7970         if $test -f 123456789abcde; then
7971                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7972                 val="$undef"
7973         else
7974                 echo 'You can have filenames longer than 14 characters.'>&4
7975                 val="$define"
7976         fi
7977 else
7978         $cat <<'EOM'
7979 You can't have filenames longer than 14 chars.
7980 You can't even think about them!
7981 EOM
7982         val="$undef"
7983 fi 
7984 set d_flexfnam
7985 eval $setvar
7986 $rm -rf 123456789abcde*
7987
7988 : determine where library module manual pages go
7989 set man3dir man3dir none
7990 eval $prefixit
7991 $cat <<EOM
7992
7993 $spackage has manual pages for many of the library modules.
7994 EOM
7995
7996 case "$nroff" in
7997 nroff)
7998         $cat <<'EOM'
7999 However, you don't have nroff, so they're probably useless to you.
8000 EOM
8001         case "$man3dir" in
8002         '') man3dir="none";;
8003         esac;;
8004 esac
8005
8006 case "$d_flexfnam" in
8007 undef)
8008         $cat <<'EOM'
8009 However, your system can't handle the long file names like File::Basename.3. 
8010 EOM
8011         case "$man3dir" in
8012         '') man3dir="none";;
8013         esac;;
8014 esac
8015
8016 echo "If you don't want the manual sources installed, answer 'none'."
8017 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8018 case "$man3dir" in
8019 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8020         if $test -d "$privlib/man/man3"; then
8021                 cat <<EOM >&4
8022
8023 WARNING:  Previous versions of perl installed man3 pages into
8024 $privlib/man/man3.  This version will suggest a 
8025 new default of $dflt.  
8026 EOM
8027                 tdflt=$dflt
8028                 dflt='n'
8029                 rp='Do you wish to preserve the old behavior?(y/n)'
8030                 . ./myread
8031                 case "$ans" in
8032                 y*) dflt="$privlib/man/man3" ;;
8033                 *)  dflt=$tdflt ;;
8034                 esac
8035     fi
8036         ;;
8037 *)      dflt="$man3dir" ;;
8038 esac
8039 case "$dflt" in
8040 ' ') dflt=none ;;
8041 esac
8042 echo " "
8043 fn=dn+~
8044 rp="Where do the $package library man pages (source) go?"
8045 . ./getfile
8046 man3dir="$ans"
8047 man3direxp="$ansexp"
8048 case "$man3dir" in
8049 '')     man3dir=' '
8050         installman3dir='';;
8051 esac
8052
8053 : Change installation prefix, if necessary.
8054 if $test X"$prefix" != X"$installprefix"; then
8055         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8056 else
8057         installman3dir="$man3direxp"
8058 fi
8059
8060 : What suffix to use on installed man pages
8061 case "$man3dir" in
8062 ' ')
8063         man3ext='0'
8064         ;;
8065 *)
8066         rp="What suffix should be used for the $package library man pages?"
8067         case "$man3ext" in
8068         '')     case "$man3dir" in
8069                 *3)  dflt=3 ;;
8070                 *3p) dflt=3p ;;
8071                 *3pm) dflt=3pm ;;
8072                 *l) dflt=l;;
8073                 *n) dflt=n;;
8074                 *o) dflt=o;;
8075                 *p) dflt=p;;
8076                 *C) dflt=C;;
8077                 *L) dflt=L;;
8078                 *L3) dflt=L3;;
8079                 *) dflt=3;;
8080                 esac
8081                 ;;
8082         *)      dflt="$man3ext";;
8083         esac
8084         . ./myread
8085         man3ext="$ans"
8086         ;;
8087 esac
8088
8089 : see if we have to deal with yellow pages, now NIS.
8090 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8091         if $test -f /usr/etc/nibindd; then
8092                 echo " "
8093                 echo "I'm fairly confident you're on a NeXT."
8094                 echo " "
8095                 rp='Do you get the hosts file via NetInfo?'
8096                 dflt=y
8097                 case "$hostcat" in
8098                 nidump*) ;;
8099                 '') ;;
8100                 *) dflt=n;;
8101                 esac
8102                 . ./myread
8103                 case "$ans" in
8104                 y*) hostcat='nidump hosts .';;
8105                 *)      case "$hostcat" in
8106                         nidump*) hostcat='';;
8107                         esac
8108                         ;;
8109                 esac
8110         fi
8111         case "$hostcat" in
8112         nidump*) ;;
8113         *)
8114                 case "$hostcat" in
8115                 *ypcat*) dflt=y;;
8116                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8117                                 dflt=y
8118                         else
8119                                 dflt=n
8120                         fi;;
8121                 *) dflt=n;;
8122                 esac
8123                 echo " "
8124                 rp='Are you getting the hosts file via yellow pages?'
8125                 . ./myread
8126                 case "$ans" in
8127                 y*) hostcat='ypcat hosts';;
8128                 *) hostcat='cat /etc/hosts';;
8129                 esac
8130                 ;;
8131         esac
8132 fi
8133 case "$hostcat" in
8134 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8135 esac
8136 case "$groupcat" in
8137 '') test -f /etc/group && groupcat='cat /etc/group';;
8138 esac
8139 case "$passcat" in
8140 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8141 esac
8142
8143 : now get the host name
8144 echo " "
8145 echo "Figuring out host name..." >&4
8146 case "$myhostname" in
8147 '') cont=true
8148         echo 'Maybe "hostname" will work...'
8149         if tans=`sh -c hostname 2>&1` ; then
8150                 myhostname=$tans
8151                 phostname=hostname
8152                 cont=''
8153         fi
8154         ;;
8155 *) cont='';;
8156 esac
8157 if $test "$cont"; then
8158         if ./xenix; then
8159                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8160                 if tans=`cat /etc/systemid 2>&1` ; then
8161                         myhostname=$tans
8162                         phostname='cat /etc/systemid'
8163                         echo "Whadyaknow.  Xenix always was a bit strange..."
8164                         cont=''
8165                 fi
8166         elif $test -r /etc/systemid; then
8167                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8168         fi
8169 fi
8170 if $test "$cont"; then
8171         echo 'No, maybe "uuname -l" will work...'
8172         if tans=`sh -c 'uuname -l' 2>&1` ; then
8173                 myhostname=$tans
8174                 phostname='uuname -l'
8175         else
8176                 echo 'Strange.  Maybe "uname -n" will work...'
8177                 if tans=`sh -c 'uname -n' 2>&1` ; then
8178                         myhostname=$tans
8179                         phostname='uname -n'
8180                 else
8181                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8182                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8183                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8184                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8185                         else
8186                                 case "$myhostname" in
8187                                 '') echo "Does this machine have an identity crisis or something?"
8188                                         phostname='';;
8189                                 *)
8190                                         echo "Well, you said $myhostname before..."
8191                                         phostname='echo $myhostname';;
8192                                 esac
8193                         fi
8194                 fi
8195         fi
8196 fi
8197 case "$myhostname" in
8198 '') myhostname=noname ;;
8199 esac
8200 : you do not want to know about this
8201 set $myhostname
8202 myhostname=$1
8203
8204 : verify guess
8205 if $test "$myhostname" ; then
8206         dflt=y
8207         rp='Your host name appears to be "'$myhostname'".'" Right?"
8208         . ./myread
8209         case "$ans" in
8210         y*) ;;
8211         *) myhostname='';;
8212         esac
8213 fi
8214
8215 : bad guess or no guess
8216 while $test "X$myhostname" = X ; do
8217         dflt=''
8218         rp="Please type the (one word) name of your host:"
8219         . ./myread
8220         myhostname="$ans"
8221 done
8222
8223 : translate upper to lower if necessary
8224 case "$myhostname" in
8225 *[A-Z]*)
8226         echo "(Normalizing case in your host name)"
8227         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8228         ;;
8229 esac
8230
8231 case "$myhostname" in
8232 *.*)
8233         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8234         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8235         echo "(Trimming domain name from host name--host name is now $myhostname)"
8236         ;;
8237 *) case "$mydomain" in
8238         '')
8239                 {
8240                         test "X$hostcat" = "Xypcat hosts" &&
8241                         ypmatch "$myhostname" hosts 2>/dev/null |\
8242                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8243                         $test -s hosts
8244                 } || {
8245                         test "X$hostcat" != "X" &&
8246                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8247                                         /[       ]$myhostname[  . ]/p" > hosts
8248                 }
8249                 tmp_re="[       . ]"
8250                 if $test -f hosts; then
8251                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8252                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8253                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8254                                 hosts | $sort | $uniq | \
8255                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8256                         case `$echo X$dflt` in
8257                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8258                                 dflt=.
8259                                 ;;
8260                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8261                                 ;;
8262                         esac
8263                 else
8264                         echo "(I cannot locate a hosts database anywhere)"
8265                         dflt=.
8266                 fi
8267                 case "$dflt" in
8268                 .)
8269                         tans=`./loc resolv.conf X /etc /usr/etc`
8270                         if $test -f "$tans"; then
8271                                 echo "(Attempting domain name extraction from $tans)"
8272                                 dflt=.`$sed -n -e 's/   / /g' \
8273                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8274                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8275                                 case "$dflt" in
8276                                 .) dflt=.`$sed -n -e 's/        / /g' \
8277                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8278                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8279                                         ;;
8280                                 esac
8281                         fi
8282                         ;;
8283                 esac
8284                 case "$dflt" in
8285                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8286                         dflt=.`sh -c domainname 2>/dev/null`
8287                         case "$dflt" in
8288                         '') dflt='.';;
8289                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8290                         esac
8291                         ;;
8292                 esac
8293                 case "$dflt$osname" in
8294                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8295                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8296                         ;;
8297                 esac
8298                 case "$dflt" in
8299                 .) echo "(Lost all hope -- silly guess then)"
8300                         dflt='.nonet'
8301                         ;;
8302                 esac
8303                 $rm -f hosts
8304                 ;;
8305         *) dflt="$mydomain";;
8306         esac;;
8307 esac
8308 echo " "
8309 rp="What is your domain name?"
8310 . ./myread
8311 tans="$ans"
8312 case "$ans" in
8313 '') ;;
8314 .*) ;;
8315 *) tans=".$tans";;
8316 esac
8317 mydomain="$tans"
8318
8319 : translate upper to lower if necessary
8320 case "$mydomain" in
8321 *[A-Z]*)
8322         echo "(Normalizing case in your domain name)"
8323         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8324         ;;
8325 esac
8326
8327 : a little sanity check here
8328 case "$phostname" in
8329 '') ;;
8330 *)
8331         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8332         $myhostname$mydomain|$myhostname) ;;
8333         *)
8334                 case "$phostname" in
8335                 sed*)
8336                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8337                         ;;
8338                 *)
8339                         echo "(That doesn't agree with your $phostname command, by the way.)"
8340                         ;;
8341                 esac
8342         ;;
8343         esac
8344         ;;
8345 esac
8346
8347 $cat <<EOM
8348
8349 I need to get your e-mail address in Internet format if possible, i.e.
8350 something like user@host.domain. Please answer accurately since I have
8351 no easy means to double check it. The default value provided below
8352 is most probably close to reality but may not be valid from outside
8353 your organization...
8354
8355 EOM
8356 cont=x
8357 while test "$cont"; do
8358         case "$cf_email" in
8359         '') dflt="$cf_by@$myhostname$mydomain";;
8360         *) dflt="$cf_email";;
8361         esac
8362         rp='What is your e-mail address?'
8363         . ./myread
8364         cf_email="$ans"
8365         case "$cf_email" in
8366         *@*.*) cont='' ;;
8367         *)
8368                 rp='Address does not look like an Internet one.  Use it anyway?'
8369                 case "$fastread" in
8370                 yes) dflt=y ;;
8371                 *) dflt=n ;;
8372                 esac
8373                 . ./myread
8374                 case "$ans" in
8375                 y*) cont='' ;;
8376                 *) echo " " ;;
8377                 esac
8378                 ;;
8379         esac
8380 done
8381
8382 $cat <<EOM
8383
8384 If you or somebody else will be maintaining perl at your site, please
8385 fill in the correct e-mail address here so that they may be contacted
8386 if necessary. Currently, the "perlbug" program included with perl
8387 will send mail to this address in addition to perlbug@perl.org. You may
8388 enter "none" for no administrator.
8389
8390 EOM
8391 case "$perladmin" in
8392 '') dflt="$cf_email";;
8393 *) dflt="$perladmin";;
8394 esac
8395 rp='Perl administrator e-mail address'
8396 . ./myread
8397 perladmin="$ans"
8398
8399 : determine whether to only install version-specific parts.
8400 echo " "
8401 $cat <<EOM
8402 Do you want to install only the version-specific parts of the perl
8403 distribution?  Usually you do *not* want to do this.
8404 EOM
8405 case "$versiononly" in
8406 "$define"|[Yy]*|true) dflt='y' ;;
8407 *) dflt='n';
8408 esac
8409 rp="Do you want to install only the version-specific parts of perl?"
8410 . ./myread
8411 case "$ans" in
8412 [yY]*)  val="$define";;
8413 *)      val="$undef" ;;
8414 esac
8415 set versiononly
8416 eval $setvar
8417
8418 case "$versiononly" in
8419 "$define") inc_version_list=''
8420            inc_version_list_init=0
8421            ;;
8422 esac
8423
8424 : figure out how to guarantee perl startup
8425 case "$startperl" in
8426 '')
8427         case "$sharpbang" in
8428         *!)
8429                 $cat <<EOH
8430
8431 I can use the #! construct to start perl on your system. This will
8432 make startup of perl scripts faster, but may cause problems if you
8433 want to share those scripts and perl is not in a standard place
8434 ($binexp/perl) on all your platforms. The alternative is to force
8435 a shell by starting the script with a single ':' character.
8436
8437 EOH
8438                 case "$versiononly" in
8439                 "$define")      dflt="$binexp/perl$version";;  
8440                 *)              dflt="$binexp/perl";;
8441                 esac
8442                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8443                 . ./myread
8444                 case "$ans" in
8445                 none)   startperl=": # use perl";;
8446                 *)      startperl="#!$ans"
8447                         if $test 30 -lt `echo "$ans" | wc -c`; then
8448                                 $cat >&4 <<EOM
8449
8450 WARNING:  Some systems limit the #! command to 32 characters.
8451 If you experience difficulty running Perl scripts with #!, try
8452 installing Perl in a directory with a shorter pathname.
8453
8454 EOM
8455                         fi ;;
8456                 esac
8457                 ;;
8458         *) startperl=": # use perl"
8459                 ;;
8460         esac
8461         ;;
8462 esac
8463 echo "I'll use $startperl to start perl scripts."
8464
8465 : figure best path for perl in scripts
8466 case "$perlpath" in
8467 '')
8468         case "$versiononly" in
8469         "$define")      perlpath="$binexp/perl$version";;
8470         *)              perlpath="$binexp/perl";;
8471         esac
8472         case "$startperl" in
8473         *!*) ;;
8474         *)
8475                 $cat <<EOH
8476
8477 I will use the "eval 'exec'" idiom to start Perl on your system.
8478 I can use the full path of your Perl binary for this purpose, but
8479 doing so may cause problems if you want to share those scripts and
8480 Perl is not always in a standard place ($binexp/perl).
8481
8482 EOH
8483                 dflt="$binexp/perl"
8484                 rp="What path shall I use in \"eval 'exec'\"?"
8485                 . ./myread
8486                 perlpath="$ans"
8487                 ;;
8488         esac
8489         ;;
8490 esac
8491 case "$startperl" in
8492 *!*)    ;;
8493 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8494 esac
8495
8496 : determine where public executable scripts go
8497 set scriptdir scriptdir
8498 eval $prefixit
8499 case "$scriptdir" in
8500 '')
8501         dflt="$bin"
8502         : guess some guesses
8503         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8504         $test -d /usr/share/bin     && dflt=/usr/share/bin
8505         $test -d /usr/local/script  && dflt=/usr/local/script
8506         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8507         $test -d $prefixexp/script  && dflt=$prefixexp/script
8508         set dflt
8509         eval $prefixup
8510         ;;
8511 *)  dflt="$scriptdir"
8512         ;;
8513 esac
8514 $cat <<EOM
8515  
8516 Some installations have a separate directory just for executable scripts so
8517 that they can mount it across multiple architectures but keep the scripts in
8518 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8519 Or you might just lump your scripts in with all your other executables.
8520  
8521 EOM
8522 fn=d~
8523 rp='Where do you keep publicly executable scripts?'
8524 . ./getfile
8525 if $test "X$ansexp" != "X$scriptdirexp"; then
8526         installscript=''
8527 fi
8528 scriptdir="$ans"
8529 scriptdirexp="$ansexp"
8530 : Change installation prefix, if necessary.
8531 if $test X"$prefix" != X"$installprefix"; then
8532         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8533 else
8534         installscript="$scriptdirexp"
8535 fi
8536
8537 : determine where add-on public executables go
8538 case "$sitebin" in
8539 '')     dflt=$siteprefix/bin ;;
8540 *)      dflt=$sitebin ;;
8541 esac
8542 fn=d~
8543 rp='Pathname where the add-on public executables should be installed?'
8544 . ./getfile
8545 sitebin="$ans"
8546 sitebinexp="$ansexp"
8547 : Change installation prefix, if necessary.
8548 if $test X"$prefix" != X"$installprefix"; then
8549         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8550 else
8551         installsitebin="$sitebinexp"
8552 fi
8553
8554 : determine where add-on html pages go
8555 : There is no standard location, so try to copy the previously-selected
8556 : directory structure for the core html pages.
8557 case "$sitehtml1dir" in
8558 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8559 *)     dflt=$sitehtml1dir ;;
8560 esac
8561 case "$dflt" in
8562 ''|' ') dflt=none ;;
8563 esac
8564 fn=dn+~
8565 rp='Pathname where the site-specific html pages should be installed?'
8566 . ./getfile
8567 sitehtml1dir="$ans"
8568 sitehtml1direxp="$ansexp"
8569 : Change installation prefix, if necessary.
8570 if $test X"$prefix" != X"$installprefix"; then
8571         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8572 else
8573         installsitehtml1dir="$sitehtml1direxp"
8574 fi
8575
8576 : determine where add-on library html pages go
8577 : There is no standard location, so try to copy the previously-selected
8578 : directory structure for the core html pages.
8579 case "$sitehtml3dir" in
8580 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8581 *)     dflt=$sitehtml3dir ;;
8582 esac
8583 case "$dflt" in
8584 ''|' ') dflt=none ;;
8585 esac
8586 fn=dn+~
8587 rp='Pathname where the site-specific library html pages should be installed?'
8588 . ./getfile
8589 sitehtml3dir="$ans"
8590 sitehtml3direxp="$ansexp"
8591 : Change installation prefix, if necessary.
8592 if $test X"$prefix" != X"$installprefix"; then
8593         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8594 else
8595         installsitehtml3dir="$sitehtml3direxp"
8596 fi
8597
8598 : determine where add-on manual pages go
8599 case "$siteman1dir" in
8600 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8601 *)      dflt=$siteman1dir ;;
8602 esac
8603 case "$dflt" in
8604 ''|' ') dflt=none ;;
8605 esac
8606 fn=dn+~
8607 rp='Pathname where the site-specific manual pages should be installed?'
8608 . ./getfile
8609 siteman1dir="$ans"
8610 siteman1direxp="$ansexp"
8611 : Change installation prefix, if necessary.
8612 if $test X"$prefix" != X"$installprefix"; then
8613         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8614 else
8615         installsiteman1dir="$siteman1direxp"
8616 fi
8617
8618 : determine where add-on library man pages go
8619 case "$siteman3dir" in
8620 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8621 *)      dflt=$siteman3dir ;;
8622 esac
8623 case "$dflt" in
8624 ''|' ') dflt=none ;;
8625 esac
8626 fn=dn+~
8627 rp='Pathname where the site-specific library manual pages should be installed?'
8628 . ./getfile
8629 siteman3dir="$ans"
8630 siteman3direxp="$ansexp"
8631 : Change installation prefix, if necessary.
8632 if $test X"$prefix" != X"$installprefix"; then
8633         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8634 else
8635         installsiteman3dir="$siteman3direxp"
8636 fi
8637
8638 : determine where add-on public executable scripts go
8639 case "$sitescript" in
8640 '')     dflt=$siteprefix/script
8641         $test -d $dflt || dflt=$sitebin ;;
8642 *)  dflt="$sitescript" ;;
8643 esac
8644 fn=d~+
8645 rp='Pathname where add-on public executable scripts should be installed?'
8646 . ./getfile
8647 sitescript="$ans"
8648 sitescriptexp="$ansexp"
8649 : Change installation prefix, if necessary.
8650 if $test X"$prefix" != X"$installprefix"; then
8651         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8652 else
8653         installsitescript="$sitescriptexp"
8654 fi
8655
8656 case "$usefaststdio" in
8657 $define|true|[yY]*|'')
8658         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8659         case "$xversion" in
8660         [68])   dflt='y' ;;
8661         *)      dflt='n' ;;
8662         esac
8663         ;;
8664 *) dflt='n';;
8665 esac
8666 cat <<EOM
8667
8668 Perl can be built to use 'fast stdio', which means using the stdio
8669 library but also directly manipulating the stdio buffers to enable
8670 faster I/O.  Using stdio is better for backward compatibility (especially
8671 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8672 interface has been preferred instead of stdio.
8673
8674 If this doesn't make any sense to you, just accept the default '$dflt'.
8675 EOM
8676 rp='Use the "fast stdio" if available?'
8677 . ./myread
8678 case "$ans" in
8679 y|Y)    val="$define" ;;     
8680 *)      val="$undef" ;;
8681 esac
8682 set usefaststdio
8683 eval $setvar
8684
8685
8686 : define an is-a-typedef? function
8687 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8688 case "$inclist" in
8689 "") inclist="sys/types.h";;
8690 esac;
8691 eval "varval=\$$var";
8692 case "$varval" in
8693 "")
8694         $rm -f temp.c;
8695         for inc in $inclist; do
8696                 echo "#include <$inc>" >>temp.c;
8697         done;
8698         echo "#ifdef $type" >> temp.c;
8699         echo "printf(\"We have $type\");" >> temp.c;
8700         echo "#endif" >> temp.c;
8701         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8702         if $contains $type temp.E >/dev/null 2>&1; then
8703                 eval "$var=\$type";
8704         else
8705                 eval "$var=\$def";
8706         fi;
8707         $rm -f temp.?;;
8708 *) eval "$var=\$varval";;
8709 esac'
8710
8711 : define an is-a-typedef? function that prompts if the type is not available.
8712 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8713 case "$inclist" in
8714 "") inclist="sys/types.h";;
8715 esac;
8716 eval "varval=\$$var";
8717 case "$varval" in
8718 "")
8719         $rm -f temp.c;
8720         for inc in $inclist; do
8721                 echo "#include <$inc>" >>temp.c;
8722         done;
8723         echo "#ifdef $type" >> temp.c;
8724         echo "printf(\"We have $type\");" >> temp.c;
8725         echo "#endif" >> temp.c;
8726         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8727         echo " " ;
8728         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8729         if $contains $type temp.E >/dev/null 2>&1; then
8730                 echo "$type found." >&4;
8731                 eval "$var=\$type";
8732         else
8733                 echo "$type NOT found." >&4;
8734                 dflt="$def";
8735                 . ./myread ;
8736                 eval "$var=\$ans";
8737         fi;
8738         $rm -f temp.?;;
8739 *) eval "$var=\$varval";;
8740 esac'
8741
8742 : see what type lseek is declared as in the kernel
8743 rp="What is the type used for lseek's offset on this system?"
8744 set off_t lseektype long stdio.h sys/types.h
8745 eval $typedef_ask
8746
8747 echo " "
8748 echo "Checking to see how big your file offsets are..." >&4
8749 $cat >try.c <<EOCP
8750 #include <sys/types.h>
8751 #include <stdio.h>
8752 int main()
8753 {
8754     printf("%d\n", (int)sizeof($lseektype));
8755     return(0); 
8756 }
8757 EOCP
8758 set try
8759 if eval $compile_ok; then
8760         lseeksize=`$run ./try`
8761         echo "Your file offsets are $lseeksize bytes long."
8762 else
8763         dflt=$longsize
8764         echo " "
8765         echo "(I can't seem to compile the test program.  Guessing...)"
8766         rp="What is the size of your file offsets (in bytes)?"
8767         . ./myread
8768         lseeksize="$ans"
8769 fi
8770 $rm -f try.c try
8771
8772 : see what type file positions are declared as in the library
8773 rp="What is the type for file position used by fsetpos()?"
8774 set fpos_t fpostype long stdio.h sys/types.h
8775 eval $typedef_ask
8776
8777 echo " "
8778 case "$fpostype" in
8779 *_t) zzz="$fpostype"    ;;
8780 *)   zzz="fpos_t"       ;;
8781 esac
8782 echo "Checking the size of $zzz..." >&4 
8783 cat > try.c <<EOCP
8784 #include <sys/types.h>
8785 #include <stdio.h>
8786 #$i_stdlib I_STDLIB
8787 #ifdef I_STDLIB
8788 #include <stdlib.h>
8789 #endif
8790 int main() {
8791     printf("%d\n", (int)sizeof($fpostype));
8792     exit(0);
8793 }
8794 EOCP
8795 set try
8796 if eval $compile_ok; then
8797         yyy=`$run ./try`
8798         case "$yyy" in
8799         '')     fpossize=4
8800                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8801                 ;;
8802         *)      fpossize=$yyy
8803                 echo "Your $zzz is $fpossize bytes long."
8804                 ;;
8805         esac
8806 else
8807         dflt="$longsize"
8808         echo " " >&4
8809         echo "(I can't compile the test program.  Guessing...)" >&4
8810         rp="What is the size of your file positions (in bytes)?"
8811         . ./myread
8812         fpossize="$ans"
8813 fi
8814
8815 # Backward compatibility (uselfs is deprecated).
8816 case "$uselfs" in
8817 "$define"|true|[yY]*)
8818         cat <<EOM >&4
8819
8820 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8821 EOM
8822         uselargefiles="$define"
8823         ;;
8824 esac                          
8825
8826 case "$lseeksize:$fpossize" in
8827 8:8) cat <<EOM
8828
8829 You can have files larger than 2 gigabytes.
8830 EOM
8831    val="$define" ;;
8832 *)    case "$uselargefiles" in
8833    "$undef"|false|[nN]*) dflt='n' ;;
8834    *)   dflt='y' ;;
8835    esac
8836    cat <<EOM
8837
8838 Perl can be built to understand large files (files larger than 2 gigabytes)
8839 on some systems.  To do so, Configure can be run with -Duselargefiles.
8840
8841 If this doesn't make any sense to you, just accept the default '$dflt'.
8842 EOM
8843    rp='Try to understand large files, if available?'
8844    . ./myread
8845    case "$ans" in
8846    y|Y)         val="$define" ;;
8847    *)           val="$undef"  ;;
8848    esac
8849    ;;
8850 esac
8851 set uselargefiles
8852 eval $setvar
8853 case "$uselargefiles" in
8854 "$define")
8855 : Look for a hint-file generated 'call-back-unit'.  If the
8856 : user has specified that a large files perl is to be built,
8857 : we may need to set or change some other defaults.
8858         if $test -f uselargefiles.cbu; then
8859                 echo "Your platform has some specific hints for large file builds, using them..."
8860                 . ./uselargefiles.cbu
8861                 echo " "
8862                 echo "Rechecking to see how big your file offsets are..." >&4
8863                 $cat >try.c <<EOCP
8864 #include <sys/types.h>
8865 #include <stdio.h>
8866 int main()
8867 {
8868     printf("%d\n", (int)sizeof($lseektype));
8869     return(0); 
8870 }
8871 EOCP
8872                 set try
8873                 if eval $compile_ok; then
8874                         lseeksize=`$run ./try`
8875                         $echo "Your file offsets are now $lseeksize bytes long."
8876                 else
8877                         dflt="$lseeksize"
8878                         echo " "
8879                         echo "(I can't seem to compile the test program.  Guessing...)"
8880                         rp="What is the size of your file offsets (in bytes)?"
8881                         . ./myread
8882                         lseeksize="$ans"
8883                 fi
8884                 case "$fpostype" in
8885                 *_t) zzz="$fpostype"    ;;
8886                 *)   zzz="fpos_t"       ;;
8887                 esac
8888                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8889                 $cat > try.c <<EOCP
8890 #include <sys/types.h>
8891 #include <stdio.h>
8892 #$i_stdlib I_STDLIB
8893 #ifdef I_STDLIB
8894 #include <stdlib.h>
8895 #endif
8896 int main() {
8897     printf("%d\n", (int)sizeof($fpostype));
8898     return(0);
8899 }
8900 EOCP
8901                 set try
8902                 if eval $compile_ok; then
8903                         yyy=`$run ./try`
8904                         dflt="$lseeksize"
8905                         case "$yyy" in
8906                         '')     echo " "
8907                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8908                                 ;;
8909                         *)      fpossize=$yyy
8910                                 echo " $fpossize bytes." >&4
8911                                 ;;
8912                         esac
8913                 else
8914                         dflt="$fpossize"
8915                         echo " "
8916                         echo "(I can't compile the test program.  Guessing...)" >&4
8917                         rp="What is the size of your file positions (in bytes)?"
8918                         . ./myread
8919                         fpossize="$ans"
8920                 fi
8921                 $rm -f try.c try
8922         fi
8923         ;;
8924 esac
8925
8926 case "$vendorprefix" in
8927 '')     d_vendorbin="$undef"
8928         vendorbin=''
8929         vendorbinexp=''
8930         ;;
8931 *)      d_vendorbin="$define"
8932         : determine where vendor-supplied executables go.
8933         case "$vendorbin" in
8934         '') dflt=$vendorprefix/bin ;;
8935         *)      dflt="$vendorbin" ;;
8936         esac
8937         fn=d~+
8938         rp='Pathname for the vendor-supplied executables directory?'
8939         . ./getfile
8940         vendorbin="$ans"
8941         vendorbinexp="$ansexp"
8942         ;;
8943 esac
8944 : Change installation prefix, if necessary.
8945 if $test X"$prefix" != X"$installprefix"; then
8946         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8947 else
8948         installvendorbin="$vendorbinexp"
8949 fi
8950
8951 case "$vendorprefix" in
8952 '')     vendorhtml1dir=''
8953         vendorhtml1direxp=''
8954         ;;
8955 *)      : determine where vendor-supplied html pages go.
8956         : There is no standard location, so try to copy the previously-selected
8957         : directory structure for the core html pages.
8958         : XXX Better default suggestions would be welcome.
8959         case "$vendorhtml1dir" in
8960         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8961         *)      dflt=$vendorhtml1dir ;;
8962         esac
8963         case "$dflt" in
8964         ''|' ') dflt=none ;;
8965         esac
8966         fn=dn+~
8967         rp='Pathname for the vendor-supplied html pages?'
8968         . ./getfile
8969         vendorhtml1dir="$ans"
8970         vendorhtml1direxp="$ansexp"
8971         ;;
8972 esac
8973 : Use ' ' for none so value is preserved next time through Configure
8974 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8975 : Change installation prefix, if necessary.
8976 if $test X"$prefix" != X"$installprefix"; then
8977         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
8978 else
8979         installvendorhtml1dir="$vendorhtml1direxp"
8980 fi
8981
8982 case "$vendorprefix" in
8983 '')     vendorhtml3dir=''
8984         vendorhtml3direxp=''
8985         ;;
8986 *)      : determine where vendor-supplied module html pages go.
8987         : There is no standard location, so try to copy the previously-selected
8988         : directory structure for the core html pages.
8989         : XXX Better default suggestions would be welcome.
8990         case "$vendorhtml3dir" in
8991         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8992         *)      dflt=$vendorhtml3dir ;;
8993         esac
8994         case "$dflt" in
8995         ''|' ') dflt=none ;;
8996         esac
8997         fn=dn+~
8998         rp='Pathname for the vendor-supplied html pages?'
8999         . ./getfile
9000         vendorhtml3dir="$ans"
9001         vendorhtml3direxp="$ansexp"
9002         ;;
9003 esac
9004 : Use ' ' for none so value is preserved next time through Configure
9005 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9006 : Change installation prefix, if necessary.
9007 if $test X"$prefix" != X"$installprefix"; then
9008         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9009 else
9010         installvendorhtml3dir="$vendorhtml3direxp"
9011 fi
9012
9013 case "$vendorprefix" in
9014 '')     vendorman1dir=''
9015         vendorman1direxp=''
9016         ;;
9017 *)      : determine where vendor-supplied manual pages go.
9018         case "$vendorman1dir" in
9019         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9020         *)      dflt=$vendorman1dir ;;
9021         esac
9022         case "$dflt" in
9023         ''|' ') dflt=none ;;
9024         esac
9025         fn=nd~+
9026         rp='Pathname for the vendor-supplied manual section 1 pages?'
9027         . ./getfile
9028         vendorman1dir="$ans"
9029         vendorman1direxp="$ansexp"
9030         ;;
9031 esac
9032 : Use ' ' for none so value is preserved next time through Configure
9033 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9034 : Change installation prefix, if necessary.
9035 if $test X"$prefix" != X"$installprefix"; then
9036         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9037 else
9038         installvendorman1dir="$vendorman1direxp"
9039 fi
9040
9041 case "$vendorprefix" in
9042 '')     vendorman3dir=''
9043         vendorman3direxp=''
9044         ;;
9045 *)      : determine where vendor-supplied module manual pages go.
9046         case "$vendorman3dir" in
9047         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9048         *)      dflt=$vendorman3dir ;;
9049         esac
9050         case "$dflt" in
9051         ''|' ') dflt=none ;;
9052         esac
9053         fn=nd~+
9054         rp='Pathname for the vendor-supplied manual section 3 pages?'
9055         . ./getfile
9056         vendorman3dir="$ans"
9057         vendorman3direxp="$ansexp"
9058         ;;
9059 esac
9060 : Use ' ' for none so value is preserved next time through Configure
9061 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9062 : Change installation prefix, if necessary.
9063 if $test X"$prefix" != X"$installprefix"; then
9064         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9065 else
9066         installvendorman3dir="$vendorman3direxp"
9067 fi
9068
9069 case "$vendorprefix" in
9070 '')     d_vendorscript="$undef"
9071         vendorscript=''
9072         vendorscriptexp=''
9073         ;;
9074 *)      d_vendorscript="$define"
9075         : determine where vendor-supplied scripts go.
9076         case "$vendorscript" in
9077         '')     dflt=$vendorprefix/script
9078                 $test -d $dflt || dflt=$vendorbin ;;
9079         *)  dflt="$vendorscript" ;;
9080         esac
9081         $cat <<EOM
9082
9083 The installation process will create a directory for 
9084 vendor-supplied scripts.
9085
9086 EOM
9087         fn=d~+
9088         rp='Pathname for the vendor-supplied scripts directory?'
9089         . ./getfile
9090         vendorscript="$ans"
9091         vendorscriptexp="$ansexp"
9092         ;;
9093 esac
9094 : Change installation prefix, if necessary.
9095 if $test X"$prefix" != X"$installprefix"; then
9096         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9097 else
9098         installvendorscript="$vendorscriptexp"
9099 fi
9100
9101 : see if qgcvt exists
9102 set qgcvt d_qgcvt
9103 eval $inlibc
9104
9105 echo " "
9106
9107 if $test X"$d_longdbl" = X"$define"; then
9108
9109 echo "Checking how to print long doubles..." >&4
9110
9111 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9112         $cat >try.c <<'EOCP'
9113 #include <sys/types.h>
9114 #include <stdio.h>
9115 int main() {
9116   double d = 123.456;
9117   printf("%.3f\n", d);
9118 }
9119 EOCP
9120         set try
9121         if eval $compile; then
9122                 yyy=`$run ./try`
9123                 case "$yyy" in
9124                 123.456)
9125                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9126                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9127                         echo "We will use %f."
9128                         ;;
9129                 esac
9130         fi
9131 fi
9132
9133 if $test X"$sPRIfldbl" = X; then
9134         $cat >try.c <<'EOCP'
9135 #include <sys/types.h>
9136 #include <stdio.h>
9137 int main() {
9138   long double d = 123.456;
9139   printf("%.3Lf\n", d);
9140 }
9141 EOCP
9142         set try
9143         if eval $compile; then
9144                 yyy=`$run ./try`
9145                 case "$yyy" in
9146                 123.456)
9147                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9148                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9149                         echo "We will use %Lf."
9150                         ;;
9151                 esac
9152         fi
9153 fi
9154
9155 if $test X"$sPRIfldbl" = X; then
9156         $cat >try.c <<'EOCP'
9157 #include <sys/types.h>
9158 #include <stdio.h>
9159 int main() {
9160   long double d = 123.456;
9161   printf("%.3llf\n", d);
9162 }
9163 EOCP
9164         set try
9165         if eval $compile; then
9166                 yyy=`$run ./try`
9167                 case "$yyy" in
9168                 123.456)
9169                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9170                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9171                         echo "We will use %llf."
9172                         ;;
9173                 esac
9174         fi
9175 fi
9176
9177 if $test X"$sPRIfldbl" = X; then
9178         $cat >try.c <<'EOCP'
9179 #include <sys/types.h>
9180 #include <stdio.h>
9181 int main() {
9182   long double d = 123.456;
9183   printf("%.3lf\n", d);
9184 }
9185 EOCP
9186         set try
9187         if eval $compile; then
9188                 yyy=`$run ./try`
9189                 case "$yyy" in
9190                 123.456)
9191                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9192                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9193                         echo "We will use %lf."
9194                         ;;
9195                 esac
9196         fi
9197 fi
9198
9199 if $test X"$sPRIfldbl" = X; then
9200         echo "Cannot figure out how to print long doubles." >&4
9201 else
9202         sSCNfldbl=$sPRIfldbl    # expect consistency
9203 fi
9204
9205 $rm -f try try.*
9206
9207 fi # d_longdbl
9208
9209 case "$sPRIfldbl" in
9210 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9211         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9212         d_SCNfldbl="$undef";
9213         ;;
9214 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9215         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9216         d_SCNfldbl="$define";
9217         ;;
9218 esac
9219
9220 : Check how to convert floats to strings.
9221
9222 if test "X$d_Gconvert" = X; then
9223
9224 echo " "
9225 echo "Checking for an efficient way to convert floats to strings."
9226 echo " " > try.c
9227 case "$uselongdouble" in
9228 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9229 esac
9230 case "$d_longdbl" in
9231 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9232 esac
9233 case "$d_PRIgldbl" in
9234 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9235 esac
9236 $cat >>try.c <<EOP
9237 #ifdef TRY_gconvert
9238 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9239 char *myname = "gconvert";
9240 #endif
9241 #ifdef TRY_gcvt
9242 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9243 char *myname = "gcvt";
9244 #endif
9245 #ifdef TRY_qgcvt
9246 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9247 char *myname = "qgcvt";
9248 #define DOUBLETYPE long double
9249 #endif
9250 #ifdef TRY_sprintf
9251 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9252 #ifdef HAS_PRIgldbl
9253 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9254 #else
9255 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9256 #endif
9257 #else
9258 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9259 #endif
9260 char *myname = "sprintf";
9261 #endif
9262
9263 #ifndef DOUBLETYPE
9264 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9265 #define DOUBLETYPE long double
9266 #else
9267 #define DOUBLETYPE double
9268 #endif
9269 #endif
9270
9271 #include <stdio.h>
9272
9273 #define I_STDLIB $i_stdlib
9274 #ifdef I_STDLIB
9275 #include <stdlib.h>
9276 #endif
9277
9278 int
9279 checkit(expect, got)
9280 char *expect;
9281 char *got;
9282 {
9283     if (strcmp(expect, got)) {
9284                 printf("%s oddity:  Expected %s, got %s\n",
9285                         myname, expect, got);
9286                 exit(1);
9287         }
9288 }
9289
9290 int main()
9291
9292         char buf[64]; 
9293         buf[63] = '\0';
9294
9295         /* This must be 1st test on (which?) platform */
9296         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9297         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9298         checkit("0.1", buf);
9299
9300         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9301         checkit("0.01", buf);
9302
9303         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9304         checkit("0.001", buf);
9305
9306         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9307         checkit("0.0001", buf);
9308
9309         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9310         if (strlen(buf) > 5)
9311             checkit("9e-005", buf); /* for Microsoft ?? */
9312         else
9313             checkit("9e-05", buf);
9314
9315         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9316         checkit("1", buf);
9317
9318         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9319         checkit("1.1", buf);
9320
9321         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9322         checkit("1.01", buf);
9323
9324         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9325         checkit("1.001", buf);
9326
9327         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9328         checkit("1.0001", buf);
9329
9330         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9331         checkit("1.00001", buf);
9332
9333         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9334         checkit("1.000001", buf);
9335
9336         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9337         checkit("0", buf);
9338
9339         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9340         checkit("-1", buf);
9341
9342         /* Some Linux gcvt's give 1.e+5 here. */
9343         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9344         checkit("100000", buf);
9345         
9346         /* Some Linux gcvt's give -1.e+5 here. */
9347         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9348         checkit("-100000", buf);
9349
9350         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9351         checkit("123.456", buf);
9352
9353         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9354         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9355         /* 34 should be enough to scare even long double
9356          * places into using the e notation. */
9357         if (strlen(buf) > 5)
9358             checkit("1e+034", buf); /* for Microsoft */
9359         else
9360             checkit("1e+34", buf);
9361
9362         /* For Perl, if you add additional tests here, also add them to
9363          * t/base/num.t for benefit of platforms not using Configure or
9364          * overriding d_Gconvert */
9365
9366         exit(0);
9367 }
9368 EOP
9369 : first add preferred functions to our list
9370 xxx_list=""
9371 for xxx_convert in $gconvert_preference; do
9372     case $xxx_convert in
9373     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9374     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9375     esac 
9376 done
9377 : then add any others
9378 for xxx_convert in gconvert gcvt sprintf; do
9379     case "$xxx_list" in
9380     *$xxx_convert*) ;;
9381     *) xxx_list="$xxx_list $xxx_convert" ;;
9382     esac 
9383 done
9384
9385 case "$d_longdbl$uselongdouble" in
9386 "$define$define")
9387     : again, add prefered functions to our list first
9388     xxx_ld_list=""
9389     for xxx_convert in $gconvert_ld_preference; do
9390         case $xxx_convert in
9391         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9392         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9393         esac
9394     done
9395     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9396     for xxx_convert in qgcvt sprintf $xxx_list; do
9397         case "$xxx_ld_list" in
9398         $xxx_convert*|*" $xxx_convert"*) ;;
9399         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9400         esac
9401     done
9402     : if sprintf cannot do long doubles, move it to the end
9403     if test "$d_PRIgldbl" != "$define"; then
9404         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9405     fi
9406     : if no qgcvt, remove it
9407     if test "$d_qgcvt" != "$define"; then
9408         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9409     fi
9410     : use the ld_list
9411     xxx_list="$xxx_ld_list"
9412     ;;
9413 esac
9414
9415 for xxx_convert in $xxx_list; do
9416         echo "Trying $xxx_convert..."
9417         $rm -f try try$_o
9418         set try -DTRY_$xxx_convert
9419         if eval $compile; then
9420                 echo "$xxx_convert() found." >&4
9421                 if $run ./try; then
9422                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9423                         break;
9424                 else
9425                         echo "...But $xxx_convert didn't work as I expected."
9426                         xxx_convert=''
9427                 fi
9428         else
9429                 echo "$xxx_convert NOT found." >&4
9430         fi
9431 done
9432
9433 if test X$xxx_convert = X; then
9434     echo "*** WHOA THERE!!! ***" >&4
9435     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9436     xxx_convert=sprintf
9437 fi
9438
9439 case "$xxx_convert" in
9440 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9441 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9442 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9443 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9444    "$define$define$define")
9445       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9446    "$define$define$undef")
9447       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9448    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9449    esac
9450    ;;  
9451 esac
9452
9453 fi
9454
9455 : see if _fwalk exists
9456 set fwalk d__fwalk
9457 eval $inlibc
9458
9459 : Initialize h_fcntl
9460 h_fcntl=false
9461
9462 : Initialize h_sysfile
9463 h_sysfile=false
9464
9465 : access call always available on UNIX
9466 set access d_access
9467 eval $inlibc
9468
9469 : locate the flags for 'access()'
9470 case "$d_access" in
9471 "$define")
9472         echo " "
9473         $cat >access.c <<EOCP
9474 #include <sys/types.h>
9475 #ifdef I_FCNTL
9476 #include <fcntl.h>
9477 #endif
9478 #ifdef I_SYS_FILE
9479 #include <sys/file.h>
9480 #endif
9481 #ifdef I_UNISTD
9482 #include <unistd.h>
9483 #endif
9484 #$i_stdlib I_STDLIB
9485 #ifdef I_STDLIB
9486 #include <stdlib.h>
9487 #endif
9488 int main() {
9489         exit(R_OK);
9490 }
9491 EOCP
9492         : check sys/file.h first, no particular reason here
9493         if $test `./findhdr sys/file.h` && \
9494                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9495                 h_sysfile=true;
9496                 echo "<sys/file.h> defines the *_OK access constants." >&4
9497         elif $test `./findhdr fcntl.h` && \
9498                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9499                 h_fcntl=true;
9500                 echo "<fcntl.h> defines the *_OK access constants." >&4
9501         elif $test `./findhdr unistd.h` && \
9502                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9503                 echo "<unistd.h> defines the *_OK access constants." >&4
9504         else
9505                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9506         fi
9507         ;;
9508 esac
9509 $rm -f access*
9510
9511 : see if accessx exists
9512 set accessx d_accessx
9513 eval $inlibc
9514
9515 : see if aintl exists
9516 set aintl d_aintl
9517 eval $inlibc
9518
9519 : see if alarm exists
9520 set alarm d_alarm
9521 eval $inlibc
9522
9523 : see if POSIX threads are available
9524 set pthread.h i_pthread
9525 eval $inhdr
9526
9527 : define a fucntion to check prototypes
9528 $cat > protochk <<EOSH
9529 $startsh
9530 cc="$cc"
9531 optimize="$optimize"
9532 ccflags="$ccflags"
9533 prototype="$prototype"
9534 define="$define"
9535 rm=$rm
9536 usethreads=$usethreads
9537 i_pthread=$i_pthread
9538 pthread_h_first=$pthread_h_first
9539 EOSH
9540
9541 $cat >> protochk <<'EOSH'
9542
9543 $rm -f try.c
9544 foo="$1"
9545 shift
9546 while test $# -ge 2; do
9547         case "$1" in
9548                 $define) echo "#include <$2>" >> try.c ;;
9549                 literal) echo "$2" >> try.c ;;
9550         esac
9551     # Extra magic for the benefit of systems that need pthread.h
9552     # to be included early to correctly detect threadsafe functions.
9553     # Such functions must guarantee themselves, though, that the usethreads
9554     # and i_pthread have been defined, before calling protochk.
9555     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9556         echo "#include <pthread.h>" >> try.c
9557         pthread_h_done=yes
9558     fi
9559     shift 2
9560 done
9561 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9562 cat >> try.c <<'EOCP'
9563 #ifdef CAN_PROTOTYPE
9564 #define _(args) args
9565 #else
9566 #define _(args) ()
9567 #endif
9568 EOCP
9569 echo "$foo" >> try.c
9570 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9571 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9572 status=$?
9573 $rm -f try.[co]
9574 exit $status
9575 EOSH
9576 chmod +x protochk
9577 $eunicefix protochk
9578
9579 hasproto='varname=$1; func=$2; shift; shift;
9580 while $test $# -ge 2; do
9581         case "$1" in
9582         $define) echo "#include <$2>";;
9583         esac ;
9584     shift 2;
9585 done > try.c;
9586 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9587 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9588         echo "$func() prototype found.";
9589         val="$define";
9590 else
9591         echo "$func() prototype NOT found.";
9592         val="$undef";
9593 fi;
9594 set $varname;
9595 eval $setvar;
9596 $rm -f try.c tryout.c'
9597
9598 : see if sys/types.h has to be included
9599 set sys/types.h i_systypes
9600 eval $inhdr
9601
9602 : see if sys/select.h has to be included
9603 set sys/select.h i_sysselct
9604 eval $inhdr
9605
9606 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9607 while $test $# -ge 2; do
9608         case "$1" in
9609         $define) echo "#include <$2>";;
9610         esac ;
9611     shift 2;
9612 done > try.c;
9613 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9614 set try;
9615 if eval $compile; then
9616         val="$define";
9617 else
9618         val="$undef";
9619 fi;
9620 set $varname;
9621 eval $setvar;
9622 $rm -f try.c try.o'
9623
9624 : see if we should include time.h, sys/time.h, or both
9625 echo " "
9626 if test "X$timeincl" = X; then
9627         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9628         $echo $n "I'm now running the test program...$c"
9629         $cat >try.c <<EOCP
9630 #include <sys/types.h>
9631 #ifdef I_TIME
9632 #include <time.h>
9633 #endif
9634 #ifdef I_SYSTIME
9635 #ifdef SYSTIMEKERNEL
9636 #define KERNEL
9637 #endif
9638 #include <sys/time.h>
9639 #endif
9640 #ifdef I_SYSSELECT
9641 #include <sys/select.h>
9642 #endif
9643 #$i_stdlib I_STDLIB
9644 #ifdef I_STDLIB
9645 #include <stdlib.h>
9646 #endif
9647 int main()
9648 {
9649         struct tm foo;
9650 #ifdef S_TIMEVAL
9651         struct timeval bar;
9652 #endif
9653 #ifdef S_TIMEZONE
9654         struct timezone tzp;
9655 #endif
9656         if (foo.tm_sec == foo.tm_sec)
9657                 exit(0);
9658 #ifdef S_TIMEVAL
9659         if (bar.tv_sec == bar.tv_sec)
9660                 exit(0);
9661 #endif
9662         exit(1);
9663 }
9664 EOCP
9665         flags=''
9666         for s_timezone in '-DS_TIMEZONE' ''; do
9667         sysselect=''
9668         for s_timeval in '-DS_TIMEVAL' ''; do
9669         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9670         for i_time in '' '-DI_TIME'; do
9671         for i_systime in '-DI_SYSTIME' ''; do
9672                 case "$flags" in
9673                 '') $echo $n ".$c"
9674                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9675                         if eval $compile; then
9676                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9677                                 shift
9678                                 flags="$*"
9679                                 echo " "
9680                                 $echo $n "Succeeded with $flags$c"
9681                         fi
9682                         ;;
9683                 esac
9684         done
9685         done
9686         done
9687         done
9688         done
9689         timeincl=''
9690         echo " "
9691         case "$flags" in
9692         *SYSTIMEKERNEL*) i_systimek="$define"
9693                 timeincl=`./findhdr sys/time.h`
9694                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9695         *) i_systimek="$undef";;
9696         esac
9697         case "$flags" in
9698         *I_TIME*) i_time="$define"
9699                 timeincl=`./findhdr time.h`" $timeincl"
9700                 echo "We'll include <time.h>." >&4;;
9701         *) i_time="$undef";;
9702         esac
9703         case "$flags" in
9704         *I_SYSTIME*) i_systime="$define"
9705                 timeincl=`./findhdr sys/time.h`" $timeincl"
9706                 echo "We'll include <sys/time.h>." >&4;;
9707         *) i_systime="$undef";;
9708         esac
9709         $rm -f try.c try
9710 fi
9711 : see if struct tm knows about tm_zone
9712 case "$i_systime$i_time" in
9713 *$define*) 
9714         echo " "
9715         echo "Checking to see if your struct tm has tm_zone field..." >&4
9716         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9717         eval $hasfield
9718         ;;
9719 *)      val="$undef"
9720         set d_tm_tm_zone
9721         eval $setvar
9722         ;;
9723 esac
9724 case "$d_tm_tm_zone" in
9725 "$define")      echo "Yes, it does."   ;;
9726 *)              echo "No, it doesn't." ;;
9727 esac
9728 : see if struct tm knows about tm_gmtoff
9729 case "$i_systime$i_time" in
9730 *$define*) 
9731         echo " "
9732         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9733         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9734         eval $hasfield
9735         ;;
9736 *)      val="$undef"
9737         set d_tm_tm_gmtoff
9738         eval $setvar
9739         ;;
9740 esac
9741 case "$d_tm_tm_gmtoff" in
9742 "$define")      echo "Yes, it does."   ;;
9743 *)              echo "No, it doesn't." ;;
9744 esac
9745
9746 : see if asctime_r exists
9747 set asctime_r d_asctime_r
9748 eval $inlibc
9749 case "$d_asctime_r" in
9750 "$define")
9751         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9752         case "$d_asctime_r_proto:$usethreads" in
9753         ":define")      d_asctime_r_proto=define
9754                 set d_asctime_r_proto asctime_r $hdrs
9755                 eval $hasproto ;;
9756         *)      ;;
9757         esac
9758         case "$d_asctime_r_proto" in
9759         define)
9760         case "$asctime_r_proto" in
9761         ''|0) try='char* asctime_r(const struct tm*, char*);'
9762         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9763         esac
9764         case "$asctime_r_proto" in
9765         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9766         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9767         esac
9768         case "$asctime_r_proto" in
9769         ''|0) try='int asctime_r(const struct tm*, char*);'
9770         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9771         esac
9772         case "$asctime_r_proto" in
9773         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9774         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9775         esac
9776         case "$asctime_r_proto" in
9777         ''|0)   d_asctime_r=undef
9778                 asctime_r_proto=0
9779                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9780         * )     case "$asctime_r_proto" in
9781                 REENTRANT_PROTO*) ;;
9782                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9783                 esac
9784                 echo "Prototype: $try" ;;
9785         esac
9786         ;;
9787         *)      case "$usethreads" in
9788                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9789                 esac
9790                 d_asctime_r=undef
9791                 asctime_r_proto=0
9792                 ;;
9793         esac
9794         ;;
9795 *)      asctime_r_proto=0
9796         ;;
9797 esac
9798
9799 : see if atolf exists
9800 set atolf d_atolf
9801 eval $inlibc
9802
9803 : see if atoll exists
9804 set atoll d_atoll
9805 eval $inlibc
9806
9807 : Look for GNU-cc style attribute checking
9808 echo " "
9809 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9810 $cat >attrib.c <<'EOCP'
9811 #include <stdio.h>
9812 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9813 EOCP
9814 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9815         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9816                 echo "Your C compiler doesn't fully support __attribute__."
9817                 val="$undef"
9818         else
9819                 echo "Your C compiler supports __attribute__."
9820                 val="$define"
9821         fi
9822 else
9823         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9824         val="$undef"
9825 fi
9826 set d_attribut
9827 eval $setvar
9828 $rm -f attrib*
9829
9830 : see if bcmp exists
9831 set bcmp d_bcmp
9832 eval $inlibc
9833
9834 : see if bcopy exists
9835 set bcopy d_bcopy
9836 eval $inlibc
9837
9838 : see if this is a unistd.h system
9839 set unistd.h i_unistd
9840 eval $inhdr
9841
9842 : see if getpgrp exists
9843 set getpgrp d_getpgrp
9844 eval $inlibc
9845
9846 case "$d_getpgrp" in
9847 "$define")
9848         echo " "
9849         echo "Checking to see which flavor of getpgrp is in use..."
9850         $cat >try.c <<EOP
9851 #$i_unistd I_UNISTD
9852 #include <sys/types.h>
9853 #ifdef I_UNISTD
9854 #  include <unistd.h>
9855 #endif
9856 #$i_stdlib I_STDLIB
9857 #ifdef I_STDLIB
9858 #include <stdlib.h>
9859 #endif
9860 int main()
9861 {
9862         if (getuid() == 0) {
9863                 printf("(I see you are running Configure as super-user...)\n");
9864                 setuid(1);
9865         }
9866 #ifdef TRY_BSD_PGRP
9867         if (getpgrp(1) == 0)
9868                 exit(0);
9869 #else
9870         if (getpgrp() > 0)
9871                 exit(0);
9872 #endif
9873         exit(1);
9874 }
9875 EOP
9876         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9877                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9878                 val="$define"
9879         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9880                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9881                 val="$undef"
9882         else
9883                 echo "I can't seem to compile and run the test program."
9884                 if ./usg; then
9885                         xxx="a USG one, i.e. you use getpgrp()."
9886                 else
9887                         # SVR4 systems can appear rather BSD-ish.
9888                         case "$i_unistd" in
9889                         $undef)
9890                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9891                                 val="$define"
9892                                 ;;
9893                         $define)
9894                                 xxx="probably a USG one, i.e. you use getpgrp()."
9895                                 val="$undef"
9896                                 ;;
9897                         esac
9898                 fi
9899                 echo "Assuming your getpgrp is $xxx" >&4
9900         fi
9901         ;;
9902 *) val="$undef";;
9903 esac
9904 set d_bsdgetpgrp
9905 eval $setvar
9906 $rm -f try try.*
9907
9908 : see if setpgrp exists
9909 set setpgrp d_setpgrp
9910 eval $inlibc
9911
9912 case "$d_setpgrp" in
9913 "$define")
9914         echo " "
9915         echo "Checking to see which flavor of setpgrp is in use..."
9916         $cat >try.c <<EOP
9917 #$i_unistd I_UNISTD
9918 #include <sys/types.h>
9919 #ifdef I_UNISTD
9920 #  include <unistd.h>
9921 #endif
9922 #$i_stdlib I_STDLIB
9923 #ifdef I_STDLIB
9924 #include <stdlib.h>
9925 #endif
9926 int main()
9927 {
9928         if (getuid() == 0) {
9929                 printf("(I see you are running Configure as super-user...)\n");
9930                 setuid(1);
9931         }
9932 #ifdef TRY_BSD_PGRP
9933         if (-1 == setpgrp(1, 1))
9934                 exit(0);
9935 #else
9936         if (setpgrp() != -1)
9937                 exit(0);
9938 #endif
9939         exit(1);
9940 }
9941 EOP
9942         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9943                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9944                 val="$define"
9945         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9946                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9947                 val="$undef"
9948         else
9949                 echo "(I can't seem to compile and run the test program.)"
9950                 if ./usg; then
9951                         xxx="a USG one, i.e. you use setpgrp()."
9952                 else
9953                         # SVR4 systems can appear rather BSD-ish.
9954                         case "$i_unistd" in
9955                         $undef)
9956                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9957                                 val="$define"
9958                                 ;;
9959                         $define)
9960                                 xxx="probably a USG one, i.e. you use setpgrp()."
9961                                 val="$undef"
9962                                 ;;
9963                         esac
9964                 fi
9965                 echo "Assuming your setpgrp is $xxx" >&4
9966         fi
9967         ;;
9968 *) val="$undef";;
9969 esac
9970 set d_bsdsetpgrp
9971 eval $setvar
9972 $rm -f try try.*
9973 : see if bzero exists
9974 set bzero d_bzero
9975 eval $inlibc
9976
9977 : see if signal is declared as pointer to function returning int or void
9978 echo " "
9979 xxx=`./findhdr signal.h`
9980 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9981 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9982         echo "You have int (*signal())() instead of void." >&4
9983         val="$undef"
9984 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9985         echo "You have void (*signal())()." >&4
9986         val="$define"
9987 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9988         echo "You have int (*signal())() instead of void." >&4
9989         val="$undef"
9990 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9991         echo "You have void (*signal())()." >&4
9992         val="$define"
9993 else
9994         case "$d_voidsig" in
9995         '')
9996         echo "I can't determine whether signal handler returns void or int..." >&4
9997                 dflt=void
9998                 rp="What type does your signal handler return?"
9999                 . ./myread
10000                 case "$ans" in
10001                 v*) val="$define";;
10002                 *) val="$undef";;
10003                 esac;;
10004         "$define")
10005                 echo "As you already told me, signal handler returns void." >&4
10006                 val="$define"
10007                 ;;
10008         *)      echo "As you already told me, signal handler returns int." >&4
10009                 val="$undef"
10010                 ;;
10011         esac
10012 fi
10013 set d_voidsig
10014 eval $setvar
10015 case "$d_voidsig" in
10016 "$define") signal_t="void";;
10017 *) signal_t="int";;
10018 esac
10019 $rm -f $$.tmp
10020
10021 : check for ability to cast large floats to 32-bit ints.
10022 echo " "
10023 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10024 if $test "$intsize" -ge 4; then
10025         xxx=int
10026 else
10027         xxx=long
10028 fi
10029 $cat >try.c <<EOCP
10030 #include <stdio.h>
10031 #$i_stdlib I_STDLIB
10032 #ifdef I_STDLIB
10033 #include <stdlib.h>
10034 #endif
10035 #include <sys/types.h>
10036 #include <signal.h>
10037 $signal_t blech(s) int s; { exit(3); }
10038 int main()
10039 {
10040         $xxx i32;
10041         double f, g;
10042         int result = 0;
10043         char str[16];
10044         signal(SIGFPE, blech);
10045
10046         /* Don't let compiler optimize the test away.  Store the number 
10047            in a writable string for gcc to pass to sscanf under HP/UX.
10048         */
10049         sprintf(str, "2147483647");
10050         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10051         g = 10 * f;
10052         i32  = ($xxx) g;
10053
10054         /* x86 processors will probably give 0x8000 0000, which is a
10055        sign change.  We don't want that.  We want to mimic SPARC
10056            behavior here, which is to preserve the sign and give
10057            back 0x7fff ffff.
10058         */
10059         if (i32 != ($xxx) f)
10060                 result |= 1;
10061         exit(result);
10062 }
10063 EOCP
10064 set try
10065 if eval $compile_ok; then
10066         $run ./try
10067         yyy=$?
10068 else
10069         echo "(I can't seem to compile the test program--assuming it can't)"
10070         yyy=1
10071 fi
10072 case "$yyy" in
10073 0)      val="$define"
10074         echo "Yup, it can."
10075         ;;
10076 *)      val="$undef"
10077         echo "Nope, it can't."
10078         ;;
10079 esac
10080 set d_casti32
10081 eval $setvar
10082 $rm -f try try.*
10083
10084 : check for ability to cast negative floats to unsigned
10085 echo " "
10086 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10087 $cat >try.c <<EOCP
10088 #include <stdio.h>
10089 #$i_stdlib I_STDLIB
10090 #ifdef I_STDLIB
10091 #include <stdlib.h>
10092 #endif
10093 #include <sys/types.h>
10094 #include <signal.h>
10095 $signal_t blech(s) int s; { exit(7); }
10096 $signal_t blech_in_list(s) int s; { exit(4); }
10097 unsigned long dummy_long(p) unsigned long p; { return p; }
10098 unsigned int dummy_int(p) unsigned int p; { return p; }
10099 unsigned short dummy_short(p) unsigned short p; { return p; }
10100 int main()
10101 {
10102         double f;
10103         unsigned long along;
10104         unsigned int aint;
10105         unsigned short ashort;
10106         int result = 0;
10107         char str[16];
10108         
10109         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10110            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10111            optimized the whole file away
10112         */
10113         /* Store the number in a writable string for gcc to pass to 
10114            sscanf under HP/UX.
10115         */
10116         sprintf(str, "-123");
10117         sscanf(str, "%lf", &f);  /* f = -123.; */
10118
10119         signal(SIGFPE, blech);
10120         along = (unsigned long)f;
10121         aint = (unsigned int)f;
10122         ashort = (unsigned short)f;
10123         if (along != (unsigned long)-123)
10124                 result |= 1;
10125         if (aint != (unsigned int)-123)
10126                 result |= 1;
10127         if (ashort != (unsigned short)-123)
10128                 result |= 1;
10129         sprintf(str, "1073741824.");
10130         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10131         f = f + f;
10132         along = 0;
10133         along = (unsigned long)f;
10134         if (along != 0x80000000)
10135                 result |= 2;
10136         f -= 1.;
10137         along = 0;
10138         along = (unsigned long)f;
10139         if (along != 0x7fffffff)
10140                 result |= 1;
10141         f += 2.;
10142         along = 0;
10143         along = (unsigned long)f;
10144         if (along != 0x80000001)
10145                 result |= 2;
10146         if (result)
10147                 exit(result);
10148         signal(SIGFPE, blech_in_list);
10149         sprintf(str, "123.");
10150         sscanf(str, "%lf", &f);  /* f = 123.; */
10151         along = dummy_long((unsigned long)f);
10152         aint = dummy_int((unsigned int)f);
10153         ashort = dummy_short((unsigned short)f);
10154         if (along != (unsigned long)123)
10155                 result |= 4;
10156         if (aint != (unsigned int)123)
10157                 result |= 4;
10158         if (ashort != (unsigned short)123)
10159                 result |= 4;
10160         exit(result);
10161
10162 }
10163 EOCP
10164 set try
10165 if eval $compile_ok; then
10166         $run ./try
10167         castflags=$?
10168 else
10169         echo "(I can't seem to compile the test program--assuming it can't)"
10170         castflags=7
10171 fi
10172 case "$castflags" in
10173 0)      val="$define"
10174         echo "Yup, it can."
10175         ;;
10176 *)      val="$undef"
10177         echo "Nope, it can't."
10178         ;;
10179 esac
10180 set d_castneg
10181 eval $setvar
10182 $rm -f try.*
10183
10184 : see if vprintf exists
10185 echo " "
10186 if set vprintf val -f d_vprintf; eval $csym; $val; then
10187         echo 'vprintf() found.' >&4
10188         val="$define"
10189         $cat >try.c <<EOF
10190 #include <varargs.h>
10191 #$i_stdlib I_STDLIB
10192 #ifdef I_STDLIB
10193 #include <stdlib.h>
10194 #endif
10195
10196 int main() { xxx("foo"); }
10197
10198 xxx(va_alist)
10199 va_dcl
10200 {
10201         va_list args;
10202         char buf[10];
10203
10204         va_start(args);
10205         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10206 }
10207 EOF
10208         set try
10209         if eval $compile && $run ./try; then
10210                 echo "Your vsprintf() returns (int)." >&4
10211                 val2="$undef"
10212         else
10213                 echo "Your vsprintf() returns (char*)." >&4
10214                 val2="$define"
10215         fi
10216 else
10217         echo 'vprintf() NOT found.' >&4
10218                 val="$undef"
10219                 val2="$undef"
10220 fi
10221 $rm -f try try.*
10222 set d_vprintf
10223 eval $setvar
10224 val=$val2
10225 set d_charvspr
10226 eval $setvar
10227
10228 : see if chown exists
10229 set chown d_chown
10230 eval $inlibc
10231
10232 : see if chroot exists
10233 set chroot d_chroot
10234 eval $inlibc
10235
10236 : see if chsize exists
10237 set chsize d_chsize
10238 eval $inlibc
10239
10240 : see if class exists
10241 set class d_class
10242 eval $inlibc
10243
10244 hasstruct='varname=$1; struct=$2; shift; shift;
10245 while $test $# -ge 2; do
10246         case "$1" in
10247         $define) echo "#include <$2>";;
10248         esac ;
10249     shift 2;
10250 done > try.c;
10251 echo "int main () { struct $struct foo; }" >> try.c;
10252 set try;
10253 if eval $compile; then
10254         val="$define";
10255 else
10256         val="$undef";
10257 fi;
10258 set $varname;
10259 eval $setvar;
10260 $rm -f try.c try.o'
10261
10262 socketlib=''
10263 sockethdr=''
10264 : see whether socket exists
10265 echo " "
10266 $echo $n "Hmm... $c" >&4
10267 if set socket val -f d_socket; eval $csym; $val; then
10268         echo "Looks like you have Berkeley networking support." >&4
10269         d_socket="$define"
10270         if set setsockopt val -f; eval $csym; $val; then
10271                 d_oldsock="$undef"
10272         else
10273                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10274                 d_oldsock="$define"
10275         fi
10276 else
10277         if $contains socklib libc.list >/dev/null 2>&1; then
10278                 echo "Looks like you have Berkeley networking support." >&4
10279                 d_socket="$define"
10280                 : we will have to assume that it supports the 4.2 BSD interface
10281                 d_oldsock="$undef"
10282         else
10283                 echo "You don't have Berkeley networking in libc$_a..." >&4
10284                 if test "X$d_socket" = "X$define"; then
10285                    echo "...but you seem to believe that you have sockets." >&4
10286                 else
10287                         for net in net socket
10288                         do
10289                                 if test -f /usr/lib/lib$net$_a; then
10290                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10291                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10292                                         if $contains socket libc.list >/dev/null 2>&1; then
10293                                                 d_socket="$define"
10294                                                 socketlib="-l$net"
10295                                                 case "$net" in
10296                                                 net)
10297                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10298                                                         sockethdr="-I/usr/netinclude"
10299                                                         ;;
10300                                                 esac
10301                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10302                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10303                                                         d_oldsock="$undef"
10304                                                 else
10305                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10306                                                         d_oldsock="$define"
10307                                                 fi
10308                                                 break
10309                                         fi
10310                                 fi
10311                         done
10312                         if test "X$d_socket" != "X$define"; then
10313                            echo "or anywhere else I see." >&4
10314                            d_socket="$undef"
10315                            d_oldsock="$undef"
10316                         fi
10317                 fi
10318         fi
10319 fi
10320
10321 : see if socketpair exists
10322 set socketpair d_sockpair
10323 eval $inlibc
10324
10325
10326 echo " "
10327 echo "Checking the availability of certain socket constants..." >&4
10328 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10329         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10330         $cat >try.c <<EOF
10331 #include <sys/types.h>
10332 #include <sys/socket.h>
10333 int main() {
10334     int i = $ENUM;
10335 }
10336 EOF
10337         val="$undef"
10338         set try; if eval $compile; then
10339                 val="$define"
10340         fi
10341         set d_${enum}; eval $setvar
10342         $rm -f try.c try
10343 done
10344
10345 : see if this is a sys/uio.h system
10346 set sys/uio.h i_sysuio
10347 eval $inhdr
10348
10349
10350 echo " "
10351 echo "Checking to see if your system supports struct cmsghdr..." >&4
10352 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10353 eval $hasstruct
10354 case "$d_cmsghdr_s" in
10355 "$define")      echo "Yes, it does."   ;;
10356 *)              echo "No, it doesn't." ;;
10357 esac
10358
10359
10360 : check for const keyword
10361 echo " "
10362 echo 'Checking to see if your C compiler knows about "const"...' >&4
10363 $cat >const.c <<'EOCP'
10364 typedef struct spug { int drokk; } spug;
10365 int main()
10366 {
10367         const char *foo;
10368         const spug y;
10369 }
10370 EOCP
10371 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10372         val="$define"
10373         echo "Yup, it does."
10374 else
10375         val="$undef"
10376         echo "Nope, it doesn't."
10377 fi
10378 set d_const
10379 eval $setvar
10380
10381 : see if copysignl exists
10382 set copysignl d_copysignl
10383 eval $inlibc
10384
10385 : see if crypt exists
10386 echo " "
10387 set crypt d_crypt
10388 eval $inlibc
10389 case "$d_crypt" in
10390 $define) cryptlib='' ;;
10391 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10392                 echo 'crypt() found.' >&4
10393                 val="$define"
10394                 cryptlib=''
10395         else
10396                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10397                 if $test -z "$cryptlib"; then
10398                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10399                 else
10400                         cryptlib=-lcrypt
10401                 fi
10402                 if $test -z "$cryptlib"; then
10403                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10404                 else
10405                         cryptlib=-lcrypt
10406                 fi
10407                 if $test -z "$cryptlib"; then
10408                         cryptlib=`./loc libcrypt$_a "" $libpth`
10409                 else
10410                         cryptlib=-lcrypt
10411                 fi
10412                 if $test -z "$cryptlib"; then
10413                         echo 'crypt() NOT found.' >&4
10414                         val="$undef"
10415                 else
10416                         val="$define"
10417                 fi
10418         fi
10419         set d_crypt
10420         eval $setvar
10421         ;;
10422 esac
10423
10424 : see if this is a crypt.h system
10425 set crypt.h i_crypt
10426 eval $inhdr
10427
10428 : see if crypt_r exists
10429 set crypt_r d_crypt_r
10430 eval $inlibc
10431 case "$d_crypt_r" in
10432 "$define")
10433         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10434         case "$d_crypt_r_proto:$usethreads" in
10435         ":define")      d_crypt_r_proto=define
10436                 set d_crypt_r_proto crypt_r $hdrs
10437                 eval $hasproto ;;
10438         *)      ;;
10439         esac
10440         case "$d_crypt_r_proto" in
10441         define)
10442         case "$crypt_r_proto" in
10443         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10444         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10445         esac
10446         case "$crypt_r_proto" in
10447         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10448         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10449         esac
10450         case "$crypt_r_proto" in
10451         ''|0)   d_crypt_r=undef
10452                 crypt_r_proto=0
10453                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10454         * )     case "$crypt_r_proto" in
10455                 REENTRANT_PROTO*) ;;
10456                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10457                 esac
10458                 echo "Prototype: $try" ;;
10459         esac
10460         ;;
10461         *)      case "$usethreads" in
10462                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10463                 esac
10464                 d_crypt_r=undef
10465                 crypt_r_proto=0
10466                 ;;
10467         esac
10468         ;;
10469 *)      crypt_r_proto=0
10470         ;;
10471 esac
10472
10473 : get csh whereabouts
10474 case "$csh" in
10475 'csh') val="$undef" ;;
10476 *) val="$define" ;;
10477 esac
10478 set d_csh
10479 eval $setvar
10480 : Respect a hint or command line value for full_csh.
10481 case "$full_csh" in
10482 '') full_csh=$csh ;;
10483 esac
10484
10485 : see if ctermid_r exists
10486 set ctermid_r d_ctermid_r
10487 eval $inlibc
10488 case "$d_ctermid_r" in
10489 "$define")
10490         hdrs="$i_systypes sys/types.h define stdio.h "
10491         case "$d_ctermid_r_proto:$usethreads" in
10492         ":define")      d_ctermid_r_proto=define
10493                 set d_ctermid_r_proto ctermid_r $hdrs
10494                 eval $hasproto ;;
10495         *)      ;;
10496         esac
10497         case "$d_ctermid_r_proto" in
10498         define)
10499         case "$ctermid_r_proto" in
10500         ''|0) try='char* ctermid_r(char*);'
10501         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10502         esac
10503         case "$ctermid_r_proto" in
10504         ''|0)   d_ctermid_r=undef
10505                 ctermid_r_proto=0
10506                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10507         * )     case "$ctermid_r_proto" in
10508                 REENTRANT_PROTO*) ;;
10509                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10510                 esac
10511                 echo "Prototype: $try" ;;
10512         esac
10513         ;;
10514         *)      case "$usethreads" in
10515                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10516                 esac
10517                 d_ctermid_r=undef
10518                 ctermid_r_proto=0
10519                 ;;
10520         esac
10521         ;;
10522 *)      ctermid_r_proto=0
10523         ;;
10524 esac
10525
10526 : see if ctime_r exists
10527 set ctime_r d_ctime_r
10528 eval $inlibc
10529 case "$d_ctime_r" in
10530 "$define")
10531         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10532         case "$d_ctime_r_proto:$usethreads" in
10533         ":define")      d_ctime_r_proto=define
10534                 set d_ctime_r_proto ctime_r $hdrs
10535                 eval $hasproto ;;
10536         *)      ;;
10537         esac
10538         case "$d_ctime_r_proto" in
10539         define)
10540         case "$ctime_r_proto" in
10541         ''|0) try='char* ctime_r(const time_t*, char*);'
10542         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10543         esac
10544         case "$ctime_r_proto" in
10545         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10546         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10547         esac
10548         case "$ctime_r_proto" in
10549         ''|0) try='int ctime_r(const time_t*, char*);'
10550         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10551         esac
10552         case "$ctime_r_proto" in
10553         ''|0) try='int ctime_r(const time_t*, char*, int);'
10554         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10555         esac
10556         case "$ctime_r_proto" in
10557         ''|0)   d_ctime_r=undef
10558                 ctime_r_proto=0
10559                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10560         * )     case "$ctime_r_proto" in
10561                 REENTRANT_PROTO*) ;;
10562                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10563                 esac
10564                 echo "Prototype: $try" ;;
10565         esac
10566         ;;
10567         *)      case "$usethreads" in
10568                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10569                 esac
10570                 d_ctime_r=undef
10571                 ctime_r_proto=0
10572                 ;;
10573         esac
10574         ;;
10575 *)      ctime_r_proto=0
10576         ;;
10577 esac
10578
10579 : see if cuserid exists
10580 set cuserid d_cuserid
10581 eval $inlibc
10582
10583 : see if this is a limits.h system
10584 set limits.h i_limits
10585 eval $inhdr
10586
10587 : see if this is a float.h system
10588 set float.h i_float
10589 eval $inhdr
10590
10591 : See if number of significant digits in a double precision number is known
10592 echo " "
10593 $cat >dbl_dig.c <<EOM
10594 #$i_limits I_LIMITS
10595 #$i_float I_FLOAT
10596 #ifdef I_LIMITS
10597 #include <limits.h>
10598 #endif
10599 #ifdef I_FLOAT
10600 #include <float.h>
10601 #endif
10602 #ifdef DBL_DIG
10603 printf("Contains DBL_DIG");
10604 #endif
10605 EOM
10606 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10607 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10608         echo "DBL_DIG found." >&4
10609         val="$define"
10610 else
10611         echo "DBL_DIG NOT found." >&4
10612         val="$undef"
10613 fi
10614 $rm -f dbl_dig.?
10615 set d_dbl_dig
10616 eval $setvar
10617
10618 : see if dbm.h is available
10619 : see if dbmclose exists
10620 set dbmclose d_dbmclose
10621 eval $inlibc
10622
10623 case "$d_dbmclose" in
10624 $define)
10625         set dbm.h i_dbm
10626         eval $inhdr
10627         case "$i_dbm" in
10628         $define)
10629                 val="$undef"
10630                 set i_rpcsvcdbm
10631                 eval $setvar
10632                 ;;
10633         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10634                 eval $inhdr
10635                 ;;
10636         esac
10637         ;;
10638 *)      echo "We won't be including <dbm.h>"
10639         val="$undef"
10640         set i_dbm
10641         eval $setvar
10642         val="$undef"
10643         set i_rpcsvcdbm
10644         eval $setvar
10645         ;;
10646 esac
10647
10648 : see if prototype for dbminit is available
10649 echo " "
10650 set d_dbminitproto dbminit $i_dbm dbm.h
10651 eval $hasproto
10652
10653 : see if difftime exists
10654 set difftime d_difftime
10655 eval $inlibc
10656
10657 : see if this is a dirent system
10658 echo " "
10659 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10660         val="$define"
10661         echo "<dirent.h> found." >&4
10662 else
10663         val="$undef"
10664         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10665                 echo "<sys/dir.h> found." >&4
10666                 echo " "
10667         else
10668                 xinc=`./findhdr sys/ndir.h`
10669         fi
10670         echo "<dirent.h> NOT found." >&4
10671 fi
10672 set i_dirent
10673 eval $setvar
10674
10675 : Look for type of directory structure.
10676 echo " "
10677 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10678
10679 case "$direntrytype" in
10680 ''|' ')
10681         case "$i_dirent" in
10682         $define) guess1='struct dirent' ;;
10683         *) guess1='struct direct'  ;;
10684         esac
10685         ;;
10686 *)      guess1="$direntrytype"
10687         ;;
10688 esac
10689
10690 case "$guess1" in
10691 'struct dirent') guess2='struct direct' ;;
10692 *) guess2='struct dirent' ;;
10693 esac
10694                 
10695 if $contains "$guess1" try.c >/dev/null 2>&1; then
10696         direntrytype="$guess1"
10697         echo "Your directory entries are $direntrytype." >&4
10698 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10699         direntrytype="$guess2"
10700         echo "Your directory entries seem to be $direntrytype." >&4
10701 else
10702         echo "I don't recognize your system's directory entries." >&4
10703         rp="What type is used for directory entries on this system?"
10704         dflt="$guess1"
10705         . ./myread
10706         direntrytype="$ans"
10707 fi
10708 $rm -f try.c
10709
10710
10711 : see if the directory entry stores field length
10712 echo " "
10713 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10714 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10715         echo "Good, your directory entry keeps length information in d_namlen." >&4
10716         val="$define"
10717 else
10718         echo "Your directory entry does not know about the d_namlen field." >&4
10719         val="$undef"
10720 fi
10721 set d_dirnamlen
10722 eval $setvar
10723 $rm -f try.c
10724
10725 : see if this is an sysdir system
10726 set sys/dir.h i_sysdir
10727 eval $inhdr
10728
10729 : see if this is an sysndir system
10730 set sys/ndir.h i_sysndir
10731 eval $inhdr
10732
10733 : Look for dirfd
10734 echo " "
10735 $cat >dirfd.c <<EOM
10736 #include <stdio.h>
10737 #$i_stdlib I_STDLIB
10738 #ifdef I_STDLIB
10739 #include <stdlib.h>
10740 #endif
10741 #$i_dirent I_DIRENT             /**/
10742 #$i_sysdir I_SYS_DIR            /**/
10743 #$i_sysndir I_SYS_NDIR          /**/
10744 #$i_systypes I_SYS_TYPES        /**/
10745 #if defined(I_SYS_TYPES)
10746 #include <sys/types.h>
10747 #endif
10748 #if defined(I_DIRENT)
10749 #include <dirent.h>
10750 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10751 #include <sys/dir.h>
10752 #endif
10753 #else
10754 #ifdef I_SYS_NDIR
10755 #include <sys/ndir.h>
10756 #else
10757 #ifdef I_SYS_DIR
10758 #ifdef hp9000s500
10759 #include <ndir.h>       /* may be wrong in the future */
10760 #else
10761 #include <sys/dir.h>
10762 #endif
10763 #endif
10764 #endif
10765 #endif 
10766 int main() {
10767         DIR *dirp = opendir(".");
10768         if (dirfd(dirp) >= 0)
10769                 exit(0);
10770         else
10771                 exit(1);
10772 }
10773 EOM
10774 set dirfd
10775 if eval $compile; then
10776         val="$define"
10777 fi
10778 case "$val" in
10779 $define)        echo "dirfd() found." >&4       ;;
10780 *)              echo "dirfd() NOT found." >&4   ;;
10781 esac
10782 set d_dirfd
10783 eval $setvar
10784 $rm -f dirfd*
10785
10786 : see if dlerror exists
10787 xxx_runnm="$runnm"
10788 runnm=false
10789 set dlerror d_dlerror
10790 eval $inlibc
10791 runnm="$xxx_runnm"
10792
10793 : see if dlfcn is available
10794 set dlfcn.h i_dlfcn
10795 eval $inhdr
10796
10797 case "$usedl" in
10798 $define|y|true)
10799         $cat << EOM
10800
10801 On a few systems, the dynamically loaded modules that perl generates and uses
10802 will need a different extension than shared libs. The default will probably
10803 be appropriate.
10804
10805 EOM
10806         case "$dlext" in
10807         '')     dflt="$so" ;;
10808         *)      dflt="$dlext" ;;
10809         esac
10810         rp='What is the extension of dynamically loaded modules'
10811         . ./myread
10812         dlext="$ans"
10813         ;;
10814 *)
10815         dlext="none"
10816         ;;
10817 esac
10818
10819 : Check if dlsym need a leading underscore
10820 echo " "
10821 val="$undef"
10822
10823 case "$dlsrc" in
10824 dl_dlopen.xs)
10825         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10826         $cat >dyna.c <<'EOM'
10827 fred () { }
10828 EOM
10829
10830 $cat >fred.c<<EOM
10831
10832 #include <stdio.h>
10833 #$i_stdlib I_STDLIB
10834 #ifdef I_STDLIB
10835 #include <stdlib.h>
10836 #endif
10837 #$i_dlfcn I_DLFCN
10838 #ifdef I_DLFCN
10839 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10840 #else
10841 #include <sys/types.h>
10842 #include <nlist.h>
10843 #include <link.h>
10844 #endif
10845
10846 extern int fred() ;
10847
10848 int main()
10849 {
10850     void * handle ;
10851     void * symbol ;
10852 #ifndef RTLD_LAZY
10853     int mode = 1 ;
10854 #else
10855     int mode = RTLD_LAZY ;
10856 #endif
10857     handle = dlopen("./dyna.$dlext", mode) ;
10858     if (handle == NULL) {
10859         printf ("1\n") ;
10860         fflush (stdout) ;
10861         exit(0);
10862     }
10863     symbol = dlsym(handle, "fred") ;
10864     if (symbol == NULL) {
10865         /* try putting a leading underscore */
10866         symbol = dlsym(handle, "_fred") ;
10867         if (symbol == NULL) {
10868             printf ("2\n") ;
10869             fflush (stdout) ;
10870             exit(0);
10871         }
10872         printf ("3\n") ;
10873     }
10874     else
10875         printf ("4\n") ;
10876     fflush (stdout) ;
10877     exit(0);
10878 }
10879 EOM
10880         : Call the object file tmp-dyna.o in case dlext=o.
10881         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10882                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10883                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10884                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10885                 xxx=`$run ./fred`
10886                 case $xxx in
10887                 1)      echo "Test program failed using dlopen." >&4
10888                         echo "Perhaps you should not use dynamic loading." >&4;;
10889                 2)      echo "Test program failed using dlsym." >&4
10890                         echo "Perhaps you should not use dynamic loading." >&4;;
10891                 3)      echo "dlsym needs a leading underscore" >&4
10892                         val="$define" ;;
10893                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10894                 esac
10895         else
10896                 echo "I can't compile and run the test program." >&4
10897                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10898         fi
10899         ;;
10900 esac
10901                 
10902 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10903
10904 set d_dlsymun
10905 eval $setvar
10906
10907 : see if drand48_r exists
10908 set drand48_r d_drand48_r
10909 eval $inlibc
10910 case "$d_drand48_r" in
10911 "$define")
10912         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10913         case "$d_drand48_r_proto:$usethreads" in
10914         ":define")      d_drand48_r_proto=define
10915                 set d_drand48_r_proto drand48_r $hdrs
10916                 eval $hasproto ;;
10917         *)      ;;
10918         esac
10919         case "$d_drand48_r_proto" in
10920         define)
10921         case "$drand48_r_proto" in
10922         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10923         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10924         esac
10925         case "$drand48_r_proto" in
10926         ''|0)   d_drand48_r=undef
10927                 drand48_r_proto=0
10928                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10929         * )     case "$drand48_r_proto" in
10930                 REENTRANT_PROTO*) ;;
10931                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10932                 esac
10933                 echo "Prototype: $try" ;;
10934         esac
10935         ;;
10936         *)      case "$usethreads" in
10937                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10938                 esac
10939                 d_drand48_r=undef
10940                 drand48_r_proto=0
10941                 ;;
10942         esac
10943         ;;
10944 *)      drand48_r_proto=0
10945         ;;
10946 esac
10947
10948 : see if prototype for drand48 is available
10949 echo " "
10950 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10951 eval $hasproto
10952
10953 : see if dup2 exists
10954 set dup2 d_dup2
10955 eval $inlibc
10956
10957 : see if eaccess exists
10958 set eaccess d_eaccess
10959 eval $inlibc
10960
10961 : see if endgrent exists
10962 set endgrent d_endgrent
10963 eval $inlibc
10964
10965 : see if this is an grp system
10966 set grp.h i_grp
10967 eval $inhdr
10968
10969 case "$i_grp" in
10970 $define)
10971         xxx=`./findhdr grp.h`
10972         $cppstdin $cppflags $cppminus < $xxx >$$.h
10973
10974         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10975                 val="$define"
10976         else
10977                 val="$undef"
10978         fi
10979         set d_grpasswd
10980         eval $setvar
10981
10982         $rm -f $$.h
10983         ;;
10984 *)
10985         val="$undef";
10986         set d_grpasswd; eval $setvar
10987         ;;
10988 esac
10989
10990 : see if endgrent_r exists
10991 set endgrent_r d_endgrent_r
10992 eval $inlibc
10993 case "$d_endgrent_r" in
10994 "$define")
10995         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10996         case "$d_endgrent_r_proto:$usethreads" in
10997         ":define")      d_endgrent_r_proto=define
10998                 set d_endgrent_r_proto endgrent_r $hdrs
10999                 eval $hasproto ;;
11000         *)      ;;
11001         esac
11002         case "$d_endgrent_r_proto" in
11003         define)
11004         case "$endgrent_r_proto" in
11005         ''|0) try='int endgrent_r(FILE**);'
11006         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11007         esac
11008         case "$endgrent_r_proto" in
11009         ''|0) try='void endgrent_r(FILE**);'
11010         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11011         esac
11012         case "$endgrent_r_proto" in
11013         ''|0)   d_endgrent_r=undef
11014                 endgrent_r_proto=0
11015                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11016         * )     case "$endgrent_r_proto" in
11017                 REENTRANT_PROTO*) ;;
11018                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11019                 esac
11020                 echo "Prototype: $try" ;;
11021         esac
11022         ;;
11023         *)      case "$usethreads" in
11024                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11025                 esac
11026                 d_endgrent_r=undef
11027                 endgrent_r_proto=0
11028                 ;;
11029         esac
11030         ;;
11031 *)      endgrent_r_proto=0
11032         ;;
11033 esac
11034
11035 : see if endhostent exists
11036 set endhostent d_endhent
11037 eval $inlibc
11038
11039 : see if this is a netdb.h system
11040 set netdb.h i_netdb
11041 eval $inhdr
11042
11043 : see if endhostent_r exists
11044 set endhostent_r d_endhostent_r
11045 eval $inlibc
11046 case "$d_endhostent_r" in
11047 "$define")
11048         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11049         case "$d_endhostent_r_proto:$usethreads" in
11050         ":define")      d_endhostent_r_proto=define
11051                 set d_endhostent_r_proto endhostent_r $hdrs
11052                 eval $hasproto ;;
11053         *)      ;;
11054         esac
11055         case "$d_endhostent_r_proto" in
11056         define)
11057         case "$endhostent_r_proto" in
11058         ''|0) try='int endhostent_r(struct hostent_data*);'
11059         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11060         esac
11061         case "$endhostent_r_proto" in
11062         ''|0) try='void endhostent_r(struct hostent_data*);'
11063         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11064         esac
11065         case "$endhostent_r_proto" in
11066         ''|0)   d_endhostent_r=undef
11067                 endhostent_r_proto=0
11068                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11069         * )     case "$endhostent_r_proto" in
11070                 REENTRANT_PROTO*) ;;
11071                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11072                 esac
11073                 echo "Prototype: $try" ;;
11074         esac
11075         ;;
11076         *)      case "$usethreads" in
11077                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11078                 esac
11079                 d_endhostent_r=undef
11080                 endhostent_r_proto=0
11081                 ;;
11082         esac
11083         ;;
11084 *)      endhostent_r_proto=0
11085         ;;
11086 esac
11087
11088 : see if endnetent exists
11089 set endnetent d_endnent
11090 eval $inlibc
11091
11092 : see if endnetent_r exists
11093 set endnetent_r d_endnetent_r
11094 eval $inlibc
11095 case "$d_endnetent_r" in
11096 "$define")
11097         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11098         case "$d_endnetent_r_proto:$usethreads" in
11099         ":define")      d_endnetent_r_proto=define
11100                 set d_endnetent_r_proto endnetent_r $hdrs
11101                 eval $hasproto ;;
11102         *)      ;;
11103         esac
11104         case "$d_endnetent_r_proto" in
11105         define)
11106         case "$endnetent_r_proto" in
11107         ''|0) try='int endnetent_r(struct netent_data*);'
11108         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11109         esac
11110         case "$endnetent_r_proto" in
11111         ''|0) try='void endnetent_r(struct netent_data*);'
11112         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11113         esac
11114         case "$endnetent_r_proto" in
11115         ''|0)   d_endnetent_r=undef
11116                 endnetent_r_proto=0
11117                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11118         * )     case "$endnetent_r_proto" in
11119                 REENTRANT_PROTO*) ;;
11120                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11121                 esac
11122                 echo "Prototype: $try" ;;
11123         esac
11124         ;;
11125         *)      case "$usethreads" in
11126                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11127                 esac
11128                 d_endnetent_r=undef
11129                 endnetent_r_proto=0
11130                 ;;
11131         esac
11132         ;;
11133 *)      endnetent_r_proto=0
11134         ;;
11135 esac
11136
11137 : see if endprotoent exists
11138 set endprotoent d_endpent
11139 eval $inlibc
11140
11141 : see if endprotoent_r exists
11142 set endprotoent_r d_endprotoent_r
11143 eval $inlibc
11144 case "$d_endprotoent_r" in
11145 "$define")
11146         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11147         case "$d_endprotoent_r_proto:$usethreads" in
11148         ":define")      d_endprotoent_r_proto=define
11149                 set d_endprotoent_r_proto endprotoent_r $hdrs
11150                 eval $hasproto ;;
11151         *)      ;;
11152         esac
11153         case "$d_endprotoent_r_proto" in
11154         define)
11155         case "$endprotoent_r_proto" in
11156         ''|0) try='int endprotoent_r(struct protoent_data*);'
11157         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11158         esac
11159         case "$endprotoent_r_proto" in
11160         ''|0) try='void endprotoent_r(struct protoent_data*);'
11161         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11162         esac
11163         case "$endprotoent_r_proto" in
11164         ''|0)   d_endprotoent_r=undef
11165                 endprotoent_r_proto=0
11166                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11167         * )     case "$endprotoent_r_proto" in
11168                 REENTRANT_PROTO*) ;;
11169                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11170                 esac
11171                 echo "Prototype: $try" ;;
11172         esac
11173         ;;
11174         *)      case "$usethreads" in
11175                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11176                 esac
11177                 d_endprotoent_r=undef
11178                 endprotoent_r_proto=0
11179                 ;;
11180         esac
11181         ;;
11182 *)      endprotoent_r_proto=0
11183         ;;
11184 esac
11185
11186 : see if endpwent exists
11187 set endpwent d_endpwent
11188 eval $inlibc
11189
11190 : see if this is a pwd.h system
11191 set pwd.h i_pwd
11192 eval $inhdr
11193
11194 case "$i_pwd" in
11195 $define)
11196         xxx=`./findhdr pwd.h`
11197         $cppstdin $cppflags $cppminus < $xxx >$$.h
11198
11199         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11200                 val="$define"
11201         else
11202                 val="$undef"
11203         fi
11204         set d_pwquota
11205         eval $setvar
11206
11207         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11208                 val="$define"
11209         else
11210                 val="$undef"
11211         fi
11212         set d_pwage
11213         eval $setvar
11214
11215         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11216                 val="$define"
11217         else
11218                 val="$undef"
11219         fi
11220         set d_pwchange
11221         eval $setvar
11222
11223         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11224                 val="$define"
11225         else
11226                 val="$undef"
11227         fi
11228         set d_pwclass
11229         eval $setvar
11230
11231         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11232                 val="$define"
11233         else
11234                 val="$undef"
11235         fi
11236         set d_pwexpire
11237         eval $setvar
11238
11239         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11240                 val="$define"
11241         else
11242                 val="$undef"
11243         fi
11244         set d_pwcomment
11245         eval $setvar
11246
11247         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11248                 val="$define"
11249         else
11250                 val="$undef"
11251         fi
11252         set d_pwgecos
11253         eval $setvar
11254
11255         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11256                 val="$define"
11257         else
11258                 val="$undef"
11259         fi
11260         set d_pwpasswd
11261         eval $setvar
11262
11263         $rm -f $$.h
11264         ;;
11265 *)
11266         val="$undef"; 
11267         set d_pwquota; eval $setvar
11268         set d_pwage; eval $setvar
11269         set d_pwchange; eval $setvar
11270         set d_pwclass; eval $setvar
11271         set d_pwexpire; eval $setvar
11272         set d_pwcomment; eval $setvar
11273         set d_pwgecos; eval $setvar
11274         set d_pwpasswd; eval $setvar
11275         ;;
11276 esac
11277
11278 : see if endpwent_r exists
11279 set endpwent_r d_endpwent_r
11280 eval $inlibc
11281 case "$d_endpwent_r" in
11282 "$define")
11283         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11284         case "$d_endpwent_r_proto:$usethreads" in
11285         ":define")      d_endpwent_r_proto=define
11286                 set d_endpwent_r_proto endpwent_r $hdrs
11287                 eval $hasproto ;;
11288         *)      ;;
11289         esac
11290         case "$d_endpwent_r_proto" in
11291         define)
11292         case "$endpwent_r_proto" in
11293         ''|0) try='int endpwent_r(FILE**);'
11294         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11295         esac
11296         case "$endpwent_r_proto" in
11297         ''|0) try='void endpwent_r(FILE**);'
11298         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11299         esac
11300         case "$endpwent_r_proto" in
11301         ''|0)   d_endpwent_r=undef
11302                 endpwent_r_proto=0
11303                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11304         * )     case "$endpwent_r_proto" in
11305                 REENTRANT_PROTO*) ;;
11306                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11307                 esac
11308                 echo "Prototype: $try" ;;
11309         esac
11310         ;;
11311         *)      case "$usethreads" in
11312                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11313                 esac
11314                 d_endpwent_r=undef
11315                 endpwent_r_proto=0
11316                 ;;
11317         esac
11318         ;;
11319 *)      endpwent_r_proto=0
11320         ;;
11321 esac
11322
11323 : see if endservent exists
11324 set endservent d_endsent
11325 eval $inlibc
11326
11327 : see if endservent_r exists
11328 set endservent_r d_endservent_r
11329 eval $inlibc
11330 case "$d_endservent_r" in
11331 "$define")
11332         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11333         case "$d_endservent_r_proto:$usethreads" in
11334         ":define")      d_endservent_r_proto=define
11335                 set d_endservent_r_proto endservent_r $hdrs
11336                 eval $hasproto ;;
11337         *)      ;;
11338         esac
11339         case "$d_endservent_r_proto" in
11340         define)
11341         case "$endservent_r_proto" in
11342         ''|0) try='int endservent_r(struct servent_data*);'
11343         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11344         esac
11345         case "$endservent_r_proto" in
11346         ''|0) try='void endservent_r(struct servent_data*);'
11347         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11348         esac
11349         case "$endservent_r_proto" in
11350         ''|0)   d_endservent_r=undef
11351                 endservent_r_proto=0
11352                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11353         * )     case "$endservent_r_proto" in
11354                 REENTRANT_PROTO*) ;;
11355                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11356                 esac
11357                 echo "Prototype: $try" ;;
11358         esac
11359         ;;
11360         *)      case "$usethreads" in
11361                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11362                 esac
11363                 d_endservent_r=undef
11364                 endservent_r_proto=0
11365                 ;;
11366         esac
11367         ;;
11368 *)      endservent_r_proto=0
11369         ;;
11370 esac
11371
11372 : Locate the flags for 'open()'
11373 echo " "
11374 $cat >try.c <<EOCP
11375 #include <sys/types.h>
11376 #ifdef I_FCNTL
11377 #include <fcntl.h>
11378 #endif
11379 #ifdef I_SYS_FILE
11380 #include <sys/file.h>
11381 #endif
11382 #$i_stdlib I_STDLIB
11383 #ifdef I_STDLIB
11384 #include <stdlib.h>
11385 #endif
11386 int main() {
11387         if(O_RDONLY);
11388 #ifdef O_TRUNC
11389         exit(0);
11390 #else
11391         exit(1);
11392 #endif
11393 }
11394 EOCP
11395 : check sys/file.h first to get FREAD on Sun
11396 if $test `./findhdr sys/file.h` && \
11397                 set try -DI_SYS_FILE && eval $compile; then
11398         h_sysfile=true;
11399         echo "<sys/file.h> defines the O_* constants..." >&4
11400         if $run ./try; then
11401                 echo "and you have the 3 argument form of open()." >&4
11402                 val="$define"
11403         else
11404                 echo "but not the 3 argument form of open().  Oh, well." >&4
11405                 val="$undef"
11406         fi
11407 elif $test `./findhdr fcntl.h` && \
11408                 set try -DI_FCNTL && eval $compile; then
11409         h_fcntl=true;
11410         echo "<fcntl.h> defines the O_* constants..." >&4
11411         if $run ./try; then
11412                 echo "and you have the 3 argument form of open()." >&4
11413                 val="$define"
11414         else
11415                 echo "but not the 3 argument form of open().  Oh, well." >&4
11416                 val="$undef"
11417         fi
11418 else
11419         val="$undef"
11420         echo "I can't find the O_* constant definitions!  You got problems." >&4
11421 fi
11422 set d_open3
11423 eval $setvar
11424 $rm -f try try.*
11425
11426 : see which of string.h or strings.h is needed
11427 echo " "
11428 strings=`./findhdr string.h`
11429 if $test "$strings" && $test -r "$strings"; then
11430         echo "Using <string.h> instead of <strings.h>." >&4
11431         val="$define"
11432 else
11433         val="$undef"
11434         strings=`./findhdr strings.h`
11435         if $test "$strings" && $test -r "$strings"; then
11436                 echo "Using <strings.h> instead of <string.h>." >&4
11437         else
11438                 echo "No string header found -- You'll surely have problems." >&4
11439         fi
11440 fi
11441 set i_string
11442 eval $setvar
11443 case "$i_string" in
11444 "$undef") strings=`./findhdr strings.h`;;
11445 *)        strings=`./findhdr string.h`;;
11446 esac
11447
11448 : see if this is a sys/file.h system
11449 val=''
11450 set sys/file.h val
11451 eval $inhdr
11452
11453 : do we need to include sys/file.h ?
11454 case "$val" in
11455 "$define")
11456         echo " "
11457         if $h_sysfile; then
11458                 val="$define"
11459                 echo "We'll be including <sys/file.h>." >&4
11460         else
11461                 val="$undef"
11462                 echo "We won't be including <sys/file.h>." >&4
11463         fi
11464         ;;
11465 *)
11466         h_sysfile=false
11467         ;;
11468 esac
11469 set i_sysfile
11470 eval $setvar
11471
11472 : see if fcntl.h is there
11473 val=''
11474 set fcntl.h val
11475 eval $inhdr
11476
11477 : see if we can include fcntl.h
11478 case "$val" in
11479 "$define")
11480         echo " "
11481         if $h_fcntl; then
11482                 val="$define"
11483                 echo "We'll be including <fcntl.h>." >&4
11484         else
11485                 val="$undef"
11486                 if $h_sysfile; then
11487         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11488                 else
11489                         echo "We won't be including <fcntl.h>." >&4
11490                 fi
11491         fi
11492         ;;
11493 *)
11494         h_fcntl=false
11495         val="$undef"
11496         ;;
11497 esac
11498 set i_fcntl
11499 eval $setvar
11500
11501 : check for non-blocking I/O stuff
11502 case "$h_sysfile" in
11503 true) echo "#include <sys/file.h>" > head.c;;
11504 *)
11505        case "$h_fcntl" in
11506        true) echo "#include <fcntl.h>" > head.c;;
11507        *) echo "#include <sys/fcntl.h>" > head.c;;
11508        esac
11509        ;;
11510 esac
11511 echo " "
11512 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11513 case "$o_nonblock" in
11514 '')
11515         $cat head.c > try.c
11516         $cat >>try.c <<EOCP
11517 #include <stdio.h>
11518 #$i_stdlib I_STDLIB
11519 #ifdef I_STDLIB
11520 #include <stdlib.h>
11521 #endif
11522 #$i_fcntl I_FCNTL
11523 #ifdef I_FCNTL
11524 #include <fcntl.h>
11525 #endif
11526 int main() {
11527 #ifdef O_NONBLOCK
11528         printf("O_NONBLOCK\n");
11529         exit(0);
11530 #endif
11531 #ifdef O_NDELAY
11532         printf("O_NDELAY\n");
11533         exit(0);
11534 #endif
11535 #ifdef FNDELAY
11536         printf("FNDELAY\n");
11537         exit(0);
11538 #endif
11539         exit(0);
11540 }
11541 EOCP
11542         set try
11543         if eval $compile_ok; then
11544                 o_nonblock=`$run ./try`
11545                 case "$o_nonblock" in
11546                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11547                 *) echo "Seems like we can use $o_nonblock.";;
11548                 esac
11549         else
11550                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11551         fi
11552         ;;
11553 *) echo "Using $hint value $o_nonblock.";;
11554 esac
11555 $rm -f try try.* .out core
11556
11557 echo " "
11558 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11559 case "$eagain" in
11560 '')
11561         $cat head.c > try.c
11562         $cat >>try.c <<EOCP
11563 #include <errno.h>
11564 #include <sys/types.h>
11565 #include <signal.h>
11566 #include <stdio.h> 
11567 #$i_stdlib I_STDLIB
11568 #ifdef I_STDLIB
11569 #include <stdlib.h>
11570 #endif
11571 #$i_fcntl I_FCNTL
11572 #ifdef I_FCNTL
11573 #include <fcntl.h>
11574 #endif
11575 #define MY_O_NONBLOCK $o_nonblock
11576 #ifndef errno  /* XXX need better Configure test */
11577 extern int errno;
11578 #endif
11579 #$i_unistd I_UNISTD
11580 #ifdef I_UNISTD
11581 #include <unistd.h>
11582 #endif
11583 #$i_string I_STRING
11584 #ifdef I_STRING
11585 #include <string.h>
11586 #else
11587 #include <strings.h>
11588 #endif
11589 $signal_t blech(x) int x; { exit(3); }
11590 EOCP
11591         $cat >> try.c <<'EOCP'
11592 int main()
11593 {
11594         int pd[2];
11595         int pu[2];
11596         char buf[1];
11597         char string[100];
11598
11599         pipe(pd);       /* Down: child -> parent */
11600         pipe(pu);       /* Up: parent -> child */
11601         if (0 != fork()) {
11602                 int ret;
11603                 close(pd[1]);   /* Parent reads from pd[0] */
11604                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11605 #ifdef F_SETFL
11606                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11607                         exit(1);
11608 #else
11609                 exit(4);
11610 #endif
11611                 signal(SIGALRM, blech);
11612                 alarm(5);
11613                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11614                         exit(2);
11615                 sprintf(string, "%d\n", ret);
11616                 write(2, string, strlen(string));
11617                 alarm(0);
11618 #ifdef EAGAIN
11619                 if (errno == EAGAIN) {
11620                         printf("EAGAIN\n");
11621                         goto ok;
11622                 }
11623 #endif
11624 #ifdef EWOULDBLOCK
11625                 if (errno == EWOULDBLOCK)
11626                         printf("EWOULDBLOCK\n");
11627 #endif
11628         ok:
11629                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11630                 sleep(2);                               /* Give it time to close our pipe */
11631                 alarm(5);
11632                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11633                 alarm(0);
11634                 sprintf(string, "%d\n", ret);
11635                 write(4, string, strlen(string));
11636                 exit(0);
11637         }
11638
11639         close(pd[0]);                   /* We write to pd[1] */
11640         close(pu[1]);                   /* We read from pu[0] */
11641         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11642         close(pd[1]);                   /* Pipe pd is now fully closed! */
11643         exit(0);                                /* Bye bye, thank you for playing! */
11644 }
11645 EOCP
11646         set try
11647         if eval $compile_ok; then
11648                 echo "$startsh" >mtry
11649                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11650                 chmod +x mtry
11651                 ./mtry >/dev/null 2>&1
11652                 case $? in
11653                 0) eagain=`$cat try.out`;;
11654                 1) echo "Could not perform non-blocking setting!";;
11655                 2) echo "I did a successful read() for something that was not there!";;
11656                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11657                 4) echo "Could not find F_SETFL!";;
11658                 *) echo "Something terribly wrong happened during testing.";;
11659                 esac
11660                 rd_nodata=`$cat try.ret`
11661                 echo "A read() system call with no data present returns $rd_nodata."
11662                 case "$rd_nodata" in
11663                 0|-1) ;;
11664                 *)
11665                         echo "(That's peculiar, fixing that to be -1.)"
11666                         rd_nodata=-1
11667                         ;;
11668                 esac
11669                 case "$eagain" in
11670                 '')
11671                         echo "Forcing errno EAGAIN on read() with no data available."
11672                         eagain=EAGAIN
11673                         ;;
11674                 *)
11675                         echo "Your read() sets errno to $eagain when no data is available."
11676                         ;;
11677                 esac
11678                 status=`$cat try.err`
11679                 case "$status" in
11680                 0) echo "And it correctly returns 0 to signal EOF.";;
11681                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11682                 *) echo "However, your read() returns '$status' on EOF??";;
11683                 esac
11684                 val="$define"
11685                 if test "$status" = "$rd_nodata"; then
11686                         echo "WARNING: you can't distinguish between EOF and no data!"
11687                         val="$undef"
11688                 fi
11689         else
11690                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11691                 eagain=EAGAIN
11692         fi
11693         set d_eofnblk
11694         eval $setvar
11695         ;;
11696 *)
11697         echo "Using $hint value $eagain."
11698         echo "Your read() returns $rd_nodata when no data is present."
11699         case "$d_eofnblk" in
11700         "$define") echo "And you can see EOF because read() returns 0.";;
11701         "$undef") echo "But you can't see EOF status from read() returned value.";;
11702         *)
11703                 echo "(Assuming you can't see EOF status from read anyway.)"
11704                 d_eofnblk=$undef
11705                 ;;
11706         esac
11707         ;;
11708 esac
11709 $rm -f try try.* .out core head.c mtry
11710
11711 : see if _ptr and _cnt from stdio act std
11712 echo " "
11713
11714 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11715         echo "(Looks like you have stdio.h from BSD.)"
11716         case "$stdio_ptr" in
11717         '') stdio_ptr='((fp)->_p)'
11718                 ptr_lval=$define
11719                 ;;
11720         *)      ptr_lval=$d_stdio_ptr_lval;;
11721         esac
11722         case "$stdio_cnt" in
11723         '') stdio_cnt='((fp)->_r)'
11724                 cnt_lval=$define
11725                 ;;
11726         *)      cnt_lval=$d_stdio_cnt_lval;;
11727         esac
11728         case "$stdio_base" in
11729         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11730         esac
11731         case "$stdio_bufsiz" in
11732         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11733         esac
11734 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11735         echo "(Looks like you have stdio.h from Linux.)"
11736         case "$stdio_ptr" in
11737         '') stdio_ptr='((fp)->_IO_read_ptr)'
11738                 ptr_lval=$define
11739                 ;;
11740         *)      ptr_lval=$d_stdio_ptr_lval;;
11741         esac
11742         case "$stdio_cnt" in
11743         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11744                 cnt_lval=$undef
11745                 ;;
11746         *)      cnt_lval=$d_stdio_cnt_lval;;
11747         esac
11748         case "$stdio_base" in
11749         '') stdio_base='((fp)->_IO_read_base)';;
11750         esac
11751         case "$stdio_bufsiz" in
11752         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11753         esac
11754 else
11755         case "$stdio_ptr" in
11756         '') stdio_ptr='((fp)->_ptr)'
11757                 ptr_lval=$define
11758                 ;;
11759         *)      ptr_lval=$d_stdio_ptr_lval;;
11760         esac
11761         case "$stdio_cnt" in
11762         '') stdio_cnt='((fp)->_cnt)'
11763                 cnt_lval=$define
11764                 ;;
11765         *)      cnt_lval=$d_stdio_cnt_lval;;
11766         esac
11767         case "$stdio_base" in
11768         '') stdio_base='((fp)->_base)';;
11769         esac
11770         case "$stdio_bufsiz" in
11771         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11772         esac
11773 fi
11774
11775 : test whether _ptr and _cnt really work
11776 echo "Checking how std your stdio is..." >&4
11777 $cat >try.c <<EOP
11778 #include <stdio.h>
11779 #$i_stdlib I_STDLIB
11780 #ifdef I_STDLIB
11781 #include <stdlib.h>
11782 #endif
11783 #define FILE_ptr(fp)    $stdio_ptr
11784 #define FILE_cnt(fp)    $stdio_cnt
11785 int main() {
11786         FILE *fp = fopen("try.c", "r");
11787         char c = getc(fp);
11788         if (
11789                 18 <= FILE_cnt(fp) &&
11790                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11791         )
11792                 exit(0);
11793         exit(1);
11794 }
11795 EOP
11796 val="$undef"
11797 set try
11798 if eval $compile && $to try.c; then
11799         if $run ./try; then
11800                 echo "Your stdio acts pretty std."
11801                 val="$define"
11802         else
11803                 echo "Your stdio isn't very std."
11804         fi
11805 else
11806         echo "Your stdio doesn't appear very std."
11807 fi
11808 $rm -f try.c try
11809
11810 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11811 # direct buffer manipulation no longer works.  The Configure tests
11812 # should be changed to correctly detect this, but until then,
11813 # the following check should at least let perl compile and run.
11814 # (This quick fix should be updated before 5.8.1.)
11815 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11816 # A. Dougherty, June 3, 2002.
11817 case "$d_gnulibc" in
11818 $define)
11819         case "$gnulibc_version" in
11820         2.[01]*)  ;;
11821         2.2) ;;
11822         2.2.[0-9]) ;;
11823         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11824                 val="$undef"
11825                 ;;
11826         esac
11827         ;;
11828 esac
11829 set d_stdstdio
11830 eval $setvar
11831
11832 : Can _ptr be used as an lvalue?
11833 case "$d_stdstdio$ptr_lval" in
11834 $define$define) val=$define ;;
11835 *) val=$undef ;;
11836 esac
11837 set d_stdio_ptr_lval
11838 eval $setvar
11839
11840 : Can _cnt be used as an lvalue?
11841 case "$d_stdstdio$cnt_lval" in
11842 $define$define) val=$define ;;
11843 *) val=$undef ;;
11844 esac
11845 set d_stdio_cnt_lval
11846 eval $setvar
11847
11848
11849 : test whether setting _ptr sets _cnt as a side effect
11850 d_stdio_ptr_lval_sets_cnt="$undef"
11851 d_stdio_ptr_lval_nochange_cnt="$undef"
11852 case "$d_stdio_ptr_lval$d_stdstdio" in
11853 $define$define)
11854         echo "Checking to see what happens if we set the stdio ptr..." >&4
11855 $cat >try.c <<EOP
11856 #include <stdio.h>
11857 /* Can we scream? */
11858 /* Eat dust sed :-) */
11859 /* In the buffer space, no one can hear you scream. */
11860 #$i_stdlib I_STDLIB
11861 #ifdef I_STDLIB
11862 #include <stdlib.h>
11863 #endif
11864 #define FILE_ptr(fp)    $stdio_ptr
11865 #define FILE_cnt(fp)    $stdio_cnt
11866 #include <sys/types.h>
11867 int main() {
11868         FILE *fp = fopen("try.c", "r");
11869         int c;
11870         char *ptr;
11871         size_t cnt;
11872         if (!fp) {
11873             puts("Fail even to read");
11874             exit(1);
11875         }
11876         c = getc(fp); /* Read away the first # */
11877         if (c == EOF) {
11878             puts("Fail even to read");
11879             exit(1);
11880         }
11881         if (!(
11882                 18 <= FILE_cnt(fp) &&
11883                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11884         )) {
11885                 puts("Fail even to read");
11886                 exit (1);
11887         }
11888         ptr = (char*) FILE_ptr(fp);
11889         cnt = (size_t)FILE_cnt(fp);
11890
11891         FILE_ptr(fp) += 42;
11892
11893         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11894                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11895                 exit (1);
11896         }
11897         if (FILE_cnt(fp) <= 20) {
11898                 printf ("Fail (<20 chars to test)");
11899                 exit (1);
11900         }
11901         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11902                 puts("Fail compare");
11903                 exit (1);
11904         }
11905         if (cnt == FILE_cnt(fp)) {
11906                 puts("Pass_unchanged");
11907                 exit (0);
11908         }       
11909         if (FILE_cnt(fp) == (cnt - 42)) {
11910                 puts("Pass_changed");
11911                 exit (0);
11912         }
11913         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11914         return 1;
11915
11916 }
11917 EOP
11918         set try
11919         if eval $compile && $to try.c; then
11920                 case `$run ./try` in
11921                 Pass_changed)
11922                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11923                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11924                 Pass_unchanged)
11925                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11926                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11927                 Fail*)
11928                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11929                 *)
11930                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11931         esac
11932         else
11933                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11934         fi
11935         $rm -f try.c try
11936         ;;
11937 esac
11938
11939 : see if _base is also standard
11940 val="$undef"
11941 case "$d_stdstdio" in
11942 $define)
11943         $cat >try.c <<EOP
11944 #include <stdio.h>
11945 #$i_stdlib I_STDLIB
11946 #ifdef I_STDLIB
11947 #include <stdlib.h>
11948 #endif
11949 #define FILE_base(fp)   $stdio_base
11950 #define FILE_bufsiz(fp) $stdio_bufsiz
11951 int main() {
11952         FILE *fp = fopen("try.c", "r");
11953         char c = getc(fp);
11954         if (
11955                 19 <= FILE_bufsiz(fp) &&
11956                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11957         )
11958                 exit(0);
11959         exit(1);
11960 }
11961 EOP
11962         set try
11963         if eval $compile && $to try.c; then
11964                 if $run ./try; then
11965                         echo "And its _base field acts std."
11966                         val="$define"
11967                 else
11968                         echo "But its _base field isn't std."
11969                 fi
11970         else
11971                 echo "However, it seems to be lacking the _base field."
11972         fi
11973         $rm -f try.c try
11974         ;;
11975 esac
11976 set d_stdiobase
11977 eval $setvar
11978
11979 : see if fast_stdio exists
11980 val="$undef"
11981 case "$d_stdstdio:$d_stdio_ptr_lval" in
11982 "$define:$define")
11983         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11984         *$define*)
11985                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11986                 val="$define"
11987                 ;;
11988         esac
11989         ;;
11990 esac
11991 set d_faststdio
11992 eval $setvar
11993
11994
11995
11996 : see if fchdir exists
11997 set fchdir d_fchdir
11998 eval $inlibc
11999
12000 : see if fchmod exists
12001 set fchmod d_fchmod
12002 eval $inlibc
12003
12004 : see if fchown exists
12005 set fchown d_fchown
12006 eval $inlibc
12007
12008 : see if this is an fcntl system
12009 set fcntl d_fcntl
12010 eval $inlibc
12011
12012 echo " "
12013 : See if fcntl-based locking works.
12014 $cat >try.c <<EOCP
12015 #$i_stdlib I_STDLIB
12016 #ifdef I_STDLIB
12017 #include <stdlib.h>
12018 #endif
12019 #include <unistd.h>
12020 #include <fcntl.h>
12021 #include <signal.h>
12022 $signal_t blech(x) int x; { exit(3); }
12023 int main() {
12024 #if defined(F_SETLK) && defined(F_SETLKW)
12025      struct flock flock;
12026      int retval, fd;
12027      fd = open("try.c", O_RDONLY);
12028      flock.l_type = F_RDLCK;
12029      flock.l_whence = SEEK_SET;
12030      flock.l_start = flock.l_len = 0;
12031      signal(SIGALRM, blech);
12032      alarm(10);
12033      retval = fcntl(fd, F_SETLK, &flock);
12034      close(fd);
12035      (retval < 0 ? exit(2) : exit(0));
12036 #else
12037      exit(2);
12038 #endif
12039 }
12040 EOCP
12041 echo "Checking if fcntl-based file locking works... "
12042 case "$d_fcntl" in
12043 "$define")
12044         set try
12045         if eval $compile_ok; then
12046                 if $run ./try; then
12047                         echo "Yes, it seems to work."
12048                         val="$define"
12049                 else
12050                         echo "Nope, it didn't work."
12051                         val="$undef"
12052                         case "$?" in
12053                         3) $cat >&4 <<EOM
12054 ***
12055 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12056 *** This is (almost) impossible.
12057 *** If your NFS lock daemons are not feeling well, something like
12058 *** this may happen, please investigate.  Cannot continue, aborting.
12059 ***
12060 EOM
12061                                 exit 1
12062                                 ;;
12063                         esac
12064                 fi
12065         else
12066                 echo "I'm unable to compile the test program, so I'll assume not."
12067                 val="$undef"
12068         fi
12069         ;;
12070 *) val="$undef";
12071         echo "Nope, since you don't even have fcntl()."
12072         ;;
12073 esac
12074 set d_fcntl_can_lock
12075 eval $setvar
12076 $rm -f try*
12077
12078
12079 : check for fd_set items
12080 $cat <<EOM
12081
12082 Checking to see how well your C compiler handles fd_set and friends ...
12083 EOM
12084 $cat >try.c <<EOCP
12085 #$i_stdlib I_STDLIB
12086 #ifdef I_STDLIB
12087 #include <stdlib.h>
12088 #endif
12089 #$i_systime I_SYS_TIME
12090 #$i_sysselct I_SYS_SELECT
12091 #$d_socket HAS_SOCKET
12092 #include <sys/types.h>
12093 #ifdef HAS_SOCKET
12094 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12095 #endif
12096 #ifdef I_SYS_TIME
12097 #include <sys/time.h>
12098 #endif
12099 #ifdef I_SYS_SELECT
12100 #include <sys/select.h>
12101 #endif
12102 int main() {
12103         fd_set fds;
12104
12105 #ifdef TRYBITS
12106         if(fds.fds_bits);
12107 #endif
12108
12109 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12110         exit(0);
12111 #else
12112         exit(1);
12113 #endif
12114 }
12115 EOCP
12116 set try -DTRYBITS
12117 if eval $compile; then
12118         d_fds_bits="$define"
12119         d_fd_set="$define"
12120         echo "Well, your system knows about the normal fd_set typedef..." >&4
12121         if $run ./try; then
12122                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12123                 d_fd_macros="$define"
12124         else
12125                 $cat >&4 <<'EOM'
12126 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12127 EOM
12128                 d_fd_macros="$undef"
12129         fi
12130 else
12131         $cat <<'EOM'
12132 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12133 EOM
12134         set try
12135         if eval $compile; then
12136                 d_fds_bits="$undef"
12137                 d_fd_set="$define"
12138                 echo "Well, your system has some sort of fd_set available..." >&4
12139                 if $run ./try; then
12140                         echo "and you have the normal fd_set macros." >&4
12141                         d_fd_macros="$define"
12142                 else
12143                         $cat <<'EOM'
12144 but not the normal fd_set macros!  Gross!  More work for me...
12145 EOM
12146                         d_fd_macros="$undef"
12147                 fi
12148         else
12149         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12150                 d_fd_set="$undef"
12151                 d_fds_bits="$undef"
12152                 d_fd_macros="$undef"
12153         fi
12154 fi
12155 $rm -f try try.*
12156
12157 : see if fgetpos exists
12158 set fgetpos d_fgetpos
12159 eval $inlibc
12160
12161 : see if finite exists
12162 set finite d_finite
12163 eval $inlibc
12164
12165 : see if finitel exists
12166 set finitel d_finitel
12167 eval $inlibc
12168
12169 : see if flock exists
12170 set flock d_flock
12171 eval $inlibc
12172
12173 : see if prototype for flock is available
12174 echo " "
12175 set d_flockproto flock $i_sysfile sys/file.h
12176 eval $hasproto
12177
12178 : see if fork exists
12179 set fork d_fork
12180 eval $inlibc
12181
12182 : see if fp_class exists
12183 set fp_class d_fp_class
12184 eval $inlibc
12185
12186 : see if pathconf exists
12187 set pathconf d_pathconf
12188 eval $inlibc
12189
12190 : see if fpathconf exists
12191 set fpathconf d_fpathconf
12192 eval $inlibc
12193
12194 : see if fpclass exists
12195 set fpclass d_fpclass
12196 eval $inlibc
12197
12198 : see if fpclassify exists
12199 set fpclassify d_fpclassify
12200 eval $inlibc
12201
12202 : see if fpclassl exists
12203 set fpclassl d_fpclassl
12204 eval $inlibc
12205
12206
12207 : check for fpos64_t
12208 echo " "
12209 echo "Checking to see if you have fpos64_t..." >&4
12210 $cat >try.c <<EOCP
12211 #include <stdio.h>
12212 int main() { fpos64_t x = 7; }
12213 EOCP
12214 set try
12215 if eval $compile; then
12216         val="$define"
12217         echo "You have fpos64_t."
12218 else
12219         val="$undef"
12220         echo "You do not have fpos64_t."
12221         case "$fpossize" in
12222         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12223         esac
12224 fi
12225 $rm -f try.* try
12226 set d_fpos64_t
12227 eval $setvar
12228
12229 : see if frexpl exists
12230 set frexpl d_frexpl
12231 eval $inlibc
12232
12233 : see if this is a sys/param system
12234 set sys/param.h i_sysparam
12235 eval $inhdr
12236
12237 : see if this is a sys/mount.h system
12238 set sys/mount.h i_sysmount
12239 eval $inhdr
12240
12241
12242 echo " "
12243 echo "Checking to see if your system supports struct fs_data..." >&4
12244 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12245 eval $hasstruct
12246 case "$d_fs_data_s" in
12247 "$define")      echo "Yes, it does."   ;;
12248 *)              echo "No, it doesn't." ;;
12249 esac
12250
12251 : see if fseeko exists
12252 set fseeko d_fseeko
12253 eval $inlibc
12254 case "$longsize" in
12255 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12256 esac
12257
12258 : see if fsetpos exists
12259 set fsetpos d_fsetpos
12260 eval $inlibc
12261
12262
12263 : see if fstatfs exists
12264 set fstatfs d_fstatfs
12265 eval $inlibc
12266
12267
12268 : see if statvfs exists
12269 set statvfs d_statvfs
12270 eval $inlibc
12271
12272 : see if fstatvfs exists
12273 set fstatvfs d_fstatvfs
12274 eval $inlibc
12275
12276
12277 : see if fsync exists
12278 set fsync d_fsync
12279 eval $inlibc
12280
12281 : see if ftello exists
12282 set ftello d_ftello
12283 eval $inlibc
12284 case "$longsize" in
12285 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12286 esac
12287
12288 : see if getcwd exists
12289 set getcwd d_getcwd
12290 eval $inlibc
12291
12292 : see if getespwnam exists
12293 set getespwnam d_getespwnam
12294 eval $inlibc
12295
12296
12297 : see if getfsstat exists
12298 set getfsstat d_getfsstat
12299 eval $inlibc
12300
12301 : see if getgrent exists
12302 set getgrent d_getgrent
12303 eval $inlibc
12304
12305 : see if getgrent_r exists
12306 set getgrent_r d_getgrent_r
12307 eval $inlibc
12308 case "$d_getgrent_r" in
12309 "$define")
12310         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12311         case "$d_getgrent_r_proto:$usethreads" in
12312         ":define")      d_getgrent_r_proto=define
12313                 set d_getgrent_r_proto getgrent_r $hdrs
12314                 eval $hasproto ;;
12315         *)      ;;
12316         esac
12317         case "$d_getgrent_r_proto" in
12318         define)
12319         case "$getgrent_r_proto" in
12320         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12321         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12322         esac
12323         case "$getgrent_r_proto" in
12324         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12325         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12326         esac
12327         case "$getgrent_r_proto" in
12328         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12329         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12330         esac
12331         case "$getgrent_r_proto" in
12332         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12333         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12334         esac
12335         case "$getgrent_r_proto" in
12336         ''|0) try='int getgrent_r(struct group*, char*, int);'
12337         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12338         esac
12339         case "$getgrent_r_proto" in
12340         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12341         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12342         esac
12343         case "$getgrent_r_proto" in
12344         ''|0)   d_getgrent_r=undef
12345                 getgrent_r_proto=0
12346                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12347         * )     case "$getgrent_r_proto" in
12348                 REENTRANT_PROTO*) ;;
12349                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12350                 esac
12351                 echo "Prototype: $try" ;;
12352         esac
12353         ;;
12354         *)      case "$usethreads" in
12355                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12356                 esac
12357                 d_getgrent_r=undef
12358                 getgrent_r_proto=0
12359                 ;;
12360         esac
12361         ;;
12362 *)      getgrent_r_proto=0
12363         ;;
12364 esac
12365
12366 : see if getgrgid_r exists
12367 set getgrgid_r d_getgrgid_r
12368 eval $inlibc
12369 case "$d_getgrgid_r" in
12370 "$define")
12371         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12372         case "$d_getgrgid_r_proto:$usethreads" in
12373         ":define")      d_getgrgid_r_proto=define
12374                 set d_getgrgid_r_proto getgrgid_r $hdrs
12375                 eval $hasproto ;;
12376         *)      ;;
12377         esac
12378         case "$d_getgrgid_r_proto" in
12379         define)
12380         case "$getgrgid_r_proto" in
12381         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12382         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12383         esac
12384         case "$getgrgid_r_proto" in
12385         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12386         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12387         esac
12388         case "$getgrgid_r_proto" in
12389         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12390         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12391         esac
12392         case "$getgrgid_r_proto" in
12393         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12394         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12395         esac
12396         case "$getgrgid_r_proto" in
12397         ''|0)   d_getgrgid_r=undef
12398                 getgrgid_r_proto=0
12399                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12400         * )     case "$getgrgid_r_proto" in
12401                 REENTRANT_PROTO*) ;;
12402                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12403                 esac
12404                 echo "Prototype: $try" ;;
12405         esac
12406         ;;
12407         *)      case "$usethreads" in
12408                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12409                 esac
12410                 d_getgrgid_r=undef
12411                 getgrgid_r_proto=0
12412                 ;;
12413         esac
12414         ;;
12415 *)      getgrgid_r_proto=0
12416         ;;
12417 esac
12418
12419 : see if getgrnam_r exists
12420 set getgrnam_r d_getgrnam_r
12421 eval $inlibc
12422 case "$d_getgrnam_r" in
12423 "$define")
12424         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12425         case "$d_getgrnam_r_proto:$usethreads" in
12426         ":define")      d_getgrnam_r_proto=define
12427                 set d_getgrnam_r_proto getgrnam_r $hdrs
12428                 eval $hasproto ;;
12429         *)      ;;
12430         esac
12431         case "$d_getgrnam_r_proto" in
12432         define)
12433         case "$getgrnam_r_proto" in
12434         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12435         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12436         esac
12437         case "$getgrnam_r_proto" in
12438         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12439         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12440         esac
12441         case "$getgrnam_r_proto" in
12442         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12443         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12444         esac
12445         case "$getgrnam_r_proto" in
12446         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12447         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12448         esac
12449         case "$getgrnam_r_proto" in
12450         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12451         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12452         esac
12453         case "$getgrnam_r_proto" in
12454         ''|0)   d_getgrnam_r=undef
12455                 getgrnam_r_proto=0
12456                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12457         * )     case "$getgrnam_r_proto" in
12458                 REENTRANT_PROTO*) ;;
12459                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12460                 esac
12461                 echo "Prototype: $try" ;;
12462         esac
12463         ;;
12464         *)      case "$usethreads" in
12465                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12466                 esac
12467                 d_getgrnam_r=undef
12468                 getgrnam_r_proto=0
12469                 ;;
12470         esac
12471         ;;
12472 *)      getgrnam_r_proto=0
12473         ;;
12474 esac
12475
12476 : see if gethostbyaddr exists
12477 set gethostbyaddr d_gethbyaddr
12478 eval $inlibc
12479
12480 : see if gethostbyname exists
12481 set gethostbyname d_gethbyname
12482 eval $inlibc
12483
12484 : see if gethostent exists
12485 set gethostent d_gethent
12486 eval $inlibc
12487
12488 : see how we will look up host name
12489 echo " "
12490 call=''
12491 if set gethostname val -f d_gethname; eval $csym; $val; then
12492         echo 'gethostname() found.' >&4
12493         d_gethname="$define"
12494         call=gethostname
12495 fi
12496 if set uname val -f d_uname; eval $csym; $val; then
12497         if ./xenix; then
12498                 $cat <<'EOM'
12499 uname() was found, but you're running xenix, and older versions of xenix
12500 have a broken uname(). If you don't really know whether your xenix is old
12501 enough to have a broken system call, use the default answer.
12502
12503 EOM
12504                 dflt=y
12505                 case "$d_uname" in
12506                 "$define") dflt=n;;
12507                 esac
12508                 rp='Is your uname() broken?'
12509                 . ./myread
12510                 case "$ans" in
12511                 n*) d_uname="$define"; call=uname;;
12512                 esac
12513         else
12514                 echo 'uname() found.' >&4
12515                 d_uname="$define"
12516                 case "$call" in
12517                 '') call=uname ;;
12518                 esac
12519         fi
12520 fi
12521 case "$d_gethname" in
12522 '') d_gethname="$undef";;
12523 esac
12524 case "$d_uname" in
12525 '') d_uname="$undef";;
12526 esac
12527 case "$d_uname$d_gethname" in
12528 *define*)
12529         dflt=n
12530         cat <<EOM
12531  
12532 Every now and then someone has a $call() that lies about the hostname
12533 but can't be fixed for political or economic reasons.  If you wish, I can
12534 pretend $call() isn't there and maybe compute hostname at run-time
12535 thanks to the '$phostname' command.
12536
12537 EOM
12538         rp="Shall I ignore $call() from now on?"
12539         . ./myread
12540         case "$ans" in
12541         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12542         esac;;
12543 esac
12544 case "$phostname" in
12545 '') aphostname='';;
12546 *) case "$aphostname" in
12547         /*) ;;
12548         *) set X $phostname
12549                 shift
12550                 file=$1
12551                 shift
12552                 file=`./loc $file $file $pth`
12553                 aphostname=`echo $file $*`
12554                 ;;
12555         esac
12556         ;;
12557 esac
12558 case "$d_uname$d_gethname" in
12559 *define*) ;;
12560 *)
12561         case "$phostname" in
12562         '')
12563                 echo "There will be no way for $package to get your hostname." >&4;;
12564         *)
12565         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12566                 ;;
12567         esac;;
12568 esac
12569 case "$d_phostname" in
12570 '') d_phostname="$undef";;
12571 esac
12572
12573 : see if gethostbyaddr_r exists
12574 set gethostbyaddr_r d_gethostbyaddr_r
12575 eval $inlibc
12576 case "$d_gethostbyaddr_r" in
12577 "$define")
12578         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12579         case "$d_gethostbyaddr_r_proto:$usethreads" in
12580         ":define")      d_gethostbyaddr_r_proto=define
12581                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12582                 eval $hasproto ;;
12583         *)      ;;
12584         esac
12585         case "$d_gethostbyaddr_r_proto" in
12586         define)
12587         case "$gethostbyaddr_r_proto" in
12588         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12589         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12590         esac
12591         case "$gethostbyaddr_r_proto" in
12592         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12593         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12594         esac
12595         case "$gethostbyaddr_r_proto" in
12596         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12597         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12598         esac
12599         case "$gethostbyaddr_r_proto" in
12600         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12601         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12602         esac
12603         case "$gethostbyaddr_r_proto" in
12604         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12605         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12606         esac
12607         case "$gethostbyaddr_r_proto" in
12608         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12609         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12610         esac
12611         case "$gethostbyaddr_r_proto" in
12612         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12613         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12614         esac
12615         case "$gethostbyaddr_r_proto" in
12616         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12617         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12618         esac
12619         case "$gethostbyaddr_r_proto" in
12620         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12621         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12622         esac
12623         case "$gethostbyaddr_r_proto" in
12624         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12625         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12626         esac
12627         case "$gethostbyaddr_r_proto" in
12628         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12629         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12630         esac
12631         case "$gethostbyaddr_r_proto" in
12632         ''|0)   d_gethostbyaddr_r=undef
12633                 gethostbyaddr_r_proto=0
12634                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12635         * )     case "$gethostbyaddr_r_proto" in
12636                 REENTRANT_PROTO*) ;;
12637                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12638                 esac
12639                 echo "Prototype: $try" ;;
12640         esac
12641         ;;
12642         *)      case "$usethreads" in
12643                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12644                 esac
12645                 d_gethostbyaddr_r=undef
12646                 gethostbyaddr_r_proto=0
12647                 ;;
12648         esac
12649         ;;
12650 *)      gethostbyaddr_r_proto=0
12651         ;;
12652 esac
12653
12654 : see if gethostbyname_r exists
12655 set gethostbyname_r d_gethostbyname_r
12656 eval $inlibc
12657 case "$d_gethostbyname_r" in
12658 "$define")
12659         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12660         case "$d_gethostbyname_r_proto:$usethreads" in
12661         ":define")      d_gethostbyname_r_proto=define
12662                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12663                 eval $hasproto ;;
12664         *)      ;;
12665         esac
12666         case "$d_gethostbyname_r_proto" in
12667         define)
12668         case "$gethostbyname_r_proto" in
12669         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12670         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12671         esac
12672         case "$gethostbyname_r_proto" in
12673         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12674         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12675         esac
12676         case "$gethostbyname_r_proto" in
12677         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12678         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12679         esac
12680         case "$gethostbyname_r_proto" in
12681         ''|0)   d_gethostbyname_r=undef
12682                 gethostbyname_r_proto=0
12683                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12684         * )     case "$gethostbyname_r_proto" in
12685                 REENTRANT_PROTO*) ;;
12686                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12687                 esac
12688                 echo "Prototype: $try" ;;
12689         esac
12690         ;;
12691         *)      case "$usethreads" in
12692                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12693                 esac
12694                 d_gethostbyname_r=undef
12695                 gethostbyname_r_proto=0
12696                 ;;
12697         esac
12698         ;;
12699 *)      gethostbyname_r_proto=0
12700         ;;
12701 esac
12702
12703 : see if gethostent_r exists
12704 set gethostent_r d_gethostent_r
12705 eval $inlibc
12706 case "$d_gethostent_r" in
12707 "$define")
12708         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12709         case "$d_gethostent_r_proto:$usethreads" in
12710         ":define")      d_gethostent_r_proto=define
12711                 set d_gethostent_r_proto gethostent_r $hdrs
12712                 eval $hasproto ;;
12713         *)      ;;
12714         esac
12715         case "$d_gethostent_r_proto" in
12716         define)
12717         case "$gethostent_r_proto" in
12718         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12719         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12720         esac
12721         case "$gethostent_r_proto" in
12722         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12723         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12724         esac
12725         case "$gethostent_r_proto" in
12726         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12727         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12728         esac
12729         case "$gethostent_r_proto" in
12730         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12731         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12732         esac
12733         case "$gethostent_r_proto" in
12734         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12735         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12736         esac
12737         case "$gethostent_r_proto" in
12738         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12739         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12740         esac
12741         case "$gethostent_r_proto" in
12742         ''|0)   d_gethostent_r=undef
12743                 gethostent_r_proto=0
12744                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12745         * )     case "$gethostent_r_proto" in
12746                 REENTRANT_PROTO*) ;;
12747                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12748                 esac
12749                 echo "Prototype: $try" ;;
12750         esac
12751         ;;
12752         *)      case "$usethreads" in
12753                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12754                 esac
12755                 d_gethostent_r=undef
12756                 gethostent_r_proto=0
12757                 ;;
12758         esac
12759         ;;
12760 *)      gethostent_r_proto=0
12761         ;;
12762 esac
12763
12764 : see if prototypes for various gethostxxx netdb.h functions are available
12765 echo " "
12766 set d_gethostprotos gethostent $i_netdb netdb.h
12767 eval $hasproto
12768
12769 : see if getitimer exists
12770 set getitimer d_getitimer
12771 eval $inlibc
12772
12773 : see if getlogin exists
12774 set getlogin d_getlogin
12775 eval $inlibc
12776
12777 : see if getlogin_r exists
12778 set getlogin_r d_getlogin_r
12779 eval $inlibc
12780 case "$d_getlogin_r" in
12781 "$define")
12782         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12783         case "$d_getlogin_r_proto:$usethreads" in
12784         ":define")      d_getlogin_r_proto=define
12785                 set d_getlogin_r_proto getlogin_r $hdrs
12786                 eval $hasproto ;;
12787         *)      ;;
12788         esac
12789         case "$d_getlogin_r_proto" in
12790         define)
12791         case "$getlogin_r_proto" in
12792         ''|0) try='int getlogin_r(char*, size_t);'
12793         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12794         esac
12795         case "$getlogin_r_proto" in
12796         ''|0) try='int getlogin_r(char*, int);'
12797         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12798         esac
12799         case "$getlogin_r_proto" in
12800         ''|0) try='char* getlogin_r(char*, size_t);'
12801         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12802         esac
12803         case "$getlogin_r_proto" in
12804         ''|0) try='char* getlogin_r(char*, int);'
12805         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12806         esac
12807         case "$getlogin_r_proto" in
12808         ''|0)   d_getlogin_r=undef
12809                 getlogin_r_proto=0
12810                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12811         * )     case "$getlogin_r_proto" in
12812                 REENTRANT_PROTO*) ;;
12813                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12814                 esac
12815                 echo "Prototype: $try" ;;
12816         esac
12817         ;;
12818         *)      case "$usethreads" in
12819                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12820                 esac
12821                 d_getlogin_r=undef
12822                 getlogin_r_proto=0
12823                 ;;
12824         esac
12825         ;;
12826 *)      getlogin_r_proto=0
12827         ;;
12828 esac
12829
12830 : see if getmnt exists
12831 set getmnt d_getmnt
12832 eval $inlibc
12833
12834 : see if getmntent exists
12835 set getmntent d_getmntent
12836 eval $inlibc
12837
12838 : see if getnetbyaddr exists
12839 set getnetbyaddr d_getnbyaddr
12840 eval $inlibc
12841
12842 : see if getnetbyname exists
12843 set getnetbyname d_getnbyname
12844 eval $inlibc
12845
12846 : see if getnetent exists
12847 set getnetent d_getnent
12848 eval $inlibc
12849
12850 : see if getnetbyaddr_r exists
12851 set getnetbyaddr_r d_getnetbyaddr_r
12852 eval $inlibc
12853 case "$d_getnetbyaddr_r" in
12854 "$define")
12855         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12856         case "$d_getnetbyaddr_r_proto:$usethreads" in
12857         ":define")      d_getnetbyaddr_r_proto=define
12858                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12859                 eval $hasproto ;;
12860         *)      ;;
12861         esac
12862         case "$d_getnetbyaddr_r_proto" in
12863         define)
12864         case "$getnetbyaddr_r_proto" in
12865         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12866         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12867         esac
12868         case "$getnetbyaddr_r_proto" in
12869         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12870         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12871         esac
12872         case "$getnetbyaddr_r_proto" in
12873         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12874         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12875         esac
12876         case "$getnetbyaddr_r_proto" in
12877         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12878         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12879         esac
12880         case "$getnetbyaddr_r_proto" in
12881         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12882         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12883         esac
12884         case "$getnetbyaddr_r_proto" in
12885         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12886         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12887         esac
12888         case "$getnetbyaddr_r_proto" in
12889         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12890         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12891         esac
12892         case "$getnetbyaddr_r_proto" in
12893         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12894         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12895         esac
12896         case "$getnetbyaddr_r_proto" in
12897         ''|0)   d_getnetbyaddr_r=undef
12898                 getnetbyaddr_r_proto=0
12899                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12900         * )     case "$getnetbyaddr_r_proto" in
12901                 REENTRANT_PROTO*) ;;
12902                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12903                 esac
12904                 echo "Prototype: $try" ;;
12905         esac
12906         ;;
12907         *)      case "$usethreads" in
12908                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12909                 esac
12910                 d_getnetbyaddr_r=undef
12911                 getnetbyaddr_r_proto=0
12912                 ;;
12913         esac
12914         ;;
12915 *)      getnetbyaddr_r_proto=0
12916         ;;
12917 esac
12918
12919 : see if getnetbyname_r exists
12920 set getnetbyname_r d_getnetbyname_r
12921 eval $inlibc
12922 case "$d_getnetbyname_r" in
12923 "$define")
12924         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12925         case "$d_getnetbyname_r_proto:$usethreads" in
12926         ":define")      d_getnetbyname_r_proto=define
12927                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12928                 eval $hasproto ;;
12929         *)      ;;
12930         esac
12931         case "$d_getnetbyname_r_proto" in
12932         define)
12933         case "$getnetbyname_r_proto" in
12934         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12935         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12936         esac
12937         case "$getnetbyname_r_proto" in
12938         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12939         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12940         esac
12941         case "$getnetbyname_r_proto" in
12942         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12943         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12944         esac
12945         case "$getnetbyname_r_proto" in
12946         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12947         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12948         esac
12949         case "$getnetbyname_r_proto" in
12950         ''|0)   d_getnetbyname_r=undef
12951                 getnetbyname_r_proto=0
12952                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12953         * )     case "$getnetbyname_r_proto" in
12954                 REENTRANT_PROTO*) ;;
12955                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12956                 esac
12957                 echo "Prototype: $try" ;;
12958         esac
12959         ;;
12960         *)      case "$usethreads" in
12961                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12962                 esac
12963                 d_getnetbyname_r=undef
12964                 getnetbyname_r_proto=0
12965                 ;;
12966         esac
12967         ;;
12968 *)      getnetbyname_r_proto=0
12969         ;;
12970 esac
12971
12972 : see if getnetent_r exists
12973 set getnetent_r d_getnetent_r
12974 eval $inlibc
12975 case "$d_getnetent_r" in
12976 "$define")
12977         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12978         case "$d_getnetent_r_proto:$usethreads" in
12979         ":define")      d_getnetent_r_proto=define
12980                 set d_getnetent_r_proto getnetent_r $hdrs
12981                 eval $hasproto ;;
12982         *)      ;;
12983         esac
12984         case "$d_getnetent_r_proto" in
12985         define)
12986         case "$getnetent_r_proto" in
12987         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12988         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12989         esac
12990         case "$getnetent_r_proto" in
12991         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12992         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12993         esac
12994         case "$getnetent_r_proto" in
12995         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12996         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12997         esac
12998         case "$getnetent_r_proto" in
12999         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13000         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13001         esac
13002         case "$getnetent_r_proto" in
13003         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13004         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13005         esac
13006         case "$getnetent_r_proto" in
13007         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13008         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13009         esac
13010         case "$getnetent_r_proto" in
13011         ''|0)   d_getnetent_r=undef
13012                 getnetent_r_proto=0
13013                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13014         * )     case "$getnetent_r_proto" in
13015                 REENTRANT_PROTO*) ;;
13016                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13017                 esac
13018                 echo "Prototype: $try" ;;
13019         esac
13020         ;;
13021         *)      case "$usethreads" in
13022                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13023                 esac
13024                 d_getnetent_r=undef
13025                 getnetent_r_proto=0
13026                 ;;
13027         esac
13028         ;;
13029 *)      getnetent_r_proto=0
13030         ;;
13031 esac
13032
13033 : see if prototypes for various getnetxxx netdb.h functions are available
13034 echo " "
13035 set d_getnetprotos getnetent $i_netdb netdb.h
13036 eval $hasproto
13037
13038 : see if getpagesize exists
13039 set getpagesize d_getpagsz
13040 eval $inlibc
13041
13042
13043 : see if getprotobyname exists
13044 set getprotobyname d_getpbyname
13045 eval $inlibc
13046
13047 : see if getprotobynumber exists
13048 set getprotobynumber d_getpbynumber
13049 eval $inlibc
13050
13051 : see if getprotoent exists
13052 set getprotoent d_getpent
13053 eval $inlibc
13054
13055 : see if getpgid exists
13056 set getpgid d_getpgid
13057 eval $inlibc
13058
13059 : see if getpgrp2 exists
13060 set getpgrp2 d_getpgrp2
13061 eval $inlibc
13062
13063 : see if getppid exists
13064 set getppid d_getppid
13065 eval $inlibc
13066
13067 : see if getpriority exists
13068 set getpriority d_getprior
13069 eval $inlibc
13070
13071 : see if getprotobyname_r exists
13072 set getprotobyname_r d_getprotobyname_r
13073 eval $inlibc
13074 case "$d_getprotobyname_r" in
13075 "$define")
13076         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13077         case "$d_getprotobyname_r_proto:$usethreads" in
13078         ":define")      d_getprotobyname_r_proto=define
13079                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13080                 eval $hasproto ;;
13081         *)      ;;
13082         esac
13083         case "$d_getprotobyname_r_proto" in
13084         define)
13085         case "$getprotobyname_r_proto" in
13086         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13087         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13088         esac
13089         case "$getprotobyname_r_proto" in
13090         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13091         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13092         esac
13093         case "$getprotobyname_r_proto" in
13094         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13095         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13096         esac
13097         case "$getprotobyname_r_proto" in
13098         ''|0)   d_getprotobyname_r=undef
13099                 getprotobyname_r_proto=0
13100                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13101         * )     case "$getprotobyname_r_proto" in
13102                 REENTRANT_PROTO*) ;;
13103                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13104                 esac
13105                 echo "Prototype: $try" ;;
13106         esac
13107         ;;
13108         *)      case "$usethreads" in
13109                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13110                 esac
13111                 d_getprotobyname_r=undef
13112                 getprotobyname_r_proto=0
13113                 ;;
13114         esac
13115         ;;
13116 *)      getprotobyname_r_proto=0
13117         ;;
13118 esac
13119
13120 : see if getprotobynumber_r exists
13121 set getprotobynumber_r d_getprotobynumber_r
13122 eval $inlibc
13123 case "$d_getprotobynumber_r" in
13124 "$define")
13125         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13126         case "$d_getprotobynumber_r_proto:$usethreads" in
13127         ":define")      d_getprotobynumber_r_proto=define
13128                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13129                 eval $hasproto ;;
13130         *)      ;;
13131         esac
13132         case "$d_getprotobynumber_r_proto" in
13133         define)
13134         case "$getprotobynumber_r_proto" in
13135         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13136         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13137         esac
13138         case "$getprotobynumber_r_proto" in
13139         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13140         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13141         esac
13142         case "$getprotobynumber_r_proto" in
13143         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13144         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13145         esac
13146         case "$getprotobynumber_r_proto" in
13147         ''|0)   d_getprotobynumber_r=undef
13148                 getprotobynumber_r_proto=0
13149                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13150         * )     case "$getprotobynumber_r_proto" in
13151                 REENTRANT_PROTO*) ;;
13152                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13153                 esac
13154                 echo "Prototype: $try" ;;
13155         esac
13156         ;;
13157         *)      case "$usethreads" in
13158                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13159                 esac
13160                 d_getprotobynumber_r=undef
13161                 getprotobynumber_r_proto=0
13162                 ;;
13163         esac
13164         ;;
13165 *)      getprotobynumber_r_proto=0
13166         ;;
13167 esac
13168
13169 : see if getprotoent_r exists
13170 set getprotoent_r d_getprotoent_r
13171 eval $inlibc
13172 case "$d_getprotoent_r" in
13173 "$define")
13174         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13175         case "$d_getprotoent_r_proto:$usethreads" in
13176         ":define")      d_getprotoent_r_proto=define
13177                 set d_getprotoent_r_proto getprotoent_r $hdrs
13178                 eval $hasproto ;;
13179         *)      ;;
13180         esac
13181         case "$d_getprotoent_r_proto" in
13182         define)
13183         case "$getprotoent_r_proto" in
13184         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13185         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13186         esac
13187         case "$getprotoent_r_proto" in
13188         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13189         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13190         esac
13191         case "$getprotoent_r_proto" in
13192         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13193         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13194         esac
13195         case "$getprotoent_r_proto" in
13196         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13197         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13198         esac
13199         case "$getprotoent_r_proto" in
13200         ''|0)   d_getprotoent_r=undef
13201                 getprotoent_r_proto=0
13202                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13203         * )     case "$getprotoent_r_proto" in
13204                 REENTRANT_PROTO*) ;;
13205                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13206                 esac
13207                 echo "Prototype: $try" ;;
13208         esac
13209         ;;
13210         *)      case "$usethreads" in
13211                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13212                 esac
13213                 d_getprotoent_r=undef
13214                 getprotoent_r_proto=0
13215                 ;;
13216         esac
13217         ;;
13218 *)      getprotoent_r_proto=0
13219         ;;
13220 esac
13221
13222 : see if prototypes for various getprotoxxx netdb.h functions are available
13223 echo " "
13224 set d_getprotoprotos getprotoent $i_netdb netdb.h
13225 eval $hasproto
13226
13227 : see if getprpwnam exists
13228 set getprpwnam d_getprpwnam
13229 eval $inlibc
13230
13231 : see if getpwent exists
13232 set getpwent d_getpwent
13233 eval $inlibc
13234
13235 : see if getpwent_r exists
13236 set getpwent_r d_getpwent_r
13237 eval $inlibc
13238 case "$d_getpwent_r" in
13239 "$define")
13240         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13241         case "$d_getpwent_r_proto:$usethreads" in
13242         ":define")      d_getpwent_r_proto=define
13243                 set d_getpwent_r_proto getpwent_r $hdrs
13244                 eval $hasproto ;;
13245         *)      ;;
13246         esac
13247         case "$d_getpwent_r_proto" in
13248         define)
13249         case "$getpwent_r_proto" in
13250         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13251         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13252         esac
13253         case "$getpwent_r_proto" in
13254         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13255         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13256         esac
13257         case "$getpwent_r_proto" in
13258         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13259         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13260         esac
13261         case "$getpwent_r_proto" in
13262         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13263         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13264         esac
13265         case "$getpwent_r_proto" in
13266         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13267         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13268         esac
13269         case "$getpwent_r_proto" in
13270         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13271         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13272         esac
13273         case "$getpwent_r_proto" in
13274         ''|0)   d_getpwent_r=undef
13275                 getpwent_r_proto=0
13276                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13277         * )     case "$getpwent_r_proto" in
13278                 REENTRANT_PROTO*) ;;
13279                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13280                 esac
13281                 echo "Prototype: $try" ;;
13282         esac
13283         ;;
13284         *)      case "$usethreads" in
13285                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13286                 esac
13287                 d_getpwent_r=undef
13288                 getpwent_r_proto=0
13289                 ;;
13290         esac
13291         ;;
13292 *)      getpwent_r_proto=0
13293         ;;
13294 esac
13295
13296 : see if getpwnam_r exists
13297 set getpwnam_r d_getpwnam_r
13298 eval $inlibc
13299 case "$d_getpwnam_r" in
13300 "$define")
13301         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13302         case "$d_getpwnam_r_proto:$usethreads" in
13303         ":define")      d_getpwnam_r_proto=define
13304                 set d_getpwnam_r_proto getpwnam_r $hdrs
13305                 eval $hasproto ;;
13306         *)      ;;
13307         esac
13308         case "$d_getpwnam_r_proto" in
13309         define)
13310         case "$getpwnam_r_proto" in
13311         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13312         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13313         esac
13314         case "$getpwnam_r_proto" in
13315         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13316         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13317         esac
13318         case "$getpwnam_r_proto" in
13319         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13320         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13321         esac
13322         case "$getpwnam_r_proto" in
13323         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13324         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13325         esac
13326         case "$getpwnam_r_proto" in
13327         ''|0)   d_getpwnam_r=undef
13328                 getpwnam_r_proto=0
13329                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13330         * )     case "$getpwnam_r_proto" in
13331                 REENTRANT_PROTO*) ;;
13332                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13333                 esac
13334                 echo "Prototype: $try" ;;
13335         esac
13336         ;;
13337         *)      case "$usethreads" in
13338                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13339                 esac
13340                 d_getpwnam_r=undef
13341                 getpwnam_r_proto=0
13342                 ;;
13343         esac
13344         ;;
13345 *)      getpwnam_r_proto=0
13346         ;;
13347 esac
13348
13349 : see if getpwuid_r exists
13350 set getpwuid_r d_getpwuid_r
13351 eval $inlibc
13352 case "$d_getpwuid_r" in
13353 "$define")
13354         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13355         case "$d_getpwuid_r_proto:$usethreads" in
13356         ":define")      d_getpwuid_r_proto=define
13357                 set d_getpwuid_r_proto getpwuid_r $hdrs
13358                 eval $hasproto ;;
13359         *)      ;;
13360         esac
13361         case "$d_getpwuid_r_proto" in
13362         define)
13363         case "$getpwuid_r_proto" in
13364         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13365         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13366         esac
13367         case "$getpwuid_r_proto" in
13368         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13369         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13370         esac
13371         case "$getpwuid_r_proto" in
13372         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13373         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13374         esac
13375         case "$getpwuid_r_proto" in
13376         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13377         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13378         esac
13379         case "$getpwuid_r_proto" in
13380         ''|0)   d_getpwuid_r=undef
13381                 getpwuid_r_proto=0
13382                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13383         * )     case "$getpwuid_r_proto" in
13384                 REENTRANT_PROTO*) ;;
13385                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13386                 esac
13387                 echo "Prototype: $try" ;;
13388         esac
13389         ;;
13390         *)      case "$usethreads" in
13391                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13392                 esac
13393                 d_getpwuid_r=undef
13394                 getpwuid_r_proto=0
13395                 ;;
13396         esac
13397         ;;
13398 *)      getpwuid_r_proto=0
13399         ;;
13400 esac
13401
13402
13403 : see if getservbyname exists
13404 set getservbyname d_getsbyname
13405 eval $inlibc
13406
13407 : see if getservbyport exists
13408 set getservbyport d_getsbyport
13409 eval $inlibc
13410
13411 : see if getservent exists
13412 set getservent d_getsent
13413 eval $inlibc
13414
13415 : see if getservbyname_r exists
13416 set getservbyname_r d_getservbyname_r
13417 eval $inlibc
13418 case "$d_getservbyname_r" in
13419 "$define")
13420         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13421         case "$d_getservbyname_r_proto:$usethreads" in
13422         ":define")      d_getservbyname_r_proto=define
13423                 set d_getservbyname_r_proto getservbyname_r $hdrs
13424                 eval $hasproto ;;
13425         *)      ;;
13426         esac
13427         case "$d_getservbyname_r_proto" in
13428         define)
13429         case "$getservbyname_r_proto" in
13430         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13431         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13432         esac
13433         case "$getservbyname_r_proto" in
13434         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13435         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13436         esac
13437         case "$getservbyname_r_proto" in
13438         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13439         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13440         esac
13441         case "$getservbyname_r_proto" in
13442         ''|0)   d_getservbyname_r=undef
13443                 getservbyname_r_proto=0
13444                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13445         * )     case "$getservbyname_r_proto" in
13446                 REENTRANT_PROTO*) ;;
13447                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13448                 esac
13449                 echo "Prototype: $try" ;;
13450         esac
13451         ;;
13452         *)      case "$usethreads" in
13453                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13454                 esac
13455                 d_getservbyname_r=undef
13456                 getservbyname_r_proto=0
13457                 ;;
13458         esac
13459         ;;
13460 *)      getservbyname_r_proto=0
13461         ;;
13462 esac
13463
13464 : see if getservbyport_r exists
13465 set getservbyport_r d_getservbyport_r
13466 eval $inlibc
13467 case "$d_getservbyport_r" in
13468 "$define")
13469         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13470         case "$d_getservbyport_r_proto:$usethreads" in
13471         ":define")      d_getservbyport_r_proto=define
13472                 set d_getservbyport_r_proto getservbyport_r $hdrs
13473                 eval $hasproto ;;
13474         *)      ;;
13475         esac
13476         case "$d_getservbyport_r_proto" in
13477         define)
13478         case "$getservbyport_r_proto" in
13479         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13480         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13481         esac
13482         case "$getservbyport_r_proto" in
13483         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13484         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13485         esac
13486         case "$getservbyport_r_proto" in
13487         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13488         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13489         esac
13490         case "$getservbyport_r_proto" in
13491         ''|0)   d_getservbyport_r=undef
13492                 getservbyport_r_proto=0
13493                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13494         * )     case "$getservbyport_r_proto" in
13495                 REENTRANT_PROTO*) ;;
13496                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13497                 esac
13498                 echo "Prototype: $try" ;;
13499         esac
13500         ;;
13501         *)      case "$usethreads" in
13502                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13503                 esac
13504                 d_getservbyport_r=undef
13505                 getservbyport_r_proto=0
13506                 ;;
13507         esac
13508         ;;
13509 *)      getservbyport_r_proto=0
13510         ;;
13511 esac
13512
13513 : see if getservent_r exists
13514 set getservent_r d_getservent_r
13515 eval $inlibc
13516 case "$d_getservent_r" in
13517 "$define")
13518         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13519         case "$d_getservent_r_proto:$usethreads" in
13520         ":define")      d_getservent_r_proto=define
13521                 set d_getservent_r_proto getservent_r $hdrs
13522                 eval $hasproto ;;
13523         *)      ;;
13524         esac
13525         case "$d_getservent_r_proto" in
13526         define)
13527         case "$getservent_r_proto" in
13528         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13529         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13530         esac
13531         case "$getservent_r_proto" in
13532         ''|0) try='int getservent_r(struct servent*, char*, int);'
13533         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13534         esac
13535         case "$getservent_r_proto" in
13536         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13537         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13538         esac
13539         case "$getservent_r_proto" in
13540         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13541         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13542         esac
13543         case "$getservent_r_proto" in
13544         ''|0)   d_getservent_r=undef
13545                 getservent_r_proto=0
13546                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13547         * )     case "$getservent_r_proto" in
13548                 REENTRANT_PROTO*) ;;
13549                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13550                 esac
13551                 echo "Prototype: $try" ;;
13552         esac
13553         ;;
13554         *)      case "$usethreads" in
13555                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13556                 esac
13557                 d_getservent_r=undef
13558                 getservent_r_proto=0
13559                 ;;
13560         esac
13561         ;;
13562 *)      getservent_r_proto=0
13563         ;;
13564 esac
13565
13566 : see if prototypes for various getservxxx netdb.h functions are available
13567 echo " "
13568 set d_getservprotos getservent $i_netdb netdb.h
13569 eval $hasproto
13570
13571 : see if getspnam exists
13572 set getspnam d_getspnam
13573 eval $inlibc
13574
13575 : see if this is a shadow.h system
13576 set shadow.h i_shadow
13577 eval $inhdr
13578
13579 : see if getspnam_r exists
13580 set getspnam_r d_getspnam_r
13581 eval $inlibc
13582 case "$d_getspnam_r" in
13583 "$define")
13584         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13585         case "$d_getspnam_r_proto:$usethreads" in
13586         ":define")      d_getspnam_r_proto=define
13587                 set d_getspnam_r_proto getspnam_r $hdrs
13588                 eval $hasproto ;;
13589         *)      ;;
13590         esac
13591         case "$d_getspnam_r_proto" in
13592         define)
13593         case "$getspnam_r_proto" in
13594         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13595         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13596         esac
13597         case "$getspnam_r_proto" in
13598         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13599         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13600         esac
13601         case "$getspnam_r_proto" in
13602         ''|0)   d_getspnam_r=undef
13603                 getspnam_r_proto=0
13604                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13605         * )     case "$getspnam_r_proto" in
13606                 REENTRANT_PROTO*) ;;
13607                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13608                 esac
13609                 echo "Prototype: $try" ;;
13610         esac
13611         ;;
13612         *)      case "$usethreads" in
13613                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13614                 esac
13615                 d_getspnam_r=undef
13616                 getspnam_r_proto=0
13617                 ;;
13618         esac
13619         ;;
13620 *)      getspnam_r_proto=0
13621         ;;
13622 esac
13623
13624 : see if gettimeofday or ftime exists
13625 set gettimeofday d_gettimeod
13626 eval $inlibc
13627 case "$d_gettimeod" in
13628 "$undef")
13629         set ftime d_ftime 
13630         eval $inlibc
13631         ;;
13632 *)
13633         val="$undef"; set d_ftime; eval $setvar
13634         ;;
13635 esac
13636 case "$d_gettimeod$d_ftime" in
13637 "$undef$undef")
13638         echo " "
13639         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13640         ;;
13641 esac
13642
13643 : see if gmtime_r exists
13644 set gmtime_r d_gmtime_r
13645 eval $inlibc
13646 case "$d_gmtime_r" in
13647 "$define")
13648         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13649         case "$d_gmtime_r_proto:$usethreads" in
13650         ":define")      d_gmtime_r_proto=define
13651                 set d_gmtime_r_proto gmtime_r $hdrs
13652                 eval $hasproto ;;
13653         *)      ;;
13654         esac
13655         case "$d_gmtime_r_proto" in
13656         define)
13657         case "$gmtime_r_proto" in
13658         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13659         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13660         esac
13661         case "$gmtime_r_proto" in
13662         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13663         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13664         esac
13665         case "$gmtime_r_proto" in
13666         ''|0)   d_gmtime_r=undef
13667                 gmtime_r_proto=0
13668                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13669         * )     case "$gmtime_r_proto" in
13670                 REENTRANT_PROTO*) ;;
13671                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13672                 esac
13673                 echo "Prototype: $try" ;;
13674         esac
13675         ;;
13676         *)      case "$usethreads" in
13677                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13678                 esac
13679                 d_gmtime_r=undef
13680                 gmtime_r_proto=0
13681                 ;;
13682         esac
13683         ;;
13684 *)      gmtime_r_proto=0
13685         ;;
13686 esac
13687
13688 : see if hasmntopt exists
13689 set hasmntopt d_hasmntopt
13690 eval $inlibc
13691
13692 : see if this is a netinet/in.h or sys/in.h system
13693 set netinet/in.h i_niin sys/in.h i_sysin
13694 eval $inhdr
13695
13696 : see if arpa/inet.h has to be included
13697 set arpa/inet.h i_arpainet
13698 eval $inhdr
13699
13700 : see if htonl --and friends-- exists
13701 val=''
13702 set htonl val
13703 eval $inlibc
13704
13705 : Maybe they are macros.
13706 case "$val" in
13707 $undef)
13708         $cat >htonl.c <<EOM
13709 #include <stdio.h>
13710 #include <sys/types.h>
13711 #$i_niin I_NETINET_IN
13712 #$i_sysin I_SYS_IN
13713 #$i_arpainet I_ARPA_INET
13714 #ifdef I_NETINET_IN
13715 #include <netinet/in.h>
13716 #endif
13717 #ifdef I_SYS_IN
13718 #include <sys/in.h>
13719 #endif
13720 #ifdef I_ARPA_INET
13721 #include <arpa/inet.h>
13722 #endif
13723 #ifdef htonl
13724 printf("Defined as a macro.");
13725 #endif
13726 EOM
13727         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13728         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13729                 val="$define"
13730                 echo "But it seems to be defined as a macro." >&4
13731         fi
13732         $rm -f htonl.?
13733         ;;
13734 esac
13735 set d_htonl
13736 eval $setvar
13737
13738 : see if ilogbl exists
13739 set ilogbl d_ilogbl
13740 eval $inlibc
13741
13742 : index or strchr
13743 echo " "
13744 if set index val -f; eval $csym; $val; then
13745         if set strchr val -f d_strchr; eval $csym; $val; then
13746                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13747                         val="$define"
13748                         vali="$undef"
13749                         echo "strchr() found." >&4
13750                 else
13751                         val="$undef"
13752                         vali="$define"
13753                         echo "index() found." >&4
13754                 fi
13755         else
13756                 val="$undef"
13757                 vali="$define"
13758                 echo "index() found." >&4
13759         fi
13760 else
13761         if set strchr val -f d_strchr; eval $csym; $val; then
13762                 val="$define"
13763                 vali="$undef"
13764                 echo "strchr() found." >&4
13765         else
13766                 echo "No index() or strchr() found!" >&4
13767                 val="$undef"
13768                 vali="$undef"
13769         fi
13770 fi
13771 set d_strchr; eval $setvar
13772 val="$vali"
13773 set d_index; eval $setvar
13774
13775 : check whether inet_aton exists
13776 set inet_aton d_inetaton
13777 eval $inlibc
13778
13779 : Look for isascii
13780 echo " "
13781 $cat >isascii.c <<EOCP
13782 #include <stdio.h>
13783 #include <ctype.h>
13784 #$i_stdlib I_STDLIB
13785 #ifdef I_STDLIB
13786 #include <stdlib.h>
13787 #endif
13788 int main() {
13789         int c = 'A';
13790         if (isascii(c))
13791                 exit(0);
13792         else
13793                 exit(1);
13794 }
13795 EOCP
13796 set isascii
13797 if eval $compile; then
13798         echo "isascii() found." >&4
13799         val="$define"
13800 else
13801         echo "isascii() NOT found." >&4
13802         val="$undef"
13803 fi
13804 set d_isascii
13805 eval $setvar
13806 $rm -f isascii*
13807
13808 : see if isfinite exists
13809 set isfinite d_isfinite
13810 eval $inlibc
13811
13812 : see if isinf exists
13813 set isinf d_isinf
13814 eval $inlibc
13815
13816 : see if isnan exists
13817 set isnan d_isnan
13818 eval $inlibc
13819
13820 : see if isnanl exists
13821 set isnanl d_isnanl
13822 eval $inlibc
13823
13824 : see if killpg exists
13825 set killpg d_killpg
13826 eval $inlibc
13827
13828 : see if lchown exists
13829 echo " "
13830 $cat > try.c <<'EOCP'
13831 /* System header to define __stub macros and hopefully few prototypes,
13832     which can conflict with char lchown(); below.  */
13833 #include <assert.h>
13834 /* Override any gcc2 internal prototype to avoid an error.  */
13835 /* We use char because int might match the return type of a gcc2
13836    builtin and then its argument prototype would still apply.  */
13837 char lchown();
13838 int main() {
13839     /*  The GNU C library defines this for functions which it implements
13840         to always fail with ENOSYS.  Some functions are actually named
13841         something starting with __ and the normal name is an alias.  */
13842 #if defined (__stub_lchown) || defined (__stub___lchown)
13843 choke me
13844 #else
13845 lchown();
13846 #endif
13847 ; return 0; }
13848 EOCP
13849 set try
13850 if eval $compile; then
13851     $echo "lchown() found." >&4
13852     val="$define"
13853 else
13854     $echo "lchown() NOT found." >&4
13855     val="$undef"
13856 fi
13857 set d_lchown
13858 eval $setvar
13859
13860 : See if number of significant digits in a double precision number is known
13861 echo " "
13862 $cat >ldbl_dig.c <<EOM
13863 #$i_limits I_LIMITS
13864 #$i_float I_FLOAT
13865 #ifdef I_LIMITS
13866 #include <limits.h>
13867 #endif
13868 #ifdef I_FLOAT
13869 #include <float.h>
13870 #endif
13871 #ifdef LDBL_DIG
13872 printf("Contains LDBL_DIG");
13873 #endif
13874 EOM
13875 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13876 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13877         echo "LDBL_DIG found." >&4
13878         val="$define"
13879 else
13880         echo "LDBL_DIG NOT found." >&4
13881         val="$undef"
13882 fi
13883 $rm -f ldbl_dig.?
13884 set d_ldbl_dig
13885 eval $setvar
13886
13887 : see if link exists
13888 set link d_link
13889 eval $inlibc
13890
13891 : see if localtime_r exists
13892 set localtime_r d_localtime_r
13893 eval $inlibc
13894 case "$d_localtime_r" in
13895 "$define")
13896         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13897         case "$d_localtime_r_proto:$usethreads" in
13898         ":define")      d_localtime_r_proto=define
13899                 set d_localtime_r_proto localtime_r $hdrs
13900                 eval $hasproto ;;
13901         *)      ;;
13902         esac
13903         case "$d_localtime_r_proto" in
13904         define)
13905         case "$localtime_r_proto" in
13906         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13907         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13908         esac
13909         case "$localtime_r_proto" in
13910         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13911         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13912         esac
13913         case "$localtime_r_proto" in
13914         ''|0)   d_localtime_r=undef
13915                 localtime_r_proto=0
13916                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13917         * )     case "$localtime_r_proto" in
13918                 REENTRANT_PROTO*) ;;
13919                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13920                 esac
13921                 echo "Prototype: $try" ;;
13922         esac
13923         ;;
13924         *)      case "$usethreads" in
13925                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13926                 esac
13927                 d_localtime_r=undef
13928                 localtime_r_proto=0
13929                 ;;
13930         esac
13931         ;;
13932 *)      localtime_r_proto=0
13933         ;;
13934 esac
13935
13936 : see if localeconv exists
13937 set localeconv d_locconv
13938 eval $inlibc
13939
13940 : see if lockf exists
13941 set lockf d_lockf
13942 eval $inlibc
13943
13944 : see if prototype for lseek is available
13945 echo " "
13946 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13947 eval $hasproto
13948
13949 : see if lstat exists
13950 set lstat d_lstat
13951 eval $inlibc
13952
13953 : see if madvise exists
13954 set madvise d_madvise
13955 eval $inlibc
13956
13957 : see if mblen exists
13958 set mblen d_mblen
13959 eval $inlibc
13960
13961 : see if mbstowcs exists
13962 set mbstowcs d_mbstowcs
13963 eval $inlibc
13964
13965 : see if mbtowc exists
13966 set mbtowc d_mbtowc
13967 eval $inlibc
13968
13969 : see if memchr exists
13970 set memchr d_memchr
13971 eval $inlibc
13972
13973 : see if memcmp exists
13974 set memcmp d_memcmp
13975 eval $inlibc
13976
13977 : see if memcpy exists
13978 set memcpy d_memcpy
13979 eval $inlibc
13980
13981 : see if memmove exists
13982 set memmove d_memmove
13983 eval $inlibc
13984
13985 : see if memset exists
13986 set memset d_memset
13987 eval $inlibc
13988
13989 : see if mkdir exists
13990 set mkdir d_mkdir
13991 eval $inlibc
13992
13993 : see if mkdtemp exists
13994 set mkdtemp d_mkdtemp
13995 eval $inlibc
13996
13997 : see if mkfifo exists
13998 set mkfifo d_mkfifo
13999 eval $inlibc
14000
14001 : see if mkstemp exists
14002 set mkstemp d_mkstemp
14003 eval $inlibc
14004
14005 : see if mkstemps exists
14006 set mkstemps d_mkstemps
14007 eval $inlibc
14008
14009 : see if mktime exists
14010 set mktime d_mktime
14011 eval $inlibc
14012
14013 : see if this is a sys/mman.h system
14014 set sys/mman.h i_sysmman
14015 eval $inhdr
14016
14017 : see if mmap exists
14018 set mmap d_mmap
14019 eval $inlibc
14020 : see what shmat returns
14021 : default to something harmless
14022 mmaptype='void *'
14023 case "$i_sysmman$d_mmap" in
14024 "$define$define")
14025         $cat >mmap.c <<'END'
14026 #include <sys/mman.h>
14027 void *mmap();
14028 END
14029         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14030                 mmaptype='void *'
14031         else
14032                 mmaptype='caddr_t'
14033         fi
14034         echo "and it returns ($mmaptype)." >&4
14035         ;;
14036 esac
14037
14038
14039
14040 : see if sqrtl exists
14041 set sqrtl d_sqrtl
14042 eval $inlibc
14043
14044 : see if scalbnl exists
14045 set scalbnl d_scalbnl
14046 eval $inlibc
14047
14048 : see if modfl exists
14049 set modfl d_modfl
14050 eval $inlibc
14051
14052 : see if prototype for modfl is available
14053 echo " "
14054 set d_modflproto modfl math.h
14055 eval $hasproto
14056
14057 d_modfl_pow32_bug="$undef"
14058
14059 case "$d_longdbl$d_modfl" in
14060 $define$define)
14061         $cat <<EOM
14062 Checking to see whether your modfl() is okay for large values...
14063 EOM
14064 $cat >try.c <<EOCP
14065 #include <math.h> 
14066 #include <stdio.h>
14067 EOCP
14068 if $test "X$d_modflproto" != "X$define"; then
14069         $cat >>try.c <<EOCP
14070 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14071 long double modfl (long double, long double *);
14072 EOCP
14073 fi
14074 $cat >>try.c <<EOCP
14075 int main() {
14076     long double nv = 4294967303.15;
14077     long double v, w;
14078     v = modfl(nv, &w);         
14079 #ifdef __GLIBC__
14080     printf("glibc");
14081 #endif
14082     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14083     return 0;
14084 }
14085 EOCP
14086         case "$osname:$gccversion" in
14087         aix:)   saveccflags="$ccflags"
14088                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14089         esac
14090         set try
14091         if eval $compile; then
14092                 foo=`$run ./try`
14093                 case "$foo" in
14094                 *" 4294967303.150000 1.150000 4294967302.000000")
14095                         echo >&4 "Your modfl() is broken for large values."
14096                         d_modfl_pow32_bug="$define"
14097                         case "$foo" in
14098                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14099                         ;;
14100                         esac
14101                         ;;
14102                 *" 4294967303.150000 0.150000 4294967303.000000")
14103                         echo >&4 "Your modfl() seems okay for large values."
14104                         ;;
14105                 *)      echo >&4 "I don't understand your modfl() at all."
14106                         d_modfl="$undef"
14107                         ;;
14108                 esac
14109                 $rm -f try.* try core core.try.*
14110         else
14111                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14112                 d_modfl="$undef"
14113         fi
14114         case "$osname:$gccversion" in
14115         aix:)   ccflags="$saveccflags" ;; # restore
14116         esac
14117         ;;
14118 esac
14119
14120 if $test "$uselongdouble" = "$define"; then
14121     message=""
14122     if $test "$d_sqrtl" != "$define"; then
14123         message="$message sqrtl"
14124     fi
14125     if $test "$d_modfl" != "$define"; then
14126         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14127             echo "You have both aintl and copysignl, so I can emulate modfl."
14128         else
14129             message="$message modfl"
14130         fi
14131     fi
14132     if $test "$d_frexpl" != "$define"; then
14133         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14134             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14135         else
14136             message="$message frexpl"
14137         fi
14138     fi
14139
14140     if $test "$message" != ""; then
14141         $cat <<EOM >&4
14142
14143 *** You requested the use of long doubles but you do not seem to have
14144 *** the following mathematical functions needed for long double support:
14145 ***    $message
14146 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14147 *** Cannot continue, aborting.
14148
14149 EOM
14150
14151         exit 1
14152     fi
14153 fi
14154
14155 : see if mprotect exists
14156 set mprotect d_mprotect
14157 eval $inlibc
14158
14159 : see if msgctl exists
14160 set msgctl d_msgctl
14161 eval $inlibc
14162
14163 : see if msgget exists
14164 set msgget d_msgget
14165 eval $inlibc
14166
14167 : see if msgsnd exists
14168 set msgsnd d_msgsnd
14169 eval $inlibc
14170
14171 : see if msgrcv exists
14172 set msgrcv d_msgrcv
14173 eval $inlibc
14174
14175 : see how much of the 'msg*(2)' library is present.
14176 h_msg=true
14177 echo " "
14178 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14179 *"$undef"*) h_msg=false;;
14180 esac
14181 case "$osname" in
14182 freebsd)
14183     case "`ipcs 2>&1`" in
14184     "SVID messages"*"not configured"*)
14185         echo "Your $osname does not have the msg*(2) configured." >&4
14186         h_msg=false
14187         val="$undef"
14188         set msgctl d_msgctl
14189         eval $setvar
14190         set msgget d_msgget
14191         eval $setvar
14192         set msgsnd d_msgsnd
14193         eval $setvar
14194         set msgrcv d_msgrcv
14195         eval $setvar
14196         ;;
14197     esac
14198     ;;
14199 esac
14200 : we could also check for sys/ipc.h ...
14201 if $h_msg && $test `./findhdr sys/msg.h`; then
14202         echo "You have the full msg*(2) library." >&4
14203         val="$define"
14204 else
14205         echo "You don't have the full msg*(2) library." >&4
14206         val="$undef"
14207 fi
14208 set d_msg
14209 eval $setvar
14210
14211
14212 echo " "
14213 echo "Checking to see if your system supports struct msghdr..." >&4
14214 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14215 eval $hasstruct
14216 case "$d_msghdr_s" in
14217 "$define")      echo "Yes, it does."   ;;
14218 *)              echo "No, it doesn't." ;;
14219 esac
14220
14221
14222 : see if msync exists
14223 set msync d_msync
14224 eval $inlibc
14225
14226 : see if munmap exists
14227 set munmap d_munmap
14228 eval $inlibc
14229
14230 : see if nice exists
14231 set nice d_nice
14232 eval $inlibc
14233
14234 : see if this is a langinfo.h system
14235 set langinfo.h i_langinfo
14236 eval $inhdr
14237
14238 : see if nl_langinfo exists
14239 set nl_langinfo d_nl_langinfo
14240 eval $inlibc
14241
14242 : check for length of character
14243 echo " "
14244 case "$charsize" in
14245 '')
14246         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14247         $cat >try.c <<EOCP
14248 #include <stdio.h>
14249 #$i_stdlib I_STDLIB
14250 #ifdef I_STDLIB
14251 #include <stdlib.h>
14252 #endif
14253 int main()
14254 {
14255     printf("%d\n", (int)sizeof(char));
14256     exit(0);
14257 }
14258 EOCP
14259         set try
14260         if eval $compile_ok; then
14261                 dflt=`$run ./try`
14262         else
14263                 dflt='1'
14264                 echo "(I can't seem to compile the test program.  Guessing...)"
14265         fi
14266         ;;
14267 *)
14268         dflt="$charsize"
14269         ;;
14270 esac
14271 rp="What is the size of a character (in bytes)?"
14272 . ./myread
14273 charsize="$ans"
14274 $rm -f try.c try
14275
14276 : check for volatile keyword
14277 echo " "
14278 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14279 $cat >try.c <<'EOCP'
14280 int main()
14281 {
14282         typedef struct _goo_struct goo_struct;
14283         goo_struct * volatile goo = ((goo_struct *)0);
14284         struct _goo_struct {
14285                 long long_int;
14286                 int reg_int;
14287                 char char_var;
14288         };
14289         typedef unsigned short foo_t;
14290         char *volatile foo;
14291         volatile int bar;
14292         volatile foo_t blech;
14293         foo = foo;
14294 }
14295 EOCP
14296 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14297         val="$define"
14298         echo "Yup, it does."
14299 else
14300         val="$undef"
14301         echo "Nope, it doesn't."
14302 fi
14303 set d_volatile
14304 eval $setvar
14305 $rm -f try.*
14306
14307
14308 echo " "
14309 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14310
14311 case "$use64bitint:$d_quad:$quadtype" in
14312 define:define:?*)
14313         ivtype="$quadtype"
14314         uvtype="$uquadtype"
14315         ivsize=8
14316         uvsize=8
14317         ;;
14318 *)      ivtype="long"
14319         uvtype="unsigned long"
14320         ivsize=$longsize
14321         uvsize=$longsize
14322         ;;
14323 esac
14324
14325 case "$uselongdouble:$d_longdbl" in
14326 define:define)
14327         nvtype="long double"
14328         nvsize=$longdblsize
14329         ;;
14330 *)      nvtype=double
14331         nvsize=$doublesize
14332         ;;
14333 esac
14334
14335 $echo "(IV will be "$ivtype", $ivsize bytes)"
14336 $echo "(UV will be "$uvtype", $uvsize bytes)"
14337 $echo "(NV will be "$nvtype", $nvsize bytes)"
14338
14339 $cat >try.c <<EOCP
14340 #$i_inttypes I_INTTYPES
14341 #ifdef I_INTTYPES
14342 #include <inttypes.h>
14343 #endif
14344 #include <stdio.h>
14345 int main() {
14346 #ifdef INT8
14347    int8_t i =  INT8_MAX;
14348   uint8_t u = UINT8_MAX;
14349   printf("int8_t\n");
14350 #endif
14351 #ifdef INT16
14352    int16_t i =  INT16_MAX;
14353   uint16_t i = UINT16_MAX;
14354   printf("int16_t\n");
14355 #endif
14356 #ifdef INT32
14357    int32_t i =  INT32_MAX;
14358   uint32_t u = UINT32_MAX;
14359   printf("int32_t\n");
14360 #endif
14361 }
14362 EOCP
14363
14364 case "$i8type" in
14365 '')     case "$charsize" in
14366         1)      i8type=char
14367                 u8type="unsigned char"
14368                 i8size=$charsize
14369                 u8size=$charsize
14370                 ;;
14371         esac
14372         ;;
14373 esac
14374 case "$i8type" in
14375 '')     set try -DINT8
14376         if eval $compile; then
14377                 case "`$run ./try`" in
14378                 int8_t) i8type=int8_t
14379                         u8type=uint8_t
14380                         i8size=1
14381                         u8size=1
14382                         ;;
14383                 esac
14384         fi
14385         ;;
14386 esac
14387 case "$i8type" in
14388 '')     if $test $charsize -ge 1; then
14389                 i8type=char
14390                 u8type="unsigned char"
14391                 i8size=$charsize
14392                 u8size=$charsize
14393         fi
14394         ;;
14395 esac
14396
14397 case "$i16type" in
14398 '')     case "$shortsize" in
14399         2)      i16type=short
14400                 u16type="unsigned short"
14401                 i16size=$shortsize
14402                 u16size=$shortsize
14403                 ;;
14404         esac
14405         ;;
14406 esac
14407 case "$i16type" in
14408 '')     set try -DINT16
14409         if eval $compile; then
14410                 case "`$run ./try`" in
14411                 int16_t)
14412                         i16type=int16_t
14413                         u16type=uint16_t
14414                         i16size=2
14415                         u16size=2
14416                         ;;
14417                 esac
14418         fi
14419         ;;
14420 esac
14421 case "$i16type" in
14422 '')     if $test $shortsize -ge 2; then
14423                 i16type=short
14424                 u16type="unsigned short"
14425                 i16size=$shortsize
14426                 u16size=$shortsize
14427         fi
14428         ;;
14429 esac
14430
14431 case "$i32type" in
14432 '')     case "$longsize" in
14433         4)      i32type=long
14434                 u32type="unsigned long"
14435                 i32size=$longsize
14436                 u32size=$longsize
14437                 ;;
14438         *)      case "$intsize" in
14439                 4)      i32type=int
14440                         u32type="unsigned int"
14441                         i32size=$intsize
14442                         u32size=$intsize
14443                         ;;
14444                 esac
14445                 ;;
14446         esac
14447         ;;
14448 esac
14449 case "$i32type" in
14450 '')     set try -DINT32
14451         if eval $compile; then
14452                 case "`$run ./try`" in
14453                 int32_t)
14454                         i32type=int32_t
14455                         u32type=uint32_t
14456                         i32size=4
14457                         u32size=4
14458                         ;;
14459                 esac
14460         fi
14461         ;;
14462 esac
14463 case "$i32type" in
14464 '')     if $test $intsize -ge 4; then
14465                 i32type=int
14466                 u32type="unsigned int"
14467                 i32size=$intsize
14468                 u32size=$intsize
14469         fi
14470         ;;
14471 esac
14472
14473 case "$i64type" in
14474 '')     case "$d_quad:$quadtype" in
14475         define:?*)
14476                 i64type="$quadtype"
14477                 u64type="$uquadtype"
14478                 i64size=8
14479                 u64size=8
14480                 ;;
14481         esac
14482         ;;
14483 esac
14484
14485 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14486 : volatile so that the compiler has to store it out to memory.
14487 if test X"$d_volatile" = X"$define"; then
14488         volatile=volatile
14489 fi
14490 $cat <<EOP >try.c
14491 #include <stdio.h>
14492 #$i_stdlib I_STDLIB
14493 #ifdef I_STDLIB
14494 #include <stdlib.h>
14495 #endif
14496 #include <sys/types.h>
14497 #include <signal.h>
14498 #ifdef SIGFPE
14499 $volatile int bletched = 0;
14500 $signal_t blech(s) int s; { bletched = 1; }
14501 #endif
14502 int main() {
14503     $uvtype u = 0;
14504     $nvtype d;
14505     int     n = 8 * $uvsize;
14506     int     i;
14507 #ifdef SIGFPE
14508     signal(SIGFPE, blech);
14509 #endif
14510
14511     for (i = 0; i < n; i++) {
14512       u = u << 1 | ($uvtype)1;
14513       d = ($nvtype)u;
14514       if (($uvtype)d != u)
14515         break;
14516       if (d <= 0)
14517         break;
14518       d = ($nvtype)(u - 1);
14519       if (($uvtype)d != (u - 1))
14520         break;
14521 #ifdef SIGFPE
14522       if (bletched) {
14523         break;
14524 #endif
14525       } 
14526     }
14527     printf("%d\n", ((i == n) ? -n : i));
14528     exit(0);
14529 }
14530 EOP
14531 set try
14532
14533 d_nv_preserves_uv="$undef"
14534 if eval $compile; then
14535         nv_preserves_uv_bits="`$run ./try`"
14536 fi
14537 case "$nv_preserves_uv_bits" in
14538 \-[1-9]*)       
14539         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14540         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14541         d_nv_preserves_uv="$define"
14542         ;;
14543 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14544         d_nv_preserves_uv="$undef" ;;
14545 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14546         nv_preserves_uv_bits="$undef" ;;
14547 esac
14548
14549 $rm -f try.* try
14550
14551
14552 : check for off64_t
14553 echo " "
14554 echo "Checking to see if you have off64_t..." >&4
14555 $cat >try.c <<EOCP
14556 #include <sys/types.h>
14557 #include <unistd.h>
14558 int main() { off64_t x = 7; }
14559 EOCP
14560 set try
14561 if eval $compile; then
14562         val="$define"
14563         echo "You have off64_t."
14564 else
14565         val="$undef"
14566         echo "You do not have off64_t."
14567         case "$lseeksize" in
14568         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14569         esac
14570 fi
14571 $rm -f try.* try
14572 set d_off64_t
14573 eval $setvar
14574
14575 : how to create joinable pthreads
14576 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14577         echo " "
14578         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14579         $cat >try.c <<'EOCP'
14580 #include <pthread.h>
14581 int main() {
14582     int detachstate = JOINABLE;
14583 }
14584 EOCP
14585         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14586         if eval $compile; then
14587                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14588                 val="$undef" # Yes, undef.
14589                 set d_old_pthread_create_joinable
14590                 eval $setvar
14591                 val=""
14592                 set old_pthread_create_joinable
14593                 eval $setvar
14594         else
14595                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14596                 if eval $compile; then
14597                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14598                         val="$define"
14599                         set d_old_pthread_create_joinable
14600                         eval $setvar
14601                         val=PTHREAD_CREATE_UNDETACHED
14602                         set old_pthread_create_joinable
14603                         eval $setvar
14604                 else            
14605                         set try -DJOINABLE=__UNDETACHED
14606                         if eval $compile; then
14607                                 echo "You seem to use __UNDETACHED." >&4
14608                                 val="$define"
14609                                 set d_old_pthread_create_joinable
14610                                 eval $setvar
14611                                 val=__UNDETACHED
14612                                 set old_pthread_create_joinable
14613                                 eval $setvar
14614                         else
14615                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14616                                 val="$define"
14617                                 set d_old_pthread_create_joinable
14618                                 eval $setvar
14619                                 val=0
14620                                 set old_pthread_create_joinable
14621                                 eval $setvar
14622                         fi
14623                 fi
14624         fi
14625         $rm -f try try.*
14626 else
14627     d_old_pthread_create_joinable="$undef"
14628     old_pthread_create_joinable=""
14629 fi
14630
14631 : see if pause exists
14632 set pause d_pause
14633 eval $inlibc
14634
14635 : see if pipe exists
14636 set pipe d_pipe
14637 eval $inlibc
14638
14639 : see if poll exists
14640 set poll d_poll
14641 eval $inlibc
14642
14643 : see if readlink exists
14644 set readlink d_readlink
14645 eval $inlibc
14646
14647 echo " "
14648 procselfexe=''
14649 val="$undef"
14650 case "$d_readlink" in
14651 "$define")
14652         if $issymlink /proc/self/exe ; then
14653                 $ls -l /proc/self/exe > reflect
14654                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14655                         echo "You have Linux-like /proc/self/exe."
14656                         procselfexe='"/proc/self/exe"'
14657                         val="$define"
14658                 fi
14659         fi
14660         if $issymlink /proc/curproc/file ; then
14661                 $ls -l /proc/curproc/file > reflect
14662                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14663                         echo "You have BSD-like /proc/curproc/file."
14664                         procselfexe='"/proc/curproc/file"'
14665                         val="$define"
14666                 fi
14667         fi
14668         ;;
14669 esac
14670 $rm -f reflect
14671 set d_procselfexe
14672 eval $setvar
14673
14674 : see whether the pthread_atfork exists
14675 $cat >try.c <<EOP
14676 #include <pthread.h>
14677 #include <stdio.h>
14678 int main() {
14679 #ifdef  PTHREAD_ATFORK
14680         pthread_atfork(NULL,NULL,NULL);
14681 #endif
14682 }
14683 EOP
14684
14685 : see if pthread_atfork exists
14686 set try -DPTHREAD_ATFORK
14687 if eval $compile; then
14688     val="$define"
14689 else
14690     val="$undef"
14691 fi
14692 case "$usethreads" in
14693 $define)
14694         case "$val" in
14695         $define) echo 'pthread_atfork found.' >&4        ;;
14696         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14697         esac
14698 esac
14699 set d_pthread_atfork
14700 eval $setvar
14701
14702 : see if pthread_attr_setscope exists
14703 set pthread_attr_setscope d_pthread_attr_setscope
14704 eval $inlibc
14705
14706
14707 : see whether the various POSIXish _yields exist
14708 $cat >try.c <<EOP
14709 #include <pthread.h>
14710 #include <stdio.h>
14711 int main() {
14712 #ifdef SCHED_YIELD
14713         sched_yield();
14714 #else
14715 #ifdef PTHREAD_YIELD
14716         pthread_yield();
14717 #else
14718 #ifdef PTHREAD_YIELD_NULL
14719         pthread_yield(NULL);
14720 #endif
14721 #endif
14722 #endif
14723 }
14724 EOP
14725 : see if sched_yield exists
14726 set try -DSCHED_YIELD
14727 if eval $compile; then
14728     val="$define"
14729     sched_yield='sched_yield()'
14730 else
14731     val="$undef"
14732 fi
14733 case "$usethreads" in
14734 $define)
14735         case "$val" in
14736         $define) echo 'sched_yield() found.' >&4        ;;
14737         *)       echo 'sched_yield() NOT found.' >&4    ;;
14738         esac
14739 esac
14740 set d_sched_yield
14741 eval $setvar
14742
14743 : see if pthread_yield exists
14744 set try -DPTHREAD_YIELD
14745 if eval $compile; then
14746     val="$define"
14747     case "$sched_yield" in
14748     '') sched_yield='pthread_yield()' ;;
14749     esac
14750 else
14751     set try -DPTHREAD_YIELD_NULL
14752     if eval $compile; then
14753         val="$define"
14754         case "$sched_yield" in
14755         '') sched_yield='pthread_yield(NULL)' ;;
14756         esac
14757     else
14758         val="$undef"
14759     fi
14760 fi
14761 case "$usethreads" in
14762 $define)
14763         case "$val" in
14764         $define) echo 'pthread_yield() found.' >&4      ;;
14765         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14766         esac
14767         ;;
14768 esac
14769 set d_pthread_yield
14770 eval $setvar
14771
14772 case "$sched_yield" in
14773 '') sched_yield=undef ;;
14774 esac
14775
14776 $rm -f try try.*
14777
14778 : see if random_r exists
14779 set random_r d_random_r
14780 eval $inlibc
14781 case "$d_random_r" in
14782 "$define")
14783         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14784         case "$d_random_r_proto:$usethreads" in
14785         ":define")      d_random_r_proto=define
14786                 set d_random_r_proto random_r $hdrs
14787                 eval $hasproto ;;
14788         *)      ;;
14789         esac
14790         case "$d_random_r_proto" in
14791         define)
14792         case "$random_r_proto" in
14793         ''|0) try='int random_r(int*, struct random_data*);'
14794         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14795         esac
14796         case "$random_r_proto" in
14797         ''|0) try='int random_r(long*, struct random_data*);'
14798         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14799         esac
14800         case "$random_r_proto" in
14801         ''|0) try='int random_r(struct random_data*, int32_t*);'
14802         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14803         esac
14804         case "$random_r_proto" in
14805         ''|0)   d_random_r=undef
14806                 random_r_proto=0
14807                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14808         * )     case "$random_r_proto" in
14809                 REENTRANT_PROTO*) ;;
14810                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14811                 esac
14812                 echo "Prototype: $try" ;;
14813         esac
14814         ;;
14815         *)      case "$usethreads" in
14816                 define) echo "random_r has no prototype, not using it." >&4 ;;
14817                 esac
14818                 d_random_r=undef
14819                 random_r_proto=0
14820                 ;;
14821         esac
14822         ;;
14823 *)      random_r_proto=0
14824         ;;
14825 esac
14826
14827 : see if readdir and friends exist
14828 set readdir d_readdir
14829 eval $inlibc
14830 set seekdir d_seekdir
14831 eval $inlibc
14832 set telldir d_telldir
14833 eval $inlibc
14834 set rewinddir d_rewinddir
14835 eval $inlibc
14836
14837 : see if readdir64_r exists
14838 set readdir64_r d_readdir64_r
14839 eval $inlibc
14840 case "$d_readdir64_r" in
14841 "$define")
14842         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14843         case "$d_readdir64_r_proto:$usethreads" in
14844         ":define")      d_readdir64_r_proto=define
14845                 set d_readdir64_r_proto readdir64_r $hdrs
14846                 eval $hasproto ;;
14847         *)      ;;
14848         esac
14849         case "$d_readdir64_r_proto" in
14850         define)
14851         case "$readdir64_r_proto" in
14852         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14853         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14854         esac
14855         case "$readdir64_r_proto" in
14856         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14857         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14858         esac
14859         case "$readdir64_r_proto" in
14860         ''|0)   d_readdir64_r=undef
14861                 readdir64_r_proto=0
14862                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14863         * )     case "$readdir64_r_proto" in
14864                 REENTRANT_PROTO*) ;;
14865                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14866                 esac
14867                 echo "Prototype: $try" ;;
14868         esac
14869         ;;
14870         *)      case "$usethreads" in
14871                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14872                 esac
14873                 d_readdir64_r=undef
14874                 readdir64_r_proto=0
14875                 ;;
14876         esac
14877         ;;
14878 *)      readdir64_r_proto=0
14879         ;;
14880 esac
14881
14882 : see if readdir_r exists
14883 set readdir_r d_readdir_r
14884 eval $inlibc
14885 case "$d_readdir_r" in
14886 "$define")
14887         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14888         case "$d_readdir_r_proto:$usethreads" in
14889         ":define")      d_readdir_r_proto=define
14890                 set d_readdir_r_proto readdir_r $hdrs
14891                 eval $hasproto ;;
14892         *)      ;;
14893         esac
14894         case "$d_readdir_r_proto" in
14895         define)
14896         case "$readdir_r_proto" in
14897         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14898         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14899         esac
14900         case "$readdir_r_proto" in
14901         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14902         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14903         esac
14904         case "$readdir_r_proto" in
14905         ''|0)   d_readdir_r=undef
14906                 readdir_r_proto=0
14907                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14908         * )     case "$readdir_r_proto" in
14909                 REENTRANT_PROTO*) ;;
14910                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14911                 esac
14912                 echo "Prototype: $try" ;;
14913         esac
14914         ;;
14915         *)      case "$usethreads" in
14916                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14917                 esac
14918                 d_readdir_r=undef
14919                 readdir_r_proto=0
14920                 ;;
14921         esac
14922         ;;
14923 *)      readdir_r_proto=0
14924         ;;
14925 esac
14926
14927 : see if readv exists
14928 set readv d_readv
14929 eval $inlibc
14930
14931 : see if recvmsg exists
14932 set recvmsg d_recvmsg
14933 eval $inlibc
14934
14935 : see if rename exists
14936 set rename d_rename
14937 eval $inlibc
14938
14939 : see if rmdir exists
14940 set rmdir d_rmdir
14941 eval $inlibc
14942
14943 : see if memory.h is available.
14944 val=''
14945 set memory.h val
14946 eval $inhdr
14947
14948 : See if it conflicts with string.h
14949 case "$val" in
14950 $define)
14951         case "$strings" in
14952         '') ;;
14953         *)
14954                 $cppstdin $cppflags $cppminus < $strings > mem.h
14955                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14956                         echo " "
14957                         echo "We won't be including <memory.h>."
14958                         val="$undef"
14959                 fi
14960                 $rm -f mem.h
14961                 ;;
14962         esac
14963 esac
14964 set i_memory
14965 eval $setvar
14966
14967 : can bcopy handle overlapping blocks?
14968 echo " "
14969 val="$undef"
14970 case "$d_memmove" in
14971 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14972 *)      case "$d_bcopy" in
14973         "$define")
14974                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14975                 $cat >try.c <<EOCP
14976 #$i_memory I_MEMORY
14977 #$i_stdlib I_STDLIB
14978 #$i_string I_STRING
14979 #$i_unistd I_UNISTD
14980 EOCP
14981         $cat >>try.c <<'EOCP'
14982 #include <stdio.h>
14983 #ifdef I_MEMORY
14984 #  include <memory.h>
14985 #endif
14986 #ifdef I_STDLIB
14987 #  include <stdlib.h>
14988 #endif
14989 #ifdef I_STRING
14990 #  include <string.h>
14991 #else
14992 #  include <strings.h>
14993 #endif
14994 #ifdef I_UNISTD
14995 #  include <unistd.h>  /* Needed for NetBSD */
14996 #endif
14997 int main()
14998 {
14999 char buf[128], abc[128];
15000 char *b;
15001 int len;
15002 int off;
15003 int align;
15004
15005 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15006    try to store the string in read-only memory. */
15007 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15008
15009 for (align = 7; align >= 0; align--) {
15010         for (len = 36; len; len--) {
15011                 b = buf+align;
15012                 bcopy(abc, b, len);
15013                 for (off = 1; off <= len; off++) {
15014                         bcopy(b, b+off, len);
15015                         bcopy(b+off, b, len);
15016                         if (bcmp(b, abc, len))
15017                                 exit(1);
15018                 }
15019         }
15020 }
15021 exit(0);
15022 }
15023 EOCP
15024                 set try
15025                 if eval $compile_ok; then
15026                         if ./try 2>/dev/null; then
15027                                 echo "Yes, it can."
15028                                 val="$define"
15029                         else
15030                                 echo "It can't, sorry."
15031                         fi
15032                 else
15033                         echo "(I can't compile the test program, so we'll assume not...)"
15034                 fi
15035                 ;;
15036         esac
15037         $rm -f try.* try core
15038         ;;
15039 esac
15040 set d_safebcpy
15041 eval $setvar
15042
15043 : can memcpy handle overlapping blocks?
15044 echo " "
15045 val="$undef"
15046 case "$d_memmove" in
15047 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15048 *)      case "$d_memcpy" in
15049         "$define")
15050                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15051                 $cat >try.c <<EOCP
15052 #$i_memory I_MEMORY
15053 #$i_stdlib I_STDLIB
15054 #$i_string I_STRING
15055 #$i_unistd I_UNISTD
15056 EOCP
15057         $cat >>try.c <<'EOCP'
15058 #include <stdio.h>
15059 #ifdef I_MEMORY
15060 #  include <memory.h>
15061 #endif
15062 #ifdef I_STDLIB
15063 #  include <stdlib.h>
15064 #endif
15065 #ifdef I_STRING
15066 #  include <string.h>
15067 #else
15068 #  include <strings.h>
15069 #endif
15070 #ifdef I_UNISTD
15071 #  include <unistd.h>  /* Needed for NetBSD */
15072 #endif
15073 int main()
15074 {
15075 char buf[128], abc[128];
15076 char *b;
15077 int len;
15078 int off;
15079 int align;
15080
15081 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15082    try to store the string in read-only memory. */
15083 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15084
15085 for (align = 7; align >= 0; align--) {
15086         for (len = 36; len; len--) {
15087                 b = buf+align;
15088                 memcpy(b, abc, len);
15089                 for (off = 1; off <= len; off++) {
15090                         memcpy(b+off, b, len);
15091                         memcpy(b, b+off, len);
15092                         if (memcmp(b, abc, len))
15093                                 exit(1);
15094                 }
15095         }
15096 }
15097 exit(0);
15098 }
15099 EOCP
15100                 set try
15101                 if eval $compile_ok; then
15102                         if ./try 2>/dev/null; then
15103                                 echo "Yes, it can."
15104                                 val="$define"
15105                         else
15106                                 echo "It can't, sorry."
15107                         fi
15108                 else
15109                         echo "(I can't compile the test program, so we'll assume not...)"
15110                 fi
15111                 ;;
15112         esac
15113         $rm -f try.* try core
15114         ;;
15115 esac
15116 set d_safemcpy
15117 eval $setvar
15118
15119 : can memcmp be trusted to compare relative magnitude?
15120 val="$undef"
15121 case "$d_memcmp" in
15122 "$define")
15123         echo " "
15124         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15125         $cat >try.c <<EOCP
15126 #$i_memory I_MEMORY
15127 #$i_stdlib I_STDLIB
15128 #$i_string I_STRING
15129 #$i_unistd I_UNISTD
15130 EOCP
15131         $cat >>try.c <<'EOCP'
15132 #include <stdio.h>
15133 #ifdef I_MEMORY
15134 #  include <memory.h>
15135 #endif
15136 #ifdef I_STDLIB
15137 #  include <stdlib.h>
15138 #endif
15139 #ifdef I_STRING
15140 #  include <string.h>
15141 #else
15142 #  include <strings.h>
15143 #endif
15144 #ifdef I_UNISTD
15145 #  include <unistd.h>  /* Needed for NetBSD */
15146 #endif
15147 int main()
15148 {
15149 char a = -1;
15150 char b = 0;
15151 if ((a < b) && memcmp(&a, &b, 1) < 0)
15152         exit(1);
15153 exit(0);
15154 }
15155 EOCP
15156         set try
15157         if eval $compile_ok; then
15158                 if $run ./try 2>/dev/null; then
15159                         echo "Yes, it can."
15160                         val="$define"
15161                 else
15162                         echo "No, it can't (it uses signed chars)."
15163                 fi
15164         else
15165                 echo "(I can't compile the test program, so we'll assume not...)"
15166         fi
15167         ;;
15168 esac
15169 $rm -f try.* try core
15170 set d_sanemcmp
15171 eval $setvar
15172
15173 : see if prototype for sbrk is available
15174 echo " "
15175 set d_sbrkproto sbrk $i_unistd unistd.h
15176 eval $hasproto
15177
15178 : see if select exists
15179 set select d_select
15180 eval $inlibc
15181
15182 : see if semctl exists
15183 set semctl d_semctl
15184 eval $inlibc
15185
15186 : see if semget exists
15187 set semget d_semget
15188 eval $inlibc
15189
15190 : see if semop exists
15191 set semop d_semop
15192 eval $inlibc
15193
15194 : see how much of the 'sem*(2)' library is present.
15195 h_sem=true
15196 echo " "
15197 case "$d_semctl$d_semget$d_semop" in
15198 *"$undef"*) h_sem=false;;
15199 esac
15200 case "$osname" in
15201 freebsd)
15202     case "`ipcs 2>&1`" in
15203     "SVID messages"*"not configured"*)
15204         echo "Your $osname does not have the sem*(2) configured." >&4
15205         h_sem=false
15206         val="$undef"
15207         set semctl d_semctl
15208         eval $setvar
15209         set semget d_semget
15210         eval $setvar
15211         set semop d_semop
15212         eval $setvar
15213         ;;
15214     esac
15215     ;;
15216 esac
15217 : we could also check for sys/ipc.h ...
15218 if $h_sem && $test `./findhdr sys/sem.h`; then
15219         echo "You have the full sem*(2) library." >&4
15220         val="$define"
15221 else
15222         echo "You don't have the full sem*(2) library." >&4
15223         val="$undef"
15224 fi
15225 set d_sem
15226 eval $setvar
15227
15228 : see whether sys/sem.h defines union semun
15229 echo " "
15230 $cat > try.c <<'END'
15231 #include <sys/types.h>
15232 #include <sys/ipc.h>
15233 #include <sys/sem.h>
15234 int main () { union semun semun; semun.buf = 0; }
15235 END
15236 set try
15237 if eval $compile; then
15238     echo "You have union semun in <sys/sem.h>." >&4
15239     val="$define"
15240 else
15241     echo "You do not have union semun in <sys/sem.h>." >&4
15242     val="$undef"
15243 fi
15244 $rm -f try try.c
15245 set d_union_semun
15246 eval $setvar
15247
15248 : see how to do semctl IPC_STAT
15249 case "$d_sem" in
15250 $define)
15251     echo " "
15252     $cat > try.h <<END
15253 #ifndef S_IRUSR
15254 #   ifdef S_IREAD
15255 #       define S_IRUSR S_IREAD
15256 #       define S_IWUSR S_IWRITE
15257 #       define S_IXUSR S_IEXEC
15258 #   else
15259 #       define S_IRUSR 0400
15260 #       define S_IWUSR 0200
15261 #       define S_IXUSR 0100
15262 #   endif
15263 #   define S_IRGRP (S_IRUSR>>3)
15264 #   define S_IWGRP (S_IWUSR>>3)
15265 #   define S_IXGRP (S_IXUSR>>3)
15266 #   define S_IROTH (S_IRUSR>>6)
15267 #   define S_IWOTH (S_IWUSR>>6)
15268 #   define S_IXOTH (S_IXUSR>>6)
15269 #endif
15270 #ifndef S_IRWXU
15271 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15272 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15273 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15274 #endif
15275 END
15276     : see whether semctl IPC_STAT can use union semun
15277     val="$undef"
15278     case "$d_semctl_semun" in
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       set try
15327       if eval $compile; then
15328           xxx=`$run ./try`
15329           case "$xxx" in
15330           semun) val="$define" ;;
15331           esac
15332       fi
15333       $rm -f try try.c
15334       ;;
15335     esac
15336     set d_semctl_semun
15337     eval $setvar
15338     case "$d_semctl_semun" in
15339     $define)
15340         echo "You can use union semun for semctl IPC_STAT." >&4
15341         also='also'
15342         ;;
15343     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15344         also=''
15345         ;;
15346     esac
15347
15348     : see whether semctl IPC_STAT can use struct semid_ds pointer
15349     val="$undef"
15350     case "$d_semctl_semid_ds" in
15351     '')
15352       $cat > try.c <<'END'
15353 #include <sys/types.h>
15354 #include <sys/ipc.h>
15355 #include <sys/sem.h>
15356 #include <sys/stat.h>
15357 #include "try.h"
15358 #include <stdio.h>
15359 #include <errno.h>
15360 #ifndef errno
15361 extern int errno;
15362 #endif
15363 int main() {
15364     struct semid_ds arg;
15365     int sem, st;
15366
15367 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15368     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15369     if (sem > -1) {
15370 #       ifdef IPC_STAT
15371         st = semctl(sem, 0, IPC_STAT, &arg);
15372         if (st == 0)
15373             printf("semid_ds\n");
15374         else
15375 #       endif /* IPC_STAT */
15376             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15377 #       ifdef IPC_RMID
15378         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15379 #       endif /* IPC_RMID */
15380             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15381     } else
15382 #endif /* IPC_PRIVATE && ... */
15383         printf("semget failed: errno = %d\n", errno);
15384
15385     return 0;
15386 }
15387 END
15388       set try
15389       if eval $compile; then
15390           xxx=`$run ./try`
15391           case "$xxx" in
15392           semid_ds) val="$define" ;;
15393           esac
15394       fi
15395       $rm -f try try.c
15396       ;;
15397     esac
15398     set d_semctl_semid_ds
15399     eval $setvar
15400     case "$d_semctl_semid_ds" in
15401     $define)
15402         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15403         ;;
15404     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15405         ;;
15406     esac
15407     $rm -f try.h
15408     ;;
15409 *)  val="$undef"
15410
15411     # We do not have the full sem*(2) library, so assume we can not
15412     # use either.
15413
15414     set d_semctl_semun
15415     eval $setvar
15416
15417     set d_semctl_semid_ds
15418     eval $setvar
15419     ;;
15420 esac
15421
15422 : see if sendmsg exists
15423 set sendmsg d_sendmsg
15424 eval $inlibc
15425
15426 : see if setegid exists
15427 set setegid d_setegid
15428 eval $inlibc
15429
15430 : see if seteuid exists
15431 set seteuid d_seteuid
15432 eval $inlibc
15433
15434 : see if setgrent exists
15435 set setgrent d_setgrent
15436 eval $inlibc
15437
15438 : see if setgrent_r exists
15439 set setgrent_r d_setgrent_r
15440 eval $inlibc
15441 case "$d_setgrent_r" in
15442 "$define")
15443         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15444         case "$d_setgrent_r_proto:$usethreads" in
15445         ":define")      d_setgrent_r_proto=define
15446                 set d_setgrent_r_proto setgrent_r $hdrs
15447                 eval $hasproto ;;
15448         *)      ;;
15449         esac
15450         case "$d_setgrent_r_proto" in
15451         define)
15452         case "$setgrent_r_proto" in
15453         ''|0) try='int setgrent_r(FILE**);'
15454         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15455         esac
15456         case "$setgrent_r_proto" in
15457         ''|0) try='void setgrent_r(FILE**);'
15458         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15459         esac
15460         case "$setgrent_r_proto" in
15461         ''|0)   d_setgrent_r=undef
15462                 setgrent_r_proto=0
15463                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15464         * )     case "$setgrent_r_proto" in
15465                 REENTRANT_PROTO*) ;;
15466                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15467                 esac
15468                 echo "Prototype: $try" ;;
15469         esac
15470         ;;
15471         *)      case "$usethreads" in
15472                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15473                 esac
15474                 d_setgrent_r=undef
15475                 setgrent_r_proto=0
15476                 ;;
15477         esac
15478         ;;
15479 *)      setgrent_r_proto=0
15480         ;;
15481 esac
15482
15483 : see if sethostent exists
15484 set sethostent d_sethent
15485 eval $inlibc
15486
15487 : see if sethostent_r exists
15488 set sethostent_r d_sethostent_r
15489 eval $inlibc
15490 case "$d_sethostent_r" in
15491 "$define")
15492         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15493         case "$d_sethostent_r_proto:$usethreads" in
15494         ":define")      d_sethostent_r_proto=define
15495                 set d_sethostent_r_proto sethostent_r $hdrs
15496                 eval $hasproto ;;
15497         *)      ;;
15498         esac
15499         case "$d_sethostent_r_proto" in
15500         define)
15501         case "$sethostent_r_proto" in
15502         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15503         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15504         esac
15505         case "$sethostent_r_proto" in
15506         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15507         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15508         esac
15509         case "$sethostent_r_proto" in
15510         ''|0)   d_sethostent_r=undef
15511                 sethostent_r_proto=0
15512                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15513         * )     case "$sethostent_r_proto" in
15514                 REENTRANT_PROTO*) ;;
15515                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15516                 esac
15517                 echo "Prototype: $try" ;;
15518         esac
15519         ;;
15520         *)      case "$usethreads" in
15521                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15522                 esac
15523                 d_sethostent_r=undef
15524                 sethostent_r_proto=0
15525                 ;;
15526         esac
15527         ;;
15528 *)      sethostent_r_proto=0
15529         ;;
15530 esac
15531
15532 : see if setitimer exists
15533 set setitimer d_setitimer
15534 eval $inlibc
15535
15536 : see if setlinebuf exists
15537 set setlinebuf d_setlinebuf
15538 eval $inlibc
15539
15540 : see if setlocale exists
15541 set setlocale d_setlocale
15542 eval $inlibc
15543
15544 : see if locale.h is available
15545 set locale.h i_locale
15546 eval $inhdr
15547
15548 : see if setlocale_r exists
15549 set setlocale_r d_setlocale_r
15550 eval $inlibc
15551 case "$d_setlocale_r" in
15552 "$define")
15553         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15554         case "$d_setlocale_r_proto:$usethreads" in
15555         ":define")      d_setlocale_r_proto=define
15556                 set d_setlocale_r_proto setlocale_r $hdrs
15557                 eval $hasproto ;;
15558         *)      ;;
15559         esac
15560         case "$d_setlocale_r_proto" in
15561         define)
15562         case "$setlocale_r_proto" in
15563         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15564         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15565         esac
15566         case "$setlocale_r_proto" in
15567         ''|0)   d_setlocale_r=undef
15568                 setlocale_r_proto=0
15569                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15570         * )     case "$setlocale_r_proto" in
15571                 REENTRANT_PROTO*) ;;
15572                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15573                 esac
15574                 echo "Prototype: $try" ;;
15575         esac
15576         ;;
15577         *)      case "$usethreads" in
15578                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15579                 esac
15580                 d_setlocale_r=undef
15581                 setlocale_r_proto=0
15582                 ;;
15583         esac
15584         ;;
15585 *)      setlocale_r_proto=0
15586         ;;
15587 esac
15588
15589 : see if setnetent exists
15590 set setnetent d_setnent
15591 eval $inlibc
15592
15593 : see if setnetent_r exists
15594 set setnetent_r d_setnetent_r
15595 eval $inlibc
15596 case "$d_setnetent_r" in
15597 "$define")
15598         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15599         case "$d_setnetent_r_proto:$usethreads" in
15600         ":define")      d_setnetent_r_proto=define
15601                 set d_setnetent_r_proto setnetent_r $hdrs
15602                 eval $hasproto ;;
15603         *)      ;;
15604         esac
15605         case "$d_setnetent_r_proto" in
15606         define)
15607         case "$setnetent_r_proto" in
15608         ''|0) try='int setnetent_r(int, struct netent_data*);'
15609         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15610         esac
15611         case "$setnetent_r_proto" in
15612         ''|0) try='void setnetent_r(int, struct netent_data*);'
15613         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15614         esac
15615         case "$setnetent_r_proto" in
15616         ''|0)   d_setnetent_r=undef
15617                 setnetent_r_proto=0
15618                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15619         * )     case "$setnetent_r_proto" in
15620                 REENTRANT_PROTO*) ;;
15621                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15622                 esac
15623                 echo "Prototype: $try" ;;
15624         esac
15625         ;;
15626         *)      case "$usethreads" in
15627                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15628                 esac
15629                 d_setnetent_r=undef
15630                 setnetent_r_proto=0
15631                 ;;
15632         esac
15633         ;;
15634 *)      setnetent_r_proto=0
15635         ;;
15636 esac
15637
15638 : see if setprotoent exists
15639 set setprotoent d_setpent
15640 eval $inlibc
15641
15642 : see if setpgid exists
15643 set setpgid d_setpgid
15644 eval $inlibc
15645
15646 : see if setpgrp2 exists
15647 set setpgrp2 d_setpgrp2
15648 eval $inlibc
15649
15650 : see if setpriority exists
15651 set setpriority d_setprior
15652 eval $inlibc
15653
15654 : see if setproctitle exists
15655 set setproctitle d_setproctitle
15656 eval $inlibc
15657
15658 : see if setprotoent_r exists
15659 set setprotoent_r d_setprotoent_r
15660 eval $inlibc
15661 case "$d_setprotoent_r" in
15662 "$define")
15663         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15664         case "$d_setprotoent_r_proto:$usethreads" in
15665         ":define")      d_setprotoent_r_proto=define
15666                 set d_setprotoent_r_proto setprotoent_r $hdrs
15667                 eval $hasproto ;;
15668         *)      ;;
15669         esac
15670         case "$d_setprotoent_r_proto" in
15671         define)
15672         case "$setprotoent_r_proto" in
15673         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15674         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15675         esac
15676         case "$setprotoent_r_proto" in
15677         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15678         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15679         esac
15680         case "$setprotoent_r_proto" in
15681         ''|0)   d_setprotoent_r=undef
15682                 setprotoent_r_proto=0
15683                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15684         * )     case "$setprotoent_r_proto" in
15685                 REENTRANT_PROTO*) ;;
15686                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15687                 esac
15688                 echo "Prototype: $try" ;;
15689         esac
15690         ;;
15691         *)      case "$usethreads" in
15692                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15693                 esac
15694                 d_setprotoent_r=undef
15695                 setprotoent_r_proto=0
15696                 ;;
15697         esac
15698         ;;
15699 *)      setprotoent_r_proto=0
15700         ;;
15701 esac
15702
15703 : see if setpwent exists
15704 set setpwent d_setpwent
15705 eval $inlibc
15706
15707 : see if setpwent_r exists
15708 set setpwent_r d_setpwent_r
15709 eval $inlibc
15710 case "$d_setpwent_r" in
15711 "$define")
15712         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15713         case "$d_setpwent_r_proto:$usethreads" in
15714         ":define")      d_setpwent_r_proto=define
15715                 set d_setpwent_r_proto setpwent_r $hdrs
15716                 eval $hasproto ;;
15717         *)      ;;
15718         esac
15719         case "$d_setpwent_r_proto" in
15720         define)
15721         case "$setpwent_r_proto" in
15722         ''|0) try='int setpwent_r(FILE**);'
15723         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15724         esac
15725         case "$setpwent_r_proto" in
15726         ''|0) try='void setpwent_r(FILE**);'
15727         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15728         esac
15729         case "$setpwent_r_proto" in
15730         ''|0)   d_setpwent_r=undef
15731                 setpwent_r_proto=0
15732                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15733         * )     case "$setpwent_r_proto" in
15734                 REENTRANT_PROTO*) ;;
15735                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15736                 esac
15737                 echo "Prototype: $try" ;;
15738         esac
15739         ;;
15740         *)      case "$usethreads" in
15741                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15742                 esac
15743                 d_setpwent_r=undef
15744                 setpwent_r_proto=0
15745                 ;;
15746         esac
15747         ;;
15748 *)      setpwent_r_proto=0
15749         ;;
15750 esac
15751
15752 : see if setregid exists
15753 set setregid d_setregid
15754 eval $inlibc
15755 set setresgid d_setresgid
15756 eval $inlibc
15757
15758 : see if setreuid exists
15759 set setreuid d_setreuid
15760 eval $inlibc
15761 set setresuid d_setresuid
15762 eval $inlibc
15763
15764 : see if setrgid exists
15765 set setrgid d_setrgid
15766 eval $inlibc
15767
15768 : see if setruid exists
15769 set setruid d_setruid
15770 eval $inlibc
15771
15772 : see if setservent exists
15773 set setservent d_setsent
15774 eval $inlibc
15775
15776 : see if setservent_r exists
15777 set setservent_r d_setservent_r
15778 eval $inlibc
15779 case "$d_setservent_r" in
15780 "$define")
15781         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15782         case "$d_setservent_r_proto:$usethreads" in
15783         ":define")      d_setservent_r_proto=define
15784                 set d_setservent_r_proto setservent_r $hdrs
15785                 eval $hasproto ;;
15786         *)      ;;
15787         esac
15788         case "$d_setservent_r_proto" in
15789         define)
15790         case "$setservent_r_proto" in
15791         ''|0) try='int setservent_r(int, struct servent_data*);'
15792         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15793         esac
15794         case "$setservent_r_proto" in
15795         ''|0) try='void setservent_r(int, struct servent_data*);'
15796         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15797         esac
15798         case "$setservent_r_proto" in
15799         ''|0)   d_setservent_r=undef
15800                 setservent_r_proto=0
15801                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15802         * )     case "$setservent_r_proto" in
15803                 REENTRANT_PROTO*) ;;
15804                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15805                 esac
15806                 echo "Prototype: $try" ;;
15807         esac
15808         ;;
15809         *)      case "$usethreads" in
15810                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15811                 esac
15812                 d_setservent_r=undef
15813                 setservent_r_proto=0
15814                 ;;
15815         esac
15816         ;;
15817 *)      setservent_r_proto=0
15818         ;;
15819 esac
15820
15821 : see if setsid exists
15822 set setsid d_setsid
15823 eval $inlibc
15824
15825 : see if setvbuf exists
15826 set setvbuf d_setvbuf
15827 eval $inlibc
15828
15829 : see if sfio.h is available
15830 set sfio.h i_sfio
15831 eval $inhdr
15832
15833
15834 : see if sfio library is available
15835 case "$i_sfio" in
15836 $define)
15837         val=''
15838         set sfreserve val
15839         eval $inlibc
15840         ;;
15841 *)
15842         val="$undef"
15843         ;;
15844 esac
15845 : Ok, but do we want to use it.
15846 case "$val" in
15847 $define)
15848         case "$usesfio" in
15849         true|$define|[yY]*) dflt='y';;
15850         *) dflt='n';;
15851         esac
15852         echo "$package can use the sfio library, but it is experimental."
15853         case "$useperlio" in
15854         "$undef")
15855             echo "For sfio also the PerlIO abstraction layer is needed."
15856             echo "Earlier you said you wouldn't want that."
15857             ;;
15858         esac
15859         rp="You seem to have sfio available, do you want to try using it?"
15860         . ./myread
15861         case "$ans" in
15862         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15863                 useperlio="$define"
15864                 val="$define"
15865                 ;;
15866         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15867                 val="$undef"
15868                 ;;
15869         esac
15870         ;;
15871 *)      case "$usesfio" in
15872         true|$define|[yY]*)
15873                 echo "Sorry, cannot find sfio on this machine." >&4
15874                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15875                 val="$undef"
15876                 ;;
15877         esac
15878         ;;
15879 esac
15880 set d_sfio
15881 eval $setvar
15882 case "$d_sfio" in
15883 $define) usesfio='true';;
15884 *) usesfio='false';;
15885 esac
15886 case "$d_sfio" in
15887 $define) ;;
15888 *)      : Remove sfio from list of libraries to use
15889         case "$libs" in
15890         *-lsfio*)
15891                 echo "Removing unneeded -lsfio from library list" >&4
15892                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15893                 shift
15894                 libs="$*"
15895                 echo "libs = $libs" >&4
15896                 ;;
15897         esac
15898 ;;
15899 esac
15900
15901
15902 : see if shmctl exists
15903 set shmctl d_shmctl
15904 eval $inlibc
15905
15906 : see if shmget exists
15907 set shmget d_shmget
15908 eval $inlibc
15909
15910 : see if shmat exists
15911 set shmat d_shmat
15912 eval $inlibc
15913 : see what shmat returns
15914 case "$d_shmat" in
15915 "$define")
15916         $cat >shmat.c <<'END'
15917 #include <sys/shm.h>
15918 void *shmat();
15919 END
15920         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15921                 shmattype='void *'
15922         else
15923                 shmattype='char *'
15924         fi
15925         echo "and it returns ($shmattype)." >&4
15926         : see if a prototype for shmat is available
15927         xxx=`./findhdr sys/shm.h`
15928         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15929         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15930                 val="$define"
15931         else
15932                 val="$undef"
15933         fi
15934         $rm -f shmat.[co]
15935         ;;
15936 *)
15937         val="$undef"
15938         ;;
15939 esac
15940 set d_shmatprototype
15941 eval $setvar
15942
15943 : see if shmdt exists
15944 set shmdt d_shmdt
15945 eval $inlibc
15946
15947 : see how much of the 'shm*(2)' library is present.
15948 h_shm=true
15949 echo " "
15950 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15951 *"$undef"*) h_shm=false;;
15952 esac
15953 case "$osname" in
15954 freebsd)
15955     case "`ipcs 2>&1`" in
15956     "SVID shared memory"*"not configured"*)
15957         echo "Your $osname does not have the shm*(2) configured." >&4
15958         h_shm=false
15959         val="$undef"
15960         set shmctl d_shmctl
15961         evat $setvar
15962         set shmget d_shmget
15963         evat $setvar
15964         set shmat d_shmat
15965         evat $setvar
15966         set shmdt d_shmdt
15967         evat $setvar
15968         ;;
15969     esac
15970     ;;
15971 esac
15972 : we could also check for sys/ipc.h ...
15973 if $h_shm && $test `./findhdr sys/shm.h`; then
15974         echo "You have the full shm*(2) library." >&4
15975         val="$define"
15976 else
15977         echo "You don't have the full shm*(2) library." >&4
15978         val="$undef"
15979 fi
15980 set d_shm
15981 eval $setvar
15982
15983 echo " "
15984 : see if we have sigaction
15985 if set sigaction val -f d_sigaction; eval $csym; $val; then
15986         echo 'sigaction() found.' >&4
15987         $cat > try.c <<EOP
15988 #include <stdio.h>
15989 #include <sys/types.h>
15990 #include <signal.h>
15991 #$i_stdlib I_STDLIB
15992 #ifdef I_STDLIB
15993 #include <stdlib.h>
15994 #endif
15995 int main()
15996 {
15997     struct sigaction act, oact;
15998     act.sa_flags = 0;
15999     oact.sa_handler = 0;
16000     /* so that act and oact are used */
16001     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16002 }
16003 EOP
16004         set try
16005         if eval $compile_ok; then
16006                 val="$define"
16007         else
16008                 echo "But you don't seem to have a useable struct sigaction." >&4
16009                 val="$undef"
16010         fi
16011 else
16012         echo 'sigaction NOT found.' >&4
16013         val="$undef"
16014 fi
16015 set d_sigaction; eval $setvar
16016 $rm -f try try$_o try.c
16017
16018 : see if sigprocmask exists
16019 set sigprocmask d_sigprocmask
16020 eval $inlibc
16021
16022 : see if sigsetjmp exists
16023 echo " "
16024 case "$d_sigsetjmp" in
16025 '')
16026         $cat >try.c <<EOP
16027 #include <setjmp.h>
16028 #$i_stdlib I_STDLIB
16029 #ifdef I_STDLIB
16030 #include <stdlib.h>
16031 #endif
16032 sigjmp_buf env;
16033 int set = 1;
16034 int main()
16035 {
16036         if (sigsetjmp(env,1))
16037                 exit(set);
16038         set = 0;
16039         siglongjmp(env, 1);
16040         exit(1);
16041 }
16042 EOP
16043         set try
16044         if eval $compile; then
16045                 if $run ./try >/dev/null 2>&1; then
16046                         echo "POSIX sigsetjmp found." >&4
16047                         val="$define"
16048                 else
16049                         $cat >&4 <<EOM
16050 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16051 I'll ignore them.
16052 EOM
16053                         val="$undef"
16054                 fi
16055         else
16056                 echo "sigsetjmp not found." >&4
16057                 val="$undef"
16058         fi
16059         ;;
16060 *) val="$d_sigsetjmp"
16061         case "$d_sigsetjmp" in
16062         $define) echo "POSIX sigsetjmp found." >&4;;
16063         $undef) echo "sigsetjmp not found." >&4;;
16064         esac
16065         ;;
16066 esac
16067 set d_sigsetjmp
16068 eval $setvar
16069 $rm -f try.c try
16070
16071 : see if sockatmark exists
16072 set sockatmark d_sockatmark
16073 eval $inlibc
16074
16075 : see if prototype for sockatmark is available
16076 echo " "
16077 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16078 eval $hasproto
16079
16080 : see if socks5_init exists
16081 set socks5_init d_socks5_init
16082 eval $inlibc
16083
16084 : see if srand48_r exists
16085 set srand48_r d_srand48_r
16086 eval $inlibc
16087 case "$d_srand48_r" in
16088 "$define")
16089         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16090         case "$d_srand48_r_proto:$usethreads" in
16091         ":define")      d_srand48_r_proto=define
16092                 set d_srand48_r_proto srand48_r $hdrs
16093                 eval $hasproto ;;
16094         *)      ;;
16095         esac
16096         case "$d_srand48_r_proto" in
16097         define)
16098         case "$srand48_r_proto" in
16099         ''|0) try='int srand48_r(long, struct drand48_data*);'
16100         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16101         esac
16102         case "$srand48_r_proto" in
16103         ''|0)   d_srand48_r=undef
16104                 srand48_r_proto=0
16105                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16106         * )     case "$srand48_r_proto" in
16107                 REENTRANT_PROTO*) ;;
16108                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16109                 esac
16110                 echo "Prototype: $try" ;;
16111         esac
16112         ;;
16113         *)      case "$usethreads" in
16114                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16115                 esac
16116                 d_srand48_r=undef
16117                 srand48_r_proto=0
16118                 ;;
16119         esac
16120         ;;
16121 *)      srand48_r_proto=0
16122         ;;
16123 esac
16124
16125 : see if srandom_r exists
16126 set srandom_r d_srandom_r
16127 eval $inlibc
16128 case "$d_srandom_r" in
16129 "$define")
16130         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16131         case "$d_srandom_r_proto:$usethreads" in
16132         ":define")      d_srandom_r_proto=define
16133                 set d_srandom_r_proto srandom_r $hdrs
16134                 eval $hasproto ;;
16135         *)      ;;
16136         esac
16137         case "$d_srandom_r_proto" in
16138         define)
16139         case "$srandom_r_proto" in
16140         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16141         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16142         esac
16143         case "$srandom_r_proto" in
16144         ''|0)   d_srandom_r=undef
16145                 srandom_r_proto=0
16146                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16147         * )     case "$srandom_r_proto" in
16148                 REENTRANT_PROTO*) ;;
16149                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16150                 esac
16151                 echo "Prototype: $try" ;;
16152         esac
16153         ;;
16154         *)      case "$usethreads" in
16155                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16156                 esac
16157                 d_srandom_r=undef
16158                 srandom_r_proto=0
16159                 ;;
16160         esac
16161         ;;
16162 *)      srandom_r_proto=0
16163         ;;
16164 esac
16165
16166 : see if prototype for setresgid is available
16167 echo " "
16168 set d_sresgproto setresgid $i_unistd unistd.h
16169 eval $hasproto
16170
16171 : see if prototype for setresuid is available
16172 echo " "
16173 set d_sresuproto setresuid $i_unistd unistd.h
16174 eval $hasproto
16175
16176 : see if sys/stat.h is available
16177 set sys/stat.h i_sysstat
16178 eval $inhdr
16179
16180
16181 : see if stat knows about block sizes
16182 echo " "
16183 echo "Checking to see if your struct stat has st_blocks field..." >&4
16184 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16185 eval $hasfield
16186
16187
16188 : see if this is a sys/vfs.h system
16189 set sys/vfs.h i_sysvfs
16190 eval $inhdr
16191
16192
16193 : see if this is a sys/statfs.h system
16194 set sys/statfs.h i_sysstatfs
16195 eval $inhdr
16196
16197
16198 echo " "
16199 echo "Checking to see if your system supports struct statfs..." >&4
16200 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
16201 eval $hasstruct
16202 case "$d_statfs_s" in
16203 "$define")      echo "Yes, it does."   ;;
16204 *)              echo "No, it doesn't." ;;
16205 esac
16206
16207
16208
16209 : see if struct statfs knows about f_flags
16210 case "$d_statfs_s" in
16211 define) 
16212         echo " "
16213         echo "Checking to see if your struct statfs has f_flags field..." >&4
16214         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
16215         eval $hasfield
16216         ;;
16217 *)      val="$undef"
16218         set d_statfs_f_flags
16219         eval $setvar
16220         ;;
16221 esac
16222 case "$d_statfs_f_flags" in
16223 "$define")      echo "Yes, it does."   ;;
16224 *)              echo "No, it doesn't." ;;
16225 esac
16226
16227 $cat >&4 <<EOM
16228 Checking how to access stdio streams by file descriptor number...
16229 EOM
16230 case "$stdio_stream_array" in
16231 '')     $cat >try.c <<EOCP
16232 #include <stdio.h>
16233 int main() {
16234   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16235     printf("yes\n");
16236 }
16237 EOCP
16238         for s in _iob __iob __sF
16239         do
16240                 set try -DSTDIO_STREAM_ARRAY=$s
16241                 if eval $compile; then
16242                         case "`$run ./try`" in
16243                         yes)    stdio_stream_array=$s; break ;;
16244                         esac
16245                 fi
16246         done
16247         $rm -f try.* try$exe_ext
16248 esac
16249 case "$stdio_stream_array" in
16250 '')     $cat >&4 <<EOM
16251 I can't figure out how to access stdio streams by file descriptor number.
16252 EOM
16253         d_stdio_stream_array="$undef"
16254         ;;
16255 *)      $cat >&4 <<EOM
16256 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16257 EOM
16258         d_stdio_stream_array="$define"
16259         ;;
16260 esac
16261
16262 : see if strcoll exists
16263 set strcoll d_strcoll
16264 eval $inlibc
16265
16266 : check for structure copying
16267 echo " "
16268 echo "Checking to see if your C compiler can copy structs..." >&4
16269 $cat >try.c <<'EOCP'
16270 int main()
16271 {
16272         struct blurfl {
16273                 int dyick;
16274         } foo, bar;
16275
16276         foo = bar;
16277 }
16278 EOCP
16279 if $cc -c try.c >/dev/null 2>&1 ; then
16280         val="$define"
16281         echo "Yup, it can."
16282 else
16283         val="$undef"
16284         echo "Nope, it can't."
16285 fi
16286 set d_strctcpy
16287 eval $setvar
16288 $rm -f try.*
16289
16290 : see if strerror and/or sys_errlist[] exist
16291 echo " "
16292 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16293     if set strerror val -f d_strerror; eval $csym; $val; then
16294                 echo 'strerror() found.' >&4
16295                 d_strerror="$define"
16296                 d_strerrm='strerror(e)'
16297                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16298                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16299                         d_syserrlst="$define"
16300                 else
16301                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16302                         d_syserrlst="$undef"
16303                 fi
16304     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16305                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16306                 echo 'strerror() found in string header.' >&4
16307                 d_strerror="$define"
16308                 d_strerrm='strerror(e)'
16309                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16310                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16311                                 d_syserrlst="$define"
16312                 else
16313                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16314                         d_syserrlst="$undef"
16315                 fi
16316     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16317                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16318                 d_strerror="$undef"
16319                 d_syserrlst="$define"
16320                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16321     else
16322                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16323                 d_strerror="$undef"
16324                 d_syserrlst="$undef"
16325                 d_strerrm='"unknown"'
16326     fi
16327 fi
16328
16329 : see if strerror_r exists
16330 set strerror_r d_strerror_r
16331 eval $inlibc
16332 case "$d_strerror_r" in
16333 "$define")
16334         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16335         case "$d_strerror_r_proto:$usethreads" in
16336         ":define")      d_strerror_r_proto=define
16337                 set d_strerror_r_proto strerror_r $hdrs
16338                 eval $hasproto ;;
16339         *)      ;;
16340         esac
16341         case "$d_strerror_r_proto" in
16342         define)
16343         case "$strerror_r_proto" in
16344         ''|0) try='int strerror_r(int, char*, size_t);'
16345         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16346         esac
16347         case "$strerror_r_proto" in
16348         ''|0) try='int strerror_r(int, char*, int);'
16349         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16350         esac
16351         case "$strerror_r_proto" in
16352         ''|0) try='char* strerror_r(int, char*, size_t);'
16353         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16354         esac
16355         case "$strerror_r_proto" in
16356         ''|0)   d_strerror_r=undef
16357                 strerror_r_proto=0
16358                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16359         * )     case "$strerror_r_proto" in
16360                 REENTRANT_PROTO*) ;;
16361                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16362                 esac
16363                 echo "Prototype: $try" ;;
16364         esac
16365         ;;
16366         *)      case "$usethreads" in
16367                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16368                 esac
16369                 d_strerror_r=undef
16370                 strerror_r_proto=0
16371                 ;;
16372         esac
16373         ;;
16374 *)      strerror_r_proto=0
16375         ;;
16376 esac
16377
16378 : see if strftime exists
16379 set strftime d_strftime
16380 eval $inlibc
16381
16382 : see if strtod exists
16383 set strtod d_strtod
16384 eval $inlibc
16385
16386 : see if strtol exists
16387 set strtol d_strtol
16388 eval $inlibc
16389
16390 : see if strtold exists
16391 set strtold d_strtold
16392 eval $inlibc
16393
16394 : see if strtoll exists
16395 set strtoll d_strtoll
16396 eval $inlibc
16397
16398 case "$d_longlong-$d_strtoll" in
16399 "$define-$define")
16400         $cat <<EOM
16401 Checking whether your strtoll() works okay...
16402 EOM
16403         $cat >try.c <<'EOCP'
16404 #include <errno.h>
16405 #ifdef __hpux
16406 #define strtoll __strtoll
16407 #endif
16408 #ifdef __EMX__
16409 #define strtoll _strtoll
16410 #endif
16411 #include <stdio.h>
16412 extern long long int strtoll(char *s, char **, int); 
16413 static int bad = 0;
16414 int check(char *s, long long ell, int een) {
16415         long long gll;
16416         errno = 0;
16417         gll = strtoll(s, 0, 10);
16418         if (!((gll == ell) && (errno == een)))
16419                 bad++;
16420 }
16421 int main() {
16422         check(" 1",                                      1LL, 0);
16423         check(" 0",                                      0LL, 0);
16424         check("-1",                                     -1LL, 0);
16425         check("-9223372036854775808", -9223372036854775808LL, 0);
16426         check("-9223372036854775808", -9223372036854775808LL, 0);
16427         check(" 9223372036854775807",  9223372036854775807LL, 0);
16428         check("-9223372036854775808", -9223372036854775808LL, 0);
16429         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16430         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16431         if (!bad)
16432                 printf("ok\n");
16433 }
16434 EOCP
16435         set try
16436         if eval $compile; then
16437                 yyy=`$run ./try`
16438                 case "$yyy" in
16439                 ok) echo "Your strtoll() seems to be working okay." ;;
16440                 *) cat <<EOM >&4
16441 Your strtoll() doesn't seem to be working okay.
16442 EOM
16443                    d_strtoll="$undef"
16444                    ;;
16445                 esac
16446         else
16447                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16448                 d_strtoll="$undef"
16449         fi
16450         ;;
16451 esac
16452
16453 : see if strtoq exists
16454 set strtoq d_strtoq
16455 eval $inlibc
16456
16457 : see if strtoul exists
16458 set strtoul d_strtoul
16459 eval $inlibc
16460
16461 case "$d_strtoul" in
16462 "$define")
16463         $cat <<EOM
16464 Checking whether your strtoul() works okay...
16465 EOM
16466         $cat >try.c <<'EOCP'
16467 #include <errno.h>
16468 #include <stdio.h>
16469 extern unsigned long int strtoul(char *s, char **, int); 
16470 static int bad = 0;
16471 void check(char *s, unsigned long eul, int een) {
16472         unsigned long gul;
16473         errno = 0;
16474         gul = strtoul(s, 0, 10);
16475         if (!((gul == eul) && (errno == een)))
16476                 bad++;
16477 }
16478 int main() {
16479         check(" 1", 1L, 0);
16480         check(" 0", 0L, 0);
16481 EOCP
16482         case "$longsize" in
16483         8)
16484             $cat >>try.c <<'EOCP'
16485         check("18446744073709551615", 18446744073709551615UL, 0);
16486         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16487 #if 0 /* strtoul() for /^-/ strings is undefined. */
16488         check("-1", 18446744073709551615UL, 0);
16489         check("-18446744073709551614", 2, 0);
16490         check("-18446744073709551615", 1, 0);
16491         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16492         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16493 #endif
16494 EOCP
16495                 ;;
16496         4)
16497                     $cat >>try.c <<'EOCP'
16498         check("4294967295", 4294967295UL, 0);
16499         check("4294967296", 4294967295UL, ERANGE);
16500 #if 0 /* strtoul() for /^-/ strings is undefined. */
16501         check("-1", 4294967295UL, 0);
16502         check("-4294967294", 2, 0);
16503         check("-4294967295", 1, 0);
16504         check("-4294967296", 4294967295UL, ERANGE);
16505         check("-4294967297", 4294967295UL, ERANGE);
16506 #endif
16507 EOCP
16508                 ;;
16509         *)
16510 : Should we write these tests to be more portable by sprintf-ing
16511 : ~0 and then manipulating that char string as input for strtol?
16512                 ;;
16513         esac
16514         $cat >>try.c <<'EOCP'
16515         if (!bad)
16516                 printf("ok\n");
16517         return 0;
16518 }
16519 EOCP
16520         set try
16521         if eval $compile; then
16522                 case "`$run ./try`" in
16523                 ok) echo "Your strtoul() seems to be working okay." ;;
16524                 *) cat <<EOM >&4
16525 Your strtoul() doesn't seem to be working okay.
16526 EOM
16527                    d_strtoul="$undef"
16528                    ;;
16529                 esac
16530         fi
16531         ;;
16532 esac
16533
16534 : see if strtoull exists
16535 set strtoull d_strtoull
16536 eval $inlibc
16537
16538 case "$d_longlong-$d_strtoull" in
16539 "$define-$define")
16540         $cat <<EOM
16541 Checking whether your strtoull() works okay...
16542 EOM
16543         $cat >try.c <<'EOCP'
16544 #include <errno.h>
16545 #ifdef __hpux
16546 #define strtoull __strtoull
16547 #endif
16548 #include <stdio.h>
16549 extern unsigned long long int strtoull(char *s, char **, int); 
16550 static int bad = 0;
16551 int check(char *s, long long eull, int een) {
16552         long long gull;
16553         errno = 0;
16554         gull = strtoull(s, 0, 10);
16555         if (!((gull == eull) && (errno == een)))
16556                 bad++;
16557 }
16558 int main() {
16559         check(" 1",                                        1LL, 0);
16560         check(" 0",                                        0LL, 0);
16561         check("18446744073709551615",  18446744073709551615ULL, 0);
16562         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16563 #if 0 /* strtoull() for /^-/ strings is undefined. */
16564         check("-1",                    18446744073709551615ULL, 0);
16565         check("-18446744073709551614",                     2LL, 0);
16566         check("-18446744073709551615",                     1LL, 0);
16567         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16568         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16569 #endif
16570         if (!bad)
16571                 printf("ok\n");
16572 }
16573 EOCP
16574         set try
16575         if eval $compile; then
16576                 case "`$run ./try`" in
16577                 ok) echo "Your strtoull() seems to be working okay." ;;
16578                 *) cat <<EOM >&4
16579 Your strtoull() doesn't seem to be working okay.
16580 EOM
16581                    d_strtoull="$undef"
16582                    ;;
16583                 esac
16584         fi
16585         ;;
16586 esac
16587
16588 : see if strtouq exists
16589 set strtouq d_strtouq
16590 eval $inlibc
16591
16592 case "$d_strtouq" in
16593 "$define")
16594         $cat <<EOM
16595 Checking whether your strtouq() works okay...
16596 EOM
16597         $cat >try.c <<'EOCP'
16598 #include <errno.h>
16599 #include <stdio.h>
16600 extern unsigned long long int strtouq(char *s, char **, int); 
16601 static int bad = 0;
16602 void check(char *s, unsigned long long eull, int een) {
16603         unsigned long long gull;
16604         errno = 0;
16605         gull = strtouq(s, 0, 10);
16606         if (!((gull == eull) && (errno == een)))
16607                 bad++;
16608 }
16609 int main() {
16610         check(" 1",                                        1LL, 0);
16611         check(" 0",                                        0LL, 0);
16612         check("18446744073709551615",  18446744073709551615ULL, 0);
16613         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16614 #if 0 /* strtouq() for /^-/ strings is undefined. */
16615         check("-1",                    18446744073709551615ULL, 0);
16616         check("-18446744073709551614",                     2LL, 0);
16617         check("-18446744073709551615",                     1LL, 0);
16618         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16619         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16620 #endif
16621         if (!bad)
16622                 printf("ok\n");
16623         return 0;
16624 }
16625 EOCP
16626         set try
16627         if eval $compile; then
16628                 case "`$run ./try`" in
16629                 ok) echo "Your strtouq() seems to be working okay." ;;
16630                 *) cat <<EOM >&4
16631 Your strtouq() doesn't seem to be working okay.
16632 EOM
16633                    d_strtouq="$undef"
16634                    ;;
16635                 esac
16636         fi
16637         ;;
16638 esac
16639
16640 : see if strxfrm exists
16641 set strxfrm d_strxfrm
16642 eval $inlibc
16643
16644 : see if symlink exists
16645 set symlink d_symlink
16646 eval $inlibc
16647
16648 : see if syscall exists
16649 set syscall d_syscall
16650 eval $inlibc
16651
16652 : see if prototype for syscall is available
16653 echo " "
16654 set d_syscallproto syscall $i_unistd unistd.h
16655 eval $hasproto
16656
16657 : see if sysconf exists
16658 set sysconf d_sysconf
16659 eval $inlibc
16660
16661 : see if system exists
16662 set system d_system
16663 eval $inlibc
16664
16665 : see if tcgetpgrp exists
16666 set tcgetpgrp d_tcgetpgrp
16667 eval $inlibc
16668
16669 : see if tcsetpgrp exists
16670 set tcsetpgrp d_tcsetpgrp
16671 eval $inlibc
16672
16673 : see if prototype for telldir is available
16674 echo " "
16675 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16676 eval $hasproto
16677
16678 : see if time exists
16679 echo " "
16680 if test "X$d_time" = X -o X"$timetype" = X; then
16681     if set time val -f d_time; eval $csym; $val; then
16682                 echo 'time() found.' >&4
16683                 val="$define"
16684                 rp="What is the type returned by time() on this system?"
16685                 set time_t timetype long stdio.h sys/types.h
16686                 eval $typedef_ask
16687     else
16688                 echo 'time() not found, hope that will do.' >&4
16689                 val="$undef"
16690                 timetype='int';
16691     fi
16692     set d_time
16693     eval $setvar
16694 fi
16695
16696 : see if this is a sys/times.h system
16697 set sys/times.h i_systimes
16698 eval $inhdr
16699
16700 : see if times exists
16701 echo " "
16702 if set times val -f d_times; eval $csym; $val; then
16703         echo 'times() found.' >&4
16704         d_times="$define"
16705         inc=''
16706         case "$i_systimes" in
16707         "$define") inc='sys/times.h';;
16708         esac
16709         rp="What is the type returned by times() on this system?"
16710         set clock_t clocktype long stdio.h sys/types.h $inc
16711         eval $typedef_ask
16712 else
16713         echo 'times() NOT found, hope that will do.' >&4
16714         d_times="$undef"
16715         clocktype='int'
16716 fi
16717
16718 : see if tmpnam_r exists
16719 set tmpnam_r d_tmpnam_r
16720 eval $inlibc
16721 case "$d_tmpnam_r" in
16722 "$define")
16723         hdrs="$i_systypes sys/types.h define stdio.h "
16724         case "$d_tmpnam_r_proto:$usethreads" in
16725         ":define")      d_tmpnam_r_proto=define
16726                 set d_tmpnam_r_proto tmpnam_r $hdrs
16727                 eval $hasproto ;;
16728         *)      ;;
16729         esac
16730         case "$d_tmpnam_r_proto" in
16731         define)
16732         case "$tmpnam_r_proto" in
16733         ''|0) try='char* tmpnam_r(char*);'
16734         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16735         esac
16736         case "$tmpnam_r_proto" in
16737         ''|0)   d_tmpnam_r=undef
16738                 tmpnam_r_proto=0
16739                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16740         * )     case "$tmpnam_r_proto" in
16741                 REENTRANT_PROTO*) ;;
16742                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16743                 esac
16744                 echo "Prototype: $try" ;;
16745         esac
16746         ;;
16747         *)      case "$usethreads" in
16748                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16749                 esac
16750                 d_tmpnam_r=undef
16751                 tmpnam_r_proto=0
16752                 ;;
16753         esac
16754         ;;
16755 *)      tmpnam_r_proto=0
16756         ;;
16757 esac
16758
16759 : see if truncate exists
16760 set truncate d_truncate
16761 eval $inlibc
16762
16763 : see if ttyname_r exists
16764 set ttyname_r d_ttyname_r
16765 eval $inlibc
16766 case "$d_ttyname_r" in
16767 "$define")
16768         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16769         case "$d_ttyname_r_proto:$usethreads" in
16770         ":define")      d_ttyname_r_proto=define
16771                 set d_ttyname_r_proto ttyname_r $hdrs
16772                 eval $hasproto ;;
16773         *)      ;;
16774         esac
16775         case "$d_ttyname_r_proto" in
16776         define)
16777         case "$ttyname_r_proto" in
16778         ''|0) try='int ttyname_r(int, char*, size_t);'
16779         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16780         esac
16781         case "$ttyname_r_proto" in
16782         ''|0) try='int ttyname_r(int, char*, int);'
16783         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16784         esac
16785         case "$ttyname_r_proto" in
16786         ''|0) try='char* ttyname_r(int, char*, int);'
16787         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16788         esac
16789         case "$ttyname_r_proto" in
16790         ''|0)   d_ttyname_r=undef
16791                 ttyname_r_proto=0
16792                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16793         * )     case "$ttyname_r_proto" in
16794                 REENTRANT_PROTO*) ;;
16795                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16796                 esac
16797                 echo "Prototype: $try" ;;
16798         esac
16799         ;;
16800         *)      case "$usethreads" in
16801                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16802                 esac
16803                 d_ttyname_r=undef
16804                 ttyname_r_proto=0
16805                 ;;
16806         esac
16807         ;;
16808 *)      ttyname_r_proto=0
16809         ;;
16810 esac
16811
16812 : see if tzname[] exists
16813 echo " "
16814 if set tzname val -a d_tzname; eval $csym; $val; then
16815         val="$define"
16816         echo 'tzname[] found.' >&4
16817 else
16818         val="$undef"
16819         echo 'tzname[] NOT found.' >&4
16820 fi
16821 set d_tzname
16822 eval $setvar
16823
16824 case "$osname" in
16825 next|rhapsody|darwin) multiarch="$define" ;;
16826 esac
16827 case "$multiarch" in
16828 ''|[nN]*) multiarch="$undef" ;;
16829 esac
16830
16831 : check for ordering of bytes in a UV
16832 echo " "
16833 case "$usecrosscompile$multiarch" in
16834 *$define*)
16835         $cat <<EOM
16836 You seem to be either cross-compiling or doing a multiarchitecture build,
16837 skipping the byteorder check.
16838
16839 EOM
16840         byteorder='ffff'
16841         ;;
16842 *)
16843         case "$byteorder" in
16844         '')
16845                 $cat <<'EOM'
16846 In the following, larger digits indicate more significance.  A big-endian
16847 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16848 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16849 machines may have weird orders like 3412.  A Cray will report 87654321,
16850 an Alpha will report 12345678. If the test program works the default is
16851 probably right.
16852 I'm now running the test program...
16853 EOM
16854                 $cat >try.c <<EOCP
16855 #include <stdio.h>
16856 #$i_stdlib I_STDLIB
16857 #ifdef I_STDLIB
16858 #include <stdlib.h>
16859 #endif
16860 #include <sys/types.h>
16861 typedef $uvtype UV;
16862 int main()
16863 {
16864         int i;
16865         union {
16866                 UV l;
16867                 char c[$uvsize];
16868         } u;
16869
16870         if ($uvsize > 4)
16871                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16872         else
16873                 u.l = (UV)0x04030201;
16874         for (i = 0; i < $uvsize; i++)
16875                 printf("%c", u.c[i]+'0');
16876         printf("\n");
16877         exit(0);
16878 }
16879 EOCP
16880                 xxx_prompt=y
16881                 set try
16882                 if eval $compile && ./try > /dev/null; then
16883                         dflt=`$run ./try`
16884                         case "$dflt" in
16885                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16886                                 echo "(The test program ran ok.)"
16887                                 echo "byteorder=$dflt"
16888                                 xxx_prompt=n
16889                         ;;
16890                         ????|????????) echo "(The test program ran ok.)" ;;
16891                         *) echo "(The test program didn't run right for some reason.)" ;;
16892                         esac
16893                 else
16894                         dflt='4321'
16895                         cat <<'EOM'
16896 (I can't seem to compile the test program.  Guessing big-endian...)
16897 EOM
16898                 fi
16899                 case "$xxx_prompt" in
16900                 y)
16901                         rp="What is the order of bytes in $uvtype?"
16902                         . ./myread
16903                         byteorder="$ans"
16904                         ;;
16905                 *)      byteorder=$dflt
16906                         ;;
16907                 esac
16908                 ;;
16909         esac
16910         $rm -f try.c try
16911         ;;
16912 esac
16913
16914
16915 $cat <<EOM
16916
16917 Checking to see whether you can access character data unalignedly...
16918 EOM
16919 case "$d_u32align" in
16920 '')   $cat >try.c <<EOCP
16921 #include <stdio.h>
16922 #$i_stdlib I_STDLIB
16923 #ifdef I_STDLIB
16924 #include <stdlib.h>
16925 #endif
16926 #define U32 $u32type
16927 #define BYTEORDER 0x$byteorder
16928 #define U8 $u8type
16929 #include <signal.h>
16930 #ifdef SIGBUS
16931 $signal_t bletch(s) int s; { exit(4); }
16932 #endif
16933 int main() {
16934 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16935     U8 buf[8];
16936     U32 *up;
16937     int i;
16938
16939     if (sizeof(U32) != 4) {
16940         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16941         exit(1);
16942     }
16943
16944     fflush(stdout);
16945
16946 #ifdef SIGBUS
16947     signal(SIGBUS, bletch);
16948 #endif
16949
16950     buf[0] = 0;
16951     buf[1] = 0;
16952     buf[2] = 0;
16953     buf[3] = 1;
16954     buf[5] = 0;
16955     buf[6] = 0;
16956     buf[7] = 0;
16957     buf[8] = 1;
16958
16959     for (i = 0; i < 4; i++) {
16960         up = (U32*)(buf + i);
16961         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16962                (*up == 1 << (8*(3-i)))  /* little-endian */
16963               )
16964            )
16965         {
16966             printf("read failed (%x)\n", *up);
16967             exit(2);
16968         }
16969     }
16970
16971     /* write test */
16972     for (i = 0; i < 4; i++) {
16973         up = (U32*)(buf + i);
16974         *up = 0xBeef;
16975         if (*up != 0xBeef) {
16976             printf("write failed (%x)\n", *up);
16977             exit(3);
16978         }
16979     }
16980
16981     exit(0);
16982 #else
16983     printf("1\n");
16984     exit(1);
16985 #endif
16986     return 0;
16987 }
16988 EOCP
16989 set try
16990 if eval $compile_ok; then
16991         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16992         $run ./try 2>&1 >/dev/null
16993         case "$?" in
16994         0)      cat >&4 <<EOM
16995 You can access character data pretty unalignedly.
16996 EOM
16997                 d_u32align="$undef"
16998                 ;;
16999         *)      cat >&4 <<EOM
17000 It seems that you must access character data in an aligned manner.
17001 EOM
17002                 d_u32align="$define"
17003                 ;;
17004         esac
17005 else
17006         rp='Can you access character data at unaligned addresses?'
17007         dflt='n'
17008         . ./myread
17009         case "$ans" in
17010         [yY]*)  d_u32align="$undef"  ;;
17011         *)      d_u32align="$define" ;;
17012         esac
17013 fi
17014 $rm -f core core.try.* try.core
17015 ;;
17016 esac
17017
17018 : see if ualarm exists
17019 set ualarm d_ualarm
17020 eval $inlibc
17021
17022 : see if umask exists
17023 set umask d_umask
17024 eval $inlibc
17025
17026 : see if unordered exists
17027 set unordered d_unordered
17028 eval $inlibc
17029
17030 : see if usleep exists
17031 set usleep d_usleep
17032 eval $inlibc
17033
17034 : see if prototype for usleep is available
17035 echo " "
17036 set d_usleepproto usleep $i_unistd unistd.h
17037 eval $hasproto
17038
17039 : see if ustat exists
17040 set ustat d_ustat
17041 eval $inlibc
17042
17043 : backward compatibility for d_hvfork
17044 if test X$d_hvfork != X; then
17045         d_vfork="$d_hvfork"
17046         d_hvfork=''
17047 fi
17048 : see if there is a vfork
17049 val=''
17050 set vfork val
17051 eval $inlibc
17052
17053 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17054 : perl on Solaris 2.x, and probably elsewhere.
17055 case "$val" in
17056 $define)
17057         echo " "
17058         case "$usevfork" in
17059         false) dflt='n';;
17060         *) dflt='y';;
17061         esac
17062         cat <<'EOM'
17063  
17064 Perl can only use a vfork() that doesn't suffer from strict
17065 restrictions on calling functions or modifying global data in
17066 the child.  For example, glibc-2.1 contains such a vfork()
17067 that is unsuitable.  If your system provides a proper fork()
17068 call, chances are that you do NOT want perl to use vfork().
17069
17070 EOM
17071         rp="Do you still want to use vfork()?"
17072         . ./myread
17073         case "$ans" in
17074         y|Y) ;;
17075         *)
17076                 echo "Ok, we won't use vfork()."
17077                 val="$undef"
17078                 ;;
17079         esac
17080         ;;
17081 esac
17082 set d_vfork
17083 eval $setvar
17084 case "$d_vfork" in
17085 $define) usevfork='true';;
17086 *) usevfork='false';;
17087 esac
17088
17089 : see if closedir exists
17090 set closedir d_closedir
17091 eval $inlibc
17092
17093 case "$d_closedir" in
17094 "$define")
17095         echo " "
17096         echo "Checking whether closedir() returns a status..." >&4
17097         cat > try.c <<EOM
17098 #$i_dirent I_DIRENT             /**/
17099 #$i_sysdir I_SYS_DIR            /**/
17100 #$i_sysndir I_SYS_NDIR          /**/
17101 #$i_systypes I_SYS_TYPES        /**/
17102
17103 #if defined(I_SYS_TYPES)
17104 #include <sys/types.h>
17105 #endif
17106 #if defined(I_DIRENT)
17107 #include <dirent.h>
17108 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17109 #include <sys/dir.h>
17110 #endif
17111 #else
17112 #ifdef I_SYS_NDIR
17113 #include <sys/ndir.h>
17114 #else
17115 #ifdef I_SYS_DIR
17116 #ifdef hp9000s500
17117 #include <ndir.h>       /* may be wrong in the future */
17118 #else
17119 #include <sys/dir.h>
17120 #endif
17121 #endif
17122 #endif
17123 #endif 
17124 int main() { return closedir(opendir(".")); }
17125 EOM
17126         set try
17127         if eval $compile_ok; then
17128                 if $run ./try > /dev/null 2>&1 ; then
17129                         echo "Yes, it does."
17130                         val="$undef"
17131                 else
17132                         echo "No, it doesn't."
17133                         val="$define"
17134                 fi
17135         else
17136                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17137                 val="$define"
17138         fi
17139         ;;
17140 *)
17141         val="$undef";
17142         ;;
17143 esac
17144 set d_void_closedir
17145 eval $setvar
17146 $rm -f try try.*
17147 : see if there is a wait4
17148 set wait4 d_wait4
17149 eval $inlibc
17150
17151 : see if waitpid exists
17152 set waitpid d_waitpid
17153 eval $inlibc
17154
17155 : see if wcstombs exists
17156 set wcstombs d_wcstombs
17157 eval $inlibc
17158
17159 : see if wctomb exists
17160 set wctomb d_wctomb
17161 eval $inlibc
17162
17163 : see if writev exists
17164 set writev d_writev
17165 eval $inlibc
17166
17167 : preserve RCS keywords in files with variable substitution, grrr
17168 Date='$Date'
17169 Id='$Id'
17170 Log='$Log'
17171 RCSfile='$RCSfile'
17172 Revision='$Revision'
17173
17174 : check for alignment requirements
17175 echo " "
17176 case "$usecrosscompile$multiarch" in
17177 *$define*)
17178         $cat <<EOM
17179 You seem to be either cross-compiling or doing a multiarchitecture build,
17180 skipping the memory alignment check.
17181
17182 EOM
17183         case "$alignbytes" in
17184         '') alignbytes=8 ;;
17185         esac
17186         ;;
17187 *)
17188         case "$alignbytes" in
17189         '') echo "Checking alignment constraints..." >&4
17190                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17191                         $cat >try.c <<'EOCP'
17192 typedef long double NV;
17193 EOCP
17194                 else
17195                         $cat >try.c <<'EOCP'
17196 typedef double NV;
17197 EOCP
17198                 fi
17199                 $cat >>try.c <<'EOCP'
17200 #include <stdio.h>
17201 struct foobar {
17202         char foo;
17203         NV bar;
17204 } try_algn;
17205 int main()
17206 {
17207     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17208     return(0);
17209 }
17210 EOCP
17211                 set try
17212                 if eval $compile_ok; then
17213                         dflt=`$run ./try`
17214                 else
17215                         dflt='8'
17216                         echo "(I can't seem to compile the test program...)"
17217                 fi
17218                 ;;
17219         *) dflt="$alignbytes"
17220                 ;;
17221         esac
17222         rp="Doubles must be aligned on a how-many-byte boundary?"
17223         . ./myread
17224         alignbytes="$ans"
17225         $rm -f try.c try
17226         ;;
17227 esac
17228
17229
17230 : set the base revision
17231 baserev=5.0
17232
17233 : how do we concatenate cpp tokens here?
17234 echo " "
17235 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17236 $cat >cpp_stuff.c <<'EOCP'
17237 #define RCAT(a,b)a/**/b
17238 #define ACAT(a,b)a ## b
17239 RCAT(Rei,ser)
17240 ACAT(Cir,cus)
17241 EOCP
17242 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17243 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17244         echo "Oh!  Smells like ANSI's been here." >&4
17245         echo "We can catify or stringify, separately or together!"
17246         cpp_stuff=42
17247 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17248         echo "Ah, yes!  The good old days!" >&4
17249         echo "However, in the good old days we don't know how to stringify and"
17250         echo "catify at the same time."
17251         cpp_stuff=1
17252 else
17253         $cat >&4 <<EOM
17254 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17255 You're going to have to edit the values of CAT[2-5] in config.h...
17256 EOM
17257         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17258 fi
17259 $rm -f cpp_stuff.*
17260
17261 : see if this is a db.h system
17262 set db.h i_db
17263 eval $inhdr
17264
17265 case "$i_db" in
17266 $define)
17267         : Check db version.
17268         echo " "
17269         echo "Checking Berkeley DB version ..." >&4
17270         $cat >try.c <<EOCP
17271 #$d_const HASCONST
17272 #ifndef HASCONST
17273 #define const
17274 #endif
17275 #include <sys/types.h>
17276 #include <stdio.h>
17277 #$i_stdlib I_STDLIB
17278 #ifdef I_STDLIB
17279 #include <stdlib.h>
17280 #endif
17281 #include <db.h>
17282 int main(int argc, char *argv[])
17283 {
17284 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17285     int Major, Minor, Patch ;
17286     unsigned long Version ;
17287     (void)db_version(&Major, &Minor, &Patch) ;
17288     if (argc == 2) {
17289         printf("%d %d %d %d %d %d\n",
17290                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17291                Major, Minor, Patch);
17292         exit(0);
17293     }
17294     printf("You have Berkeley DB Version 2 or greater.\n");
17295
17296     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17297                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17298     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17299                 Major, Minor, Patch) ;
17300
17301     /* check that db.h & libdb are compatible */
17302     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17303         printf("db.h and libdb are incompatible.\n") ;
17304         exit(3);        
17305     }
17306
17307     printf("db.h and libdb are compatible.\n") ;
17308
17309     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17310                 + DB_VERSION_PATCH ;
17311
17312     /* needs to be >= 2.3.4 */
17313     if (Version < 2003004) {
17314     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17315         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17316         exit(2);        
17317     }
17318
17319     exit(0);
17320 #else
17321 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17322     if (argc == 2) {
17323         printf("1 0 0\n");
17324         exit(0);
17325     }
17326     printf("You have Berkeley DB Version 1.\n");
17327     exit(0);    /* DB version < 2: the coast is clear. */
17328 #else
17329     exit(1);    /* <db.h> not Berkeley DB? */
17330 #endif
17331 #endif
17332 }
17333 EOCP
17334         set try
17335         if eval $compile_ok && $run ./try; then
17336                 echo 'Looks OK.' >&4
17337                 set `$run ./try 1`
17338                 db_version_major=$1
17339                 db_version_minor=$2
17340                 db_version_patch=$3
17341         else
17342                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17343                 i_db=$undef
17344                 case " $libs " in
17345                 *"-ldb "*)
17346                         : Remove db from list of libraries to use
17347                         echo "Removing unusable -ldb from library list" >&4
17348                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17349                         shift
17350                         libs="$*"
17351                         echo "libs = $libs" >&4
17352                         ;;
17353                 esac
17354         fi
17355         $rm -f try.*
17356         ;;
17357 esac
17358
17359 case "$i_db" in
17360 define)
17361         : Check the return type needed for hash 
17362         echo " "
17363         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17364         $cat >try.c <<EOCP
17365 #$d_const HASCONST
17366 #ifndef HASCONST
17367 #define const
17368 #endif
17369 #include <sys/types.h>
17370 #include <db.h>
17371
17372 #ifndef DB_VERSION_MAJOR
17373 u_int32_t hash_cb (ptr, size)
17374 const void *ptr;
17375 size_t size;
17376 {
17377 }
17378 HASHINFO info;
17379 int main()
17380 {
17381         info.hash = hash_cb;
17382 }
17383 #endif
17384 EOCP
17385         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17386                 if $contains warning try.out >>/dev/null 2>&1 ; then
17387                         db_hashtype='int'
17388                 else
17389                         db_hashtype='u_int32_t'
17390                 fi
17391         else
17392                 : XXX Maybe we should just give up here.
17393                 db_hashtype=u_int32_t
17394                 $cat try.out >&4
17395                 echo "Help:  I can't seem to compile the db test program." >&4
17396                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17397         fi
17398         $rm -f try.*
17399         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17400         ;;
17401 *)      db_hashtype=u_int32_t
17402         ;;
17403 esac
17404 case "$i_db" in
17405 define)
17406         : Check the return type needed for prefix 
17407         echo " "
17408         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17409         cat >try.c <<EOCP
17410 #$d_const HASCONST
17411 #ifndef HASCONST
17412 #define const
17413 #endif
17414 #include <sys/types.h>
17415 #include <db.h>
17416
17417 #ifndef DB_VERSION_MAJOR
17418 size_t prefix_cb (key1, key2)
17419 const DBT *key1;
17420 const DBT *key2;
17421 {
17422 }
17423 BTREEINFO info;
17424 int main()
17425 {
17426         info.prefix = prefix_cb;
17427 }
17428 #endif
17429 EOCP
17430         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17431                 if $contains warning try.out >>/dev/null 2>&1 ; then
17432                         db_prefixtype='int'
17433                 else
17434                         db_prefixtype='size_t'
17435                 fi
17436         else
17437                 db_prefixtype='size_t'
17438                 : XXX Maybe we should just give up here.
17439                 $cat try.out >&4
17440                 echo "Help:  I can't seem to compile the db test program." >&4
17441                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17442         fi
17443         $rm -f try.*
17444         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17445         ;;
17446 *)      db_prefixtype='size_t'
17447         ;;
17448 esac
17449
17450
17451 : How can we generate normalized random numbers ?
17452 echo " "
17453 echo "Looking for a random number function..." >&4
17454 case "$randfunc" in
17455 '')
17456         if set drand48 val -f; eval $csym; $val; then
17457                 dflt="drand48"
17458                 echo "Good, found drand48()." >&4
17459         elif set random val -f; eval $csym; $val; then
17460                 dflt="random"
17461                 echo "OK, found random()." >&4
17462         else
17463                 dflt="rand"
17464                 echo "Yick, looks like I have to use rand()." >&4
17465         fi
17466         echo " "
17467         ;;
17468 *)
17469         dflt="$randfunc"
17470         ;;
17471 esac
17472 cont=true
17473
17474 case "$ccflags" in
17475 *-Dmy_rand=*|*-Dmy_srand=*)
17476         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17477         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17478         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17479         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17480         ;;
17481 esac
17482
17483 while $test "$cont"; do
17484         rp="Use which function to generate random numbers?"
17485         . ./myread
17486         if $test "$ans" = "$dflt"; then
17487                 : null
17488         else
17489                 randbits=''
17490         fi
17491         randfunc="$ans"
17492         if set $ans val -f; eval $csym; $val; then
17493                 cont=''
17494         else
17495                 dflt=y
17496                 rp="I cannot find function $ans. Use that name anyway?"
17497                 . ./myread
17498                 dflt=rand
17499                 case "$ans" in
17500                         [yY]*) cont='';;
17501                 esac
17502         fi
17503         case "$cont" in
17504         '')
17505                 case "$randfunc" in
17506                 drand48)
17507                         drand01="drand48()"
17508                         seedfunc="srand48"
17509                         randbits=48
17510                         randseedtype=long
17511                         ;;
17512                 rand|random)
17513                         case "$randbits" in
17514                         '')
17515 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17516                                 $cat >try.c <<EOCP
17517 #$i_unistd I_UNISTD
17518 #$i_stdlib I_STDLIB
17519 #include <stdio.h>
17520 #ifdef I_UNISTD
17521 #  include <unistd.h>
17522 #endif
17523 #ifdef I_STDLIB
17524 #  include <stdlib.h>
17525 #endif
17526 int main()
17527 {
17528         register int i;
17529         register unsigned long tmp;
17530         register unsigned long max = 0L;
17531
17532         for (i = 1000; i; i--) {
17533                 tmp = (unsigned long) $randfunc();
17534                 if (tmp > max) max = tmp;
17535         }
17536         for (i = 0; max; i++)
17537                 max /= 2;
17538         printf("%d\n",i);
17539 }
17540 EOCP
17541                                 set try
17542                                 if eval $compile_ok; then
17543                                         dflt=`try`
17544                                 else
17545                                         dflt='?'
17546                                         echo "(I can't seem to compile the test program...)"
17547                                 fi
17548                                 ;;
17549                         *)
17550                                 dflt="$randbits"
17551                                 ;;
17552                         esac
17553                         rp="How many bits does your $randfunc() function produce?"
17554                         . ./myread
17555                         randbits="$ans"
17556                         $rm -f try.c try
17557                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17558                         seedfunc="s$randfunc"
17559                         randseedtype=unsigned
17560                         ;;
17561                 *)
17562                         dflt="31"
17563                         rp="How many bits does your $randfunc() function produce?"
17564                         . ./myread
17565                         randbits="$ans"
17566                         seedfunc="s$randfunc"
17567                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17568                         if set $seedfunc val -f; eval $csym; $val; then
17569                                 echo "(Using $seedfunc() to seed random generator)"
17570                         else
17571                                 echo "(Warning: no $seedfunc() to seed random generator)"
17572                                 seedfunc=rand
17573                         fi
17574                         randseedtype=unsigned
17575                         ;;
17576                 esac
17577                 ;;
17578         esac
17579 done
17580
17581 echo " "
17582 echo "Determining whether or not we are on an EBCDIC system..." >&4
17583 $cat >try.c <<'EOM'
17584 int main()
17585 {
17586   if ('M'==0xd4) return 0;
17587   return 1;
17588 }
17589 EOM
17590
17591 val=$undef
17592 set try
17593 if eval $compile_ok; then
17594         if $run ./try; then
17595                 echo "You seem to speak EBCDIC." >&4
17596                 val="$define"
17597         else
17598                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17599         fi
17600 else
17601         echo "I'm unable to compile the test program." >&4
17602         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17603 fi
17604 $rm -f try try.*
17605 set ebcdic
17606 eval $setvar
17607
17608 echo " "
17609 $cat >&4 <<EOM
17610 Checking how to flush all pending stdio output...
17611 EOM
17612 # I only know how to find the first 32 possibly open files on SunOS.
17613 # See also hints/sunos_4_1.sh and util.c  --AD
17614 case "$osname" in
17615 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17616 esac
17617 $cat >>try.c <<EOCP
17618 #include <stdio.h>
17619 #$i_stdlib I_STDLIB
17620 #ifdef I_STDLIB
17621 #include <stdlib.h>
17622 #endif
17623 #$i_unistd I_UNISTD
17624 #ifdef I_UNISTD
17625 # include <unistd.h>
17626 #endif
17627 #$d_sysconf HAS_SYSCONF
17628 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17629 #ifdef HAS_STDIO_STREAM_ARRAY
17630 # define STDIO_STREAM_ARRAY $stdio_stream_array
17631 #endif
17632 int main() {
17633   FILE* p;
17634   unlink("try.out");
17635   p = fopen("try.out", "w");
17636 #ifdef TRY_FPUTC
17637   fputc('x', p);
17638 #else
17639 # ifdef TRY_FPRINTF
17640   fprintf(p, "x");
17641 # endif
17642 #endif
17643 #ifdef TRY_FFLUSH_NULL
17644   fflush(NULL);
17645 #endif
17646 #ifdef TRY_FFLUSH_ALL
17647   {
17648     long open_max = -1;
17649 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17650     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17651 # else
17652 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17653     open_max = sysconf(_SC_OPEN_MAX);
17654 #  else
17655 #   ifdef FOPEN_MAX
17656     open_max = FOPEN_MAX;
17657 #   else
17658 #    ifdef OPEN_MAX
17659     open_max = OPEN_MAX;
17660 #    else
17661 #     ifdef _NFILE
17662     open_max = _NFILE;
17663 #     endif
17664 #    endif
17665 #   endif
17666 #  endif
17667 # endif 
17668 # ifdef HAS_STDIO_STREAM_ARRAY
17669     if (open_max > 0) {
17670       long i;
17671       for (i = 0; i < open_max; i++)
17672             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17673                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17674                 STDIO_STREAM_ARRAY[i]._flag)
17675                 fflush(&STDIO_STREAM_ARRAY[i]);
17676     }   
17677   }
17678 # endif
17679 #endif
17680   _exit(42);
17681 }
17682 EOCP
17683 : first we have to find out how _not_ to flush
17684 $to try.c
17685 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17686     output=''
17687     set try -DTRY_FPUTC
17688     if eval $compile; then
17689             $run ./try 2>/dev/null
17690             code="$?"
17691             $from try.out
17692             if $test ! -s try.out -a "X$code" = X42; then
17693                 output=-DTRY_FPUTC
17694             fi
17695     fi
17696     case "$output" in
17697     '')
17698             set try -DTRY_FPRINTF
17699             if eval $compile; then
17700                     $run ./try 2>/dev/null
17701                     code="$?"
17702                     $from try.out
17703                     if $test ! -s try.out -a "X$code" = X42; then
17704                         output=-DTRY_FPRINTF
17705                     fi
17706             fi
17707         ;;
17708     esac
17709 fi
17710 : check for fflush NULL behaviour
17711 case "$fflushNULL" in
17712 '')     set try -DTRY_FFLUSH_NULL $output
17713         if eval $compile; then
17714                 $run ./try 2>/dev/null
17715                 code="$?"
17716                 $from try.out
17717                 if $test -s try.out -a "X$code" = X42; then
17718                         fflushNULL="`$cat try.out`"
17719                 else
17720                         if $test "X$code" != X42; then
17721                                 $cat >&4 <<EOM
17722 (If this test failed, don't worry, we'll try another method shortly.)
17723 EOM
17724                         fi
17725                 fi
17726         fi
17727         $rm -f core try.core core.try.*
17728         case "$fflushNULL" in
17729         x)      $cat >&4 <<EOM
17730 Your fflush(NULL) works okay for output streams.
17731 Let's see if it clobbers input pipes...
17732 EOM
17733 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17734 # bug that improperly flushes the input end of pipes.  So we avoid the
17735 # autoflush on fork/system/exec support for now. :-(
17736 $cat >tryp.c <<EOCP
17737 #include <stdio.h>
17738 int
17739 main(int argc, char **argv)
17740 {
17741     char buf[1024];
17742     int i;
17743     char *bp = buf;
17744     while (1) {
17745         while ((i = getc(stdin)) != -1
17746                && (*bp++ = i) != '\n'
17747                && bp < &buf[1024])
17748         /* DO NOTHING */ ;
17749         *bp = '\0';
17750         fprintf(stdout, "%s", buf);
17751         fflush(NULL);
17752         if (i == -1)
17753             return 0;
17754         bp = buf;
17755     }
17756 }
17757 EOCP
17758                 fflushNULL="$define"
17759                 set tryp
17760                 if eval $compile; then
17761                     $rm -f tryp.out
17762                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17763                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17764                        $cat >&4 <<EOM
17765 fflush(NULL) seems to behave okay with input streams.
17766 EOM
17767                         fflushNULL="$define"
17768                     else
17769                         $cat >&4 <<EOM
17770 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17771 EOM
17772                         fflushNULL="$undef"
17773                     fi
17774                 fi
17775                 $rm -f core tryp.c tryp.core core.tryp.*
17776                 ;;
17777         '')     $cat >&4 <<EOM
17778 Your fflush(NULL) isn't working (contrary to ANSI C).
17779 EOM
17780                 fflushNULL="$undef"
17781                 ;;
17782         *)      $cat >&4 <<EOM
17783 Cannot figure out whether your fflush(NULL) works or not.
17784 I'm assuming it doesn't (contrary to ANSI C).
17785 EOM
17786                 fflushNULL="$undef"
17787                 ;;
17788         esac
17789         ;;
17790 $define|true|[yY]*)
17791         fflushNULL="$define"
17792         ;;
17793 *)
17794         fflushNULL="$undef"
17795         ;;
17796 esac
17797 : check explicit looping only if NULL did not work, and if the pipe
17798 : bug does not show up on an explicit flush too
17799 case "$fflushNULL" in
17800 "$undef")
17801         $cat >tryp.c <<EOCP
17802 #include <stdio.h>
17803 int
17804 main(int argc, char **argv)
17805 {
17806     char buf[1024];
17807     int i;
17808     char *bp = buf;
17809     while (1) {
17810         while ((i = getc(stdin)) != -1
17811                && (*bp++ = i) != '\n'
17812                && bp < &buf[1024])
17813         /* DO NOTHING */ ;
17814         *bp = '\0';
17815         fprintf(stdout, "%s", buf);
17816         fflush(stdin);
17817         if (i == -1)
17818             return 0;
17819         bp = buf;
17820     }
17821 }
17822 EOCP
17823         set tryp
17824         if eval $compile; then
17825             $rm -f tryp.out
17826             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17827             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17828                $cat >&4 <<EOM
17829 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17830 EOM
17831                 : now check for fflushall behaviour
17832                 case "$fflushall" in
17833                 '')     set try -DTRY_FFLUSH_ALL $output
17834                         if eval $compile; then
17835                                 $cat >&4 <<EOM
17836 (Now testing the other method--but note that this also may fail.)
17837 EOM
17838                                 $run ./try 2>/dev/null
17839                                 code=$?
17840                                 $from try.out
17841                                 if $test -s try.out -a "X$code" = X42; then
17842                                         fflushall="`$cat try.out`"
17843                                 fi
17844                         fi
17845                         $rm -f core try.core core.try.*
17846                         case "$fflushall" in
17847                         x)      $cat >&4 <<EOM
17848 Whew. Flushing explicitly all the stdio streams works.
17849 EOM
17850                                 fflushall="$define"
17851                                 ;;
17852                         '')     $cat >&4 <<EOM
17853 Sigh. Flushing explicitly all the stdio streams doesn't work.
17854 EOM
17855                                 fflushall="$undef"
17856                                 ;;
17857                         *)      $cat >&4 <<EOM
17858 Cannot figure out whether flushing stdio streams explicitly works or not.
17859 I'm assuming it doesn't.
17860 EOM
17861                                 fflushall="$undef"
17862                                 ;;
17863                         esac
17864                         ;;
17865                 "$define"|true|[yY]*)
17866                         fflushall="$define"
17867                         ;;
17868                 *)
17869                         fflushall="$undef"
17870                         ;;
17871                 esac
17872             else
17873                 $cat >&4 <<EOM
17874 All is futile.  Even fflush(stdin) clobbers input pipes!
17875 EOM
17876                 fflushall="$undef"
17877             fi
17878         else
17879             fflushall="$undef"
17880         fi
17881         $rm -f core tryp.c tryp.core core.tryp.*
17882         ;;
17883 *)      fflushall="$undef"
17884         ;;
17885 esac
17886
17887 case "$fflushNULL$fflushall" in
17888 undefundef)
17889         $cat <<EOM
17890 OK, I give up.  I cannot figure out how to flush pending stdio output.
17891 We won't be flushing handles at all before fork/exec/popen.
17892 EOM
17893         ;;
17894 esac
17895 $rm -f try.* try$exe_ext
17896
17897 : Store the full pathname to the ar program for use in the C program
17898 : Respect a hint or command line value for full_ar.
17899 case "$full_ar" in
17900 '') full_ar=$ar ;;
17901 esac
17902
17903 : Store the full pathname to the sed program for use in the C program
17904 full_sed=$sed
17905
17906 : see what type gids are declared as in the kernel
17907 echo " "
17908 echo "Looking for the type for group ids returned by getgid()."
17909 set gid_t gidtype xxx stdio.h sys/types.h
17910 eval $typedef
17911 case "$gidtype" in
17912 xxx)
17913         xxx=`./findhdr sys/user.h`
17914         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17915         case $1 in
17916         unsigned) dflt="$1 $2" ;;
17917         *) dflt="$1" ;;
17918         esac
17919         ;;
17920 *) dflt="$gidtype";;
17921 esac
17922 case "$gidtype" in
17923 gid_t) echo "gid_t found." ;;
17924 *)      rp="What is the type for group ids returned by getgid()?"
17925         . ./myread
17926         gidtype="$ans"
17927         ;;
17928 esac
17929
17930 echo " "
17931 case "$gidtype" in
17932 *_t) zzz="$gidtype"     ;;
17933 *)   zzz="gid"          ;;
17934 esac
17935 echo "Checking the size of $zzz..." >&4 
17936 cat > try.c <<EOCP
17937 #include <sys/types.h>
17938 #include <stdio.h>
17939 #$i_stdlib I_STDLIB
17940 #ifdef I_STDLIB
17941 #include <stdlib.h>
17942 #endif
17943 int main() {
17944     printf("%d\n", (int)sizeof($gidtype));
17945     exit(0);
17946 }
17947 EOCP
17948 set try
17949 if eval $compile_ok; then
17950         yyy=`$run ./try`
17951         case "$yyy" in
17952         '')     gidsize=4
17953                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17954                 ;;
17955         *)      gidsize=$yyy
17956                 echo "Your $zzz is $gidsize bytes long."
17957                 ;;
17958         esac
17959 else
17960         gidsize=4
17961         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17962 fi
17963
17964
17965 echo " "
17966 case "$gidtype" in
17967 *_t) zzz="$gidtype"     ;;
17968 *)   zzz="gid"          ;;
17969 esac
17970 echo "Checking the sign of $zzz..." >&4 
17971 cat > try.c <<EOCP
17972 #include <sys/types.h>
17973 #include <stdio.h>
17974 int main() {
17975         $gidtype foo = -1;
17976         if (foo < 0)
17977                 printf("-1\n");
17978         else
17979                 printf("1\n");
17980 }
17981 EOCP
17982 set try
17983 if eval $compile; then
17984         yyy=`$run ./try`
17985         case "$yyy" in
17986         '')     gidsign=1
17987                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17988                 ;;
17989         *)      gidsign=$yyy
17990                 case "$gidsign" in
17991                  1) echo "Your $zzz is unsigned." ;;
17992                 -1) echo "Your $zzz is signed."   ;;
17993                 esac
17994                 ;;
17995         esac
17996 else
17997         gidsign=1
17998         echo "(I can't compile the test program--guessing unsigned.)" >&4
17999 fi
18000
18001
18002 echo " "
18003
18004 if $test X"$quadtype" != X; then
18005
18006 echo "Checking how to print 64-bit integers..." >&4
18007
18008 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18009         $cat >try.c <<'EOCP'
18010 #include <sys/types.h>
18011 #include <stdio.h>
18012 int main() {
18013   int q = 12345678901;
18014   printf("%ld\n", q);
18015 }
18016 EOCP
18017         set try
18018         if eval $compile; then
18019                 yyy=`$run ./try`
18020                 case "$yyy" in
18021                 12345678901)
18022                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18023                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18024                         echo "We will use %d."
18025                         ;;
18026                 esac
18027         fi
18028 fi
18029
18030 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18031         $cat >try.c <<'EOCP'
18032 #include <sys/types.h>
18033 #include <stdio.h>
18034 int main() {
18035   long q = 12345678901;
18036   printf("%ld\n", q);
18037 }
18038 EOCP
18039         set try
18040         if eval $compile; then
18041                 yyy=`$run ./try`
18042                 case "$yyy" in
18043                 12345678901)
18044                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18045                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18046                         echo "We will use %ld."
18047                         ;;
18048                 esac
18049         fi
18050 fi
18051
18052 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18053         $cat >try.c <<'EOCP'
18054 #include <sys/types.h>
18055 #include <inttypes.h>
18056 #include <stdio.h>
18057 int main() {
18058   int64_t q = 12345678901;
18059   printf("%" PRId64 "\n", q);
18060 }
18061 EOCP
18062         set try
18063         if eval $compile; then
18064                 yyy=`$run ./try`
18065                 case "$yyy" in
18066                 12345678901)
18067                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18068                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18069                         echo "We will use the C9X style."
18070                         ;;
18071                 esac
18072         fi
18073 fi
18074
18075 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18076         $cat >try.c <<EOCP
18077 #include <sys/types.h>
18078 #include <stdio.h>
18079 int main() {
18080   $quadtype q = 12345678901;
18081   printf("%Ld\n", q);
18082 }
18083 EOCP
18084         set try
18085         if eval $compile; then
18086                 yyy=`$run ./try`
18087                 case "$yyy" in
18088                 12345678901)
18089                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18090                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18091                         echo "We will use %Ld."
18092                         ;;
18093                 esac
18094         fi
18095 fi
18096
18097 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18098         $cat >try.c <<'EOCP'
18099 #include <sys/types.h>
18100 #include <stdio.h>
18101 int main() {
18102   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18103   printf("%lld\n", q);
18104 }
18105 EOCP
18106         set try
18107         if eval $compile; then
18108                 yyy=`$run ./try`
18109                 case "$yyy" in
18110                 12345678901)
18111                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18112                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18113                         echo "We will use the %lld style."
18114                         ;;
18115                 esac
18116         fi
18117 fi
18118
18119 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18120         $cat >try.c <<EOCP
18121 #include <sys/types.h>
18122 #include <stdio.h>
18123 int main() {
18124   $quadtype q = 12345678901;
18125   printf("%qd\n", q);
18126 }
18127 EOCP
18128         set try
18129         if eval $compile; then
18130                 yyy=`$run ./try`
18131                 case "$yyy" in
18132                 12345678901)
18133                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18134                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18135                         echo "We will use %qd."
18136                         ;;
18137                 esac
18138         fi
18139 fi
18140
18141 if $test X"$sPRId64" = X; then
18142         echo "Cannot figure out how to print 64-bit integers." >&4
18143 fi
18144
18145 $rm -f try try.*
18146
18147 fi
18148
18149 case "$sPRId64" in
18150 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18151         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18152         ;;
18153 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18154         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18155         ;;
18156 esac
18157
18158
18159 echo " "
18160 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18161
18162 if $test X"$ivsize" = X8; then
18163         ivdformat="$sPRId64"
18164         uvuformat="$sPRIu64"
18165         uvoformat="$sPRIo64"
18166         uvxformat="$sPRIx64"
18167         uvXUformat="$sPRIXU64"
18168 else
18169         if $test X"$ivsize" = X"$longsize"; then
18170                 ivdformat='"ld"'
18171                 uvuformat='"lu"'
18172                 uvoformat='"lo"'
18173                 uvxformat='"lx"'
18174                 uvXUformat='"lX"'
18175         else
18176                 if $test X"$ivsize" = X"$intsize"; then
18177                         ivdformat='"d"'
18178                         uvuformat='"u"'
18179                         uvoformat='"o"'
18180                         uvxformat='"x"'
18181                         uvXUformat='"X"'
18182                 else
18183                         : far out
18184                         if $test X"$ivsize" = X"$shortsize"; then
18185                                 ivdformat='"hd"'
18186                                 uvuformat='"hu"'
18187                                 uvoformat='"ho"'
18188                                 uvxformat='"hx"'
18189                                 uvXUformat='"hX"'
18190                         fi
18191                 fi
18192         fi
18193 fi
18194
18195 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18196         nveformat="$sPRIeldbl"
18197         nvfformat="$sPRIfldbl"
18198         nvgformat="$sPRIgldbl"
18199         nvEUformat="$sPRIEUldbl"
18200         nvFUformat="$sPRIFUldbl"
18201         nvGUformat="$sPRIGUldbl"
18202 else
18203         nveformat='"e"'
18204         nvfformat='"f"'
18205         nvgformat='"g"'
18206         nvEUformat='"E"'
18207         nvFUformat='"F"'
18208         nvGUformat='"G"'
18209 fi
18210
18211 case "$ivdformat" in
18212 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18213     exit 1
18214     ;;
18215 esac
18216
18217
18218 echo " "
18219 $echo "Checking the format string to be used for gids..." >&4
18220
18221 case "$gidsign" in
18222 -1)     if $test X"$gidsize" = X"$ivsize"; then
18223                 gidformat="$ivdformat"
18224         else
18225                 if $test X"$gidsize" = X"$longsize"; then
18226                         gidformat='"ld"'
18227                 else
18228                         if $test X"$gidsize" = X"$intsize"; then
18229                                 gidformat='"d"'
18230                         else
18231                                 if $test X"$gidsize" = X"$shortsize"; then
18232                                         gidformat='"hd"'
18233                                 fi
18234                         fi
18235                 fi
18236         fi
18237         ;;
18238 *)      if $test X"$gidsize" = X"$uvsize"; then
18239                 gidformat="$uvuformat"
18240         else
18241                 if $test X"$gidsize" = X"$longsize"; then
18242                         gidformat='"lu"'
18243                 else
18244                         if $test X"$gidsize" = X"$intsize"; then
18245                                 gidformat='"u"'
18246                         else
18247                                 if $test X"$gidsize" = X"$shortsize"; then
18248                                         gidformat='"hu"'
18249                                 fi
18250                         fi
18251                 fi
18252         fi
18253         ;;
18254 esac
18255
18256 : see if getgroups exists
18257 set getgroups d_getgrps
18258 eval $inlibc
18259
18260 : see if setgroups exists
18261 set setgroups d_setgrps
18262 eval $inlibc
18263
18264
18265 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18266 echo " "
18267 case "$d_getgrps$d_setgrps" in
18268 *define*)
18269         case "$groupstype" in
18270         '') dflt="$gidtype" ;;
18271         *)  dflt="$groupstype" ;;
18272         esac
18273         $cat <<EOM
18274 What type of pointer is the second argument to getgroups() and setgroups()?
18275 Usually this is the same as group ids, $gidtype, but not always.
18276
18277 EOM
18278         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18279         . ./myread
18280         groupstype="$ans"
18281         ;;
18282 *)  groupstype="$gidtype";;
18283 esac
18284
18285 echo " "
18286 echo "Checking if your $make program sets \$(MAKE)..." >&4
18287 case "$make_set_make" in
18288 '')
18289         $sed 's/^X //' > testmake.mak << 'EOF'
18290 Xall:
18291 X       @echo 'maketemp="$(MAKE)"'
18292 EOF
18293         case "`$make -f testmake.mak 2>/dev/null`" in
18294         *maketemp=*) make_set_make='#' ;;
18295         *)      make_set_make="MAKE=$make" ;;
18296         esac
18297         $rm -f testmake.mak
18298         ;;
18299 esac
18300 case "$make_set_make" in
18301 '#') echo "Yup, it does.";;
18302 *) echo "Nope, it doesn't.";;
18303 esac
18304
18305 : see what type is used for mode_t
18306 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18307 set mode_t modetype int stdio.h sys/types.h
18308 eval $typedef_ask
18309
18310 : see if stdarg is available
18311 echo " "
18312 if $test `./findhdr stdarg.h`; then
18313         echo "<stdarg.h> found." >&4
18314         valstd="$define"
18315 else
18316         echo "<stdarg.h> NOT found." >&4
18317         valstd="$undef"
18318 fi
18319
18320 : see if varags is available
18321 echo " "
18322 if $test `./findhdr varargs.h`; then
18323         echo "<varargs.h> found." >&4
18324 else
18325         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18326 fi
18327
18328 : set up the varargs testing programs
18329 $cat > varargs.c <<EOP
18330 #ifdef I_STDARG
18331 #include <stdarg.h>
18332 #endif
18333 #ifdef I_VARARGS
18334 #include <varargs.h>
18335 #endif
18336
18337 #ifdef I_STDARG
18338 int f(char *p, ...)
18339 #else
18340 int f(va_alist)
18341 va_dcl
18342 #endif
18343 {
18344         va_list ap;
18345 #ifndef I_STDARG
18346         char *p;
18347 #endif
18348 #ifdef I_STDARG
18349         va_start(ap,p);
18350 #else
18351         va_start(ap);
18352         p = va_arg(ap, char *);
18353 #endif
18354         va_end(ap);
18355 }
18356 EOP
18357 $cat > varargs <<EOP
18358 $startsh
18359 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18360         echo "true"
18361 else
18362         echo "false"
18363 fi
18364 $rm -f varargs$_o
18365 EOP
18366 chmod +x varargs
18367
18368 : now check which varargs header should be included
18369 echo " "
18370 i_varhdr=''
18371 case "$valstd" in
18372 "$define")
18373         if `./varargs I_STDARG`; then
18374                 val='stdarg.h'
18375         elif `./varargs I_VARARGS`; then
18376                 val='varargs.h'
18377         fi
18378         ;;
18379 *)
18380         if `./varargs I_VARARGS`; then
18381                 val='varargs.h'
18382         fi
18383         ;;
18384 esac
18385 case "$val" in
18386 '')
18387 echo "I could not find the definition for va_dcl... You have problems..." >&4
18388         val="$undef"; set i_stdarg; eval $setvar
18389         val="$undef"; set i_varargs; eval $setvar
18390         ;;
18391 *) 
18392         set i_varhdr
18393         eval $setvar
18394         case "$i_varhdr" in
18395         stdarg.h)
18396                 val="$define"; set i_stdarg; eval $setvar
18397                 val="$undef"; set i_varargs; eval $setvar
18398                 ;;
18399         varargs.h)
18400                 val="$undef"; set i_stdarg; eval $setvar
18401                 val="$define"; set i_varargs; eval $setvar
18402                 ;;
18403         esac
18404         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18405 esac
18406 $rm -f varargs*
18407
18408 : see if we need va_copy
18409 echo " "
18410 case "$i_stdarg" in
18411 "$define")
18412         $cat >try.c <<EOCP
18413 #include <stdarg.h>
18414 #include <stdio.h>
18415 #$i_stdlib I_STDLIB
18416 #ifdef I_STDLIB
18417 #include <stdlib.h>
18418 #endif
18419 #include <signal.h>
18420
18421 int
18422 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18423 {
18424   return vfprintf(f, fmt, *valp);
18425 }
18426  
18427 int    
18428 myvfprintf(FILE *f, const  char *fmt, va_list val)
18429 {
18430   return ivfprintf(f, fmt, &val);
18431 }
18432       
18433 int
18434 myprintf(char *fmt, ...) 
18435 {
18436   va_list val;
18437   va_start(val, fmt);
18438   return myvfprintf(stdout, fmt, val); 
18439 }         
18440
18441 int
18442 main(int ac, char **av)
18443 {
18444   signal(SIGSEGV, exit);
18445
18446   myprintf("%s%cs all right, then\n", "that", '\'');                            
18447   exit(0);      
18448 }
18449 EOCP
18450         set try
18451         if eval $compile && $run ./try 2>&1 >/dev/null; then
18452                 case "`$run ./try`" in
18453                 "that's all right, then")
18454                         okay=yes
18455                         ;;
18456                 esac
18457         fi
18458         case "$okay" in
18459         yes)    echo "It seems that you don't need va_copy()." >&4
18460                 need_va_copy="$undef"
18461                 ;;
18462         *)      echo "It seems that va_copy() or similar will be needed." >&4
18463                 need_va_copy="$define"
18464                 ;;
18465         esac
18466         $rm -f try.* core core.* *.core *.core.*
18467         ;;
18468 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18469         ;;
18470 esac
18471
18472 : see what type is used for size_t
18473 rp="What is the type used for the length parameter for string functions?"
18474 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18475 eval $typedef_ask
18476
18477 : check for type of arguments to gethostbyaddr. 
18478 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18479         case "$d_gethbyaddr" in
18480         $define)
18481                 $cat <<EOM
18482
18483 Checking to see what type of arguments are accepted by gethostbyaddr().
18484 EOM
18485                 hdrs="$define sys/types.h
18486                         $d_socket sys/socket.h 
18487                         $i_niin netinet/in.h 
18488                         $i_netdb netdb.h
18489                         $i_unistd unistd.h"
18490                 : The first arg can 'char *' or 'void *'
18491                 : The second arg is some of integral type
18492                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18493                         for yyy in size_t long int; do
18494                                 case "$netdb_host_type" in
18495                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18496                                         if ./protochk "$try" $hdrs; then
18497                                                 echo "Your system accepts $xxx for the first arg."
18498                                                 echo "...and $yyy for the second arg."
18499                                                 netdb_host_type="$xxx"
18500                                                 netdb_hlen_type="$yyy"
18501                                         fi
18502                                         ;;
18503                                 esac
18504                         done
18505                 done
18506                 : In case none of those worked, prompt the user.
18507                 case "$netdb_host_type" in
18508                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18509                         dflt='char *'
18510                         . ./myread
18511                         netdb_host_type=$ans
18512                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18513                         dflt="$sizetype"
18514                         . ./myread
18515                         netdb_hlen_type=$ans
18516                         ;;
18517                 esac
18518                 ;;
18519         *)      : no gethostbyaddr, so pick harmless defaults
18520                 netdb_host_type='char *'
18521                 netdb_hlen_type="$sizetype"
18522                 ;;
18523         esac
18524         # Remove the "const" if needed. -- but then we'll have a 
18525         # prototype clash!
18526         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18527 fi
18528
18529 : check for type of argument to gethostbyname. 
18530 if test "X$netdb_name_type" = X ; then
18531         case "$d_gethbyname" in
18532         $define)
18533                 $cat <<EOM
18534
18535 Checking to see what type of argument is accepted by gethostbyname().
18536 EOM
18537                 hdrs="$define sys/types.h
18538                         $d_socket sys/socket.h 
18539                         $i_niin netinet/in.h 
18540                         $i_netdb netdb.h
18541                         $i_unistd unistd.h"
18542                 for xxx in "const char *" "char *"; do
18543                         case "$netdb_name_type" in
18544                         '')     try="extern struct hostent *gethostbyname($xxx);"
18545                                 if ./protochk "$try" $hdrs; then
18546                                         echo "Your system accepts $xxx."
18547                                         netdb_name_type="$xxx"
18548                                 fi
18549                                 ;;
18550                         esac
18551                 done
18552                 : In case none of those worked, prompt the user.
18553                 case "$netdb_name_type" in
18554                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18555                         dflt='char *'
18556                         . ./myread
18557                         netdb_name_type=$ans
18558                         ;;
18559                 esac
18560                 ;;
18561         *)      : no gethostbyname, so pick harmless default
18562                 netdb_name_type='char *'
18563                 ;;
18564         esac
18565 fi
18566
18567 : check for type of 1st argument to getnetbyaddr. 
18568 if test "X$netdb_net_type" = X ; then
18569         case "$d_getnbyaddr" in
18570         $define)
18571                 $cat <<EOM
18572
18573 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18574 EOM
18575                 hdrs="$define sys/types.h
18576                         $d_socket sys/socket.h 
18577                         $i_niin netinet/in.h 
18578                         $i_netdb netdb.h
18579                         $i_unistd unistd.h"
18580                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18581                         case "$netdb_net_type" in
18582                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18583                                 if ./protochk "$try" $hdrs; then
18584                                         echo "Your system accepts $xxx."
18585                                         netdb_net_type="$xxx"
18586                                 fi
18587                                 ;;
18588                         esac
18589                 done
18590                 : In case none of those worked, prompt the user.
18591                 case "$netdb_net_type" in
18592                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18593                         dflt='long'
18594                         . ./myread
18595                         netdb_net_type=$ans
18596                         ;;
18597                 esac
18598                 ;;
18599         *)      : no getnetbyaddr, so pick harmless default
18600                 netdb_net_type='long'
18601                 ;;
18602         esac
18603 fi
18604 : locate the preferred pager for this system
18605 fn=f/
18606 case "$pager" in
18607 '')
18608         dflt=''
18609         case "$pg" in
18610         /*) dflt=$pg;;
18611         [a-zA-Z]:/*) dflt=$pg;;
18612         esac
18613         case "$more" in
18614         /*) dflt=$more;;
18615         [a-zA-Z]:/*) dflt=$more;;
18616         esac
18617         case "$less" in
18618         /*) dflt=$less;;
18619         [a-zA-Z]:/*) dflt=$less;;
18620         esac
18621         case "$dflt" in
18622         '') dflt=/usr/ucb/more;;
18623         esac
18624         ;;
18625 *)      dflt="$pager"
18626         : Instruct ./getfile to trust the hinted or previous pager value,
18627         : even if it does not begin with a slash.  For example, on os2,
18628         : pager might be cmd /c more.  See comments in UU/getfile.
18629         fn="f/($pager)"
18630         ;;
18631 esac
18632 echo " "
18633 rp='What pager is used on your system?'
18634 . ./getfile
18635 pager="$ans"
18636
18637 : see what type pids are declared as in the kernel
18638 rp="What is the type of process ids on this system?"
18639 set pid_t pidtype int stdio.h sys/types.h
18640 eval $typedef_ask
18641
18642 : Find earliest binary compatible site_perl subdirectory perl can use.
18643 xs_apiversion=$version # The current site_perl version.
18644 : Find earliest pure perl site_perl subdirectory perl can use.
18645 : The versioned directories started at 5.005.
18646 pm_apiversion='5.005'
18647
18648 : see if ar generates random libraries by itself
18649 echo " "
18650 echo "Checking how to generate random libraries on your machine..." >&4
18651 echo 'int bar1() { return bar2(); }' > bar1.c
18652 echo 'int bar2() { return 2; }' > bar2.c
18653 $cat > foo.c <<EOP
18654 #$i_stdlib I_STDLIB
18655 #ifdef I_STDLIB
18656 #include <stdlib.h>
18657 #endif
18658 int main() { printf("%d\n", bar1()); exit(0); }
18659 EOP
18660 $cc $ccflags -c bar1.c >/dev/null 2>&1
18661 $cc $ccflags -c bar2.c >/dev/null 2>&1
18662 $cc $ccflags -c foo.c >/dev/null 2>&1
18663 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18664 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18665         $run ./foobar >/dev/null 2>&1; then
18666         echo "$ar appears to generate random libraries itself."
18667         orderlib=false
18668         ranlib=":"
18669 elif $ar ts bar$_a >/dev/null 2>&1 &&
18670         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18671         $run ./foobar >/dev/null 2>&1; then
18672                 echo "a table of contents needs to be added with '$ar ts'."
18673                 orderlib=false
18674                 ranlib="$ar ts"
18675 else
18676         case "$ranlib" in
18677         :) ranlib='';;
18678         '')
18679                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18680                 $test -f $ranlib || ranlib=''
18681                 ;;
18682         esac
18683         if $test -n "$ranlib"; then
18684                 echo "your system has '$ranlib'; we'll use that."
18685                 orderlib=false
18686         else
18687                 echo "your system doesn't seem to support random libraries"
18688                 echo "so we'll use lorder and tsort to order the libraries."
18689                 orderlib=true
18690                 ranlib=":"
18691         fi
18692 fi
18693 $rm -f foo* bar* 
18694
18695 : check for type of arguments to select. 
18696 case "$selecttype" in
18697 '') case "$d_select" in
18698         $define)
18699                 echo " "
18700                 $cat <<EOM
18701 Checking to see what type of arguments are accepted by select().
18702 EOM
18703                 hdrs="$define sys/types.h
18704                         $i_systime sys/time.h 
18705                         $i_sysselct sys/select.h
18706                         $d_socket sys/socket.h"
18707                 : The first arg can be int, unsigned, or size_t
18708                 : The last arg may or may not be 'const'
18709                 val=''
18710                 : void pointer has been seen but using that
18711                 : breaks the selectminbits test
18712                 for xxx in 'fd_set *' 'int *'; do
18713                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18714                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18715                                         case "$val" in
18716                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18717                                                 if ./protochk "$try" $hdrs; then
18718                                                         echo "Your system accepts $xxx."
18719                                                         val="$xxx"
18720                                                 fi
18721                                                 ;;
18722                                         esac
18723                                 done
18724                         done
18725                 done
18726                 case "$val" in
18727                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18728                         case "$d_fd_set" in
18729                                 $define) dflt="fd_set *" ;;
18730                                 *)              dflt="int *" ;;
18731                         esac
18732                         . ./myread
18733                         val=$ans
18734                         ;;
18735                 esac
18736                 selecttype="$val"
18737                 ;;
18738         *)      : no select, so pick a harmless default
18739                 selecttype='int *'
18740                 ;;
18741         esac
18742         ;;
18743 esac
18744
18745 : check for the select 'width'
18746 case "$selectminbits" in
18747 '') safebits=`expr $ptrsize \* 8`
18748     case "$d_select" in
18749         $define)
18750                 $cat <<EOM
18751
18752 Checking to see on how many bits at a time your select() operates...
18753 EOM
18754                 $cat >try.c <<EOCP
18755 #include <sys/types.h>
18756 #$i_time I_TIME
18757 #$i_systime I_SYS_TIME
18758 #$i_systimek I_SYS_TIME_KERNEL
18759 #ifdef I_TIME
18760 #   include <time.h>
18761 #endif
18762 #ifdef I_SYS_TIME
18763 #   ifdef I_SYS_TIME_KERNEL
18764 #       define KERNEL
18765 #   endif
18766 #   include <sys/time.h>
18767 #   ifdef I_SYS_TIME_KERNEL
18768 #       undef KERNEL
18769 #   endif
18770 #endif
18771 #$i_sysselct I_SYS_SELECT
18772 #ifdef I_SYS_SELECT
18773 #include <sys/select.h>
18774 #endif
18775 #$d_socket HAS_SOCKET
18776 #ifdef HAS_SOCKET
18777 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18778 #endif
18779 #include <stdio.h>
18780 #$i_stdlib I_STDLIB
18781 #ifdef I_STDLIB
18782 #include <stdlib.h>
18783 #endif
18784 $selecttype b;
18785 #define S sizeof(*(b))
18786 #define MINBITS 64
18787 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18788 #define NBITS  (NBYTES * 8)
18789 int main() {
18790     char *s = malloc(NBYTES);
18791     struct timeval t;
18792     int i;
18793     FILE* fp;
18794     int fd;
18795
18796     if (!s)
18797         exit(1);
18798     fclose(stdin);
18799     fp = fopen("try.c", "r");
18800     if (fp == 0)
18801       exit(2);
18802     fd = fileno(fp);
18803     if (fd < 0)
18804       exit(3);
18805     b = ($selecttype)s;
18806     for (i = 0; i < NBITS; i++)
18807         FD_SET(i, b);
18808     t.tv_sec  = 0;
18809     t.tv_usec = 0;
18810     select(fd + 1, b, 0, 0, &t);
18811     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18812     free(s);
18813     printf("%d\n", i + 1);
18814     return 0;
18815 }
18816 EOCP
18817                 set try
18818                 if eval $compile_ok; then
18819                         selectminbits=`$run ./try`
18820                         case "$selectminbits" in
18821                         '')     cat >&4 <<EOM
18822 Cannot figure out on how many bits at a time your select() operates.
18823 I'll play safe and guess it is $safebits bits.
18824 EOM
18825                                 selectminbits=$safebits
18826                                 bits="$safebits bits"
18827                                 ;;
18828                         1)      bits="1 bit" ;;
18829                         *)      bits="$selectminbits bits" ;;
18830                         esac
18831                         echo "Your select() operates on $bits at a time." >&4
18832                 else
18833                         rp='What is the minimum number of bits your select() operates on?'
18834                         case "$byteorder" in
18835                         12345678)       dflt=64 ;;
18836                         1234)           dflt=32 ;;
18837                         *)              dflt=1  ;;
18838                         esac
18839                         . ./myread
18840                         val=$ans
18841                         selectminbits="$val"
18842                 fi
18843                 $rm -f try.* try
18844                 ;;
18845         *)      : no select, so pick a harmless default
18846                 selectminbits=$safebits
18847                 ;;
18848         esac
18849         ;;
18850 esac
18851
18852 : Trace out the files included by signal.h, then look for SIGxxx names.
18853 : Remove SIGARRAYSIZE used by HPUX.
18854 : Remove SIGSTKSIZE used by Linux.
18855 : Remove SIGSTKSZ used by Posix.
18856 : Remove SIGTYP void lines used by OS2.
18857 : Some cpps, like os390, dont give the file name anywhere
18858 if [ "X$fieldn" = X ]; then
18859         : Just make some guesses.  We check them later.
18860         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18861 else
18862         xxx=`echo '#include <signal.h>' |
18863         $cppstdin $cppminus $cppflags 2>/dev/null |
18864         $grep '^[       ]*#.*include' | 
18865         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18866 fi
18867 : Check this list of files to be sure we have parsed the cpp output ok.
18868 : This will also avoid potentially non-existent files, such 
18869 : as ../foo/bar.h
18870 xxxfiles=''
18871 for xx in $xxx /dev/null ; do
18872         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18873 done
18874 : If we have found no files, at least try signal.h
18875 case "$xxxfiles" in
18876 '')     xxxfiles=`./findhdr signal.h` ;;
18877 esac
18878 xxx=`awk '
18879 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18880         print substr($2, 4, 20)
18881 }
18882 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18883         print substr($3, 4, 20)
18884 }' $xxxfiles`
18885 : Append some common names just in case the awk scan failed.
18886 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18887 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18888 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18889 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18890 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18891
18892 : generate a few handy files for later
18893 $cat > signal.c <<EOCP
18894 #include <sys/types.h>
18895 #include <signal.h>
18896 #$i_stdlib I_STDLIB
18897 #ifdef I_STDLIB
18898 #include <stdlib.h>
18899 #endif
18900 #include <stdio.h>
18901 int main() {
18902
18903 /* Strange style to avoid deeply-nested #if/#else/#endif */
18904 #ifndef NSIG
18905 #  ifdef _NSIG
18906 #    define NSIG (_NSIG)
18907 #  endif
18908 #endif
18909
18910 #ifndef NSIG
18911 #  ifdef SIGMAX
18912 #    define NSIG (SIGMAX+1)
18913 #  endif
18914 #endif
18915
18916 #ifndef NSIG
18917 #  ifdef SIG_MAX
18918 #    define NSIG (SIG_MAX+1)
18919 #  endif
18920 #endif
18921
18922 #ifndef NSIG
18923 #  ifdef MAXSIG
18924 #    define NSIG (MAXSIG+1)
18925 #  endif
18926 #endif
18927
18928 #ifndef NSIG
18929 #  ifdef MAX_SIG
18930 #    define NSIG (MAX_SIG+1)
18931 #  endif
18932 #endif
18933
18934 #ifndef NSIG
18935 #  ifdef SIGARRAYSIZE
18936 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18937 #  endif
18938 #endif
18939
18940 #ifndef NSIG
18941 #  ifdef _sys_nsig
18942 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18943 #  endif
18944 #endif
18945
18946 /* Default to some arbitrary number that's big enough to get most
18947    of the common signals.
18948 */
18949 #ifndef NSIG
18950 #    define NSIG 50
18951 #endif
18952
18953 printf("NSIG %d\n", NSIG);
18954
18955 #ifndef JUST_NSIG
18956
18957 EOCP
18958
18959 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18960 {
18961         printf "#ifdef SIG"; printf $1; printf "\n"
18962         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18963         printf $1; printf ");\n"
18964         printf "#endif\n"
18965 }
18966 END {
18967         printf "#endif /* JUST_NSIG */\n";
18968         printf "exit(0);\n}\n";
18969 }
18970 ' >>signal.c
18971 $cat >signal.awk <<'EOP'
18972 BEGIN { ndups = 0 }
18973 $1 ~ /^NSIG$/ { nsig = $2 }
18974 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18975     if ($2 > maxsig) { maxsig = $2 }
18976     if (sig_name[$2]) {
18977         dup_name[ndups] = $1
18978         dup_num[ndups] = $2
18979         ndups++ 
18980     }
18981     else {
18982         sig_name[$2] = $1
18983         sig_num[$2] = $2
18984     }
18985 }
18986 END { 
18987     if (nsig == 0) {
18988         nsig = maxsig + 1
18989     }
18990     printf("NSIG %d\n", nsig);
18991     for (n = 1; n < nsig; n++) {
18992         if (sig_name[n]) {
18993             printf("%s %d\n", sig_name[n], sig_num[n])
18994         }
18995         else {
18996             printf("NUM%d %d\n", n, n) 
18997         }
18998     }
18999     for (n = 0; n < ndups; n++) {
19000         printf("%s %d\n", dup_name[n], dup_num[n])
19001     }
19002 }
19003 EOP
19004 $cat >signal_cmd <<EOS
19005 $startsh
19006 if $test -s signal.lst; then
19007     echo "Using your existing signal.lst file"
19008         exit 0
19009 fi
19010 xxx="$xxx"
19011 EOS
19012 $cat >>signal_cmd <<'EOS'
19013
19014 set signal
19015 if eval $compile_ok; then
19016         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19017 else
19018         echo "(I can't seem be able to compile the whole test program)" >&4
19019         echo "(I'll try it in little pieces.)" >&4
19020         set signal -DJUST_NSIG
19021         if eval $compile_ok; then
19022                 $run ./signal$_exe > signal.nsg
19023                 $cat signal.nsg
19024         else
19025                 echo "I can't seem to figure out how many signals you have." >&4
19026                 echo "Guessing 50." >&4
19027                 echo 'NSIG 50' > signal.nsg
19028         fi
19029         : Now look at all the signal names, one at a time.
19030         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19031                 $cat > signal.c <<EOCP
19032 #include <sys/types.h>
19033 #include <signal.h>
19034 #include <stdio.h>
19035 int main() {
19036 printf("$xx %d\n", SIG${xx});
19037 return 0;
19038 }
19039 EOCP
19040                 set signal
19041                 if eval $compile; then
19042                         echo "SIG${xx} found."
19043                         $run ./signal$_exe  >> signal.ls1
19044                 else
19045                         echo "SIG${xx} NOT found."
19046                 fi
19047         done
19048         if $test -s signal.ls1; then
19049                 $cat signal.nsg signal.ls1 |
19050                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19051         fi
19052
19053 fi
19054 if $test -s signal.lst; then
19055         :
19056 else
19057         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19058         echo 'kill -l' >signal
19059         set X `csh -f <signal`
19060         $rm -f signal
19061         shift
19062         case $# in
19063         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19064         esac
19065         echo $@ | $tr ' ' $trnl | \
19066             $awk '{ printf "%s %d\n", $1, ++s; }
19067                   END { printf "NSIG %d\n", ++s }' >signal.lst
19068 fi
19069 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19070 EOS
19071 chmod a+x signal_cmd
19072 $eunicefix signal_cmd
19073
19074 : generate list of signal names
19075 echo " "
19076 case "$sig_name_init" in
19077 '') doinit=yes ;;
19078 *)  case "$sig_num_init" in
19079     ''|*,*) doinit=yes ;;
19080     esac ;;
19081 esac
19082 case "$doinit" in
19083 yes)
19084         echo "Generating a list of signal names and numbers..." >&4
19085         . ./signal_cmd
19086         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19087         sig_name=`$awk 'BEGIN { printf "ZERO " }
19088                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19089         sig_num=`$awk  'BEGIN { printf "0 " }
19090                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19091         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19092                              !/^NSIG/   { printf "\"%s\", ", $1 }
19093                              END        { printf "0\n" }' signal.lst`
19094         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19095                              !/^NSIG/   { printf "%d, ", $2}
19096                              END        { printf "0\n"}' signal.lst`
19097         ;;
19098 esac
19099 echo "The following $sig_count signals are available:"
19100 echo " "
19101 echo $sig_name | $awk \
19102 'BEGIN { linelen = 0 }
19103 {
19104         for (i = 1; i <= NF; i++) {
19105                 name = "SIG" $i " "
19106                 linelen = linelen + length(name)
19107                 if (linelen > 70) {
19108                         printf "\n"
19109                         linelen = length(name)
19110                 }
19111                 printf "%s", name
19112         }
19113         printf "\n"
19114 }'
19115 sig_size=`echo $sig_name | awk '{print NF}'`
19116 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19117
19118 echo " "
19119 case "$sizetype" in
19120 *_t) zzz="$sizetype"    ;;
19121 *)   zzz="filesize"     ;;
19122 esac
19123 echo "Checking the size of $zzz..." >&4 
19124 cat > try.c <<EOCP
19125 #include <sys/types.h>
19126 #include <stdio.h>
19127 #$i_stdlib I_STDLIB
19128 #ifdef I_STDLIB
19129 #include <stdlib.h>
19130 #endif
19131 int main() {
19132     printf("%d\n", (int)sizeof($sizetype));
19133     exit(0);
19134 }
19135 EOCP
19136 set try
19137 if eval $compile_ok; then
19138         yyy=`$run ./try`
19139         case "$yyy" in
19140         '')     sizesize=4
19141                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19142                 ;;
19143         *)      sizesize=$yyy
19144                 echo "Your $zzz size is $sizesize bytes."
19145                 ;;
19146         esac
19147 else
19148         sizesize=4
19149         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19150 fi
19151
19152
19153 : check for socklen_t
19154 echo " "
19155 echo "Checking to see if you have socklen_t..." >&4
19156 $cat >try.c <<EOCP
19157 #include <sys/types.h>
19158 #$d_socket HAS_SOCKET
19159 #ifdef HAS_SOCKET
19160 #include <sys/socket.h>
19161 #endif
19162 int main() { socklen_t x = 16; }
19163 EOCP
19164 set try
19165 if eval $compile; then
19166         val="$define"
19167         echo "You have socklen_t."
19168 else
19169         val="$undef"
19170         echo "You do not have socklen_t."
19171         case "$sizetype" in
19172         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19173         esac
19174 fi
19175 $rm -f try try.*
19176 set d_socklen_t
19177 eval $setvar
19178
19179 : see if this is a socks.h system
19180 set socks.h i_socks
19181 eval $inhdr
19182
19183 : check for type of the size argument to socket calls
19184 case "$d_socket" in
19185 "$define")
19186         $cat <<EOM
19187
19188 Checking to see what type is the last argument of accept().
19189 EOM
19190         yyy=''
19191         case "$d_socklen_t" in
19192         "$define") yyy="$yyy socklen_t"
19193         esac
19194         yyy="$yyy $sizetype int long unsigned"
19195         for xxx in $yyy; do
19196                 case "$socksizetype" in
19197                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19198                         case "$usesocks" in
19199                         "$define")
19200                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19201                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19202                                         socksizetype="$xxx"
19203                                 fi
19204                                 ;;
19205                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19206                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19207                                         socksizetype="$xxx"
19208                                 fi
19209                                 ;;
19210                         esac
19211                         ;;
19212                 esac
19213         done
19214 : In case none of those worked, prompt the user.
19215         case "$socksizetype" in
19216         '')     rp='What is the type for socket address structure sizes?'
19217                 dflt='int'
19218                 . ./myread
19219                 socksizetype=$ans
19220                 ;;
19221         esac
19222         ;;
19223 *)      : no sockets, so pick relatively harmless default
19224         socksizetype='int'
19225         ;;
19226 esac
19227
19228 : see what type is used for signed size_t
19229 set ssize_t ssizetype int stdio.h sys/types.h
19230 eval $typedef
19231 dflt="$ssizetype"
19232 $cat > try.c <<EOM
19233 #include <stdio.h>
19234 #$i_stdlib I_STDLIB
19235 #ifdef I_STDLIB
19236 #include <stdlib.h>
19237 #endif
19238 #include <sys/types.h>
19239 #define Size_t $sizetype
19240 #define SSize_t $dflt
19241 int main()
19242 {
19243         if (sizeof(Size_t) == sizeof(SSize_t))
19244                 printf("$dflt\n");
19245         else if (sizeof(Size_t) == sizeof(int))
19246                 printf("int\n");
19247         else 
19248                 printf("long\n");
19249         exit(0);
19250 }
19251 EOM
19252 echo " "
19253 set try
19254 if eval $compile_ok && $run ./try > /dev/null; then
19255         ssizetype=`$run ./try`
19256         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19257 else
19258         $cat >&4 <<EOM
19259 Help! I can't compile and run the ssize_t test program: please enlighten me!
19260 (This is probably a misconfiguration in your system or libraries, and
19261 you really ought to fix it.  Still, I'll try anyway.)
19262
19263 I need a type that is the same size as $sizetype, but is guaranteed to
19264 be signed.  Common values are ssize_t, int and long.
19265
19266 EOM
19267         rp="What signed type is the same size as $sizetype?"
19268         . ./myread
19269         ssizetype="$ans"
19270 fi
19271 $rm -f try try.*
19272
19273 : see what type of char stdio uses.
19274 echo " "
19275 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19276 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19277         echo "Your stdio uses unsigned chars." >&4
19278         stdchar="unsigned char"
19279 else
19280         echo "Your stdio uses signed chars." >&4
19281         stdchar="char"
19282 fi
19283 $rm -f stdioh
19284
19285
19286
19287 : see what type uids are declared as in the kernel
19288 echo " "
19289 echo "Looking for the type for user ids returned by getuid()."
19290 set uid_t uidtype xxx stdio.h sys/types.h
19291 eval $typedef
19292 case "$uidtype" in
19293 xxx)
19294         xxx=`./findhdr sys/user.h`
19295         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19296         case $1 in
19297         unsigned) dflt="$1 $2" ;;
19298         *) dflt="$1" ;;
19299         esac
19300         ;;
19301 *) dflt="$uidtype";;
19302 esac
19303 case "$uidtype" in
19304 uid_t)  echo "uid_t found." ;;
19305 *)      rp="What is the type for user ids returned by getuid()?"
19306         . ./myread
19307         uidtype="$ans"
19308         ;;
19309 esac
19310
19311 echo " "
19312 case "$uidtype" in
19313 *_t) zzz="$uidtype"     ;;
19314 *)   zzz="uid"          ;;
19315 esac
19316 echo "Checking the size of $zzz..." >&4 
19317 cat > try.c <<EOCP
19318 #include <sys/types.h>
19319 #include <stdio.h>
19320 #$i_stdlib I_STDLIB
19321 #ifdef I_STDLIB
19322 #include <stdlib.h>
19323 #endif
19324 int main() {
19325     printf("%d\n", (int)sizeof($uidtype));
19326     exit(0);
19327 }
19328 EOCP
19329 set try
19330 if eval $compile_ok; then
19331         yyy=`$run ./try`
19332         case "$yyy" in
19333         '')     uidsize=4
19334                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19335                 ;;
19336         *)      uidsize=$yyy
19337                 echo "Your $zzz is $uidsize bytes long."
19338                 ;;
19339         esac
19340 else
19341         uidsize=4
19342         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19343 fi
19344
19345 echo " "
19346 case "$uidtype" in
19347 *_t) zzz="$uidtype"     ;;
19348 *)   zzz="uid"          ;;
19349 esac
19350 echo "Checking the sign of $zzz..." >&4
19351 cat > try.c <<EOCP
19352 #include <sys/types.h>
19353 #include <stdio.h>
19354 int main() {
19355         $uidtype foo = -1;
19356         if (foo < 0)
19357                 printf("-1\n");
19358         else
19359                 printf("1\n");
19360 }
19361 EOCP
19362 set try
19363 if eval $compile; then
19364         yyy=`$run ./try`
19365         case "$yyy" in
19366         '')     uidsign=1
19367                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19368                 ;;
19369         *)      uidsign=$yyy
19370                 case "$uidsign" in
19371                  1) echo "Your $zzz is unsigned." ;;
19372                 -1) echo "Your $zzz is signed."   ;;
19373                 esac
19374                 ;;
19375         esac
19376 else
19377         uidsign=1
19378         echo "(I can't compile the test program--guessing unsigned.)" >&4
19379 fi
19380
19381
19382
19383 echo " "
19384 $echo "Checking the format string to be used for uids..." >&4
19385
19386 case "$uidsign" in
19387 -1)     if $test X"$uidsize" = X"$ivsize"; then
19388                 uidformat="$ivdformat"
19389         else
19390                 if $test X"$uidsize" = X"$longsize"; then
19391                         uidformat='"ld"'
19392                 else
19393                         if $test X"$uidsize" = X"$intsize"; then
19394                                 uidformat='"d"'
19395                         else
19396                                 if $test X"$uidsize" = X"$shortsize"; then
19397                                         uidformat='"hd"'
19398                                 fi
19399                         fi
19400                 fi
19401         fi
19402         ;;
19403 *)      if $test X"$uidsize" = X"$uvsize"; then
19404                 uidformat="$uvuformat"
19405         else
19406                 if $test X"$uidsize" = X"$longsize"; then
19407                         uidformat='"lu"'
19408                 else
19409                         if $test X"$uidsize" = X"$intsize"; then
19410                                 uidformat='"u"'
19411                         else
19412                                 if $test X"$uidsize" = X"$shortsize"; then
19413                                         uidformat='"hu"'
19414                                 fi
19415                         fi
19416                 fi
19417         fi
19418         ;;
19419 esac
19420
19421 : determine compiler compiler
19422 case "$yacc" in
19423 '')
19424         dflt=yacc;;
19425 *)
19426         dflt="$yacc";;
19427 esac
19428 echo " "
19429 comp='yacc'
19430 if $test -f "$byacc$_exe"; then
19431         dflt="$byacc"
19432         comp="byacc or $comp"
19433 fi
19434 if $test -f "$bison$_exe"; then
19435         comp="$comp or bison -y"
19436 fi
19437 rp="Which compiler compiler ($comp) shall I use?"
19438 . ./myread
19439 yacc="$ans"
19440 case "$yacc" in
19441 *bis*)
19442         case "$yacc" in
19443         *-y*) ;;
19444         *)
19445                 yacc="$yacc -y"
19446                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19447                 ;;
19448         esac
19449         ;;
19450 esac
19451
19452 : see if this is a fp.h system
19453 set fp.h i_fp
19454 eval $inhdr
19455
19456 : see if this is a fp_class.h system
19457 set fp_class.h i_fp_class
19458 eval $inhdr
19459
19460 : see if this is a ieeefp.h system
19461 case "$i_ieeefp" in
19462 '' ) set ieeefp.h i_ieeefp
19463      eval $inhdr
19464      ;;
19465 esac
19466
19467 : see if this is a libutil.h system
19468 set libutil.h i_libutil
19469 eval $inhdr
19470
19471 : see if mach cthreads are available
19472 if test "X$usethreads" = "X$define"; then
19473         set mach/cthreads.h i_machcthr
19474         eval $inhdr
19475 else
19476         i_machcthr="$undef"
19477 fi
19478
19479
19480
19481 : see if this is a math.h system
19482 set math.h i_math
19483 eval $inhdr
19484
19485 : see if this is a mntent.h system
19486 set mntent.h i_mntent
19487 eval $inhdr
19488
19489 : see if ndbm.h is available
19490 set ndbm.h t_ndbm
19491 eval $inhdr
19492
19493 case "$t_ndbm" in
19494 $undef)
19495     # Some Linux distributions such as RedHat 7.1 put the
19496     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19497     if $test -f /usr/include/gdbm/ndbm.h; then
19498         echo '<gdbm/ndbm.h> found.'
19499         ccflags="$ccflags -I/usr/include/gdbm"
19500         cppflags="$cppflags -I/usr/include/gdbm"
19501         t_ndbm=$define
19502     fi
19503     ;;
19504 esac
19505
19506 case "$t_ndbm" in
19507 $define)
19508         : see if dbm_open exists
19509         set dbm_open d_dbm_open
19510         eval $inlibc
19511         case "$d_dbm_open" in
19512         $undef)
19513                 t_ndbm="$undef"
19514                 echo "We won't be including <ndbm.h>"
19515                 ;;
19516         esac
19517         ;;
19518 esac
19519 val="$t_ndbm"
19520 set i_ndbm
19521 eval $setvar
19522
19523 : see if net/errno.h is available
19524 val=''
19525 set net/errno.h val
19526 eval $inhdr
19527
19528 : Unfortunately, it causes problems on some systems.  Arrgh.
19529 case "$val" in
19530 $define)
19531         cat > try.c <<'EOM'
19532 #include <stdio.h>
19533 #include <errno.h>
19534 #include <net/errno.h>
19535 int func()
19536 {
19537         return ENOTSOCK;
19538 }
19539 EOM
19540         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19541                 echo "We'll be including <net/errno.h>." >&4
19542         else
19543                 echo "We won't be including <net/errno.h>." >&4
19544                 val="$undef"
19545         fi
19546         $rm -f try.* try
19547         ;;
19548 esac
19549 set i_neterrno
19550 eval $setvar
19551
19552 : see if netinet/tcp.h is available
19553 set netinet/tcp.h i_netinettcp
19554 eval $inhdr
19555
19556 : see if this is a poll.h system
19557 set poll.h i_poll
19558 eval $inhdr
19559
19560 : see if this is a prot.h system
19561 set prot.h i_prot
19562 eval $inhdr
19563
19564 echo " "
19565 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19566 $cat <<'EOSH' > Cppsym.know
19567 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19568 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19569 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19570 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19571 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19572 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19573 bull c cadmus clipper CMU COFF COMPILER_VERSION
19574 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19575 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19576 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19577 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19578 GLIBC GLIBC_MINOR
19579 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19580 H3050R H3050RX hbullx20 hcx host_mips
19581 hp200 hp300 hp700 HP700 hp800 hp9000
19582 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19583 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19584 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19585 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19586 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19587 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19588 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19589 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19590 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19591 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19592 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19593 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19594 MATH_HAS_NO_SIDE_EFFECTS
19595 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19596 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19597 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19598 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19599 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19600 NetBSD news1500 news1700 news1800 news1900 news3700
19601 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19602 ns32016 ns32332 ns32k nsc32000
19603 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19604 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19605 pc532 pdp11 PGC PIC plexus PORTAR posix
19606 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19607 POSIX_C_SOURCE POSIX_SOURCE POWER
19608 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19609 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19610 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19611 sony sony_news sonyrisc sparc sparclite spectrum
19612 stardent stdc STDC_EXT stratos sun sun3 sun386
19613 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19614 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19615 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19616 sysV68 sysV88 Tek4132 Tek4300 titan
19617 TM3200 TM5400 TM5600
19618 tower tower32 tower32_200 tower32_600 tower32_700
19619 tower32_800 tower32_850 tss
19620 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19621 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19622 unix UNIX95 UNIX99 unixpc unos
19623 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19624 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19625 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19626 USGr4 USGr4_2
19627 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19628 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19629 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19630 z8000
19631 EOSH
19632 # Maybe put other stuff here too.
19633 cat <<EOSH >>Cppsym.know
19634 $osname
19635 EOSH
19636 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19637 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19638 $cat Cppsym.know > Cppsym.c
19639 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19640 $rm -f Cppsym.a Cppsym.b Cppsym.c
19641 cat <<EOSH > Cppsym
19642 $startsh
19643 if $test \$# -gt 0; then
19644     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19645     if $test -s Cppsym.got; then
19646         $rm -f Cppsym.got
19647         exit 0
19648     fi
19649     $rm -f Cppsym.got
19650     exit 1
19651 else
19652     $tr " " "$trnl" | ./Cppsym.try
19653     exit 0
19654 fi
19655 EOSH
19656 chmod +x Cppsym
19657 $eunicefix Cppsym
19658 cat <<EOSH > Cppsym.try
19659 $startsh
19660 cat <<'EOCP' > try.c
19661 #include <stdio.h>
19662 int main() {
19663 EOCP
19664 $awk \\
19665 EOSH
19666 cat <<'EOSH' >> Cppsym.try
19667 'length($1) > 0 {
19668     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
19669     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
19670     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
19671     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
19672 }'       >> try.c
19673 echo 'return 0;}' >> try.c
19674 EOSH
19675 cat <<EOSH >> Cppsym.try
19676 ccflags="$ccflags"
19677 case "$osname-$gccversion" in
19678 irix-) ccflags="\$ccflags -woff 1178" ;;
19679 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19680 esac
19681 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19682 EOSH
19683 chmod +x Cppsym.try
19684 $eunicefix Cppsym.try
19685 ./Cppsym < Cppsym.know > Cppsym.true
19686 : now check the C compiler for additional symbols
19687 postprocess_cc_v=''
19688 case "$osname" in
19689 aix) postprocess_cc_v="|$tr , ' '" ;;
19690 esac
19691 $cat >ccsym <<EOS
19692 $startsh
19693 $cat >tmp.c <<EOF
19694 extern int foo;
19695 EOF
19696 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19697 do
19698         case "\$i" in
19699         -D*) echo "\$i" | $sed 's/^-D//';;
19700         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19701         esac
19702 done
19703 $rm -f try.c
19704 EOS
19705 postprocess_cc_v=''
19706 chmod +x ccsym
19707 $eunicefix ccsym
19708 ./ccsym > ccsym1.raw
19709 if $test -s ccsym1.raw; then
19710        $sort ccsym1.raw | $uniq >ccsym.raw
19711 else
19712        mv ccsym1.raw ccsym.raw
19713 fi
19714
19715 $awk '/\=/ { print $0; next }
19716         { print $0"=1" }' ccsym.raw >ccsym.list
19717 $awk '/\=/ { print $0; next }
19718         { print $0"=1" }' Cppsym.true >ccsym.true
19719 $comm -13 ccsym.true ccsym.list >ccsym.own
19720 $comm -12 ccsym.true ccsym.list >ccsym.com
19721 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19722 also=''
19723 if $test -z ccsym.raw; then
19724         echo "Your C compiler doesn't seem to define any symbols!" >&4
19725         echo " "
19726         echo "However, your C preprocessor defines the following symbols:"
19727         $cat Cppsym.true
19728         ccsymbols=''
19729         cppsymbols=`$cat Cppsym.true`
19730         cppsymbols=`echo $cppsymbols`
19731         cppccsymbols="$cppsymbols"
19732 else
19733         if $test -s ccsym.com; then
19734                 echo "Your C compiler and pre-processor define these symbols:"
19735                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19736                 also='also '
19737                 symbols='ones'
19738                 cppccsymbols=`$cat ccsym.com`
19739                 cppccsymbols=`echo $cppccsymbols`
19740                 $test "$silent" || sleep 1
19741         fi
19742         if $test -s ccsym.cpp; then
19743                 $test "$also" && echo " "
19744                 echo "Your C pre-processor ${also}defines the following symbols:"
19745                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19746                 also='further '
19747                 cppsymbols=`$cat ccsym.cpp`
19748                 cppsymbols=`echo $cppsymbols`
19749                 $test "$silent" || sleep 1
19750         fi
19751         if $test -s ccsym.own; then
19752                 $test "$also" && echo " "
19753                 echo "Your C compiler ${also}defines the following cpp symbols:"
19754                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19755                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19756                 ccsymbols=`$cat ccsym.own`
19757                 ccsymbols=`echo $ccsymbols`
19758                 $test "$silent" || sleep 1
19759         fi
19760 fi
19761
19762 : see if this is a termio system
19763 val="$undef"
19764 val2="$undef"
19765 val3="$undef"
19766 if $test `./findhdr termios.h`; then
19767         set tcsetattr i_termios
19768         eval $inlibc
19769         val3="$i_termios"
19770 fi
19771 echo " "
19772 case "$val3" in
19773 "$define") echo "You have POSIX termios.h... good!" >&4;;
19774 *) if ./Cppsym pyr; then
19775                 case "`/bin/universe`" in
19776                 ucb) if $test `./findhdr sgtty.h`; then
19777                                 val2="$define"
19778                                 echo "<sgtty.h> found." >&4
19779                         else
19780                                 echo "System is pyramid with BSD universe."
19781                                 echo "<sgtty.h> not found--you could have problems." >&4
19782                         fi;;
19783                 *) if $test `./findhdr termio.h`; then
19784                                 val="$define"
19785                                 echo "<termio.h> found." >&4
19786                         else
19787                                 echo "System is pyramid with USG universe."
19788                                 echo "<termio.h> not found--you could have problems." >&4
19789                         fi;;
19790                 esac
19791         elif ./usg; then
19792                 if $test `./findhdr termio.h`; then
19793                         echo "<termio.h> found." >&4
19794                         val="$define"
19795                 elif $test `./findhdr sgtty.h`; then
19796                         echo "<sgtty.h> found." >&4
19797                         val2="$define"
19798                 else
19799 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19800                 fi
19801         else
19802                 if $test `./findhdr sgtty.h`; then
19803                         echo "<sgtty.h> found." >&4
19804                         val2="$define"
19805                 elif $test `./findhdr termio.h`; then
19806                         echo "<termio.h> found." >&4
19807                         val="$define"
19808                 else
19809 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19810                 fi
19811         fi;;
19812 esac
19813 set i_termio; eval $setvar
19814 val=$val2; set i_sgtty; eval $setvar
19815 val=$val3; set i_termios; eval $setvar
19816
19817 : see if stddef is available
19818 set stddef.h i_stddef
19819 eval $inhdr
19820
19821 : see if this is a sunmath.h system
19822 set sunmath.h i_sunmath
19823 eval $inhdr
19824
19825 : see if sys/access.h is available
19826 set sys/access.h i_sysaccess
19827 eval $inhdr
19828
19829 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19830 set sys/filio.h i_sysfilio
19831 eval $inhdr
19832 echo " "
19833 if $test `./findhdr sys/ioctl.h`; then
19834         val="$define"
19835         echo '<sys/ioctl.h> found.' >&4
19836 else
19837         val="$undef"
19838         if $test $i_sysfilio = "$define"; then
19839             echo '<sys/ioctl.h> NOT found.' >&4
19840         else
19841                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19842                 $test $i_termio = "$define" && xxx="termio.h"
19843                 $test $i_termios = "$define" && xxx="termios.h"
19844 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19845         fi
19846 fi
19847 set i_sysioctl
19848 eval $setvar
19849
19850 : see if socket ioctl defs are in sys/sockio.h
19851 echo " "
19852 xxx=`./findhdr sys/sockio.h`
19853 if $test "$xxx"; then
19854         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19855                 val="$define"
19856                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19857         else
19858                 val="$undef"
19859                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19860         fi
19861 else
19862         val="$undef"
19863         $cat <<EOM
19864 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19865 EOM
19866 fi
19867 set i_syssockio
19868 eval $setvar
19869
19870
19871 : see if this is a syslog.h system
19872 set syslog.h i_syslog
19873 eval $inhdr
19874
19875
19876 : see if this is a sys/mode.h system
19877 set sys/mode.h i_sysmode
19878 eval $inhdr
19879
19880 : see if sys/resource.h has to be included
19881 set sys/resource.h i_sysresrc
19882 eval $inhdr
19883
19884 : see if sys/security.h is available
19885 set sys/security.h i_syssecrt
19886 eval $inhdr
19887
19888 : see if this is a sys/statvfs.h system
19889 set sys/statvfs.h i_sysstatvfs
19890 eval $inhdr
19891
19892 : see if this is a sys/un.h system
19893 set sys/un.h i_sysun
19894 eval $inhdr
19895
19896
19897 : see if this is a sys/utsname.h system
19898 set sys/utsname.h i_sysutsname
19899 eval $inhdr
19900
19901 : see if this is a syswait system
19902 set sys/wait.h i_syswait
19903 eval $inhdr
19904
19905 : see if this is a ustat.h system
19906 set ustat.h i_ustat
19907 eval $inhdr
19908
19909 : see if this is an utime system
19910 set utime.h i_utime
19911 eval $inhdr
19912
19913 : see if this is a values.h system
19914 set values.h i_values
19915 eval $inhdr
19916
19917 : see if this is a vfork system
19918 case "$d_vfork" in
19919 "$define")
19920         set vfork.h i_vfork
19921         eval $inhdr
19922         ;;
19923 *)
19924         i_vfork="$undef"
19925         ;;
19926 esac
19927
19928 : see if gdbm.h is available
19929 set gdbm.h t_gdbm
19930 eval $inhdr
19931 case "$t_gdbm" in
19932 $define)
19933         : see if gdbm_open exists
19934         set gdbm_open d_gdbm_open
19935         eval $inlibc
19936         case "$d_gdbm_open" in
19937         $undef)
19938                 t_gdbm="$undef"
19939                 echo "We won't be including <gdbm.h>"
19940                 ;;
19941         esac
19942         ;;
19943 esac
19944 val="$t_gdbm"
19945 set i_gdbm
19946 eval $setvar
19947
19948 echo " "
19949 echo "Looking for extensions..." >&4
19950 : If we are using the old config.sh, known_extensions may contain
19951 : old or inaccurate or duplicate values.
19952 known_extensions=''
19953 nonxs_extensions=''
19954 : We do not use find because it might not be available.
19955 : We do not just use MANIFEST because the user may have dropped
19956 : some additional extensions into the source tree and expect them
19957 : to be built.
19958
19959 : Function to recursively find available extensions, ignoring DynaLoader
19960 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19961 find_extensions='
19962     for xxx in *; do
19963        case "$xxx" in
19964            DynaLoader|dynaload) ;;
19965            *)
19966            if $test -f $xxx/$xxx.xs; then
19967                known_extensions="$known_extensions $1$xxx";
19968            elif $test -f $xxx/Makefile.PL; then
19969                nonxs_extensions="$nonxs_extensions $1$xxx";
19970            else
19971                if $test -d $xxx -a $# -lt 10; then
19972                    set $1$xxx/ $*;
19973                    cd "$xxx";
19974                    eval $find_extensions;
19975                    cd ..;
19976                    shift;
19977                fi;
19978            fi
19979            ;;
19980        esac;
19981     done'
19982 tdir=`pwd`
19983 cd "$rsrc/ext"
19984 set X
19985 shift
19986 eval $find_extensions
19987 # Special case:  Add in threads/shared since it is not picked up by the
19988 # recursive find above (and adding in general recursive finding breaks
19989 # SDBM_File/sdbm).  A.D.  10/25/2001.
19990 known_extensions="$known_extensions threads/shared"
19991 set X $nonxs_extensions
19992 shift
19993 nonxs_extensions="$*"
19994 set X $known_extensions
19995 shift
19996 known_extensions="$*"
19997 cd "$tdir"
19998
19999 : Now see which are supported on this system.
20000 avail_ext=''
20001 for xxx in $known_extensions ; do
20002         case "$xxx" in
20003         DB_File|db_file)
20004                 case "$i_db" in
20005                 $define) avail_ext="$avail_ext $xxx" ;;
20006                 esac
20007                 ;;
20008         GDBM_File|gdbm_fil)
20009                 case "$i_gdbm" in 
20010                 $define) avail_ext="$avail_ext $xxx" ;;
20011                 esac
20012                 ;;
20013         I18N/Langinfo|i18n_lan)
20014                 case "$i_langinfo$d_nl_langinfo" in 
20015                 $define$define) avail_ext="$avail_ext $xxx" ;;
20016                 esac
20017                 ;;
20018         NDBM_File|ndbm_fil)
20019                 case "$i_ndbm" in
20020                 $define)
20021                     case "$osname-$use64bitint" in
20022                     hpux-define)
20023                         case "$libs" in
20024                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20025                         esac
20026                         ;;
20027                     *) avail_ext="$avail_ext $xxx" ;;
20028                     esac
20029                     ;;
20030                 esac
20031                 ;;
20032         ODBM_File|odbm_fil) 
20033                 case "${i_dbm}${i_rpcsvcdbm}" in
20034                 *"${define}"*)
20035                     case "$osname-$use64bitint" in
20036                     hpux-define)
20037                         case "$libs" in
20038                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20039                         esac
20040                         ;;
20041                     *) avail_ext="$avail_ext $xxx" ;;
20042                     esac
20043                     ;;
20044                 esac
20045                 ;;
20046         POSIX|posix)
20047                 case "$useposix" in
20048                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20049                 esac
20050                 ;;
20051         Opcode|opcode)
20052                 case "$useopcode" in
20053                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20054                 esac
20055                 ;;
20056         Socket|socket)
20057                 case "$d_socket" in 
20058                 true|$define|y)
20059                     case "$osname" in
20060                     beos) ;; # not unless BONE
20061                     *) avail_ext="$avail_ext $xxx" ;;
20062                     esac
20063                     ;;
20064                 esac
20065                 ;;
20066         Sys/Syslog|sys/syslog)
20067                 : XXX syslog requires socket
20068                 case "$d_socket" in 
20069                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20070                 esac
20071                 ;;
20072         Thread|thread)
20073                 case "$usethreads" in
20074                 true|$define|y)
20075                         case "$useithreads" in
20076                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20077                         esac
20078                 esac
20079                 ;;
20080         XS/APItest|xs/apitest)
20081                 # This is just for testing.  Skip it unless we have dynamic loading.
20082
20083                 case "$usedl" in
20084                 $define) avail_ext="$avail_ext $xxx" ;;
20085                 esac
20086                 ;;
20087         XS/Typemap|xs/typemap)
20088                 # This is just for testing.  Skip it unless we have dynamic loading.
20089                 case "$usedl" in
20090                 $define) avail_ext="$avail_ext $xxx" ;;
20091                 esac
20092                 ;;
20093         threads|threads/shared)
20094                 # threads and threads::shared are special cases.
20095                 # To stop people from asking "Perl 5.8.0 was supposed
20096                 # to have this new fancy threads implementation but my
20097                 # perl doesn't have it" and from people trying to
20098                 # (re)install the threads module using CPAN.pm and
20099                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20100                 # the threads.pm and threads/shared.pm will always be
20101                 # there, croaking informatively ("you need to rebuild
20102                 # all of Perl with threads, sorry") when threads haven't
20103                 # been compiled in.
20104                 # --jhi
20105                 avail_ext="$avail_ext $xxx"
20106                 ;;
20107         IPC/SysV|ipc/sysv)
20108                 : XXX Do we need a useipcsysv variable here
20109                 case "${d_msg}${d_sem}${d_shm}" in 
20110                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20111                 esac
20112                 ;;
20113         *)      avail_ext="$avail_ext $xxx"
20114                 ;;
20115         esac
20116 done
20117
20118 set X $avail_ext
20119 shift
20120 avail_ext="$*"
20121
20122 case "$onlyextensions" in
20123 '') ;;
20124 *)  keepextensions=''
20125     echo "You have requested that only certains extensions be included..." >&4
20126     for i in $onlyextensions; do
20127         case " $avail_ext " in
20128         *" $i "*)
20129             echo "Keeping extension $i."
20130             keepextensions="$keepextensions $i"
20131             ;;
20132         *) echo "Ignoring extension $i." ;;
20133         esac
20134     done
20135     avail_ext="$keepextensions"
20136     ;;
20137 esac
20138
20139 case "$noextensions" in
20140 '') ;;
20141 *)  keepextensions=''
20142     echo "You have requested that certain extensions be ignored..." >&4
20143     for i in $avail_ext; do
20144         case " $noextensions " in
20145         *" $i "*) echo "Ignoring extension $i." ;;
20146         *) echo "Keeping extension $i.";
20147            keepextensions="$keepextensions $i"
20148            ;;
20149         esac
20150     done
20151     avail_ext="$keepextensions"
20152     ;;
20153 esac
20154
20155 : Now see which nonxs extensions are supported on this system.
20156 : For now assume all are.
20157 nonxs_ext=''
20158 for xxx in $nonxs_extensions ; do
20159         case "$xxx" in
20160         *)      nonxs_ext="$nonxs_ext $xxx"
20161                 ;;
20162         esac
20163 done
20164
20165 set X $nonxs_ext
20166 shift
20167 nonxs_ext="$*"
20168
20169 case $usedl in
20170 $define)
20171         $cat <<EOM
20172 A number of extensions are supplied with $package.  You may choose to
20173 compile these extensions for dynamic loading (the default), compile
20174 them into the $package executable (static loading), or not include
20175 them at all.  Answer "none" to include no extensions.
20176 Note that DynaLoader is always built and need not be mentioned here.
20177
20178 EOM
20179         case "$dynamic_ext" in
20180         '')
20181                 : Exclude those listed in static_ext
20182                 dflt=''
20183                 for xxx in $avail_ext; do
20184                         case " $static_ext " in
20185                         *" $xxx "*) ;;
20186                         *) dflt="$dflt $xxx" ;;
20187                         esac
20188                 done
20189                 set X $dflt
20190                 shift
20191                 dflt="$*"
20192                 ;;
20193         *)      dflt="$dynamic_ext"
20194                 # Perhaps we are reusing an old out-of-date config.sh.
20195                 case "$hint" in
20196                 previous)
20197                         if test X"$dynamic_ext" != X"$avail_ext"; then
20198                                 $cat <<EOM
20199 NOTICE:  Your previous config.sh list may be incorrect. 
20200 The extensions now available to you are 
20201         ${avail_ext}
20202 but the default list from your previous config.sh is
20203         ${dynamic_ext} 
20204
20205 EOM
20206                         fi
20207                         ;;
20208                 esac
20209                 ;;
20210         esac
20211         case "$dflt" in
20212         '')     dflt=none;;
20213         esac
20214         rp="What extensions do you wish to load dynamically?"
20215         . ./myread
20216         case "$ans" in
20217         none) dynamic_ext=' ' ;;
20218         *) dynamic_ext="$ans" ;;
20219         esac
20220
20221         case "$static_ext" in
20222         '')
20223                 : Exclude those already listed in dynamic linking
20224                 dflt=''
20225                 for xxx in $avail_ext; do
20226                         case " $dynamic_ext " in
20227                         *" $xxx "*) ;;
20228                         *) dflt="$dflt $xxx" ;;
20229                         esac
20230                 done
20231                 set X $dflt
20232                 shift
20233                 dflt="$*"
20234                 ;;
20235         *)  dflt="$static_ext" 
20236                 ;;
20237         esac
20238
20239         case "$dflt" in
20240         '')     dflt=none;;
20241         esac
20242         rp="What extensions do you wish to load statically?"
20243         . ./myread
20244         case "$ans" in
20245         none) static_ext=' ' ;;
20246         *) static_ext="$ans" ;;
20247         esac
20248         ;;
20249 *)
20250         $cat <<EOM
20251 A number of extensions are supplied with $package.  Answer "none" 
20252 to include no extensions. 
20253 Note that DynaLoader is always built and need not be mentioned here.
20254
20255 EOM
20256         case "$static_ext" in
20257         '') dflt="$avail_ext" ;;
20258         *)      dflt="$static_ext"
20259                 # Perhaps we are reusing an old out-of-date config.sh.
20260                 case "$hint" in
20261                 previous)
20262                         if test X"$static_ext" != X"$avail_ext"; then
20263                                 $cat <<EOM
20264 NOTICE:  Your previous config.sh list may be incorrect. 
20265 The extensions now available to you are 
20266         ${avail_ext}
20267 but the default list from your previous config.sh is
20268         ${static_ext} 
20269
20270 EOM
20271                         fi
20272                         ;;
20273                 esac
20274                 ;;
20275         esac
20276         : Exclude those that are not xs extensions
20277         case "$dflt" in
20278         '')     dflt=none;;
20279         esac
20280         rp="What extensions do you wish to include?"
20281         . ./myread
20282         case "$ans" in
20283         none) static_ext=' ' ;;
20284         *) static_ext="$ans" ;;
20285         esac
20286         ;;
20287 esac
20288 #        
20289 # Encode is a special case.  If we are building Encode as a static
20290 # extension, we need to explicitly list its subextensions as well.
20291 # For other nested extensions, this is handled automatically by
20292 # the appropriate Makefile.PL.
20293 case " $static_ext " in
20294         *" Encode "*) # Add the subextensions of Encode
20295         cd "$rsrc/ext"
20296         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20297                 static_ext="$static_ext Encode/$xxx"
20298         done
20299         cd "$tdir"
20300         ;;
20301 esac
20302
20303 set X $dynamic_ext $static_ext $nonxs_ext
20304 shift
20305 extensions="$*"
20306
20307 # Sanity check:  We require an extension suitable for use with
20308 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20309 # should show up as failures in the test suite, but it's helpful to
20310 # catch them now.) The 'extensions' list is normally sorted
20311 # alphabetically, so we need to accept either
20312 #    DB_File ... Fcntl ... IO  ....
20313 # or something like
20314 #    Fcntl ... NDBM_File ... IO  ....
20315 case " $extensions"  in
20316 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20317 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20318 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20319 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20320    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20321    ;;
20322 esac
20323
20324 : Remove libraries needed only for extensions
20325 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20326 : The exception is SunOS 4.x, which needs them.
20327 case "${osname}X${osvers}" in
20328 sunos*X4*)
20329     perllibs="$libs"
20330     ;;
20331 *) case "$usedl" in
20332     $define|true|[yY]*)
20333             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20334             shift
20335             perllibs="$*"
20336             ;;
20337     *)  perllibs="$libs"
20338             ;;
20339     esac
20340     ;;
20341 esac
20342
20343 : Remove build directory name from cppstdin so it can be used from
20344 : either the present location or the final installed location.
20345 echo " "
20346 : Get out of the UU directory to get correct path name.
20347 cd ..
20348 case "$cppstdin" in
20349 `pwd`/cppstdin)
20350         echo "Stripping down cppstdin path name"
20351         cppstdin=cppstdin
20352         ;;
20353 esac
20354 cd UU
20355
20356 : end of configuration questions
20357 echo " "
20358 echo "End of configuration questions."
20359 echo " "
20360
20361 : back to where it started
20362 if test -d ../UU; then
20363         cd ..
20364 fi
20365
20366 : configuration may be patched via a 'config.arch' file
20367 if $test -f config.arch; then
20368         echo "I see a config.arch file, loading it."
20369         . ./config.arch
20370 fi
20371
20372 : configuration may be patched via a 'config.over' file
20373 if $test -f config.over; then
20374         echo " "
20375         dflt=y
20376         rp='I see a config.over file.  Do you wish to load it?'
20377         . UU/myread
20378         case "$ans" in
20379         n*) echo "OK, I'll ignore it.";;
20380         *)      . ./config.over
20381                 echo "Configuration override changes have been loaded."
20382                 ;;
20383         esac
20384 fi
20385
20386 : in case they want portability, strip down executable paths
20387 case "$d_portable" in
20388 "$define")
20389         echo " "
20390         echo "Stripping down executable paths..." >&4
20391         for file in $loclist $trylist; do
20392                 eval temp=\$$file
20393                 eval $file=`basename $temp`
20394         done
20395         ;;
20396 esac
20397
20398 : create config.sh file
20399 echo " "
20400 echo "Creating config.sh..." >&4
20401 $spitshell <<EOT >config.sh
20402 $startsh
20403 #
20404 # This file was produced by running the Configure script. It holds all the
20405 # definitions figured out by Configure. Should you modify one of these values,
20406 # do not forget to propagate your changes by running "Configure -der". You may
20407 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20408 #
20409
20410 # Package name      : $package
20411 # Source directory  : $src
20412 # Configuration time: $cf_time
20413 # Configured by     : $cf_by
20414 # Target system     : $myuname
20415
20416 Author='$Author'
20417 Date='$Date'
20418 Header='$Header'
20419 Id='$Id'
20420 Locker='$Locker'
20421 Log='$Log'
20422 Mcc='$Mcc'
20423 RCSfile='$RCSfile'
20424 Revision='$Revision'
20425 Source='$Source'
20426 State='$State'
20427 _a='$_a'
20428 _exe='$_exe'
20429 _o='$_o'
20430 afs='$afs'
20431 afsroot='$afsroot'
20432 alignbytes='$alignbytes'
20433 ansi2knr='$ansi2knr'
20434 aphostname='$aphostname'
20435 api_revision='$api_revision'
20436 api_subversion='$api_subversion'
20437 api_version='$api_version'
20438 api_versionstring='$api_versionstring'
20439 ar='$ar'
20440 archlib='$archlib'
20441 archlibexp='$archlibexp'
20442 archname64='$archname64'
20443 archname='$archname'
20444 archobjs='$archobjs'
20445 asctime_r_proto='$asctime_r_proto'
20446 awk='$awk'
20447 baserev='$baserev'
20448 bash='$bash'
20449 bin='$bin'
20450 binexp='$binexp'
20451 bison='$bison'
20452 byacc='$byacc'
20453 byteorder='$byteorder'
20454 c='$c'
20455 castflags='$castflags'
20456 cat='$cat'
20457 cc='$cc'
20458 cccdlflags='$cccdlflags'
20459 ccdlflags='$ccdlflags'
20460 ccflags='$ccflags'
20461 ccflags_uselargefiles='$ccflags_uselargefiles'
20462 ccname='$ccname'
20463 ccsymbols='$ccsymbols'
20464 ccversion='$ccversion'
20465 cf_by='$cf_by'
20466 cf_email='$cf_email'
20467 cf_time='$cf_time'
20468 charsize='$charsize'
20469 chgrp='$chgrp'
20470 chmod='$chmod'
20471 chown='$chown'
20472 clocktype='$clocktype'
20473 comm='$comm'
20474 compress='$compress'
20475 contains='$contains'
20476 cp='$cp'
20477 cpio='$cpio'
20478 cpp='$cpp'
20479 cpp_stuff='$cpp_stuff'
20480 cppccsymbols='$cppccsymbols'
20481 cppflags='$cppflags'
20482 cpplast='$cpplast'
20483 cppminus='$cppminus'
20484 cpprun='$cpprun'
20485 cppstdin='$cppstdin'
20486 cppsymbols='$cppsymbols'
20487 crypt_r_proto='$crypt_r_proto'
20488 cryptlib='$cryptlib'
20489 csh='$csh'
20490 ctermid_r_proto='$ctermid_r_proto'
20491 ctime_r_proto='$ctime_r_proto'
20492 d_Gconvert='$d_Gconvert'
20493 d_PRIEUldbl='$d_PRIEUldbl'
20494 d_PRIFUldbl='$d_PRIFUldbl'
20495 d_PRIGUldbl='$d_PRIGUldbl'
20496 d_PRIXU64='$d_PRIXU64'
20497 d_PRId64='$d_PRId64'
20498 d_PRIeldbl='$d_PRIeldbl'
20499 d_PRIfldbl='$d_PRIfldbl'
20500 d_PRIgldbl='$d_PRIgldbl'
20501 d_PRIi64='$d_PRIi64'
20502 d_PRIo64='$d_PRIo64'
20503 d_PRIu64='$d_PRIu64'
20504 d_PRIx64='$d_PRIx64'
20505 d_SCNfldbl='$d_SCNfldbl'
20506 d__fwalk='$d__fwalk'
20507 d_access='$d_access'
20508 d_accessx='$d_accessx'
20509 d_aintl='$d_aintl'
20510 d_alarm='$d_alarm'
20511 d_archlib='$d_archlib'
20512 d_asctime_r='$d_asctime_r'
20513 d_atolf='$d_atolf'
20514 d_atoll='$d_atoll'
20515 d_attribut='$d_attribut'
20516 d_bcmp='$d_bcmp'
20517 d_bcopy='$d_bcopy'
20518 d_bsd='$d_bsd'
20519 d_bsdgetpgrp='$d_bsdgetpgrp'
20520 d_bsdsetpgrp='$d_bsdsetpgrp'
20521 d_bzero='$d_bzero'
20522 d_casti32='$d_casti32'
20523 d_castneg='$d_castneg'
20524 d_charvspr='$d_charvspr'
20525 d_chown='$d_chown'
20526 d_chroot='$d_chroot'
20527 d_chsize='$d_chsize'
20528 d_class='$d_class'
20529 d_closedir='$d_closedir'
20530 d_cmsghdr_s='$d_cmsghdr_s'
20531 d_const='$d_const'
20532 d_copysignl='$d_copysignl'
20533 d_crypt='$d_crypt'
20534 d_crypt_r='$d_crypt_r'
20535 d_csh='$d_csh'
20536 d_ctermid_r='$d_ctermid_r'
20537 d_ctime_r='$d_ctime_r'
20538 d_cuserid='$d_cuserid'
20539 d_dbl_dig='$d_dbl_dig'
20540 d_dbminitproto='$d_dbminitproto'
20541 d_difftime='$d_difftime'
20542 d_dirfd='$d_dirfd'
20543 d_dirnamlen='$d_dirnamlen'
20544 d_dlerror='$d_dlerror'
20545 d_dlopen='$d_dlopen'
20546 d_dlsymun='$d_dlsymun'
20547 d_dosuid='$d_dosuid'
20548 d_drand48_r='$d_drand48_r'
20549 d_drand48proto='$d_drand48proto'
20550 d_dup2='$d_dup2'
20551 d_eaccess='$d_eaccess'
20552 d_endgrent='$d_endgrent'
20553 d_endgrent_r='$d_endgrent_r'
20554 d_endhent='$d_endhent'
20555 d_endhostent_r='$d_endhostent_r'
20556 d_endnent='$d_endnent'
20557 d_endnetent_r='$d_endnetent_r'
20558 d_endpent='$d_endpent'
20559 d_endprotoent_r='$d_endprotoent_r'
20560 d_endpwent='$d_endpwent'
20561 d_endpwent_r='$d_endpwent_r'
20562 d_endsent='$d_endsent'
20563 d_endservent_r='$d_endservent_r'
20564 d_eofnblk='$d_eofnblk'
20565 d_eunice='$d_eunice'
20566 d_faststdio='$d_faststdio'
20567 d_fchdir='$d_fchdir'
20568 d_fchmod='$d_fchmod'
20569 d_fchown='$d_fchown'
20570 d_fcntl='$d_fcntl'
20571 d_fcntl_can_lock='$d_fcntl_can_lock'
20572 d_fd_macros='$d_fd_macros'
20573 d_fd_set='$d_fd_set'
20574 d_fds_bits='$d_fds_bits'
20575 d_fgetpos='$d_fgetpos'
20576 d_finite='$d_finite'
20577 d_finitel='$d_finitel'
20578 d_flexfnam='$d_flexfnam'
20579 d_flock='$d_flock'
20580 d_flockproto='$d_flockproto'
20581 d_fork='$d_fork'
20582 d_fp_class='$d_fp_class'
20583 d_fpathconf='$d_fpathconf'
20584 d_fpclass='$d_fpclass'
20585 d_fpclassify='$d_fpclassify'
20586 d_fpclassl='$d_fpclassl'
20587 d_fpos64_t='$d_fpos64_t'
20588 d_frexpl='$d_frexpl'
20589 d_fs_data_s='$d_fs_data_s'
20590 d_fseeko='$d_fseeko'
20591 d_fsetpos='$d_fsetpos'
20592 d_fstatfs='$d_fstatfs'
20593 d_fstatvfs='$d_fstatvfs'
20594 d_fsync='$d_fsync'
20595 d_ftello='$d_ftello'
20596 d_ftime='$d_ftime'
20597 d_getcwd='$d_getcwd'
20598 d_getespwnam='$d_getespwnam'
20599 d_getfsstat='$d_getfsstat'
20600 d_getgrent='$d_getgrent'
20601 d_getgrent_r='$d_getgrent_r'
20602 d_getgrgid_r='$d_getgrgid_r'
20603 d_getgrnam_r='$d_getgrnam_r'
20604 d_getgrps='$d_getgrps'
20605 d_gethbyaddr='$d_gethbyaddr'
20606 d_gethbyname='$d_gethbyname'
20607 d_gethent='$d_gethent'
20608 d_gethname='$d_gethname'
20609 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20610 d_gethostbyname_r='$d_gethostbyname_r'
20611 d_gethostent_r='$d_gethostent_r'
20612 d_gethostprotos='$d_gethostprotos'
20613 d_getitimer='$d_getitimer'
20614 d_getlogin='$d_getlogin'
20615 d_getlogin_r='$d_getlogin_r'
20616 d_getmnt='$d_getmnt'
20617 d_getmntent='$d_getmntent'
20618 d_getnbyaddr='$d_getnbyaddr'
20619 d_getnbyname='$d_getnbyname'
20620 d_getnent='$d_getnent'
20621 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20622 d_getnetbyname_r='$d_getnetbyname_r'
20623 d_getnetent_r='$d_getnetent_r'
20624 d_getnetprotos='$d_getnetprotos'
20625 d_getpagsz='$d_getpagsz'
20626 d_getpbyname='$d_getpbyname'
20627 d_getpbynumber='$d_getpbynumber'
20628 d_getpent='$d_getpent'
20629 d_getpgid='$d_getpgid'
20630 d_getpgrp2='$d_getpgrp2'
20631 d_getpgrp='$d_getpgrp'
20632 d_getppid='$d_getppid'
20633 d_getprior='$d_getprior'
20634 d_getprotobyname_r='$d_getprotobyname_r'
20635 d_getprotobynumber_r='$d_getprotobynumber_r'
20636 d_getprotoent_r='$d_getprotoent_r'
20637 d_getprotoprotos='$d_getprotoprotos'
20638 d_getprpwnam='$d_getprpwnam'
20639 d_getpwent='$d_getpwent'
20640 d_getpwent_r='$d_getpwent_r'
20641 d_getpwnam_r='$d_getpwnam_r'
20642 d_getpwuid_r='$d_getpwuid_r'
20643 d_getsbyname='$d_getsbyname'
20644 d_getsbyport='$d_getsbyport'
20645 d_getsent='$d_getsent'
20646 d_getservbyname_r='$d_getservbyname_r'
20647 d_getservbyport_r='$d_getservbyport_r'
20648 d_getservent_r='$d_getservent_r'
20649 d_getservprotos='$d_getservprotos'
20650 d_getspnam='$d_getspnam'
20651 d_getspnam_r='$d_getspnam_r'
20652 d_gettimeod='$d_gettimeod'
20653 d_gmtime_r='$d_gmtime_r'
20654 d_gnulibc='$d_gnulibc'
20655 d_grpasswd='$d_grpasswd'
20656 d_hasmntopt='$d_hasmntopt'
20657 d_htonl='$d_htonl'
20658 d_ilogbl='$d_ilogbl'
20659 d_index='$d_index'
20660 d_inetaton='$d_inetaton'
20661 d_int64_t='$d_int64_t'
20662 d_isascii='$d_isascii'
20663 d_isfinite='$d_isfinite'
20664 d_isinf='$d_isinf'
20665 d_isnan='$d_isnan'
20666 d_isnanl='$d_isnanl'
20667 d_killpg='$d_killpg'
20668 d_lchown='$d_lchown'
20669 d_ldbl_dig='$d_ldbl_dig'
20670 d_link='$d_link'
20671 d_localtime_r='$d_localtime_r'
20672 d_locconv='$d_locconv'
20673 d_lockf='$d_lockf'
20674 d_longdbl='$d_longdbl'
20675 d_longlong='$d_longlong'
20676 d_lseekproto='$d_lseekproto'
20677 d_lstat='$d_lstat'
20678 d_madvise='$d_madvise'
20679 d_mblen='$d_mblen'
20680 d_mbstowcs='$d_mbstowcs'
20681 d_mbtowc='$d_mbtowc'
20682 d_memchr='$d_memchr'
20683 d_memcmp='$d_memcmp'
20684 d_memcpy='$d_memcpy'
20685 d_memmove='$d_memmove'
20686 d_memset='$d_memset'
20687 d_mkdir='$d_mkdir'
20688 d_mkdtemp='$d_mkdtemp'
20689 d_mkfifo='$d_mkfifo'
20690 d_mkstemp='$d_mkstemp'
20691 d_mkstemps='$d_mkstemps'
20692 d_mktime='$d_mktime'
20693 d_mmap='$d_mmap'
20694 d_modfl='$d_modfl'
20695 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20696 d_modflproto='$d_modflproto'
20697 d_mprotect='$d_mprotect'
20698 d_msg='$d_msg'
20699 d_msg_ctrunc='$d_msg_ctrunc'
20700 d_msg_dontroute='$d_msg_dontroute'
20701 d_msg_oob='$d_msg_oob'
20702 d_msg_peek='$d_msg_peek'
20703 d_msg_proxy='$d_msg_proxy'
20704 d_msgctl='$d_msgctl'
20705 d_msgget='$d_msgget'
20706 d_msghdr_s='$d_msghdr_s'
20707 d_msgrcv='$d_msgrcv'
20708 d_msgsnd='$d_msgsnd'
20709 d_msync='$d_msync'
20710 d_munmap='$d_munmap'
20711 d_mymalloc='$d_mymalloc'
20712 d_nice='$d_nice'
20713 d_nl_langinfo='$d_nl_langinfo'
20714 d_nv_preserves_uv='$d_nv_preserves_uv'
20715 d_off64_t='$d_off64_t'
20716 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20717 d_oldpthreads='$d_oldpthreads'
20718 d_oldsock='$d_oldsock'
20719 d_open3='$d_open3'
20720 d_pathconf='$d_pathconf'
20721 d_pause='$d_pause'
20722 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20723 d_phostname='$d_phostname'
20724 d_pipe='$d_pipe'
20725 d_poll='$d_poll'
20726 d_portable='$d_portable'
20727 d_procselfexe='$d_procselfexe'
20728 d_pthread_atfork='$d_pthread_atfork'
20729 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20730 d_pthread_yield='$d_pthread_yield'
20731 d_pwage='$d_pwage'
20732 d_pwchange='$d_pwchange'
20733 d_pwclass='$d_pwclass'
20734 d_pwcomment='$d_pwcomment'
20735 d_pwexpire='$d_pwexpire'
20736 d_pwgecos='$d_pwgecos'
20737 d_pwpasswd='$d_pwpasswd'
20738 d_pwquota='$d_pwquota'
20739 d_qgcvt='$d_qgcvt'
20740 d_quad='$d_quad'
20741 d_random_r='$d_random_r'
20742 d_readdir64_r='$d_readdir64_r'
20743 d_readdir='$d_readdir'
20744 d_readdir_r='$d_readdir_r'
20745 d_readlink='$d_readlink'
20746 d_readv='$d_readv'
20747 d_recvmsg='$d_recvmsg'
20748 d_rename='$d_rename'
20749 d_rewinddir='$d_rewinddir'
20750 d_rmdir='$d_rmdir'
20751 d_safebcpy='$d_safebcpy'
20752 d_safemcpy='$d_safemcpy'
20753 d_sanemcmp='$d_sanemcmp'
20754 d_sbrkproto='$d_sbrkproto'
20755 d_scalbnl='$d_scalbnl'
20756 d_sched_yield='$d_sched_yield'
20757 d_scm_rights='$d_scm_rights'
20758 d_seekdir='$d_seekdir'
20759 d_select='$d_select'
20760 d_sem='$d_sem'
20761 d_semctl='$d_semctl'
20762 d_semctl_semid_ds='$d_semctl_semid_ds'
20763 d_semctl_semun='$d_semctl_semun'
20764 d_semget='$d_semget'
20765 d_semop='$d_semop'
20766 d_sendmsg='$d_sendmsg'
20767 d_setegid='$d_setegid'
20768 d_seteuid='$d_seteuid'
20769 d_setgrent='$d_setgrent'
20770 d_setgrent_r='$d_setgrent_r'
20771 d_setgrps='$d_setgrps'
20772 d_sethent='$d_sethent'
20773 d_sethostent_r='$d_sethostent_r'
20774 d_setitimer='$d_setitimer'
20775 d_setlinebuf='$d_setlinebuf'
20776 d_setlocale='$d_setlocale'
20777 d_setlocale_r='$d_setlocale_r'
20778 d_setnent='$d_setnent'
20779 d_setnetent_r='$d_setnetent_r'
20780 d_setpent='$d_setpent'
20781 d_setpgid='$d_setpgid'
20782 d_setpgrp2='$d_setpgrp2'
20783 d_setpgrp='$d_setpgrp'
20784 d_setprior='$d_setprior'
20785 d_setproctitle='$d_setproctitle'
20786 d_setprotoent_r='$d_setprotoent_r'
20787 d_setpwent='$d_setpwent'
20788 d_setpwent_r='$d_setpwent_r'
20789 d_setregid='$d_setregid'
20790 d_setresgid='$d_setresgid'
20791 d_setresuid='$d_setresuid'
20792 d_setreuid='$d_setreuid'
20793 d_setrgid='$d_setrgid'
20794 d_setruid='$d_setruid'
20795 d_setsent='$d_setsent'
20796 d_setservent_r='$d_setservent_r'
20797 d_setsid='$d_setsid'
20798 d_setvbuf='$d_setvbuf'
20799 d_sfio='$d_sfio'
20800 d_shm='$d_shm'
20801 d_shmat='$d_shmat'
20802 d_shmatprototype='$d_shmatprototype'
20803 d_shmctl='$d_shmctl'
20804 d_shmdt='$d_shmdt'
20805 d_shmget='$d_shmget'
20806 d_sigaction='$d_sigaction'
20807 d_sigprocmask='$d_sigprocmask'
20808 d_sigsetjmp='$d_sigsetjmp'
20809 d_sockatmark='$d_sockatmark'
20810 d_sockatmarkproto='$d_sockatmarkproto'
20811 d_socket='$d_socket'
20812 d_socklen_t='$d_socklen_t'
20813 d_sockpair='$d_sockpair'
20814 d_socks5_init='$d_socks5_init'
20815 d_sqrtl='$d_sqrtl'
20816 d_srand48_r='$d_srand48_r'
20817 d_srandom_r='$d_srandom_r'
20818 d_sresgproto='$d_sresgproto'
20819 d_sresuproto='$d_sresuproto'
20820 d_statblks='$d_statblks'
20821 d_statfs_f_flags='$d_statfs_f_flags'
20822 d_statfs_s='$d_statfs_s'
20823 d_statvfs='$d_statvfs'
20824 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20825 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20826 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20827 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20828 d_stdio_stream_array='$d_stdio_stream_array'
20829 d_stdiobase='$d_stdiobase'
20830 d_stdstdio='$d_stdstdio'
20831 d_strchr='$d_strchr'
20832 d_strcoll='$d_strcoll'
20833 d_strctcpy='$d_strctcpy'
20834 d_strerrm='$d_strerrm'
20835 d_strerror='$d_strerror'
20836 d_strerror_r='$d_strerror_r'
20837 d_strftime='$d_strftime'
20838 d_strtod='$d_strtod'
20839 d_strtol='$d_strtol'
20840 d_strtold='$d_strtold'
20841 d_strtoll='$d_strtoll'
20842 d_strtoq='$d_strtoq'
20843 d_strtoul='$d_strtoul'
20844 d_strtoull='$d_strtoull'
20845 d_strtouq='$d_strtouq'
20846 d_strxfrm='$d_strxfrm'
20847 d_suidsafe='$d_suidsafe'
20848 d_symlink='$d_symlink'
20849 d_syscall='$d_syscall'
20850 d_syscallproto='$d_syscallproto'
20851 d_sysconf='$d_sysconf'
20852 d_sysernlst='$d_sysernlst'
20853 d_syserrlst='$d_syserrlst'
20854 d_system='$d_system'
20855 d_tcgetpgrp='$d_tcgetpgrp'
20856 d_tcsetpgrp='$d_tcsetpgrp'
20857 d_telldir='$d_telldir'
20858 d_telldirproto='$d_telldirproto'
20859 d_time='$d_time'
20860 d_times='$d_times'
20861 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20862 d_tm_tm_zone='$d_tm_tm_zone'
20863 d_tmpnam_r='$d_tmpnam_r'
20864 d_truncate='$d_truncate'
20865 d_ttyname_r='$d_ttyname_r'
20866 d_tzname='$d_tzname'
20867 d_u32align='$d_u32align'
20868 d_ualarm='$d_ualarm'
20869 d_umask='$d_umask'
20870 d_uname='$d_uname'
20871 d_union_semun='$d_union_semun'
20872 d_unordered='$d_unordered'
20873 d_usleep='$d_usleep'
20874 d_usleepproto='$d_usleepproto'
20875 d_ustat='$d_ustat'
20876 d_vendorarch='$d_vendorarch'
20877 d_vendorbin='$d_vendorbin'
20878 d_vendorlib='$d_vendorlib'
20879 d_vendorscript='$d_vendorscript'
20880 d_vfork='$d_vfork'
20881 d_void_closedir='$d_void_closedir'
20882 d_voidsig='$d_voidsig'
20883 d_voidtty='$d_voidtty'
20884 d_volatile='$d_volatile'
20885 d_vprintf='$d_vprintf'
20886 d_wait4='$d_wait4'
20887 d_waitpid='$d_waitpid'
20888 d_wcstombs='$d_wcstombs'
20889 d_wctomb='$d_wctomb'
20890 d_writev='$d_writev'
20891 d_xenix='$d_xenix'
20892 date='$date'
20893 db_hashtype='$db_hashtype'
20894 db_prefixtype='$db_prefixtype'
20895 db_version_major='$db_version_major'
20896 db_version_minor='$db_version_minor'
20897 db_version_patch='$db_version_patch'
20898 defvoidused='$defvoidused'
20899 direntrytype='$direntrytype'
20900 dlext='$dlext'
20901 dlsrc='$dlsrc'
20902 doublesize='$doublesize'
20903 drand01='$drand01'
20904 drand48_r_proto='$drand48_r_proto'
20905 dynamic_ext='$dynamic_ext'
20906 eagain='$eagain'
20907 ebcdic='$ebcdic'
20908 echo='$echo'
20909 egrep='$egrep'
20910 emacs='$emacs'
20911 endgrent_r_proto='$endgrent_r_proto'
20912 endhostent_r_proto='$endhostent_r_proto'
20913 endnetent_r_proto='$endnetent_r_proto'
20914 endprotoent_r_proto='$endprotoent_r_proto'
20915 endpwent_r_proto='$endpwent_r_proto'
20916 endservent_r_proto='$endservent_r_proto'
20917 eunicefix='$eunicefix'
20918 exe_ext='$exe_ext'
20919 expr='$expr'
20920 extensions='$extensions'
20921 extras='$extras'
20922 fflushNULL='$fflushNULL'
20923 fflushall='$fflushall'
20924 find='$find'
20925 firstmakefile='$firstmakefile'
20926 flex='$flex'
20927 fpossize='$fpossize'
20928 fpostype='$fpostype'
20929 freetype='$freetype'
20930 from='$from'
20931 full_ar='$full_ar'
20932 full_csh='$full_csh'
20933 full_sed='$full_sed'
20934 gccansipedantic='$gccansipedantic'
20935 gccosandvers='$gccosandvers'
20936 gccversion='$gccversion'
20937 getgrent_r_proto='$getgrent_r_proto'
20938 getgrgid_r_proto='$getgrgid_r_proto'
20939 getgrnam_r_proto='$getgrnam_r_proto'
20940 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20941 gethostbyname_r_proto='$gethostbyname_r_proto'
20942 gethostent_r_proto='$gethostent_r_proto'
20943 getlogin_r_proto='$getlogin_r_proto'
20944 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20945 getnetbyname_r_proto='$getnetbyname_r_proto'
20946 getnetent_r_proto='$getnetent_r_proto'
20947 getprotobyname_r_proto='$getprotobyname_r_proto'
20948 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20949 getprotoent_r_proto='$getprotoent_r_proto'
20950 getpwent_r_proto='$getpwent_r_proto'
20951 getpwnam_r_proto='$getpwnam_r_proto'
20952 getpwuid_r_proto='$getpwuid_r_proto'
20953 getservbyname_r_proto='$getservbyname_r_proto'
20954 getservbyport_r_proto='$getservbyport_r_proto'
20955 getservent_r_proto='$getservent_r_proto'
20956 getspnam_r_proto='$getspnam_r_proto'
20957 gidformat='$gidformat'
20958 gidsign='$gidsign'
20959 gidsize='$gidsize'
20960 gidtype='$gidtype'
20961 glibpth='$glibpth'
20962 gmake='$gmake'
20963 gmtime_r_proto='$gmtime_r_proto'
20964 gnulibc_version='$gnulibc_version'
20965 grep='$grep'
20966 groupcat='$groupcat'
20967 groupstype='$groupstype'
20968 gzip='$gzip'
20969 h_fcntl='$h_fcntl'
20970 h_sysfile='$h_sysfile'
20971 hint='$hint'
20972 hostcat='$hostcat'
20973 html1dir='$html1dir'
20974 html1direxp='$html1direxp'
20975 html3dir='$html3dir'
20976 html3direxp='$html3direxp'
20977 i16size='$i16size'
20978 i16type='$i16type'
20979 i32size='$i32size'
20980 i32type='$i32type'
20981 i64size='$i64size'
20982 i64type='$i64type'
20983 i8size='$i8size'
20984 i8type='$i8type'
20985 i_arpainet='$i_arpainet'
20986 i_bsdioctl='$i_bsdioctl'
20987 i_crypt='$i_crypt'
20988 i_db='$i_db'
20989 i_dbm='$i_dbm'
20990 i_dirent='$i_dirent'
20991 i_dld='$i_dld'
20992 i_dlfcn='$i_dlfcn'
20993 i_fcntl='$i_fcntl'
20994 i_float='$i_float'
20995 i_fp='$i_fp'
20996 i_fp_class='$i_fp_class'
20997 i_gdbm='$i_gdbm'
20998 i_grp='$i_grp'
20999 i_ieeefp='$i_ieeefp'
21000 i_inttypes='$i_inttypes'
21001 i_langinfo='$i_langinfo'
21002 i_libutil='$i_libutil'
21003 i_limits='$i_limits'
21004 i_locale='$i_locale'
21005 i_machcthr='$i_machcthr'
21006 i_malloc='$i_malloc'
21007 i_math='$i_math'
21008 i_memory='$i_memory'
21009 i_mntent='$i_mntent'
21010 i_ndbm='$i_ndbm'
21011 i_netdb='$i_netdb'
21012 i_neterrno='$i_neterrno'
21013 i_netinettcp='$i_netinettcp'
21014 i_niin='$i_niin'
21015 i_poll='$i_poll'
21016 i_prot='$i_prot'
21017 i_pthread='$i_pthread'
21018 i_pwd='$i_pwd'
21019 i_rpcsvcdbm='$i_rpcsvcdbm'
21020 i_sfio='$i_sfio'
21021 i_sgtty='$i_sgtty'
21022 i_shadow='$i_shadow'
21023 i_socks='$i_socks'
21024 i_stdarg='$i_stdarg'
21025 i_stddef='$i_stddef'
21026 i_stdlib='$i_stdlib'
21027 i_string='$i_string'
21028 i_sunmath='$i_sunmath'
21029 i_sysaccess='$i_sysaccess'
21030 i_sysdir='$i_sysdir'
21031 i_sysfile='$i_sysfile'
21032 i_sysfilio='$i_sysfilio'
21033 i_sysin='$i_sysin'
21034 i_sysioctl='$i_sysioctl'
21035 i_syslog='$i_syslog'
21036 i_sysmman='$i_sysmman'
21037 i_sysmode='$i_sysmode'
21038 i_sysmount='$i_sysmount'
21039 i_sysndir='$i_sysndir'
21040 i_sysparam='$i_sysparam'
21041 i_sysresrc='$i_sysresrc'
21042 i_syssecrt='$i_syssecrt'
21043 i_sysselct='$i_sysselct'
21044 i_syssockio='$i_syssockio'
21045 i_sysstat='$i_sysstat'
21046 i_sysstatfs='$i_sysstatfs'
21047 i_sysstatvfs='$i_sysstatvfs'
21048 i_systime='$i_systime'
21049 i_systimek='$i_systimek'
21050 i_systimes='$i_systimes'
21051 i_systypes='$i_systypes'
21052 i_sysuio='$i_sysuio'
21053 i_sysun='$i_sysun'
21054 i_sysutsname='$i_sysutsname'
21055 i_sysvfs='$i_sysvfs'
21056 i_syswait='$i_syswait'
21057 i_termio='$i_termio'
21058 i_termios='$i_termios'
21059 i_time='$i_time'
21060 i_unistd='$i_unistd'
21061 i_ustat='$i_ustat'
21062 i_utime='$i_utime'
21063 i_values='$i_values'
21064 i_varargs='$i_varargs'
21065 i_varhdr='$i_varhdr'
21066 i_vfork='$i_vfork'
21067 ignore_versioned_solibs='$ignore_versioned_solibs'
21068 inc_version_list='$inc_version_list'
21069 inc_version_list_init='$inc_version_list_init'
21070 incpath='$incpath'
21071 inews='$inews'
21072 installarchlib='$installarchlib'
21073 installbin='$installbin'
21074 installhtml1dir='$installhtml1dir'
21075 installhtml3dir='$installhtml3dir'
21076 installman1dir='$installman1dir'
21077 installman3dir='$installman3dir'
21078 installprefix='$installprefix'
21079 installprefixexp='$installprefixexp'
21080 installprivlib='$installprivlib'
21081 installscript='$installscript'
21082 installsitearch='$installsitearch'
21083 installsitebin='$installsitebin'
21084 installsitehtml1dir='$installsitehtml1dir'
21085 installsitehtml3dir='$installsitehtml3dir'
21086 installsitelib='$installsitelib'
21087 installsiteman1dir='$installsiteman1dir'
21088 installsiteman3dir='$installsiteman3dir'
21089 installsitescript='$installsitescript'
21090 installstyle='$installstyle'
21091 installusrbinperl='$installusrbinperl'
21092 installvendorarch='$installvendorarch'
21093 installvendorbin='$installvendorbin'
21094 installvendorhtml1dir='$installvendorhtml1dir'
21095 installvendorhtml3dir='$installvendorhtml3dir'
21096 installvendorlib='$installvendorlib'
21097 installvendorman1dir='$installvendorman1dir'
21098 installvendorman3dir='$installvendorman3dir'
21099 installvendorscript='$installvendorscript'
21100 intsize='$intsize'
21101 issymlink='$issymlink'
21102 ivdformat='$ivdformat'
21103 ivsize='$ivsize'
21104 ivtype='$ivtype'
21105 known_extensions='$known_extensions'
21106 ksh='$ksh'
21107 ld='$ld'
21108 lddlflags='$lddlflags'
21109 ldflags='$ldflags'
21110 ldflags_uselargefiles='$ldflags_uselargefiles'
21111 ldlibpthname='$ldlibpthname'
21112 less='$less'
21113 lib_ext='$lib_ext'
21114 libc='$libc'
21115 libperl='$libperl'
21116 libpth='$libpth'
21117 libs='$libs'
21118 libsdirs='$libsdirs'
21119 libsfiles='$libsfiles'
21120 libsfound='$libsfound'
21121 libspath='$libspath'
21122 libswanted='$libswanted'
21123 libswanted_uselargefiles='$libswanted_uselargefiles'
21124 line='$line'
21125 lint='$lint'
21126 lkflags='$lkflags'
21127 ln='$ln'
21128 lns='$lns'
21129 localtime_r_proto='$localtime_r_proto'
21130 locincpth='$locincpth'
21131 loclibpth='$loclibpth'
21132 longdblsize='$longdblsize'
21133 longlongsize='$longlongsize'
21134 longsize='$longsize'
21135 lp='$lp'
21136 lpr='$lpr'
21137 ls='$ls'
21138 lseeksize='$lseeksize'
21139 lseektype='$lseektype'
21140 mail='$mail'
21141 mailx='$mailx'
21142 make='$make'
21143 make_set_make='$make_set_make'
21144 mallocobj='$mallocobj'
21145 mallocsrc='$mallocsrc'
21146 malloctype='$malloctype'
21147 man1dir='$man1dir'
21148 man1direxp='$man1direxp'
21149 man1ext='$man1ext'
21150 man3dir='$man3dir'
21151 man3direxp='$man3direxp'
21152 man3ext='$man3ext'
21153 mips_type='$mips_type'
21154 mistrustnm='$mistrustnm'
21155 mkdir='$mkdir'
21156 mmaptype='$mmaptype'
21157 modetype='$modetype'
21158 more='$more'
21159 multiarch='$multiarch'
21160 mv='$mv'
21161 myarchname='$myarchname'
21162 mydomain='$mydomain'
21163 myhostname='$myhostname'
21164 myuname='$myuname'
21165 n='$n'
21166 need_va_copy='$need_va_copy'
21167 netdb_hlen_type='$netdb_hlen_type'
21168 netdb_host_type='$netdb_host_type'
21169 netdb_name_type='$netdb_name_type'
21170 netdb_net_type='$netdb_net_type'
21171 nm='$nm'
21172 nm_opt='$nm_opt'
21173 nm_so_opt='$nm_so_opt'
21174 nonxs_ext='$nonxs_ext'
21175 nroff='$nroff'
21176 nvEUformat='$nvEUformat'
21177 nvFUformat='$nvFUformat'
21178 nvGUformat='$nvGUformat'
21179 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21180 nveformat='$nveformat'
21181 nvfformat='$nvfformat'
21182 nvgformat='$nvgformat'
21183 nvsize='$nvsize'
21184 nvtype='$nvtype'
21185 o_nonblock='$o_nonblock'
21186 obj_ext='$obj_ext'
21187 old_pthread_create_joinable='$old_pthread_create_joinable'
21188 optimize='$optimize'
21189 orderlib='$orderlib'
21190 osname='$osname'
21191 osvers='$osvers'
21192 otherlibdirs='$otherlibdirs'
21193 package='$package'
21194 pager='$pager'
21195 passcat='$passcat'
21196 patchlevel='$patchlevel'
21197 path_sep='$path_sep'
21198 perl5='$perl5'
21199 perl='$perl'
21200 perl_patchlevel='$perl_patchlevel'
21201 perladmin='$perladmin'
21202 perllibs='$perllibs'
21203 perlpath='$perlpath'
21204 pg='$pg'
21205 phostname='$phostname'
21206 pidtype='$pidtype'
21207 plibpth='$plibpth'
21208 pm_apiversion='$pm_apiversion'
21209 pmake='$pmake'
21210 pr='$pr'
21211 prefix='$prefix'
21212 prefixexp='$prefixexp'
21213 privlib='$privlib'
21214 privlibexp='$privlibexp'
21215 procselfexe='$procselfexe'
21216 prototype='$prototype'
21217 ptrsize='$ptrsize'
21218 quadkind='$quadkind'
21219 quadtype='$quadtype'
21220 randbits='$randbits'
21221 randfunc='$randfunc'
21222 random_r_proto='$random_r_proto'
21223 randseedtype='$randseedtype'
21224 ranlib='$ranlib'
21225 rd_nodata='$rd_nodata'
21226 readdir64_r_proto='$readdir64_r_proto'
21227 readdir_r_proto='$readdir_r_proto'
21228 revision='$revision'
21229 rm='$rm'
21230 rmail='$rmail'
21231 run='$run'
21232 runnm='$runnm'
21233 sPRIEUldbl='$sPRIEUldbl'
21234 sPRIFUldbl='$sPRIFUldbl'
21235 sPRIGUldbl='$sPRIGUldbl'
21236 sPRIXU64='$sPRIXU64'
21237 sPRId64='$sPRId64'
21238 sPRIeldbl='$sPRIeldbl'
21239 sPRIfldbl='$sPRIfldbl'
21240 sPRIgldbl='$sPRIgldbl'
21241 sPRIi64='$sPRIi64'
21242 sPRIo64='$sPRIo64'
21243 sPRIu64='$sPRIu64'
21244 sPRIx64='$sPRIx64'
21245 sSCNfldbl='$sSCNfldbl'
21246 sched_yield='$sched_yield'
21247 scriptdir='$scriptdir'
21248 scriptdirexp='$scriptdirexp'
21249 sed='$sed'
21250 seedfunc='$seedfunc'
21251 selectminbits='$selectminbits'
21252 selecttype='$selecttype'
21253 sendmail='$sendmail'
21254 setgrent_r_proto='$setgrent_r_proto'
21255 sethostent_r_proto='$sethostent_r_proto'
21256 setlocale_r_proto='$setlocale_r_proto'
21257 setnetent_r_proto='$setnetent_r_proto'
21258 setprotoent_r_proto='$setprotoent_r_proto'
21259 setpwent_r_proto='$setpwent_r_proto'
21260 setservent_r_proto='$setservent_r_proto'
21261 sh='$sh'
21262 shar='$shar'
21263 sharpbang='$sharpbang'
21264 shmattype='$shmattype'
21265 shortsize='$shortsize'
21266 shrpenv='$shrpenv'
21267 shsharp='$shsharp'
21268 sig_count='$sig_count'
21269 sig_name='$sig_name'
21270 sig_name_init='$sig_name_init'
21271 sig_num='$sig_num'
21272 sig_num_init='$sig_num_init'
21273 sig_size='$sig_size'
21274 signal_t='$signal_t'
21275 sitearch='$sitearch'
21276 sitearchexp='$sitearchexp'
21277 sitebin='$sitebin'
21278 sitebinexp='$sitebinexp'
21279 sitehtml1dir='$sitehtml1dir'
21280 sitehtml1direxp='$sitehtml1direxp'
21281 sitehtml3dir='$sitehtml3dir'
21282 sitehtml3direxp='$sitehtml3direxp'
21283 sitelib='$sitelib'
21284 sitelib_stem='$sitelib_stem'
21285 sitelibexp='$sitelibexp'
21286 siteman1dir='$siteman1dir'
21287 siteman1direxp='$siteman1direxp'
21288 siteman3dir='$siteman3dir'
21289 siteman3direxp='$siteman3direxp'
21290 siteprefix='$siteprefix'
21291 siteprefixexp='$siteprefixexp'
21292 sitescript='$sitescript'
21293 sitescriptexp='$sitescriptexp'
21294 sizesize='$sizesize'
21295 sizetype='$sizetype'
21296 sleep='$sleep'
21297 smail='$smail'
21298 so='$so'
21299 sockethdr='$sockethdr'
21300 socketlib='$socketlib'
21301 socksizetype='$socksizetype'
21302 sort='$sort'
21303 spackage='$spackage'
21304 spitshell='$spitshell'
21305 srand48_r_proto='$srand48_r_proto'
21306 srandom_r_proto='$srandom_r_proto'
21307 src='$src'
21308 ssizetype='$ssizetype'
21309 startperl='$startperl'
21310 startsh='$startsh'
21311 static_ext='$static_ext'
21312 stdchar='$stdchar'
21313 stdio_base='$stdio_base'
21314 stdio_bufsiz='$stdio_bufsiz'
21315 stdio_cnt='$stdio_cnt'
21316 stdio_filbuf='$stdio_filbuf'
21317 stdio_ptr='$stdio_ptr'
21318 stdio_stream_array='$stdio_stream_array'
21319 strerror_r_proto='$strerror_r_proto'
21320 strings='$strings'
21321 submit='$submit'
21322 subversion='$subversion'
21323 sysman='$sysman'
21324 tail='$tail'
21325 tar='$tar'
21326 targetarch='$targetarch'
21327 tbl='$tbl'
21328 tee='$tee'
21329 test='$test'
21330 timeincl='$timeincl'
21331 timetype='$timetype'
21332 tmpnam_r_proto='$tmpnam_r_proto'
21333 to='$to'
21334 touch='$touch'
21335 tr='$tr'
21336 trnl='$trnl'
21337 troff='$troff'
21338 ttyname_r_proto='$ttyname_r_proto'
21339 u16size='$u16size'
21340 u16type='$u16type'
21341 u32size='$u32size'
21342 u32type='$u32type'
21343 u64size='$u64size'
21344 u64type='$u64type'
21345 u8size='$u8size'
21346 u8type='$u8type'
21347 uidformat='$uidformat'
21348 uidsign='$uidsign'
21349 uidsize='$uidsize'
21350 uidtype='$uidtype'
21351 uname='$uname'
21352 uniq='$uniq'
21353 uquadtype='$uquadtype'
21354 use5005threads='$use5005threads'
21355 use64bitall='$use64bitall'
21356 use64bitint='$use64bitint'
21357 usecrosscompile='$usecrosscompile'
21358 usedl='$usedl'
21359 usefaststdio='$usefaststdio'
21360 useithreads='$useithreads'
21361 uselargefiles='$uselargefiles'
21362 uselongdouble='$uselongdouble'
21363 usemorebits='$usemorebits'
21364 usemultiplicity='$usemultiplicity'
21365 usemymalloc='$usemymalloc'
21366 usenm='$usenm'
21367 useopcode='$useopcode'
21368 useperlio='$useperlio'
21369 useposix='$useposix'
21370 usereentrant='$usereentrant'
21371 usesfio='$usesfio'
21372 useshrplib='$useshrplib'
21373 usesocks='$usesocks'
21374 usethreads='$usethreads'
21375 usevendorprefix='$usevendorprefix'
21376 usevfork='$usevfork'
21377 usrinc='$usrinc'
21378 uuname='$uuname'
21379 uvXUformat='$uvXUformat'
21380 uvoformat='$uvoformat'
21381 uvsize='$uvsize'
21382 uvtype='$uvtype'
21383 uvuformat='$uvuformat'
21384 uvxformat='$uvxformat'
21385 vendorarch='$vendorarch'
21386 vendorarchexp='$vendorarchexp'
21387 vendorbin='$vendorbin'
21388 vendorbinexp='$vendorbinexp'
21389 vendorhtml1dir='$vendorhtml1dir'
21390 vendorhtml1direxp='$vendorhtml1direxp'
21391 vendorhtml3dir='$vendorhtml3dir'
21392 vendorhtml3direxp='$vendorhtml3direxp'
21393 vendorlib='$vendorlib'
21394 vendorlib_stem='$vendorlib_stem'
21395 vendorlibexp='$vendorlibexp'
21396 vendorman1dir='$vendorman1dir'
21397 vendorman1direxp='$vendorman1direxp'
21398 vendorman3dir='$vendorman3dir'
21399 vendorman3direxp='$vendorman3direxp'
21400 vendorprefix='$vendorprefix'
21401 vendorprefixexp='$vendorprefixexp'
21402 vendorscript='$vendorscript'
21403 vendorscriptexp='$vendorscriptexp'
21404 version='$version'
21405 version_patchlevel_string='$version_patchlevel_string'
21406 versiononly='$versiononly'
21407 vi='$vi'
21408 voidflags='$voidflags'
21409 xlibpth='$xlibpth'
21410 xs_apiversion='$xs_apiversion'
21411 yacc='$yacc'
21412 yaccflags='$yaccflags'
21413 zcat='$zcat'
21414 zip='$zip'
21415 EOT
21416
21417 : Add in command line options if available
21418 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21419
21420 : add special variables
21421 $test -f $src/patchlevel.h && \
21422 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21423 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21424 echo "PERL_CONFIG_SH=true" >>config.sh
21425
21426 : propagate old symbols
21427 if $test -f UU/config.sh; then
21428         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21429         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21430         $sort | $uniq -u >UU/oldsyms
21431         set X `cat UU/oldsyms`
21432         shift
21433         case $# in
21434         0) ;;
21435         *)
21436                 cat <<EOM
21437 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21438 EOM
21439                 echo "# Variables propagated from previous config.sh file." >>config.sh
21440                 for sym in `cat UU/oldsyms`; do
21441                         echo "    Propagating $hint variable "'$'"$sym..."
21442                         eval 'tmp="$'"${sym}"'"'
21443                         echo "$tmp" | \
21444                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21445                 done
21446                 ;;
21447         esac
21448 fi
21449
21450 : Finish up by extracting the .SH files
21451 case "$alldone" in
21452 exit)
21453         $rm -rf UU
21454         echo "Extraction done."
21455         exit 0
21456         ;;
21457 cont)
21458         ;;
21459 '')
21460         dflt=''
21461         nostick=true
21462         $cat <<EOM
21463
21464 If you'd like to make any changes to the config.sh file before I begin
21465 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21466
21467 EOM
21468         rp="Press return or use a shell escape to edit config.sh:"
21469         . UU/myread
21470         nostick=''
21471         case "$ans" in
21472         '') ;;
21473         *) : in case they cannot read
21474                 sh 1>&4 -c "$ans";;
21475         esac
21476         ;;
21477 esac
21478
21479 : if this fails, just run all the .SH files by hand
21480 . ./config.sh
21481
21482 echo " "
21483 exec 1>&4
21484 pwd=`pwd`
21485 . ./UU/extract
21486 cd "$pwd"
21487
21488 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21489         dflt=y
21490         case "$silent" in
21491         true) ;;
21492         *)
21493                 $cat <<EOM
21494
21495 Now you need to generate make dependencies by running "$make depend".
21496 You might prefer to run it in background: "$make depend > makedepend.out &"
21497 It can take a while, so you might not want to run it right now.
21498
21499 EOM
21500                 ;;
21501         esac
21502         rp="Run $make depend now?"
21503         . UU/myread
21504         case "$ans" in
21505         y*)
21506                 $make depend && echo "Now you must run '$make'."
21507                 ;;
21508         *)
21509                 echo "You must run '$make depend' then '$make'."
21510                 ;;
21511         esac
21512 elif test -f [Mm]akefile; then
21513         echo " "
21514         echo "Now you must run a $make."
21515 else
21516         echo "Configure done."
21517 fi
21518
21519 if $test -f Policy.sh; then
21520     $cat <<EOM
21521
21522 If you compile $package on a different machine or from a different object
21523 directory, copy the Policy.sh file from this object directory to the
21524 new one before you run Configure -- this will help you with most of
21525 the policy defaults.
21526
21527 EOM
21528 fi
21529 if $test -f config.msg; then
21530     echo "Hmm.  I also noted the following information while running:"
21531     echo " "
21532     $cat config.msg >&4
21533     $rm -f config.msg
21534 fi
21535 $rm -f kit*isdone ark*isdone
21536 $rm -rf UU
21537
21538 : End of Configure
21539