Removed pm_apiversion and xs_apiversion as requested by
[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 Wed Feb 18 12:49:17 MET 2004 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 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 yacc=''
1177 yaccflags=''
1178 CONFIG=''
1179
1180 define='define'
1181 undef='undef'
1182 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1183 rmlist=''
1184
1185 : We must find out about Eunice early
1186 eunicefix=':'
1187 if test -f /etc/unixtovms; then
1188         eunicefix=/etc/unixtovms
1189 fi
1190 if test -f /etc/unixtovms.exe; then
1191         eunicefix=/etc/unixtovms.exe
1192 fi
1193
1194 : Set executable suffix now -- needed before hints available
1195 if test -f "/libs/version.library"; then
1196 : Amiga OS
1197     _exe=""
1198 elif test -f "/system/gnu_library/bin/ar.pm"; then
1199 : Stratus VOS
1200     _exe=".pm"
1201 elif test -n "$DJGPP"; then
1202 : DOS DJGPP
1203     _exe=".exe"
1204 elif test -d c:/. -o -n "$is_os2" ; then
1205 : OS/2 or cygwin
1206     _exe=".exe"
1207 fi
1208
1209 i_whoami=''
1210 ccname=''
1211 ccversion=''
1212 perllibs=''
1213 : set useposix=false in your hint file to disable the POSIX extension.
1214 useposix=true
1215 : set useopcode=false in your hint file to disable the Opcode extension.
1216 useopcode=true
1217 : Trailing extension.  Override this in a hint file, if needed.
1218 : Extra object files, if any, needed on this platform.
1219 archobjs=''
1220 archname=''
1221 : Possible local include directories to search.
1222 : Set locincpth to "" in a hint file to defeat local include searches.
1223 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1224 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1225 :
1226 : no include file wanted by default
1227 inclwanted=''
1228
1229 groupstype=''
1230 libnames=''
1231 : change the next line if compiling for Xenix/286 on Xenix/386
1232 xlibpth='/usr/lib/386 /lib/386'
1233 : Possible local library directories to search.
1234 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1235 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1236
1237 : general looking path for locating libraries
1238 glibpth="/lib /usr/lib $xlibpth"
1239 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1240 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1241 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1242
1243 : Private path used by Configure to find libraries.  Its value
1244 : is prepended to libpth. This variable takes care of special
1245 : machines, like the mips.  Usually, it should be empty.
1246 plibpth=''
1247
1248 : default library list
1249 libswanted=''
1250 : some systems want to use only the non-versioned libso:s
1251 ignore_versioned_solibs=''
1252 siteman1dir=''
1253 siteman3dir=''
1254 sitescript=''
1255 archname64=''
1256 ccflags_uselargefiles=''
1257 ldflags_uselargefiles=''
1258 libswanted_uselargefiles=''
1259 : set usemultiplicity on the Configure command line to enable multiplicity.
1260 : set usesocks on the Configure command line to enable socks.
1261 : set usethreads on the Configure command line to enable threads.
1262 usereentrant='undef'
1263 : full support for void wanted by default
1264 defvoidused=15
1265
1266 : List of libraries we want.
1267 : If anyone needs extra -lxxx, put those in a hint file.
1268 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1269 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1270 : We probably want to search /usr/shlib before most other libraries.
1271 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1272 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1273 glibpth="/usr/shlib $glibpth"
1274 : Do not use vfork unless overridden by a hint file.
1275 usevfork=false
1276
1277 : Find the basic shell for Bourne shell scripts
1278 case "$sh" in
1279 '')
1280         case "$SYSTYPE" in
1281         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1282         *) xxx='/bin/sh';;
1283         esac
1284         if test -f "$xxx"; then
1285                 sh="$xxx"
1286         else
1287                 : Build up a list and do a single loop so we can 'break' out.
1288                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1289                 for xxx in sh bash ksh pdksh ash; do
1290                         for p in $pth; do
1291                                 try="$try ${p}/${xxx}"
1292                         done
1293                 done
1294                 for xxx in $try; do
1295                         if test -f "$xxx"; then
1296                                 sh="$xxx";
1297                                 break
1298                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1299                                 sh="$xxx";
1300                                 break
1301                         elif test -f "$xxx.exe"; then
1302                                 sh="$xxx";
1303                                 break
1304                         fi
1305                 done
1306         fi
1307         ;;
1308 esac
1309
1310 case "$sh" in
1311 '')     cat >&2 <<EOM
1312 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1313
1314 Usually it's in /bin/sh.  How did you even get this far?
1315 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1316 we'll try to straighten this all out.
1317 EOM
1318         exit 1
1319         ;;
1320 esac
1321
1322 : see if sh knows # comments
1323 if `$sh -c '#' >/dev/null 2>&1`; then
1324         shsharp=true
1325         spitshell=cat
1326         xcat=/bin/cat
1327         test -f $xcat$_exe || xcat=/usr/bin/cat
1328         if test ! -f $xcat$_exe; then
1329                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1330                         if test -f $p/cat$_exe; then
1331                                 xcat=$p/cat
1332                                 break
1333                         fi
1334                 done
1335                 if test ! -f $xcat$_exe; then
1336                         echo "Can't find cat anywhere!"
1337                         exit 1
1338                 fi
1339         fi
1340         echo "#!$xcat" >sharp
1341         $eunicefix sharp
1342         chmod +x sharp
1343         ./sharp > today
1344         if test -s today; then
1345                 sharpbang='#!'
1346         else
1347                 echo "#! $xcat" > sharp
1348                 $eunicefix sharp
1349                 chmod +x sharp
1350                 ./sharp > today
1351                 if test -s today; then
1352                         sharpbang='#! '
1353                 else
1354                         sharpbang=': use '
1355                 fi
1356         fi
1357 else
1358         echo " "
1359         echo "Your $sh doesn't grok # comments--I will strip them later on."
1360         shsharp=false
1361         cd ..
1362         echo "exec grep -v '^[  ]*#'" >spitshell
1363         chmod +x spitshell
1364         $eunicefix spitshell
1365         spitshell=`pwd`/spitshell
1366         cd UU
1367         echo "I presume that if # doesn't work, #! won't work either!"
1368         sharpbang=': use '
1369 fi
1370 rm -f sharp today
1371
1372 : figure out how to guarantee sh startup
1373 case "$startsh" in
1374 '') startsh=${sharpbang}${sh} ;;
1375 *)
1376 esac
1377 cat >sharp <<EOSS
1378 $startsh
1379 set abc
1380 test "$?abc" != 1
1381 EOSS
1382
1383 chmod +x sharp
1384 $eunicefix sharp
1385 if ./sharp; then
1386         : echo "Yup, it does."
1387 else
1388         echo "Hmm... '$startsh' does not guarantee sh startup..."
1389         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1390 fi
1391 rm -f sharp
1392
1393
1394 : Save command line options in file UU/cmdline.opt for later use in
1395 : generating config.sh.
1396 cat > cmdline.opt <<EOSH
1397 # Configure command line arguments.
1398 config_arg0='$0'
1399 config_args='$*'
1400 config_argc=$#
1401 EOSH
1402 argn=1
1403 args_exp=''
1404 args_sep=''
1405 for arg in "$@"; do
1406         cat >>cmdline.opt <<EOSH
1407 config_arg$argn='$arg'
1408 EOSH
1409         # Extreme backslashitis: replace each ' by '"'"'
1410         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1411 $arg
1412 EOC
1413         arg_exp=`cat cmdl.opt`
1414         args_exp="$args_exp$args_sep'$arg_exp'"
1415         argn=`expr $argn + 1`
1416         args_sep=' '
1417 done
1418 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1419 # used by ./hints/os2.sh
1420 rm -f cmdl.opt
1421
1422 : produce awk script to parse command line options
1423 cat >options.awk <<'EOF'
1424 BEGIN {
1425         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1426
1427         len = length(optstr);
1428         for (i = 1; i <= len; i++) {
1429                 c = substr(optstr, i, 1);
1430                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1431                 if (a == ":") {
1432                         arg[c] = 1;
1433                         i++;
1434                 }
1435                 opt[c] = 1;
1436         }
1437 }
1438 {
1439         expect = 0;
1440         str = $0;
1441         if (substr(str, 1, 1) != "-") {
1442                 printf("'%s'\n", str);
1443                 next;
1444         }
1445         len = length($0);
1446         for (i = 2; i <= len; i++) {
1447                 c = substr(str, i, 1);
1448                 if (!opt[c]) {
1449                         printf("-%s\n", substr(str, i));
1450                         next;
1451                 }
1452                 printf("-%s\n", c);
1453                 if (arg[c]) {
1454                         if (i < len)
1455                                 printf("'%s'\n", substr(str, i + 1));
1456                         else
1457                                 expect = 1;
1458                         next;
1459                 }
1460         }
1461 }
1462 END {
1463         if (expect)
1464                 print "?";
1465 }
1466 EOF
1467
1468 : process the command line options
1469 set X `for arg in "$@"; do echo "X$arg"; done |
1470         sed -e s/X// | awk -f options.awk`
1471 eval "set $*"
1472 shift
1473 rm -f options.awk
1474
1475 : set up default values
1476 fastread=''
1477 reuseval=false
1478 config_sh=''
1479 alldone=''
1480 error=''
1481 silent=''
1482 extractsh=''
1483 override=''
1484 knowitall=''
1485 rm -f optdef.sh posthint.sh
1486 cat >optdef.sh <<EOS
1487 $startsh
1488 EOS
1489
1490
1491 : option parsing
1492 while test $# -gt 0; do
1493         case "$1" in
1494         -d) shift; fastread=yes;;
1495         -e) shift; alldone=cont;;
1496         -f)
1497                 shift
1498                 cd ..
1499                 if test -r "$1"; then
1500                         config_sh="$1"
1501                 else
1502                         echo "$me: cannot read config file $1." >&2
1503                         error=true
1504                 fi
1505                 cd UU
1506                 shift;;
1507         -h) shift; error=true;;
1508         -r) shift; reuseval=true;;
1509         -s) shift; silent=true; realsilent=true;;
1510         -E) shift; alldone=exit;;
1511         -K) shift; knowitall=true;;
1512         -O) shift; override=true;;
1513         -S) shift; silent=true; extractsh=true;;
1514         -D)
1515                 shift
1516                 case "$1" in
1517                 *=)
1518                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1519                         echo "$me: ignoring -D $1" >&2
1520                         ;;
1521                 *=*) echo "$1" | \
1522                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1523                 *) echo "$1='define'" >> optdef.sh;;
1524                 esac
1525                 shift
1526                 ;;
1527         -U)
1528                 shift
1529                 case "$1" in
1530                 *=) echo "$1" >> optdef.sh;;
1531                 *=*)
1532                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1533                         echo "$me: ignoring -U $1" >&2
1534                         ;;
1535                 *) echo "$1='undef'" >> optdef.sh;;
1536                 esac
1537                 shift
1538                 ;;
1539         -A)
1540             shift
1541             xxx=''
1542             yyy="$1"
1543             zzz=''
1544             uuu=undef
1545             case "$yyy" in
1546             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1547                  case "$zzz" in
1548                  *:*) zzz='' ;;
1549                  *)   xxx=append
1550                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1551                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1552                  esac
1553                  ;;
1554             esac
1555             case "$xxx" in
1556             '')  case "$yyy" in
1557                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1558                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1559                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1560                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1561                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1562                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1563                  esac
1564                  ;;       
1565             esac
1566             case "$xxx" in
1567             append)
1568                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1569             clear)
1570                 echo "$yyy=''"                  >> posthint.sh ;;
1571             define)
1572                 case "$zzz" in
1573                 '') zzz=define ;;
1574                 esac
1575                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1576             eval)
1577                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1578             prepend)
1579                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1580             undef)
1581                 case "$zzz" in
1582                 '') zzz="$uuu" ;;
1583                 esac
1584                 echo "$yyy=$zzz"                >> posthint.sh ;;
1585             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1586             esac
1587             shift
1588             ;;
1589         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1590             exit 0;;
1591         --) break;;
1592         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1593         *) break;;
1594         esac
1595 done
1596
1597 case "$error" in
1598 true)
1599         cat >&2 <<EOM
1600 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1601                  [-U symbol] [-U symbol=] [-A command:symbol...]
1602   -d : use defaults for all answers.
1603   -e : go on without questioning past the production of config.sh.
1604   -f : specify an alternate default configuration file.
1605   -h : print this help message and exit (with an error status).
1606   -r : reuse C symbols value if possible (skips costly nm extraction).
1607   -s : silent mode, only echoes questions and essential information.
1608   -D : define symbol to have some value:
1609          -D symbol         symbol gets the value 'define'
1610          -D symbol=value   symbol gets the value 'value'
1611   -E : stop at the end of questions, after having produced config.sh.
1612   -K : do not use unless you know what you are doing.
1613   -O : let -D and -U override definitions from loaded configuration file.
1614   -S : perform variable substitutions on all .SH files (can mix with -f)
1615   -U : undefine symbol:
1616          -U symbol    symbol gets the value 'undef'
1617          -U symbol=   symbol gets completely empty
1618   -A : manipulate symbol after the platform specific hints have been applied:
1619          -A symbol=value                append " "value to symbol
1620          -A append:symbol=value         append value to symbol
1621          -A define:symbol=value         define symbol to have value
1622          -A clear:symbol                define symbol to be ''
1623          -A define:symbol               define symbol to be 'define'
1624          -A eval:symbol=value           define symbol to be eval of value
1625          -A prepend:symbol=value        prepend value to symbol
1626          -A undef:symbol                define symbol to be 'undef'
1627          -A undef:symbol=               define symbol to be ''
1628   -V : print version number and exit (with a zero status).
1629 EOM
1630         exit 1
1631         ;;
1632 esac
1633
1634 : Sanity checks
1635 case "$fastread$alldone" in
1636 yescont|yesexit) ;;
1637 *)
1638         case "$extractsh" in
1639         true) ;;
1640         *)
1641                 if test ! -t 0; then
1642                         echo "Say 'sh Configure', not 'sh <Configure'"
1643                         exit 1
1644                 fi
1645                 ;;
1646         esac
1647         ;;
1648 esac
1649
1650 exec 4>&1
1651 case "$silent" in
1652 true) exec 1>/dev/null;;
1653 esac
1654
1655 : run the defines and the undefines, if any, but leave the file out there...
1656 touch optdef.sh
1657 . ./optdef.sh
1658 : create the posthint manipulation script and leave the file out there...
1659 touch posthint.sh
1660
1661 : set package name
1662 package=perl5
1663 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1664 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1665 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1666 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1667 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1668 esac
1669
1670 : Some greps do not return status, grrr.
1671 echo "grimblepritz" >grimble
1672 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1673         contains=contains
1674 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1675         contains=grep
1676 else
1677         contains=contains
1678 fi
1679 rm -f grimble
1680 : the following should work in any shell
1681 case "$contains" in
1682 contains*)
1683         echo " "
1684         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1685         cat >contains <<'EOSS'
1686 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1687 EOSS
1688 chmod +x contains
1689 esac
1690
1691 : Find the path to the source tree
1692 case "$src" in
1693 '') case "$0" in
1694     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1695          case "$src" in
1696          /*)    ;;
1697          .)     ;;
1698          *)     src=`cd ../$src && pwd` ;;
1699          esac
1700          ;;
1701     *)   src='.';;
1702     esac;;
1703 esac
1704 case "$src" in
1705 '')     src=/
1706         rsrc=/
1707         ;;
1708 /*) rsrc="$src";;
1709 *) rsrc="../$src";;
1710 esac
1711 if test -f $rsrc/Configure && \
1712         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1713 then
1714    : found it, so we are ok.
1715 else
1716         rsrc=''
1717         for src in . .. ../.. ../../.. ../../../..; do
1718                 if test -f ../$src/Configure && \
1719                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1720                 then
1721                         rsrc=../$src
1722                         break
1723                 fi
1724         done
1725 fi
1726 case "$rsrc" in
1727 '')
1728         cat <<EOM >&4
1729
1730 Sorry, I can't seem to locate the source dir for $package.  Please start
1731 Configure with an explicit path -- i.e. /some/path/Configure.
1732
1733 EOM
1734         exit 1
1735         ;;
1736 ../.)   rsrc='..';;
1737 *)
1738         echo " "
1739         echo "Sources for $package found in \"$src\"." >&4
1740         ;;
1741 esac
1742
1743 : script used to extract .SH files with variable substitutions
1744 cat >extract <<'EOS'
1745 PERL_CONFIG_SH=true
1746 echo "Doing variable substitutions on .SH files..."
1747 if test -f MANIFEST; then
1748         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1749 else
1750         echo "(Looking for .SH files under the source directory.)"
1751         set x `(cd "$src"; find . -name "*.SH" -print)`
1752 fi
1753 shift
1754 case $# in
1755 0) set x `(cd "$src"; echo *.SH)`; shift;;
1756 esac
1757 if test ! -f "$src/$1"; then
1758         shift
1759 fi
1760 mkdir_p='
1761 name=$1;
1762 create="";
1763 while test $name; do
1764         if test ! -d "$name"; then
1765                 create="$name $create";
1766                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1767                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1768         else
1769                 name="";
1770         fi;
1771 done;
1772 for file in $create; do
1773         mkdir $file;
1774 done
1775 '
1776 for file in $*; do
1777         case "$src" in
1778         ".")
1779                 case "$file" in
1780                 */*)
1781                         dir=`expr X$file : 'X\(.*\)/'`
1782                         file=`expr X$file : 'X.*/\(.*\)'`
1783                         (cd "$dir" && . ./$file)
1784                         ;;
1785                 *)
1786                         . ./$file
1787                         ;;
1788                 esac
1789                 ;;
1790         *)
1791                 case "$file" in
1792                 */*)
1793                         dir=`expr X$file : 'X\(.*\)/'`
1794                         file=`expr X$file : 'X.*/\(.*\)'`
1795                         (set x $dir; shift; eval $mkdir_p)
1796                         sh <"$src/$dir/$file"
1797                         ;;
1798                 *)
1799                         sh <"$src/$file"
1800                         ;;
1801                 esac
1802                 ;;
1803         esac
1804 done
1805 if test -f "$src/config_h.SH"; then
1806         if test ! -f config.h; then
1807         : oops, they left it out of MANIFEST, probably, so do it anyway.
1808         . "$src/config_h.SH"
1809         fi
1810 fi
1811 EOS
1812
1813 : extract files and exit if asked to do so
1814 case "$extractsh" in
1815 true)
1816         case "$realsilent" in
1817         true) ;;
1818         *) exec 1>&4;;
1819         esac
1820         case "$config_sh" in
1821         '') config_sh='config.sh';;
1822         esac
1823         echo " "
1824         echo "Fetching answers from $config_sh..."
1825         cd ..
1826         . $config_sh
1827         test "$override" && . ./optdef.sh
1828         echo " "
1829         . UU/extract
1830         rm -rf UU
1831         echo "Extraction done."
1832         exit 0
1833         ;;
1834 esac
1835
1836 : Eunice requires " " instead of "", can you believe it
1837 echo " "
1838 : Here we go...
1839 echo "Beginning of configuration questions for $package."
1840
1841 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1842
1843 : first determine how to suppress newline on echo command
1844 echo " "
1845 echo "Checking echo to see how to suppress newlines..."
1846 (echo "hi there\c" ; echo " ") >.echotmp
1847 if $contains c .echotmp >/dev/null 2>&1 ; then
1848         echo "...using -n."
1849         n='-n'
1850         c=''
1851 else
1852         cat <<'EOM'
1853 ...using \c
1854 EOM
1855         n=''
1856         c='\c'
1857 fi
1858 echo $n "The star should be here-->$c"
1859 echo '*'
1860 rm -f .echotmp
1861
1862 : Now test for existence of everything in MANIFEST
1863 echo " "
1864 if test -f "$rsrc/MANIFEST"; then
1865         echo "First let's make sure your kit is complete.  Checking..." >&4
1866         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1867         rm -f missing
1868         tmppwd=`pwd`
1869         for filelist in x??; do
1870                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1871         done
1872         if test -s missing; then
1873                 cat missing >&4
1874                 cat >&4 <<'EOM'
1875
1876 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1877
1878 You have the option of continuing the configuration process, despite the
1879 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1880 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1881 and contact the author (perlbug@perl.org).
1882
1883 EOM
1884                 echo $n "Continue? [n] $c" >&4
1885                 read ans
1886                 case "$ans" in
1887                 y*)
1888                         echo "Continuing..." >&4
1889                         rm -f missing
1890                         ;;
1891                 *)
1892                         echo "ABORTING..." >&4
1893                         kill $$
1894                         ;;
1895                 esac
1896         else
1897                 echo "Looks good..."
1898         fi
1899 else
1900         echo "There is no MANIFEST file.  I hope your kit is complete !"
1901 fi
1902 rm -f missing x??
1903
1904 echo " "
1905 : Find the appropriate value for a newline for tr
1906 if test -n "$DJGPP"; then
1907        trnl='\012'
1908 fi
1909 if test X"$trnl" = X; then
1910         case "`echo foo|tr '\n' x 2>/dev/null`" in
1911         foox) trnl='\n' ;;
1912         esac
1913 fi
1914 if test X"$trnl" = X; then
1915         case "`echo foo|tr '\012' x 2>/dev/null`" in
1916         foox) trnl='\012' ;;
1917         esac
1918 fi
1919 if test X"$trnl" = X; then
1920        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1921        fooxy) trnl='\n\r' ;;
1922        esac
1923 fi
1924 if test X"$trnl" = X; then
1925         cat <<EOM >&2
1926
1927 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1928
1929 EOM
1930         exit 1
1931 fi
1932
1933 : compute the number of columns on the terminal for proper question formatting
1934 case "$COLUMNS" in
1935 '') COLUMNS='80';;
1936 esac
1937
1938 : set up the echo used in my read
1939 myecho="case \"\$xxxm\" in
1940 '') echo $n \"\$rp $c\" >&4;;
1941 *) case \"\$rp\" in
1942         '') echo $n \"[\$xxxm] $c\";;
1943         *)
1944                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1945                         echo \"\$rp\" >&4
1946                         echo $n \"[\$xxxm] $c\" >&4
1947                 else
1948                         echo $n \"\$rp [\$xxxm] $c\" >&4
1949                 fi
1950                 ;;
1951         esac;;
1952 esac"
1953
1954 : now set up to do reads with possible shell escape and default assignment
1955 cat <<EOSC >myread
1956 $startsh
1957 xxxm=\$dflt
1958 $myecho
1959 ans='!'
1960 case "\$fastread" in
1961 yes) case "\$dflt" in
1962         '') ;;
1963         *) ans='';
1964                 case "\$silent-\$rp" in
1965                 true-) ;;
1966                 *) echo " " >&4;;
1967                 esac;;
1968         esac;;
1969 *) case "\$silent" in
1970         true) case "\$rp" in
1971                 '') ans='';;
1972                 esac;;
1973         esac;;
1974 esac
1975 while expr "X\$ans" : "X!" >/dev/null; do
1976         read answ
1977         set x \$xxxm
1978         shift
1979         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1980         case  "\$answ" in
1981         "!")
1982                 sh 1>&4
1983                 echo " "
1984                 $myecho
1985                 ;;
1986         !*)
1987                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1988                 shift
1989                 sh 1>&4 -c "\$*"
1990                 echo " "
1991                 $myecho
1992                 ;;
1993         "\$ans")
1994                 case "\$ans" in
1995                 \\&*)
1996                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1997                         shift
1998                         case "\$1" in
1999                         -d)
2000                                 fastread=yes
2001                                 echo "(OK, I'll run with -d after this question.)" >&4
2002                                 ;;
2003                         -*)
2004                                 echo "*** Sorry, \$1 not supported yet." >&4
2005                                 ;;
2006                         esac
2007                         $myecho
2008                         ans=!
2009                         ;;
2010                 esac;;
2011         *)
2012                 case "\$aok" in
2013                 y)
2014                         echo "*** Substitution done -- please confirm."
2015                         xxxm="\$ans"
2016                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2017                         xxxm="\$ans"
2018                         ans=!
2019                         ;;
2020                 *)
2021                         echo "*** Error -- try again."
2022                         ans=!
2023                         ;;
2024                 esac
2025                 $myecho
2026                 ;;
2027         esac
2028         case "\$ans\$xxxm\$nostick" in
2029         '')
2030                 ans=!
2031                 $myecho
2032                 ;;
2033         esac
2034 done
2035 case "\$ans" in
2036 '') ans="\$xxxm";;
2037 esac
2038 EOSC
2039
2040 : create .config dir to save info across Configure sessions
2041 test -d ../.config || mkdir ../.config
2042 cat >../.config/README <<EOF
2043 This directory created by Configure to save information that should
2044 persist across sessions for $package.
2045
2046 You may safely delete it if you wish.
2047 EOF
2048
2049 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2050 case "$usedevel" in
2051 $define|true|[yY]*) ;;
2052 *) case "$xversion" in
2053    *[13579])
2054         cat >&4 <<EOH
2055 *** WHOA THERE!!! ***
2056
2057     This is an UNSTABLE DEVELOPMENT release.
2058     The version of this $package distribution is $xversion, that is, odd,
2059     (as opposed to even) and that signifies a development release.
2060     If you want a maintenance release, you want an even-numbered version.
2061
2062     Do ***NOT*** install this into production use.
2063     Data corruption and crashes are possible.
2064
2065     It is most seriously suggested that you do not continue any further
2066     unless you want to help in developing and debugging Perl.
2067
2068     If you *still* want to build perl, you can answer 'y' now,
2069     or pass -Dusedevel to Configure.
2070
2071 EOH
2072         rp='Do you really want to continue?'
2073         dflt='n'
2074         . ./myread
2075         case "$ans" in
2076         [yY]) echo >&4 "Okay, continuing."
2077               usedevel="$define" ;;
2078         *) echo >&4 "Okay, bye."
2079            exit 1
2080            ;;
2081         esac
2082         ;;
2083     esac
2084     ;;
2085 esac
2086 case "$usedevel" in
2087 $define|true|[yY]*)
2088         case "$versiononly" in
2089         '') versiononly="$define" ;;
2090         esac
2091         case "$installusrbinperl" in
2092         '') installusrbinperl="$undef" ;;
2093         esac
2094         ;;
2095 esac
2096
2097 : general instructions
2098 needman=true
2099 firsttime=true
2100 user=`(logname) 2>/dev/null`
2101 case "$user" in
2102 '') user=`whoami 2>&1`;;
2103 esac
2104 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2105         firsttime=false
2106         echo " "
2107         rp='Would you like to see the instructions?'
2108         dflt=n
2109         . ./myread
2110         case "$ans" in
2111         [yY]*) ;;
2112         *) needman=false;;
2113         esac
2114 fi
2115 if $needman; then
2116         cat <<EOH
2117
2118 This installation shell script will examine your system and ask you questions
2119 to determine how the perl5 package should be installed. If you get
2120 stuck on a question, you may use a ! shell escape to start a subshell or
2121 execute a command.  Many of the questions will have default answers in square
2122 brackets; typing carriage return will give you the default.
2123
2124 On some of the questions which ask for file or directory names you are allowed
2125 to use the ~name construct to specify the login directory belonging to "name",
2126 even if you don't have a shell which knows about that.  Questions where this is
2127 allowed will be marked "(~name ok)".
2128
2129 EOH
2130         rp=''
2131         dflt='Type carriage return to continue'
2132         . ./myread
2133         cat <<'EOH'
2134
2135 The prompter used in this script allows you to use shell variables and
2136 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2137 in the default answer, as if the default line was a set of arguments given to a
2138 script shell.  This means you may also use $* to repeat the whole default line,
2139 so you do not have to re-type everything to add something to the default.
2140
2141 Everytime there is a substitution, you will have to confirm.  If there is an
2142 error (e.g. an unmatched backtick), the default answer will remain unchanged
2143 and you will be prompted again.
2144
2145 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2146 the questions and use the computed defaults (or the previous answers if there
2147 was already a config.sh file). Type 'Configure -h' for a list of options.
2148 You may also start interactively and then answer '& -d' at any prompt to turn
2149 on the non-interactive behaviour for the remainder of the execution.
2150
2151 EOH
2152         . ./myread
2153         cat <<EOH
2154
2155 Much effort has been expended to ensure that this shell script will run on any
2156 Unix system.  If despite that it blows up on yours, your best bet is to edit
2157 Configure and run it again.  If you can't run Configure for some reason,
2158 you'll have to generate a config.sh file by hand.  Whatever problems you
2159 have, let me (perlbug@perl.org) know how I blew it.
2160
2161 This installation script affects things in two ways:
2162
2163 1) it may do direct variable substitutions on some of the files included
2164    in this kit.
2165 2) it builds a config.h file for inclusion in C programs.  You may edit
2166    any of these files as the need arises after running this script.
2167
2168 If you make a mistake on a question, there is no easy way to back up to it
2169 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2170 files.  Configure will offer to let you do this before it runs the SH files.
2171
2172 EOH
2173         dflt='Type carriage return to continue'
2174         . ./myread
2175         case "$firsttime" in
2176         true) echo $user >>../.config/instruct;;
2177         esac
2178 fi
2179
2180 : find out where common programs are
2181 echo " "
2182 echo "Locating common programs..." >&4
2183 cat <<EOSC >loc
2184 $startsh
2185 case \$# in
2186 0) exit 1;;
2187 esac
2188 thing=\$1
2189 shift
2190 dflt=\$1
2191 shift
2192 for dir in \$*; do
2193         case "\$thing" in
2194         .)
2195         if test -d \$dir/\$thing; then
2196                 echo \$dir
2197                 exit 0
2198         fi
2199         ;;
2200         *)
2201         for thisthing in \$dir/\$thing; do
2202                 : just loop through to pick last item
2203         done
2204         if test -f \$thisthing; then
2205                 echo \$thisthing
2206                 exit 0
2207         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2208                 echo \$thisthing
2209                 exit 0
2210         elif test -f \$dir/\$thing.exe; then
2211                 if test -n "$DJGPP"; then
2212                         echo \$dir/\$thing.exe
2213                 elif test "$eunicefix" != ":"; then
2214                         : on Eunice apparently
2215                         echo \$dir/\$thing
2216                         exit 0
2217                 fi
2218                 exit 0
2219         fi
2220         ;;
2221         esac
2222 done
2223 echo \$dflt
2224 exit 1
2225 EOSC
2226 chmod +x loc
2227 $eunicefix loc
2228 loclist="
2229 awk
2230 cat
2231 chmod
2232 comm
2233 cp
2234 echo
2235 expr
2236 grep
2237 ls
2238 mkdir
2239 rm
2240 sed
2241 sort
2242 touch
2243 tr
2244 uniq
2245 "
2246 trylist="
2247 Mcc
2248 ar
2249 bison
2250 byacc
2251 cpp
2252 csh
2253 date
2254 egrep
2255 gmake
2256 gzip
2257 less
2258 ln
2259 make
2260 more
2261 nm
2262 nroff
2263 pg
2264 test
2265 uname
2266 zip
2267 "
2268 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2269 pth="$pth /lib /usr/lib"
2270 for file in $loclist; do
2271         eval xxx=\$$file
2272         case "$xxx" in
2273         /*|?:[\\/]*)
2274                 if test -f "$xxx"; then
2275                         : ok
2276                 else
2277                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2278                         xxx=`./loc $file $file $pth`
2279                 fi
2280                 ;;
2281         '') xxx=`./loc $file $file $pth`;;
2282         *) xxx=`./loc $xxx $xxx $pth`;;
2283         esac
2284         eval $file=$xxx$_exe
2285         eval _$file=$xxx
2286         case "$xxx" in
2287         /*)
2288                 echo $file is in $xxx.
2289                 ;;
2290         ?:[\\/]*)
2291                 echo $file is in $xxx.
2292                 ;;
2293         *)
2294                 echo "I don't know where '$file' is, and my life depends on it." >&4
2295                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2296                 exit 1
2297                 ;;
2298         esac
2299 done
2300 echo " "
2301 echo "Don't worry if any of the following aren't found..."
2302 say=offhand
2303 for file in $trylist; do
2304         eval xxx=\$$file
2305         case "$xxx" in
2306         /*|?:[\\/]*)
2307                 if test -f "$xxx"; then
2308                         : ok
2309                 else
2310                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2311                         xxx=`./loc $file $file $pth`
2312                 fi
2313                 ;;
2314         '') xxx=`./loc $file $file $pth`;;
2315         *) xxx=`./loc $xxx $xxx $pth`;;
2316         esac
2317         eval $file=$xxx$_exe
2318         eval _$file=$xxx
2319         case "$xxx" in
2320         /*)
2321                 echo $file is in $xxx.
2322                 ;;
2323         ?:[\\/]*)
2324                 echo $file is in $xxx.
2325                 ;;
2326         *)
2327                 echo "I don't see $file out there, $say."
2328                 say=either
2329                 ;;
2330         esac
2331 done
2332 case "$egrep" in
2333 egrep)
2334         echo "Substituting grep for egrep."
2335         egrep=$grep
2336         _egrep=$grep
2337         ;;
2338 esac
2339 case "$ln" in
2340 ln)
2341         echo "Substituting cp for ln."
2342         ln=$cp
2343         _ln=$cp
2344         ;;
2345 esac
2346 case "$make" in
2347 make)   
2348         case "$gmake" in
2349         gmake)
2350         echo "I can't find make or gmake, and my life depends on it." >&4
2351         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2352         exit 1
2353         ;;
2354         esac
2355         ;;
2356 esac    
2357 case "$gmake" in
2358 gmake)  ;;
2359 *)      # We can't have osname yet.
2360         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2361                 # Assume that gmake, if found, is definitely GNU make
2362                 # and prefer it over the system make.
2363                 echo "Substituting gmake for make."
2364                 make=$gmake
2365                 _make=$gmake
2366         fi
2367         ;;
2368 esac
2369 case "$test" in
2370 test)
2371         echo "Hopefully test is built into your sh."
2372         ;;
2373 *)
2374         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2375                 echo "Using the test built into your sh."
2376                 test=test
2377                 _test=test
2378         fi
2379         ;;
2380 esac
2381 case "$echo" in
2382 echo)
2383         echo "Hopefully echo is built into your sh."
2384         ;;
2385 '') ;;
2386 *)
2387         echo " "
2388 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2389         $echo $n "hi there$c" >foo1
2390         echo $n "hi there$c" >foo2
2391         if cmp foo1 foo2 >/dev/null 2>&1; then
2392                 echo "They are compatible.  In fact, they may be identical."
2393         else
2394                 case "$n" in
2395                 '-n') n='' c='\c';;
2396                 *) n='-n' c='';;
2397                 esac
2398                 cat <<FOO
2399 They are not compatible!  You are probably running ksh on a non-USG system.
2400 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2401 have echo built in and we may have to run some Bourne shell scripts.  That
2402 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2403
2404 FOO
2405                 $echo $n "The star should be here-->$c"
2406                 $echo "*"
2407         fi
2408         $rm -f foo1 foo2
2409         ;;
2410 esac
2411
2412 cat <<EOS >trygcc
2413 $startsh
2414 EOS
2415 cat <<'EOSC' >>trygcc
2416 case "$cc" in
2417 '') ;;
2418 *)  $rm -f try try.*
2419     $cat >try.c <<EOM
2420 int main(int argc, char *argv[]) {
2421   return 0;
2422 }
2423 EOM
2424     if $cc -o try $ccflags $ldflags try.c; then
2425        :
2426     else
2427         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2428         despair=yes
2429         trygcc=yes
2430         case "$cc" in
2431         *gcc*) trygcc=no ;;
2432         esac
2433         case "`$cc -v -c try.c 2>&1`" in
2434         *gcc*) trygcc=no ;;
2435         esac
2436         if $test X"$trygcc" = Xyes; then
2437             if gcc -o try -c try.c; then
2438                 echo " "
2439                 echo "You seem to have a working gcc, though." >&4
2440                 rp="Would you like to use it?"
2441                 dflt=y
2442                 if $test -f myread; then
2443                     . ./myread
2444                 else
2445                     if $test -f UU/myread; then
2446                         . ./UU/myread
2447                     else
2448                         echo "Cannot find myread, sorry.  Aborting." >&2
2449                         exit 1
2450                     fi
2451                 fi  
2452                 case "$ans" in
2453                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2454                        if $test -f usethreads.cbu; then
2455                            $cat >&4 <<EOM 
2456
2457 *** However, any setting of the C compiler flags (e.g. for thread support)
2458 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2459 *** (together with e.g. -Dusethreads).
2460
2461 EOM
2462                        fi;;
2463                 esac
2464             fi
2465         fi
2466     fi
2467     $rm -f try try.*
2468     ;;
2469 esac
2470 EOSC
2471
2472 cat <<EOS >checkcc
2473 $startsh
2474 EOS
2475 cat <<'EOSC' >>checkcc
2476 case "$cc" in        
2477 '') ;;
2478 *)  $rm -f try try.*              
2479     $cat >try.c <<EOM
2480 int main(int argc, char *argv[]) {
2481   return 0;
2482 }
2483 EOM
2484     if $cc -o try $ccflags $ldflags try.c; then
2485        :
2486     else
2487         if $test X"$despair" = Xyes; then
2488            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2489         fi
2490         $cat >&4 <<EOM         
2491 You need to find a working C compiler.
2492 Either (purchase and) install the C compiler supplied by your OS vendor,
2493 or for a free C compiler try http://gcc.gnu.org/
2494 I cannot continue any further, aborting.
2495 EOM
2496         exit 1
2497     fi
2498     $rm -f try try.*
2499     ;;
2500 esac
2501 EOSC
2502
2503 : determine whether symbolic links are supported
2504 echo " "
2505 $touch blurfl
2506 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2507         echo "Symbolic links are supported." >&4
2508         lns="$ln -s"
2509 else
2510         echo "Symbolic links are NOT supported." >&4
2511         lns="$ln"
2512 fi
2513 $rm -f blurfl sym
2514
2515 : determine whether symbolic links are supported
2516 echo " "
2517 case "$lns" in
2518 *"ln"*" -s")
2519         echo "Checking how to test for symbolic links..." >&4
2520         $lns blurfl sym
2521         if $test "X$issymlink" = X; then
2522                 case "$newsh" in
2523                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2524                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 esac
2526                 if test $? = 0; then
2527                         issymlink="test -h"
2528                 else
2529                         echo "Your builtin 'test -h' may be broken." >&4
2530                         case "$test" in
2531                         /*)     ;;
2532                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2533                                 for p in $pth
2534                                 do
2535                                         if test -f "$p/$test"; then
2536                                                 test="$p/$test"
2537                                                 break
2538                                         fi
2539                                 done
2540                                 ;;
2541                         esac
2542                         case "$test" in
2543                         /*)
2544                                 echo "Trying external '$test -h'." >&4
2545                                 issymlink="$test -h"
2546                                 if $test ! -h sym >/dev/null 2>&1; then
2547                                         echo "External '$test -h' is broken, too." >&4
2548                                         issymlink=''
2549                                 fi
2550                                 ;;
2551                         *)      issymlink='' ;;
2552                         esac
2553                 fi              
2554         fi
2555         if $test "X$issymlink" = X; then
2556                 if $test -L sym 2>/dev/null; then
2557                         issymlink="$test -L"
2558                         echo "The builtin '$test -L' worked." >&4
2559                 fi
2560         fi
2561         if $test "X$issymlink" != X; then
2562                 echo "You can test for symbolic links with '$issymlink'." >&4
2563         else
2564                 echo "I do not know how you can test for symbolic links." >&4
2565         fi
2566         $rm -f blurfl sym
2567         ;;
2568 *)      echo "No symbolic links, so not testing for their testing..." >&4
2569         ;;
2570 esac
2571 echo " "
2572
2573
2574 case "$mksymlinks" in
2575 $define|true|[yY]*)
2576         case "$src" in
2577         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2578                 exit 1
2579                 ;;
2580         *)      case "$lns:$issymlink" in
2581                 *"ln"*" -s:"*"test -"?)
2582                         echo "Creating the symbolic links..." >&4
2583                         echo "(First creating the subdirectories...)" >&4
2584                         cd ..
2585                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2586                                 read directory
2587                                 test -z "$directory" && break
2588                                 mkdir -p $directory
2589                         done
2590                         # Sanity check 1.
2591                         if test ! -d t/base; then
2592                                 echo "Failed to create the subdirectories.  Aborting." >&4
2593                                 exit 1
2594                         fi
2595                         echo "(Then creating the symlinks...)" >&4
2596                         awk '{print $1}' $src/MANIFEST | while true; do
2597                                 read filename
2598                                 test -z "$filename" && break
2599                                 if test -f $filename; then
2600                                         if $issymlink $filename; then
2601                                                 rm -f $filename
2602                                         fi
2603                                 fi
2604                                 if test -f $filename; then
2605                                         echo "$filename already exists, not symlinking."
2606                                 else
2607                                         ln -s $src/$filename $filename
2608                                 fi
2609                         done
2610                         # Sanity check 2.
2611                         if test ! -f t/base/lex.t; then
2612                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2613                                 exit 1
2614                         fi
2615                         cd UU
2616                         ;;
2617                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2618                         ;;
2619                 esac
2620                 ;;
2621         esac
2622         ;;
2623 esac
2624
2625
2626 case "$usecrosscompile" in
2627 $define|true|[yY]*)
2628         $echo "Cross-compiling..."
2629         croak=''
2630         case "$cc" in
2631         *-*-gcc) # A cross-compiling gcc, probably.
2632             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2633             ar=$targetarch-ar
2634             # leave out ld, choosing it is more complex
2635             nm=$targetarch-nm
2636             ranlib=$targetarch-ranlib
2637             $echo 'extern int foo;' > try.c
2638             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2639             shift
2640             if $test $# -gt 0; then
2641                 incpth="$incpth $*"
2642                 incpth="`$echo $incpth|$sed 's/^ //'`"
2643                 echo "Guessing incpth '$incpth'." >&4
2644                 for i in $*; do
2645                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2646                     if $test -d $j; then
2647                         libpth="$libpth $j"
2648                     fi
2649                 done   
2650                 libpth="`$echo $libpth|$sed 's/^ //'`"
2651                 echo "Guessing libpth '$libpth'." >&4
2652             fi
2653             $rm -f try.c
2654             ;;
2655         esac
2656         case "$targetarch" in
2657         '') echo "Targetarch not defined." >&4; croak=y ;;
2658         *)  echo "Using targetarch $targetarch." >&4 ;;
2659         esac
2660         case "$incpth" in
2661         '') echo "Incpth not defined." >&4; croak=y ;;
2662         *)  echo "Using incpth '$incpth'." >&4 ;;
2663         esac
2664         case "$libpth" in
2665         '') echo "Libpth not defined." >&4; croak=y ;;
2666         *)  echo "Using libpth '$libpth'." >&4 ;;
2667         esac
2668         case "$usrinc" in
2669         '') for i in $incpth; do
2670                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2671                     usrinc=$i
2672                     echo "Guessing usrinc $usrinc." >&4
2673                     break
2674                 fi
2675             done
2676             case "$usrinc" in
2677             '') echo "Usrinc not defined." >&4; croak=y ;;
2678             esac
2679             ;;
2680         *)  echo "Using usrinc $usrinc." >&4 ;;
2681         esac
2682         case "$targethost" in
2683         '') echo "Targethost not defined." >&4; croak=y ;;
2684         *)  echo "Using targethost $targethost." >&4
2685         esac
2686         locincpth=' '
2687         loclibpth=' '
2688         case "$croak" in
2689         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2690         esac
2691         case "$src" in
2692         /*) run=$src/Cross/run
2693             targetmkdir=$src/Cross/mkdir
2694             to=$src/Cross/to
2695             from=$src/Cross/from
2696             ;;
2697         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2698             run=$pwd/Cross/run
2699             targetmkdir=$pwd/Cross/mkdir
2700             to=$pwd/Cross/to
2701             from=$pwd/Cross/from
2702             ;;
2703         esac
2704         case "$targetrun" in
2705         '') targetrun=ssh ;;
2706         esac
2707         case "$targetto" in
2708         '') targetto=scp ;;
2709         esac
2710         case "$targetfrom" in
2711         '') targetfrom=scp ;;
2712         esac
2713         run=$run-$targetrun
2714         to=$to-$targetto
2715         from=$from-$targetfrom
2716         case "$targetdir" in
2717         '')  targetdir=/tmp
2718              echo "Guessing targetdir $targetdir." >&4
2719              ;;
2720         esac
2721         case "$targetuser" in
2722         '')  targetuser=root
2723              echo "Guessing targetuser $targetuser." >&4
2724              ;;
2725         esac
2726         case "$targetfrom" in
2727         scp)    q=-q ;;
2728         *)      q='' ;;
2729         esac
2730         case "$targetrun" in
2731         ssh|rsh)
2732             cat >$run <<EOF
2733 #!/bin/sh
2734 case "\$1" in
2735 -cwd)
2736   shift
2737   cwd=\$1
2738   shift
2739   ;;
2740 esac
2741 case "\$cwd" in
2742 '') cwd=$targetdir ;;
2743 esac
2744 exe=\$1
2745 shift
2746 if $test ! -f \$exe.xok; then
2747   $to \$exe
2748   $touch \$exe.xok
2749 fi
2750 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2751 EOF
2752             ;;
2753         *)  echo "Unknown targetrun '$targetrun'" >&4
2754             exit 1
2755             ;;
2756         esac
2757         case "$targetmkdir" in
2758         */Cross/mkdir)
2759             cat >$targetmkdir <<EOF
2760 #!/bin/sh
2761 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2762 EOF
2763             $chmod a+rx $targetmkdir
2764             ;;
2765         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2766             exit 1
2767             ;;
2768         esac
2769         case "$targetto" in
2770         scp|rcp)
2771             cat >$to <<EOF
2772 #!/bin/sh
2773 for f in \$@
2774 do
2775   case "\$f" in
2776   /*)
2777     $targetmkdir \`dirname \$f\`
2778     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2779     ;;
2780   *)
2781     $targetmkdir $targetdir/\`dirname \$f\`
2782     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2783     ;;
2784   esac
2785 done
2786 exit 0
2787 EOF
2788             ;;
2789         cp) cat >$to <<EOF
2790 #!/bin/sh
2791 for f in \$@
2792 do
2793   case "\$f" in
2794   /*)
2795     $mkdir -p $targetdir/\`dirname \$f\`
2796     $cp \$f $targetdir/\$f || exit 1
2797     ;;
2798   *)
2799     $targetmkdir $targetdir/\`dirname \$f\`
2800     $cp \$f $targetdir/\$f || exit 1
2801     ;;
2802   esac
2803 done
2804 exit 0
2805 EOF
2806             ;;
2807         *)  echo "Unknown targetto '$targetto'" >&4
2808             exit 1
2809             ;;
2810         esac
2811         case "$targetfrom" in
2812         scp|rcp)
2813           cat >$from <<EOF
2814 #!/bin/sh
2815 for f in \$@
2816 do
2817   $rm -f \$f
2818   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2819 done
2820 exit 0
2821 EOF
2822             ;;
2823         cp) cat >$from <<EOF
2824 #!/bin/sh
2825 for f in \$@
2826 do
2827   $rm -f \$f
2828   cp $targetdir/\$f . || exit 1
2829 done
2830 exit 0
2831 EOF
2832             ;;
2833         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2834             exit 1
2835             ;;
2836         esac
2837         if $test ! -f $run; then
2838             echo "Target 'run' script '$run' not found." >&4
2839         else
2840             $chmod a+rx $run
2841         fi
2842         if $test ! -f $to; then
2843             echo "Target 'to' script '$to' not found." >&4
2844         else
2845             $chmod a+rx $to
2846         fi
2847         if $test ! -f $from; then
2848             echo "Target 'from' script '$from' not found." >&4
2849         else
2850             $chmod a+rx $from
2851         fi
2852         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2853             exit 1
2854         fi
2855         cat >&4 <<EOF
2856 Using '$run' for remote execution,
2857 and '$from' and '$to'
2858 for remote file transfer.
2859 EOF
2860         ;;
2861 *)      run=''
2862         to=:
2863         from=:
2864         usecrosscompile='undef'
2865         targetarch=''
2866         ;;
2867 esac
2868
2869 : see whether [:lower:] and [:upper:] are supported character classes
2870 echo " "
2871 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2872 ABYZ)
2873         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2874         up='[:upper:]'
2875         low='[:lower:]'
2876         ;;
2877 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2878         # (0xc9 and 0xd1), therefore that is a nice testing point.
2879         if test "X$up" = X -o "X$low" = X; then
2880             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2881             ij) up='[A-Z]'
2882                 low='[a-z]'
2883                 ;;
2884             esac
2885         fi
2886         if test "X$up" = X -o "X$low" = X; then
2887             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2888             ij) up='A-Z'
2889                 low='a-z'
2890                 ;;
2891             esac
2892         fi
2893         if test "X$up" = X -o "X$low" = X; then
2894             case "`echo IJ | od -x 2>/dev/null`" in
2895             *C9D1*|*c9d1*)
2896                 echo "Hey, this might be EBCDIC." >&4
2897                 if test "X$up" = X -o "X$low" = X; then
2898                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2899                     ij) up='[A-IJ-RS-Z]'
2900                         low='[a-ij-rs-z]'
2901                         ;;
2902                     esac
2903                 fi
2904                 if test "X$up" = X -o "X$low" = X; then
2905                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2906                     ij) up='A-IJ-RS-Z'
2907                         low='a-ij-rs-z'
2908                         ;;
2909                     esac
2910                 fi
2911                 ;;
2912             esac
2913         fi
2914 esac
2915 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2916 ij)
2917     echo "Using $up and $low to convert case." >&4
2918     ;;
2919 *)
2920     echo "I don't know how to translate letters from upper to lower case." >&4
2921     echo "Your tr is not acting any way I know of." >&4
2922     exit 1
2923     ;;
2924 esac
2925 : set up the translation script tr, must be called with ./tr of course
2926 cat >tr <<EOSC
2927 $startsh
2928 case "\$1\$2" in
2929 '[A-Z][a-z]') exec $tr '$up' '$low';;
2930 '[a-z][A-Z]') exec $tr '$low' '$up';;
2931 esac
2932 exec $tr "\$@"
2933 EOSC
2934 chmod +x tr
2935 $eunicefix tr
2936
2937 : Try to determine whether config.sh was made on this system
2938 case "$config_sh" in
2939 '')
2940 myuname=`$uname -a 2>/dev/null`
2941 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2942 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2943 # because the A-Z/a-z are not consecutive.
2944 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2945         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2946 newmyuname="$myuname"
2947 dflt=n
2948 case "$knowitall" in
2949 '')
2950         if test -f ../config.sh; then
2951                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2952                         eval "`grep myuname= ../config.sh`"
2953                 fi
2954                 if test "X$myuname" = "X$newmyuname"; then
2955                         dflt=y
2956                 fi
2957         fi
2958         ;;
2959 *) dflt=y;;
2960 esac
2961
2962 : Get old answers from old config file if Configure was run on the
2963 : same system, otherwise use the hints.
2964 hint=default
2965 cd ..
2966 if test -f config.sh; then
2967         echo " "
2968         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2969         . UU/myread
2970         case "$ans" in
2971         n*|N*) echo "OK, I'll ignore it."
2972                 mv config.sh config.sh.old
2973                 myuname="$newmyuname"
2974                 ;;
2975         *)  echo "Fetching default answers from your old config.sh file..." >&4
2976                 tmp_n="$n"
2977                 tmp_c="$c"
2978                 tmp_sh="$sh"
2979                 . ./config.sh
2980                 cp config.sh UU
2981                 n="$tmp_n"
2982                 c="$tmp_c"
2983                 : Older versions did not always set $sh.  Catch re-use of such
2984                 : an old config.sh.
2985                 case "$sh" in
2986                 '') sh="$tmp_sh" ;;
2987                 esac
2988                 hint=previous
2989                 ;;
2990         esac
2991 fi
2992 . ./UU/checkcc
2993 if test ! -f config.sh; then
2994         $cat <<EOM
2995
2996 First time through, eh?  I have some defaults handy for some systems
2997 that need some extra help getting the Configure answers right:
2998
2999 EOM
3000         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3001         dflt=''
3002         : Half the following guesses are probably wrong... If you have better
3003         : tests or hints, please send them to perlbug@perl.org
3004         : The metaconfig authors would also appreciate a copy...
3005         $test -f /irix && osname=irix
3006         $test -f /xenix && osname=sco_xenix
3007         $test -f /dynix && osname=dynix
3008         $test -f /dnix && osname=dnix
3009         $test -f /lynx.os && osname=lynxos
3010         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3011         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3012         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /bin/mips && /bin/mips && osname=mips
3014         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3015                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3016         $test -d /usr/apollo/bin && osname=apollo
3017         $test -f /etc/saf/_sactab && osname=svr4
3018         $test -d /usr/include/minix && osname=minix
3019         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3020         if $test -d /MachTen -o -d /MachTen_Folder; then
3021                 osname=machten
3022                 if $test -x /sbin/version; then
3023                         osvers=`/sbin/version | $awk '{print $2}' |
3024                         $sed -e 's/[A-Za-z]$//'`
3025                 elif $test -x /usr/etc/version; then
3026                         osvers=`/usr/etc/version | $awk '{print $2}' |
3027                         $sed -e 's/[A-Za-z]$//'`
3028                 else
3029                         osvers="$2.$3"
3030                 fi
3031         fi
3032
3033         $test -f /sys/posix.dll &&
3034                 $test -f /usr/bin/what &&
3035                 set X `/usr/bin/what /sys/posix.dll` &&
3036                 $test "$3" = UWIN &&
3037                 osname=uwin &&
3038                 osvers="$5"
3039
3040         if $test -f $uname; then
3041                 set X $myuname
3042                 shift
3043
3044                 case "$5" in
3045                 fps*) osname=fps ;;
3046                 mips*)
3047                         case "$4" in
3048                         umips) osname=umips ;;
3049                         *) osname=mips ;;
3050                         esac;;
3051                 [23]100) osname=mips ;;
3052                 next*) osname=next ;;
3053                 i386*)
3054                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3055                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3056                                 osname='sco'
3057                                 osvers=$tmp
3058                         elif $test -f /etc/kconfig; then
3059                                 osname=isc
3060                                 if test "$lns" = "$ln -s"; then
3061                                         osvers=4
3062                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3063                                         osvers=3
3064                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3065                                         osvers=2
3066                                 fi
3067                         fi
3068                         tmp=''
3069                         ;;
3070                 pc*)
3071                         if test -n "$DJGPP"; then
3072                                 osname=dos
3073                                 osvers=djgpp
3074                         fi
3075                         ;;
3076                 esac
3077
3078                 case "$1" in
3079                 aix) osname=aix
3080                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3081                         case "$tmp" in
3082                         'not found') osvers="$4"."$3" ;;
3083                         '<3240'|'<>3240') osvers=3.2.0 ;;
3084                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3085                         '=3250'|'>3250') osvers=3.2.5 ;;
3086                         *) osvers=$tmp;;
3087                         esac
3088                         ;;
3089                 bsd386) osname=bsd386
3090                         osvers=`$uname -r`
3091                         ;;
3092                 cygwin*) osname=cygwin
3093                         osvers="$3"
3094                         ;;
3095                 *dc.osx) osname=dcosx
3096                         osvers="$3"
3097                         ;;
3098                 dnix) osname=dnix
3099                         osvers="$3"
3100                         ;;
3101                 domainos) osname=apollo
3102                         osvers="$3"
3103                         ;;
3104                 dgux)   osname=dgux 
3105                         osvers="$3"
3106                         ;;
3107                 dynixptx*) osname=dynixptx
3108                         osvers=`echo "$4"|sed 's/^v//'`
3109                         ;;
3110                 freebsd) osname=freebsd 
3111                         osvers="$3" ;;
3112                 genix)  osname=genix ;;
3113                 gnu)    osname=gnu
3114                         osvers="$3" ;;
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 case "$cf_by" in
3462 "")
3463         cf_by=`(logname) 2>/dev/null`
3464         case "$cf_by" in
3465         "")
3466                 cf_by=`(whoami) 2>/dev/null`
3467                 case "$cf_by" in
3468                 "") cf_by=unknown ;;
3469                 esac ;;
3470         esac ;;
3471 esac
3472
3473 : set up the script used to warn in case of inconsistency
3474 cat <<EOS >whoa
3475 $startsh
3476 EOS
3477 cat <<'EOSC' >>whoa
3478 dflt=y
3479 echo " "
3480 echo "*** WHOA THERE!!! ***" >&4
3481 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3482 rp="    Keep the $hint value?"
3483 . ./myread
3484 case "$ans" in
3485 y) td=$was; tu=$was;;
3486 esac
3487 EOSC
3488
3489 : function used to set $1 to $val
3490 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3491 case "$val$was" in
3492 $define$undef) . ./whoa; eval "$var=\$td";;
3493 $undef$define) . ./whoa; eval "$var=\$tu";;
3494 *) eval "$var=$val";;
3495 esac'
3496
3497 case "$usesocks" in
3498 $define|true|[yY]*)     dflt='y';;
3499 *) dflt='n';;
3500 esac
3501 cat <<EOM
3502
3503 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3504 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3505 to use the PerlIO abstraction layer, this will be implicitly selected.
3506
3507 If this doesn't make any sense to you, just accept the default '$dflt'.
3508 EOM
3509 rp='Build Perl for SOCKS?'
3510 . ./myread
3511 case "$ans" in
3512 y|Y)    val="$define" ;;     
3513 *)      val="$undef" ;;
3514 esac
3515 set usesocks
3516 eval $setvar
3517
3518 case "$usesocks" in
3519 $define|true|[yY]*) useperlio="$define";;
3520 esac
3521
3522 case "$useperlio" in
3523 $define|true|[yY]*|'')  dflt='y';;
3524 *) dflt='n';;
3525 esac
3526 cat <<EOM
3527
3528 Previous version of $package used the standard IO mechanisms as
3529 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3530 alternate IO mechanisms via the PerlIO abstraction layer, but the
3531 stdio mechanism is still available if needed.  The abstraction layer
3532 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3533 Using PerlIO with sfio may cause problems with some extension modules.
3534
3535 If this doesn't make any sense to you, just accept the default '$dflt'.
3536 EOM
3537 rp='Use the PerlIO abstraction layer?'
3538 . ./myread
3539 case "$ans" in
3540 y|Y) 
3541         val="$define"
3542         ;;
3543 *)      
3544         echo "Ok, doing things the stdio way."
3545         val="$undef"
3546         ;;
3547 esac
3548 set useperlio
3549 eval $setvar 
3550
3551 case "$usesocks" in
3552 $define|true|[yY]*)
3553         case "$useperlio" in
3554         $define|true|[yY]*) ;;
3555         *)      cat >&4 <<EOM
3556
3557 You are using the SOCKS proxy protocol library which means that you
3558 should also use the PerlIO layer.  You may be headed for trouble.
3559
3560 EOM
3561                 ;;
3562         esac
3563         ;;
3564 esac
3565
3566         
3567 case "$usethreads" in
3568 $define|true|[yY]*)     dflt='y';;
3569 *)     # Catch case where user specified ithreads or 5005threads but
3570        # forgot -Dusethreads (A.D. 4/2002)
3571        case "$useithreads$use5005threads" in
3572        *$define*)      
3573                 case "$useperlio" in
3574                 "$define")      dflt='y' ;;
3575                 *)              dflt='n' ;;
3576                 esac
3577                 ;;
3578        *)       dflt='n';;
3579        esac
3580        ;;
3581 esac
3582 cat <<EOM
3583
3584 Perl can be built to take advantage of threads on some systems.
3585 To do so, Configure can be run with -Dusethreads.
3586
3587 Note that Perl built with threading support runs slightly slower
3588 and uses more memory than plain Perl. The current implementation
3589 is believed to be stable, but it is fairly new, and so should be
3590 treated with caution.
3591
3592 If this doesn't make any sense to you, just accept the default '$dflt'.
3593 EOM
3594 rp='Build a threading Perl?'
3595 . ./myread
3596 case "$ans" in
3597 y|Y)    val="$define" ;;
3598 *)      val="$undef" ;;
3599 esac
3600 set usethreads
3601 eval $setvar
3602
3603 case "$usethreads" in
3604 $define)
3605         $cat <<EOM
3606
3607 Since release 5.6, Perl has had two different threading implementations,
3608 the newer interpreter-based version (ithreads) with one interpreter per
3609 thread, and the older 5.005 version (5005threads).
3610 The 5005threads version is effectively unmaintained and will probably be
3611 removed in Perl 5.10, so there should be no need to build a Perl using it
3612 unless needed for backwards compatibility with some existing 5.005threads
3613 code.
3614
3615 EOM
3616         : Default to ithreads unless overridden on command line or with
3617         : old config.sh
3618         dflt='y'
3619         case "$use5005threads" in
3620                 $define|true|[yY]*) dflt='n';;
3621         esac
3622         case "$useithreads" in
3623                 $undef|false|[nN]*) dflt='n';;
3624         esac
3625         rp='Use the newer interpreter-based ithreads?'
3626         . ./myread
3627         case "$ans" in
3628         y|Y)    val="$define" ;;
3629         *)      val="$undef" ;;
3630         esac
3631         set useithreads
3632         eval $setvar
3633         : Now set use5005threads to the opposite value.
3634         case "$useithreads" in
3635         $define) val="$undef" ;;
3636         *) val="$define" ;;
3637         esac
3638         set use5005threads
3639         eval $setvar
3640         ;;
3641 *)
3642         useithreads="$undef"
3643         use5005threads="$undef"
3644         ;;
3645 esac
3646
3647 case "$useithreads$use5005threads" in
3648 "$define$define")
3649         $cat >&4 <<EOM
3650
3651 You cannot have both the ithreads and the 5.005 threads enabled
3652 at the same time.  Disabling the 5.005 threads since they are
3653 much less stable than the ithreads.
3654
3655 EOM
3656         use5005threads="$undef"
3657         ;;
3658 esac
3659
3660 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3661         cat >&4 <<EOF
3662 ***
3663 *** To build with ithreads you must also use the PerlIO layer.
3664 *** Cannot continue, aborting.
3665 ***
3666 EOF
3667         exit 1
3668 fi
3669
3670 case "$d_oldpthreads" in
3671 '')     : Configure tests would be welcome here.  For now, assume undef.
3672         val="$undef" ;;
3673 *)      val="$d_oldpthreads" ;;
3674 esac
3675 set d_oldpthreads
3676 eval $setvar
3677
3678
3679 : Look for a hint-file generated 'call-back-unit'.  If the
3680 : user has specified that a threading perl is to be built,
3681 : we may need to set or change some other defaults.
3682 if $test -f usethreads.cbu; then
3683     echo "Your platform has some specific hints regarding threaded builds, using them..."
3684     . ./usethreads.cbu
3685 else
3686     case "$usethreads" in
3687         "$define"|true|[yY]*)
3688                 $cat <<EOM
3689 (Your platform does not have any specific hints for threaded builds.
3690  Assuming POSIX threads, then.)
3691 EOM
3692         ;;
3693     esac
3694 fi
3695
3696 cat <<EOM
3697
3698 Perl can be built so that multiple Perl interpreters can coexist
3699 within the same Perl executable.
3700 EOM
3701
3702 case "$useithreads" in
3703 $define)
3704         cat <<EOM
3705 This multiple interpreter support is required for interpreter-based threads.
3706 EOM
3707         val="$define"
3708         ;;
3709 *)      case "$usemultiplicity" in
3710         $define|true|[yY]*)     dflt='y';;
3711         *) dflt='n';;
3712         esac
3713         echo " "
3714         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3715         rp='Build Perl for multiplicity?'
3716         . ./myread
3717         case "$ans" in
3718         y|Y)    val="$define" ;;
3719         *)      val="$undef" ;;
3720         esac
3721         ;;
3722 esac
3723 set usemultiplicity
3724 eval $setvar
3725
3726
3727 case "$usemorebits" in
3728 "$define"|true|[yY]*)
3729         use64bitint="$define"
3730         uselongdouble="$define"
3731         usemorebits="$define"
3732         ;;
3733 *)      usemorebits="$undef"
3734         ;;
3735 esac
3736
3737 : make some quick guesses about what we are up against
3738 echo " "
3739 $echo $n "Hmm...  $c"
3740 echo exit 1 >bsd
3741 echo exit 1 >usg
3742 echo exit 1 >v7
3743 echo exit 1 >osf1
3744 echo exit 1 >eunice
3745 echo exit 1 >xenix
3746 echo exit 1 >venix
3747 echo exit 1 >os2
3748 d_bsd="$undef"
3749 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3750 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3751 then
3752         echo "Looks kind of like an OSF/1 system, but we'll see..."
3753         echo exit 0 >osf1
3754 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3755         xxx=`./loc addbib blurfl $pth`
3756         if $test -f $xxx; then
3757         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3758                 echo exit 0 >bsd
3759                 echo exit 0 >usg
3760         else
3761                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3762                         echo "Looks kind of like an extended USG system, but we'll see..."
3763                 else
3764                         echo "Looks kind of like a USG system, but we'll see..."
3765                 fi
3766                 echo exit 0 >usg
3767         fi
3768 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3769         echo "Looks kind of like a BSD system, but we'll see..."
3770         d_bsd="$define"
3771         echo exit 0 >bsd
3772 else
3773         echo "Looks kind of like a Version 7 system, but we'll see..."
3774         echo exit 0 >v7
3775 fi
3776 case "$eunicefix" in
3777 *unixtovms*)
3778         $cat <<'EOI'
3779 There is, however, a strange, musty smell in the air that reminds me of
3780 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3781 EOI
3782         echo exit 0 >eunice
3783         d_eunice="$define"
3784 : it so happens the Eunice I know will not run shell scripts in Unix format
3785         ;;
3786 *)
3787         echo " "
3788         echo "Congratulations.  You aren't running Eunice."
3789         d_eunice="$undef"
3790         ;;
3791 esac
3792 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3793 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3794 : semicolon as a patch separator
3795 case "$p_" in
3796 :) ;;
3797 *)
3798         $cat <<'EOI'
3799 I have the feeling something is not exactly right, however...don't tell me...
3800 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3801 (Or you may be running DOS with DJGPP.)
3802 EOI
3803         echo exit 0 >os2
3804         ;;
3805 esac
3806 if test -f /xenix; then
3807         echo "Actually, this looks more like a XENIX system..."
3808         echo exit 0 >xenix
3809         d_xenix="$define"
3810 else
3811         echo " "
3812         echo "It's not Xenix..."
3813         d_xenix="$undef"
3814 fi
3815 chmod +x xenix
3816 $eunicefix xenix
3817 if test -f /venix; then
3818         echo "Actually, this looks more like a VENIX system..."
3819         echo exit 0 >venix
3820 else
3821         echo " "
3822         if ./xenix; then
3823                 : null
3824         else
3825                 echo "Nor is it Venix..."
3826         fi
3827 fi
3828 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3829 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3830 $rm -f foo
3831
3832 case "$cc" in
3833 '') dflt=cc;;
3834 *) dflt="$cc";;
3835 esac
3836 rp="Use which C compiler?"
3837 . ./myread
3838 cc="$ans"
3839
3840 : See if they have not cc but they do have gcc
3841 . ./trygcc
3842 : Look for a hint-file generated 'call-back-unit'.  Now that the
3843 : user has specified the compiler, we may need to set or change some
3844 : other defaults.
3845 if $test -f cc.cbu; then
3846     . ./cc.cbu
3847 fi
3848 . ./checkcc
3849
3850 echo " "
3851 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3852 $cat >try.c <<EOM
3853 #include <stdio.h>
3854 int main() {
3855 #ifdef __GNUC__
3856 #ifdef __VERSION__
3857         printf("%s\n", __VERSION__);
3858 #else
3859         printf("%s\n", "1");
3860 #endif
3861 #endif
3862         return(0);
3863 }
3864 EOM
3865 if $cc -o try $ccflags $ldflags try.c; then
3866         gccversion=`$run ./try`
3867         case "$gccversion" in
3868         '') echo "You are not using GNU cc." ;;
3869         *)  echo "You are using GNU cc $gccversion."
3870             ccname=gcc
3871             ;;
3872         esac
3873 else
3874         echo " "
3875         echo "*** WHOA THERE!!! ***" >&4
3876         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3877         case "$knowitall" in
3878         '')
3879         echo "    You'd better start hunting for one and let me know about it." >&4
3880                 exit 1
3881                 ;;
3882         esac
3883 fi
3884 $rm -f try try.*
3885 case "$gccversion" in
3886 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3887 esac
3888 case "$gccversion" in
3889 '') gccosandvers='' ;;
3890 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3891    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3892    gccshortvers=''
3893    case "$gccosandvers" in
3894    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3895    $osname$osvers) ;; # looking good
3896    $osname*) cat <<EOM >&4
3897
3898 *** WHOA THERE!!! ***
3899
3900     Your gcc has not been compiled for the exact release of
3901     your operating system ($gccosandvers versus $osname$osvers).
3902
3903     In general it is a good idea to keep gcc synchronized with
3904     the operating system because otherwise serious problems
3905     may ensue when trying to compile software, like Perl.
3906
3907     I'm trying to be optimistic here, though, and will continue.
3908     If later during the configuration and build icky compilation
3909     problems appear (headerfile conflicts being the most common
3910     manifestation), I suggest reinstalling the gcc to match
3911     your operating system release.
3912
3913 EOM
3914       ;;
3915    *) gccosandvers='' ;; # failed to parse, better be silent
3916    esac
3917    ;;
3918 esac
3919 case "$ccname" in
3920 '') ccname="$cc" ;;
3921 esac
3922
3923 # gcc 3.* complain about adding -Idirectories that they already know about,
3924 # so we will take those off from locincpth.
3925 case "$gccversion" in
3926 3*)
3927     echo "main(){}">try.c
3928     for incdir in $locincpth; do
3929        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3930              grep '^c[cp]p*[01]: warning: changing search order '`
3931        if test "X$warn" != X; then
3932            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3933        fi
3934     done
3935     $rm -f try try.*
3936 esac
3937
3938 : decide how portable to be.  Allow command line overrides.
3939 case "$d_portable" in
3940 "$undef") ;;
3941 *)      d_portable="$define" ;;
3942 esac
3943
3944 : set up shell script to do ~ expansion
3945 cat >filexp <<EOSS
3946 $startsh
3947 : expand filename
3948 case "\$1" in
3949  ~/*|~)
3950         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3951         ;;
3952  ~*)
3953         if $test -f /bin/csh; then
3954                 /bin/csh -f -c "glob \$1"
3955                 failed=\$?
3956                 echo ""
3957                 exit \$failed
3958         else
3959                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3960                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3961                 if $test ! -d "\$dir"; then
3962                         me=\`basename \$0\`
3963                         echo "\$me: can't locate home directory for: \$name" >&2
3964                         exit 1
3965                 fi
3966                 case "\$1" in
3967                 */*)
3968                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3969                         ;;
3970                 *)
3971                         echo \$dir
3972                         ;;
3973                 esac
3974         fi
3975         ;;
3976 *)
3977         echo \$1
3978         ;;
3979 esac
3980 EOSS
3981 chmod +x filexp
3982 $eunicefix filexp
3983
3984 : now set up to get a file name
3985 cat <<EOS >getfile
3986 $startsh
3987 EOS
3988 cat <<'EOSC' >>getfile
3989 tilde=''
3990 fullpath=''
3991 already=''
3992 skip=''
3993 none_ok=''
3994 exp_file=''
3995 nopath_ok=''
3996 orig_rp="$rp"
3997 orig_dflt="$dflt"
3998 case "$gfpth" in
3999 '') gfpth='.' ;;
4000 esac
4001
4002 case "$fn" in
4003 *\(*)
4004         : getfile will accept an answer from the comma-separated list
4005         : enclosed in parentheses even if it does not meet other criteria.
4006         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4007         fn=`echo $fn | sed 's/(.*)//'`
4008         ;;
4009 esac
4010
4011 case "$fn" in
4012 *:*)
4013         loc_file=`expr $fn : '.*:\(.*\)'`
4014         fn=`expr $fn : '\(.*\):.*'`
4015         ;;
4016 esac
4017
4018 case "$fn" in
4019 *~*) tilde=true;;
4020 esac
4021 case "$fn" in
4022 */*) fullpath=true;;
4023 esac
4024 case "$fn" in
4025 *+*) skip=true;;
4026 esac
4027 case "$fn" in
4028 *n*) none_ok=true;;
4029 esac
4030 case "$fn" in
4031 *e*) exp_file=true;;
4032 esac
4033 case "$fn" in
4034 *p*) nopath_ok=true;;
4035 esac
4036
4037 case "$fn" in
4038 *f*) type='File';;
4039 *d*) type='Directory';;
4040 *l*) type='Locate';;
4041 esac
4042
4043 what="$type"
4044 case "$what" in
4045 Locate) what='File';;
4046 esac
4047
4048 case "$exp_file" in
4049 '')
4050         case "$d_portable" in
4051         "$define") ;;
4052         *) exp_file=true;;
4053         esac
4054         ;;
4055 esac
4056
4057 cd ..
4058 while test "$type"; do
4059         redo=''
4060         rp="$orig_rp"
4061         dflt="$orig_dflt"
4062         case "$tilde" in
4063         true) rp="$rp (~name ok)";;
4064         esac
4065         . UU/myread
4066         if test -f UU/getfile.ok && \
4067                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4068         then
4069                 value="$ans"
4070                 ansexp="$ans"
4071                 break
4072         fi
4073         case "$ans" in
4074         none)
4075                 value=''
4076                 ansexp=''
4077                 case "$none_ok" in
4078                 true) type='';;
4079                 esac
4080                 ;;
4081         *)
4082                 case "$tilde" in
4083                 '') value="$ans"
4084                         ansexp="$ans";;
4085                 *)
4086                         value=`UU/filexp $ans`
4087                         case $? in
4088                         0)
4089                                 if test "$ans" != "$value"; then
4090                                         echo "(That expands to $value on this system.)"
4091                                 fi
4092                                 ;;
4093                         *) value="$ans";;
4094                         esac
4095                         ansexp="$value"
4096                         case "$exp_file" in
4097                         '') value="$ans";;
4098                         esac
4099                         ;;
4100                 esac
4101                 case "$fullpath" in
4102                 true)
4103                         case "$ansexp" in
4104                         /*) value="$ansexp" ;;
4105                         [a-zA-Z]:/*) value="$ansexp" ;;
4106                         *)
4107                                 redo=true
4108                                 case "$already" in
4109                                 true)
4110                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4111                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4112                                         ;;
4113                                 *)
4114                                 echo "Please give a full path name, starting with slash." >&4
4115                                         case "$tilde" in
4116                                         true)
4117                                 echo "Note that using ~name is ok provided it expands well." >&4
4118                                                 already=true
4119                                                 ;;
4120                                         esac
4121                                 esac
4122                                 ;;
4123                         esac
4124                         ;;
4125                 esac
4126                 case "$redo" in
4127                 '')
4128                         case "$type" in
4129                         File)
4130                                 for fp in $gfpth; do
4131                                         if test "X$fp" = X.; then
4132                                             pf="$ansexp"
4133                                         else    
4134                                             pf="$fp/$ansexp"
4135                                         fi
4136                                         if test -f "$pf"; then
4137                                                 type=''
4138                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4139                                         then
4140                                                 echo "($value is not a plain file, but that's ok.)"
4141                                                 type=''
4142                                         fi
4143                                         if test X"$type" = X; then
4144                                             value="$pf"
4145                                             break
4146                                         fi
4147                                 done
4148                                 ;;
4149                         Directory)
4150                                 for fp in $gfpth; do
4151                                         if test "X$fp" = X.; then
4152                                             dir="$ans"
4153                                             direxp="$ansexp"
4154                                         else    
4155                                             dir="$fp/$ansexp"
4156                                             direxp="$fp/$ansexp"
4157                                         fi
4158                                         if test -d "$direxp"; then
4159                                                 type=''
4160                                                 value="$dir"
4161                                                 break
4162                                         fi
4163                                 done
4164                                 ;;
4165                         Locate)
4166                                 if test -d "$ansexp"; then
4167                                         echo "(Looking for $loc_file in directory $value.)"
4168                                         value="$value/$loc_file"
4169                                         ansexp="$ansexp/$loc_file"
4170                                 fi
4171                                 if test -f "$ansexp"; then
4172                                         type=''
4173                                 fi
4174                                 case "$nopath_ok" in
4175                                 true)   case "$value" in
4176                                         */*) ;;
4177                                         *)      echo "Assuming $value will be in people's path."
4178                                                 type=''
4179                                                 ;;
4180                                         esac
4181                                         ;;
4182                                 esac
4183                                 ;;
4184                         esac
4185
4186                         case "$skip" in
4187                         true) type='';
4188                         esac
4189
4190                         case "$type" in
4191                         '') ;;
4192                         *)
4193                                 if test "$fastread" = yes; then
4194                                         dflt=y
4195                                 else
4196                                         dflt=n
4197                                 fi
4198                                 rp="$what $value doesn't exist.  Use that name anyway?"
4199                                 . UU/myread
4200                                 dflt=''
4201                                 case "$ans" in
4202                                 y*) type='';;
4203                                 *) echo " ";;
4204                                 esac
4205                                 ;;
4206                         esac
4207                         ;;
4208                 esac
4209                 ;;
4210         esac
4211 done
4212 cd UU
4213 ans="$value"
4214 rp="$orig_rp"
4215 dflt="$orig_dflt"
4216 rm -f getfile.ok
4217 test "X$gfpthkeep" != Xy && gfpth=""
4218 EOSC
4219
4220 : What should the include directory be ?
4221 echo " "
4222 $echo $n "Hmm...  $c"
4223 dflt='/usr/include'
4224 incpath=''
4225 mips_type=''
4226 if $test -f /bin/mips && /bin/mips; then
4227         echo "Looks like a MIPS system..."
4228         $cat >usr.c <<'EOCP'
4229 #ifdef SYSTYPE_BSD43
4230 /bsd43
4231 #endif
4232 EOCP
4233         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4234                 dflt='/bsd43/usr/include'
4235                 incpath='/bsd43'
4236                 mips_type='BSD 4.3'
4237         else
4238                 mips_type='System V'
4239         fi
4240         $rm -f usr.c usr.out
4241         echo "and you're compiling with the $mips_type compiler and libraries."
4242         xxx_prompt=y
4243         echo "exit 0" >mips
4244 else
4245         echo "Doesn't look like a MIPS system."
4246         xxx_prompt=n
4247         echo "exit 1" >mips
4248 fi
4249 chmod +x mips
4250 $eunicefix mips
4251 case "$usrinc" in
4252 '') ;;
4253 *) dflt="$usrinc";;
4254 esac
4255 case "$xxx_prompt" in
4256 y)      fn=d/
4257         echo " "
4258         rp='Where are the include files you want to use?'
4259         . ./getfile
4260         usrinc="$ans"
4261         ;;
4262 *)      usrinc="$dflt"
4263         ;;
4264 esac
4265
4266 : see how we invoke the C preprocessor
4267 echo " "
4268 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4269 cat <<'EOT' >testcpp.c
4270 #define ABC abc
4271 #define XYZ xyz
4272 ABC.XYZ
4273 EOT
4274 cd ..
4275 if test ! -f cppstdin; then
4276         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4277                 # AIX cc -E doesn't show the absolute headerfile
4278                 # locations but we'll cheat by using the -M flag.
4279                 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
4280         else
4281                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4282         fi
4283 else
4284         echo "Keeping your $hint cppstdin wrapper."
4285 fi
4286 chmod 755 cppstdin
4287 wrapper=`pwd`/cppstdin
4288 ok='false'
4289 cd UU
4290
4291 if $test "X$cppstdin" != "X" && \
4292         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4293         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4294 then
4295         echo "You used to use $cppstdin $cppminus so we'll use that again."
4296         case "$cpprun" in
4297         '') echo "But let's see if we can live without a wrapper..." ;;
4298         *)
4299                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4300                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4301                 then
4302                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4303                         ok='true'
4304                 else
4305                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4306                 fi
4307                 ;;
4308         esac
4309 else
4310         case "$cppstdin" in
4311         '') ;;
4312         *)
4313                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4314                 ;;
4315         esac
4316 fi
4317
4318 if $ok; then
4319         : nothing
4320 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4321         $cc -E <testcpp.c >testcpp.out 2>&1; \
4322         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4323         echo "Yup, it does."
4324         x_cpp="$cc -E"
4325         x_minus='';
4326 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4327         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4328         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4329         echo "Yup, it does."
4330         x_cpp="$cc -E"
4331         x_minus='-';
4332 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4333         $cc -P <testcpp.c >testcpp.out 2>&1; \
4334         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4335         echo "Yipee, that works!"
4336         x_cpp="$cc -P"
4337         x_minus='';
4338 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4339         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4340         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4341         echo "At long last!"
4342         x_cpp="$cc -P"
4343         x_minus='-';
4344 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4345         $cpp <testcpp.c >testcpp.out 2>&1; \
4346         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4347         echo "It works!"
4348         x_cpp="$cpp"
4349         x_minus='';
4350 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4351         $cpp - <testcpp.c >testcpp.out 2>&1; \
4352         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4353         echo "Hooray, it works!  I was beginning to wonder."
4354         x_cpp="$cpp"
4355         x_minus='-';
4356 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4357         $wrapper <testcpp.c >testcpp.out 2>&1; \
4358         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4359         x_cpp="$wrapper"
4360         x_minus=''
4361         echo "Eureka!"
4362 else
4363         dflt=''
4364         rp="No dice.  I can't find a C preprocessor.  Name one:"
4365         . ./myread
4366         x_cpp="$ans"
4367         x_minus=''
4368         $x_cpp <testcpp.c >testcpp.out 2>&1
4369         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4370                 echo "OK, that will do." >&4
4371         else
4372 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4373                 exit 1
4374         fi
4375 fi
4376
4377 case "$ok" in
4378 false)
4379         cppstdin="$x_cpp"
4380         cppminus="$x_minus"
4381         cpprun="$x_cpp"
4382         cpplast="$x_minus"
4383         set X $x_cpp
4384         shift
4385         case "$1" in
4386         "$cpp")
4387                 echo "Perhaps can we force $cc -E using a wrapper..."
4388                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4389                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4390                 then
4391                         echo "Yup, we can."
4392                         cppstdin="$wrapper"
4393                         cppminus='';
4394                 else
4395                         echo "Nope, we'll have to live without it..."
4396                 fi
4397                 ;;
4398         esac
4399         case "$cpprun" in
4400         "$wrapper")
4401                 cpprun=''
4402                 cpplast=''
4403                 ;;
4404         esac
4405         ;;
4406 esac
4407
4408 case "$cppstdin" in
4409 "$wrapper"|'cppstdin') ;;
4410 *) $rm -f $wrapper;;
4411 esac
4412 $rm -f testcpp.c testcpp.out
4413
4414 : Set private lib path
4415 case "$plibpth" in
4416 '') if ./mips; then
4417                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4418         fi;;
4419 esac
4420 case "$libpth" in
4421 ' ') dlist='';;
4422 '') dlist="$loclibpth $plibpth $glibpth";;
4423 *) dlist="$libpth";;
4424 esac
4425
4426 : Now check and see which directories actually exist, avoiding duplicates
4427 libpth=''
4428 for xxx in $dlist
4429 do
4430     if $test -d $xxx; then
4431                 case " $libpth " in
4432                 *" $xxx "*) ;;
4433                 *) libpth="$libpth $xxx";;
4434                 esac
4435     fi
4436 done
4437 $cat <<'EOM'
4438
4439 Some systems have incompatible or broken versions of libraries.  Among
4440 the directories listed in the question below, please remove any you
4441 know not to be holding relevant libraries, and add any that are needed.
4442 Say "none" for none.
4443
4444 EOM
4445 case "$libpth" in
4446 '') dflt='none';;
4447 *)
4448         set X $libpth
4449         shift
4450         dflt=${1+"$@"}
4451         ;;
4452 esac
4453 rp="Directories to use for library searches?"
4454 . ./myread
4455 case "$ans" in
4456 none) libpth=' ';;
4457 *) libpth="$ans";;
4458 esac
4459
4460 : compute shared library extension
4461 case "$so" in
4462 '')
4463         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4464                 dflt='sl'
4465         else
4466                 dflt='so'
4467         fi
4468         ;;
4469 *) dflt="$so";;
4470 esac
4471 $cat <<EOM
4472
4473 On some systems, shared libraries may be available.  Answer 'none' if
4474 you want to suppress searching of shared libraries for the remainder
4475 of this configuration.
4476
4477 EOM
4478 rp='What is the file extension used for shared libraries?'
4479 . ./myread
4480 so="$ans"
4481
4482 : Define several unixisms.
4483 : Hints files or command line option can be used to override them.
4484 : The convoluted testing is in case hints files set either the old
4485 : or the new name.
4486 case "$_exe" in
4487 '')     case "$exe_ext" in
4488         '')     ;;
4489         *)      _exe="$exe_ext" ;;
4490         esac
4491         ;;
4492 esac
4493 case "$_a" in
4494 '')     case "$lib_ext" in
4495     '') _a='.a';;
4496         *)      _a="$lib_ext" ;;
4497         esac
4498         ;;
4499 esac
4500 case "$_o" in
4501 '') case "$obj_ext" in
4502         '')     _o='.o';;
4503         *)      _o="$obj_ext";;
4504         esac
4505         ;;
4506 esac
4507 case "$p_" in
4508 '') case "$path_sep" in
4509         '')     p_=':';;
4510         *)      p_="$path_sep";;
4511         esac
4512         ;;
4513 esac
4514 exe_ext=$_exe
4515 lib_ext=$_a
4516 obj_ext=$_o
4517 path_sep=$p_
4518
4519 : Which makefile gets called first.  This is used by make depend.
4520 case "$firstmakefile" in
4521 '') firstmakefile='makefile';;
4522 esac
4523
4524 case "$ccflags" in
4525 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4526 esac
4527
4528 case "$uselongdouble" in
4529 $define|true|[yY]*)     dflt='y';;
4530 *) dflt='n';;
4531 esac
4532 cat <<EOM
4533
4534 Perl can be built to take advantage of long doubles which
4535 (if available) may give more accuracy and range for floating point numbers.
4536
4537 If this doesn't make any sense to you, just accept the default '$dflt'.
4538 EOM
4539 rp='Try to use long doubles if available?'
4540 . ./myread
4541 case "$ans" in
4542 y|Y)    val="$define"   ;;
4543 *)      val="$undef"    ;;
4544 esac
4545 set uselongdouble
4546 eval $setvar
4547
4548 case "$uselongdouble" in
4549 true|[yY]*) uselongdouble="$define" ;;
4550 esac
4551
4552 : Look for a hint-file generated 'call-back-unit'.  If the
4553 : user has specified that long doubles should be used,
4554 : we may need to set or change some other defaults.
4555 if $test -f uselongdouble.cbu; then
4556     echo "Your platform has some specific hints regarding long doubles, using them..."
4557     . ./uselongdouble.cbu
4558 else
4559     case "$uselongdouble" in
4560         $define)
4561                 $cat <<EOM
4562 (Your platform does not have any specific hints for long doubles.)
4563 EOM
4564         ;;
4565     esac
4566 fi
4567
4568 : Looking for optional libraries
4569 echo " "
4570 echo "Checking for optional libraries..." >&4
4571 case "$libs" in
4572 ' '|'') dflt='';;
4573 *) dflt="$libs";;
4574 esac
4575 case "$libswanted" in
4576 '') libswanted='c_s';;
4577 esac
4578 case "$usesocks" in
4579 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4580 esac
4581 libsfound=''
4582 libsfiles=''
4583 libsdirs=''
4584 libspath=''
4585 for thisdir in $libpth $xlibpth; do
4586   test -d $thisdir && libspath="$libspath $thisdir"
4587 done
4588 for thislib in $libswanted; do
4589         for thisdir in $libspath; do
4590             xxx=''
4591             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4592                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4593                 $test -f "$xxx" && eval $libscheck
4594                 $test -f "$xxx" && libstyle=shared
4595             fi
4596             if test ! -f "$xxx"; then
4597                 xxx=$thisdir/lib$thislib.$so
4598                 $test -f "$xxx" && eval $libscheck
4599                 $test -f "$xxx" && libstyle=shared
4600             fi  
4601             if test ! -f "$xxx"; then
4602                 xxx=$thisdir/lib$thislib$_a
4603                 $test -f "$xxx" && eval $libscheck
4604                 $test -f "$xxx" && libstyle=static
4605             fi
4606             if test ! -f "$xxx"; then
4607                 xxx=$thisdir/$thislib$_a
4608                 $test -f "$xxx" && eval $libscheck
4609                 $test -f "$xxx" && libstyle=static
4610             fi
4611             if test ! -f "$xxx"; then
4612                 xxx=$thisdir/lib${thislib}_s$_a
4613                 $test -f "$xxx" && eval $libscheck
4614                 $test -f "$xxx" && libstyle=static
4615                 $test -f "$xxx" && thislib=${thislib}_s
4616             fi
4617             if test ! -f "$xxx"; then
4618                 xxx=$thisdir/Slib$thislib$_a
4619                 $test -f "$xxx" && eval $libscheck
4620                 $test -f "$xxx" && libstyle=static
4621             fi
4622             if $test -f "$xxx"; then
4623                 case "$libstyle" in
4624                 shared) echo "Found -l$thislib (shared)." ;;
4625                 static) echo "Found -l$thislib." ;;
4626                 *)      echo "Found -l$thislib ($libstyle)." ;;
4627                 esac
4628                 case " $dflt " in
4629                 *"-l$thislib "*);;
4630                 *) dflt="$dflt -l$thislib"
4631                    libsfound="$libsfound $xxx"
4632                    yyy=`basename $xxx`
4633                    libsfiles="$libsfiles $yyy"
4634                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4635                    case " $libsdirs " in
4636                    *" $yyy "*) ;;
4637                    *) libsdirs="$libsdirs $yyy" ;;
4638                    esac
4639                    ;;
4640                 esac
4641                 break
4642             fi  
4643         done
4644         if $test ! -f "$xxx"; then
4645             echo "No -l$thislib."
4646         fi
4647 done
4648 set X $dflt
4649 shift
4650 dflt="$*"
4651 case "$libs" in
4652 '') dflt="$dflt";;
4653 *) dflt="$libs";;
4654 esac
4655 case "$dflt" in
4656 ' '|'') dflt='none';;
4657 esac
4658
4659 $cat <<EOM
4660
4661 In order to compile $package on your machine, a number of libraries
4662 are usually needed.  Include any other special libraries here as well.
4663 Say "none" for none.  The default list is almost always right.
4664 EOM
4665
4666 echo " "
4667 rp="What libraries to use?"
4668 . ./myread
4669 case "$ans" in
4670 none) libs=' ';;
4671 *) libs="$ans";;
4672 esac
4673
4674 : determine optimization, if desired, or use for debug flag also
4675 case "$optimize" in
4676 ' '|$undef) dflt='none';;
4677 '') dflt='-O';;
4678 *) dflt="$optimize";;
4679 esac
4680 $cat <<EOH
4681
4682 By default, $package compiles with the -O flag to use the optimizer.
4683 Alternately, you might want to use the symbolic debugger, which uses
4684 the -g flag (on traditional Unix systems).  Either flag can be
4685 specified here.  To use neither flag, specify the word "none".
4686
4687 EOH
4688 rp="What optimizer/debugger flag should be used?"
4689 . ./myread
4690 optimize="$ans"
4691 case "$optimize" in
4692 'none') optimize=" ";;
4693 esac
4694
4695 dflt=''
4696 : We will not override a previous value, but we might want to
4697 : augment a hint file
4698 case "$hint" in
4699 default|recommended)
4700         case "$gccversion" in
4701         1*) dflt='-fpcc-struct-return' ;;
4702         esac
4703         case "$optimize" in
4704         *-g*) dflt="$dflt -DDEBUGGING";;
4705         esac
4706         case "$gccversion" in
4707         2*) if test -d /etc/conf/kconfig.d &&
4708                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4709                 then
4710                         dflt="$dflt -posix"
4711                 fi
4712                 ;;
4713         esac
4714         case "$gccversion" in
4715         1*) ;;
4716         2.[0-8]*) ;;
4717         ?*)     echo " "
4718                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4719                 echo 'int main(void) { return 0; }' > gcctest.c
4720                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4721                         echo "Yes, it does." 2>&1
4722                         case "$ccflags" in
4723                         *strict-aliasing*) 
4724                                 echo "Leaving current flags $ccflags alone." 2>&1
4725                                 ;;
4726                         *) dflt="$dflt -fno-strict-aliasing" ;;
4727                         esac
4728                 else
4729                         echo "Nope, it doesn't, but that's ok." 2>&1
4730                 fi
4731                 ;;
4732         esac
4733         ;;
4734 esac
4735
4736 case "$mips_type" in
4737 *BSD*|'') inclwanted="$locincpth $usrinc";;
4738 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4739 esac
4740 for thisincl in $inclwanted; do
4741         if $test -d $thisincl; then
4742                 if $test x$thisincl != x$usrinc; then
4743                         case "$dflt" in
4744                         *" -I$thisincl "*);;
4745                         *) dflt="$dflt -I$thisincl ";;
4746                         esac
4747                 fi
4748         fi
4749 done
4750
4751 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4752         xxx=true;
4753 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4754         xxx=true;
4755 else
4756         xxx=false;
4757 fi;
4758 if $xxx; then
4759         case "$dflt" in
4760         *$2*);;
4761         *) dflt="$dflt -D$2";;
4762         esac;
4763 fi'
4764
4765 set signal.h LANGUAGE_C; eval $inctest
4766
4767 case "$usesocks" in
4768 $define)
4769         ccflags="$ccflags -DSOCKS"
4770         ;;
4771 esac
4772
4773 case "$hint" in
4774 default|recommended) dflt="$ccflags $dflt" ;;
4775 *) dflt="$ccflags";;
4776 esac
4777
4778 case "$dflt" in
4779 ''|' ') dflt=none;;
4780 esac
4781
4782 $cat <<EOH
4783
4784 Your C compiler may want other flags.  For this question you should include
4785 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4786 but you should NOT include libraries or ld flags like -lwhatever.  If you
4787 want $package to honor its debug switch, you should include -DDEBUGGING here.
4788 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4789
4790 To use no flags, specify the word "none".
4791
4792 EOH
4793 set X $dflt
4794 shift
4795 dflt=${1+"$@"}
4796 rp="Any additional cc flags?"
4797 . ./myread
4798 case "$ans" in
4799 none) ccflags='';;
4800 *) ccflags="$ans";;
4801 esac
4802
4803 : the following weeds options from ccflags that are of no interest to cpp
4804 case "$cppflags" in
4805 '') cppflags="$ccflags" ;;
4806 *)  cppflags="$cppflags $ccflags" ;;
4807 esac
4808 case "$gccversion" in
4809 1*) cppflags="$cppflags -D__GNUC__"
4810 esac
4811 case "$mips_type" in
4812 '');;
4813 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4814 esac
4815 case "$cppflags" in
4816 '');;
4817 *)
4818         echo " "
4819         echo "Let me guess what the preprocessor flags are..." >&4
4820         set X $cppflags
4821         shift
4822         cppflags=''
4823         $cat >cpp.c <<'EOM'
4824 #define BLURFL foo
4825
4826 BLURFL xx LFRULB
4827 EOM
4828         previous=''
4829         for flag in $*
4830         do
4831                 case "$flag" in
4832                 -*) ftry="$flag";;
4833                 *) ftry="$previous $flag";;
4834                 esac
4835                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4836                         >cpp1.out 2>/dev/null && \
4837                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4838                         >cpp2.out 2>/dev/null && \
4839                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4840                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4841                 then
4842                         cppflags="$cppflags $ftry"
4843                         previous=''
4844                 else
4845                         previous="$flag"
4846                 fi
4847         done
4848         set X $cppflags
4849         shift
4850         cppflags=${1+"$@"}
4851         case "$cppflags" in
4852         *-*)  echo "They appear to be: $cppflags";;
4853         esac
4854         $rm -f cpp.c cpp?.out
4855         ;;
4856 esac
4857
4858 : flags used in final linking phase
4859 case "$ldflags" in
4860 '') if ./venix; then
4861                 dflt='-i -z'
4862         else
4863                 dflt=''
4864         fi
4865         case "$ccflags" in
4866         *-posix*) dflt="$dflt -posix" ;;
4867         esac
4868         ;;
4869 *) dflt="$ldflags";;
4870 esac
4871
4872 : Try to guess additional flags to pick up local libraries.
4873 for thislibdir in $libpth; do
4874         case " $loclibpth " in
4875         *" $thislibdir "*)
4876                 case "$dflt " in 
4877                 *"-L$thislibdir "*) ;;
4878                 *)  dflt="$dflt -L$thislibdir" ;;
4879                 esac
4880                 ;;
4881         esac
4882 done
4883
4884 case "$dflt" in
4885 '') dflt='none' ;;
4886 esac
4887
4888 $cat <<EOH
4889
4890 Your C linker may need flags.  For this question you should
4891 include -L/whatever and any other flags used by the C linker, but you
4892 should NOT include libraries like -lwhatever.
4893
4894 Make sure you include the appropriate -L/path flags if your C linker
4895 does not normally search all of the directories you specified above,
4896 namely
4897         $libpth
4898 To use no flags, specify the word "none".
4899
4900 EOH
4901
4902 rp="Any additional ld flags (NOT including libraries)?"
4903 . ./myread
4904 case "$ans" in
4905 none) ldflags='';;
4906 *) ldflags="$ans";;
4907 esac
4908 rmlist="$rmlist pdp11"
4909
4910 : coherency check
4911 echo " "
4912 echo "Checking your choice of C compiler and flags for coherency..." >&4
4913 $cat > try.c <<'EOF'
4914 #include <stdio.h>
4915 int main() { printf("Ok\n"); return(0); }
4916 EOF
4917 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4918 shift
4919 $cat >try.msg <<'EOM'
4920 I've tried to compile and run the following simple program:
4921
4922 EOM
4923 $cat try.c >> try.msg
4924
4925 $cat >> try.msg <<EOM
4926
4927 I used the command:
4928
4929         $*
4930         $run ./try
4931
4932 and I got the following output:
4933
4934 EOM
4935 dflt=y
4936 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4937         if $sh -c "$run ./try" >>try.msg 2>&1; then
4938                 xxx=`$run ./try`
4939                 case "$xxx" in
4940                 "Ok") dflt=n ;;
4941                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4942                         case " $libs " in
4943                         *" -lsfio "*)
4944                                 cat >> try.msg <<'EOQS'
4945 If $libs contains -lsfio, and sfio is mis-configured, then it
4946 sometimes (apparently) runs and exits with a 0 status, but with no
4947 output!  It may have to do with sfio's use of _exit vs. exit.
4948
4949 EOQS
4950                                 rp="You have a big problem.  Shall I abort Configure"
4951                                 dflt=y
4952                                 ;;
4953                         esac
4954                         ;;
4955                 esac
4956         else
4957                 echo "The program compiled OK, but exited with status $?." >>try.msg
4958                 rp="You have a problem.  Shall I abort Configure"
4959                 dflt=y
4960         fi
4961 else
4962         echo "I can't compile the test program." >>try.msg
4963         rp="You have a BIG problem.  Shall I abort Configure"
4964         dflt=y
4965 fi
4966 case "$dflt" in
4967 y)
4968         $cat try.msg >&4
4969         case "$knowitall" in
4970         '')
4971                 echo "(The supplied flags or libraries might be incorrect.)"
4972                 ;;
4973         *) dflt=n;;
4974         esac
4975         echo " "
4976         . ./myread
4977         case "$ans" in
4978         n*|N*) ;;
4979         *)      echo "Ok.  Stopping Configure." >&4
4980                 exit 1
4981                 ;;
4982         esac
4983         ;;
4984 n) echo "OK, that should do.";;
4985 esac
4986 $rm -f try try.* core
4987
4988 : define a shorthand compile call
4989 compile='
4990 mc_file=$1;
4991 shift;
4992 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4993 : define a shorthand compile call for compilations that should be ok.
4994 compile_ok='
4995 mc_file=$1;
4996 shift;
4997 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4998
4999 : determine filename position in cpp output
5000 echo " "
5001 echo "Computing filename position in cpp output for #include directives..." >&4
5002 case "$osname" in
5003 vos) testaccess=-e ;;
5004 *)   testaccess=-r ;;
5005 esac
5006 echo '#include <stdio.h>' > foo.c
5007 $cat >fieldn <<EOF
5008 $startsh
5009 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5010 $grep '^[       ]*#.*stdio\.h' | \
5011 while read cline; do
5012         pos=1
5013         set \$cline
5014         while $test \$# -gt 0; do
5015                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5016                         echo "\$pos"
5017                         exit 0
5018                 fi
5019                 shift
5020                 pos=\`expr \$pos + 1\`
5021         done
5022 done
5023 EOF
5024 chmod +x fieldn
5025 fieldn=`./fieldn`
5026 $rm -f foo.c fieldn
5027 case $fieldn in
5028 '') pos='???';;
5029 1) pos=first;;
5030 2) pos=second;;
5031 3) pos=third;;
5032 *) pos="${fieldn}th";;
5033 esac
5034 echo "Your cpp writes the filename in the $pos field of the line."
5035
5036 case "$osname" in
5037 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5038 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5039 *)   cppfilter='' ;;
5040 esac
5041 : locate header file
5042 $cat >findhdr <<EOF
5043 $startsh
5044 wanted=\$1
5045 name=''
5046 for usrincdir in $usrinc
5047 do
5048         if test -f \$usrincdir/\$wanted; then
5049                 echo "\$usrincdir/\$wanted"
5050                 exit 0
5051         fi
5052 done
5053 awkprg='{ print \$$fieldn }'
5054 echo "#include <\$wanted>" > foo\$\$.c
5055 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5056 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5057 while read cline; do
5058         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5059         case "\$name" in
5060         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5061         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5062         *) exit 2;;
5063         esac;
5064 done;
5065 #
5066 # status = 0: grep returned 0 lines, case statement not executed
5067 # status = 1: headerfile found
5068 # status = 2: while loop executed, no headerfile found
5069 #
5070 status=\$?
5071 $rm -f foo\$\$.c;
5072 if test \$status -eq 1; then
5073         exit 0;
5074 fi
5075 exit 1
5076 EOF
5077 chmod +x findhdr
5078
5079 : define an alternate in-header-list? function
5080 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5081 cont=true; xxf="echo \"<\$1> found.\" >&4";
5082 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5083 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5084 esac;
5085 case $# in 4) instead=instead;; *) instead="at last";; esac;
5086 while $test "$cont"; do
5087         xxx=`./findhdr $1`
5088         var=$2; eval "was=\$$2";
5089         if $test "$xxx" && $test -r "$xxx";
5090         then eval $xxf;
5091         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5092                 cont="";
5093         else eval $xxnf;
5094         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5095         set $yyy; shift; shift; yyy=$@;
5096         case $# in 0) cont="";;
5097         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5098                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5099         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5100                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5101         esac;
5102 done;
5103 while $test "$yyy";
5104 do set $yyy; var=$2; eval "was=\$$2";
5105         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5106         set $yyy; shift; shift; yyy=$@;
5107 done'
5108
5109 : see if stdlib is available
5110 set stdlib.h i_stdlib
5111 eval $inhdr
5112
5113 : check for lengths of integral types
5114 echo " "
5115 case "$intsize" in
5116 '')
5117         echo "Checking to see how big your integers are..." >&4
5118         $cat >try.c <<EOCP
5119 #include <stdio.h>
5120 #$i_stdlib I_STDLIB
5121 #ifdef I_STDLIB
5122 #include <stdlib.h>
5123 #endif
5124 int main()
5125 {
5126         printf("intsize=%d;\n", (int)sizeof(int));
5127         printf("longsize=%d;\n", (int)sizeof(long));
5128         printf("shortsize=%d;\n", (int)sizeof(short));
5129         exit(0);
5130 }
5131 EOCP
5132         set try
5133         if eval $compile_ok && $run ./try > /dev/null; then
5134                 eval `$run ./try`
5135                 echo "Your integers are $intsize bytes long."
5136                 echo "Your long integers are $longsize bytes long."
5137                 echo "Your short integers are $shortsize bytes long."
5138         else
5139                 $cat >&4 <<EOM
5140 !
5141 Help! I can't compile and run the intsize test program: please enlighten me!
5142 (This is probably a misconfiguration in your system or libraries, and
5143 you really ought to fix it.  Still, I'll try anyway.)
5144 !
5145 EOM
5146                 dflt=4
5147                 rp="What is the size of an integer (in bytes)?"
5148                 . ./myread
5149                 intsize="$ans"
5150                 dflt=$intsize
5151                 rp="What is the size of a long integer (in bytes)?"
5152                 . ./myread
5153                 longsize="$ans"
5154                 dflt=2
5155                 rp="What is the size of a short integer (in bytes)?"
5156                 . ./myread
5157                 shortsize="$ans"
5158         fi
5159         ;;
5160 esac
5161 $rm -f try try.*
5162
5163 : check for long long
5164 echo " "
5165 echo "Checking to see if you have long long..." >&4
5166 echo 'int main() { long long x = 7; return 0; }' > try.c
5167 set try
5168 if eval $compile; then
5169         val="$define"
5170         echo "You have long long."
5171 else
5172         val="$undef"
5173         echo "You do not have long long."
5174 fi
5175 $rm try.*
5176 set d_longlong
5177 eval $setvar
5178
5179 : check for length of long long
5180 case "${d_longlong}${longlongsize}" in
5181 $define)
5182         echo " "
5183         echo "Checking to see how big your long longs are..." >&4
5184         $cat >try.c <<'EOCP'
5185 #include <stdio.h>
5186 int main()
5187 {
5188     printf("%d\n", (int)sizeof(long long));
5189     return(0);
5190 }
5191 EOCP
5192         set try
5193         if eval $compile_ok; then
5194                 longlongsize=`$run ./try`
5195                 echo "Your long longs are $longlongsize bytes long."
5196         else
5197                 dflt='8'
5198                 echo " "
5199                 echo "(I can't seem to compile the test program.  Guessing...)"
5200                 rp="What is the size of a long long (in bytes)?"
5201                 . ./myread
5202                 longlongsize="$ans"
5203         fi
5204         if $test "X$longsize" = "X$longlongsize"; then
5205                 echo "(That isn't any different from an ordinary long.)"
5206         fi      
5207         ;;
5208 esac
5209 $rm -f try.* try
5210
5211 : see if inttypes.h is available
5212 : we want a real compile instead of Inhdr because some systems
5213 : have an inttypes.h which includes non-existent headers
5214 echo " "
5215 $cat >try.c <<EOCP
5216 #include <inttypes.h>
5217 int main() {
5218         static int32_t foo32 = 0x12345678;
5219 }
5220 EOCP
5221 set try
5222 if eval $compile; then
5223         echo "<inttypes.h> found." >&4
5224         val="$define"
5225 else
5226         echo "<inttypes.h> NOT found." >&4
5227         val="$undef"
5228 fi
5229 $rm -f try.c try
5230 set i_inttypes
5231 eval $setvar
5232
5233 : check for int64_t
5234 echo " "
5235 echo "Checking to see if you have int64_t..." >&4
5236 $cat >try.c <<EOCP
5237 #include <sys/types.h>
5238 #$i_inttypes I_INTTYPES
5239 #ifdef I_INTTYPES
5240 #include <inttypes.h>
5241 #endif
5242 int main() { int64_t x = 7; }
5243 EOCP
5244 set try
5245 if eval $compile; then
5246         val="$define"
5247         echo "You have int64_t."
5248 else
5249         val="$undef"
5250         echo "You do not have int64_t."
5251 fi
5252 $rm -f try try.*
5253 set d_int64_t
5254 eval $setvar
5255
5256
5257 echo " "
5258 echo "Checking which 64-bit integer type we could use..." >&4
5259
5260 case "$intsize" in
5261 8) val=int
5262    set quadtype
5263    eval $setvar
5264    val='"unsigned int"'
5265    set uquadtype
5266    eval $setvar
5267    quadkind=1
5268    ;;
5269 *) case "$longsize" in
5270    8) val=long
5271       set quadtype
5272       eval $setvar
5273       val='"unsigned long"'
5274       set uquadtype
5275       eval $setvar
5276       quadkind=2
5277       ;;
5278    *) case "$d_longlong:$longlongsize" in
5279       define:8)
5280         val='"long long"'
5281         set quadtype
5282         eval $setvar
5283         val='"unsigned long long"'
5284         set uquadtype
5285         eval $setvar
5286         quadkind=3
5287         ;;
5288       *) case "$d_int64_t" in
5289          define)
5290            val=int64_t
5291            set quadtype
5292            eval $setvar
5293            val=uint64_t
5294            set uquadtype
5295            eval $setvar
5296            quadkind=4
5297            ;;
5298          esac
5299          ;;
5300       esac
5301       ;;
5302    esac
5303    ;;
5304 esac
5305
5306 case "$quadtype" in
5307 '')     echo "Alas, no 64-bit integer types in sight." >&4
5308         d_quad="$undef"
5309         ;;
5310 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5311         d_quad="$define"
5312         ;;
5313 esac
5314
5315
5316 case "$uselonglong" in
5317 "$define"|true|[yY]*)
5318         cat <<EOM >&4
5319
5320 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5321 EOM
5322         use64bitint="$define"
5323         ;;
5324 esac                          
5325 case "$use64bits" in
5326 "$define"|true|[yY]*)
5327         cat <<EOM >&4
5328
5329 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5330 EOM
5331         use64bitint="$define"
5332         ;;
5333 esac                          
5334 case "$use64bitints" in
5335 "$define"|true|[yY]*)
5336         cat <<EOM >&4
5337
5338 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5339 EOM
5340         use64bitint="$define"
5341         ;;
5342 esac                          
5343 case "$use64bitsint" in
5344 "$define"|true|[yY]*)
5345         cat <<EOM >&4
5346
5347 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5348 EOM
5349         use64bitint="$define"
5350         ;;
5351 esac                          
5352 case "$uselonglongs" in
5353 "$define"|true|[yY]*)
5354         cat <<EOM >&4
5355
5356 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5357 EOM
5358         use64bitint="$define"
5359         ;;
5360 esac                          
5361 case "$use64bitsall" in
5362 "$define"|true|[yY]*)
5363         cat <<EOM >&4
5364
5365 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5366 EOM
5367         use64bitall="$define"
5368         ;;
5369 esac                          
5370
5371 case "$ccflags" in
5372 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5373 esac
5374 case "$use64bitall" in
5375 "$define"|true|[yY]*) use64bitint="$define" ;;
5376 esac
5377
5378 case "$longsize" in
5379 8) cat <<EOM
5380
5381 You have natively 64-bit long integers.
5382 EOM
5383    val="$define"
5384    ;;
5385 *) case "$use64bitint" in
5386    "$define"|true|[yY]*) dflt='y';;
5387    *) dflt='n';;
5388    esac
5389    case "$d_quad" in
5390    "$define") ;;
5391    *) dflt='n' ;;
5392    esac
5393    cat <<EOM
5394
5395 Perl can be built to take advantage of 64-bit integer types
5396 on some systems.  To do so, Configure can be run with -Duse64bitint.
5397 Choosing this option will most probably introduce binary incompatibilities.
5398
5399 If this doesn't make any sense to you, just accept the default '$dflt'.
5400 (The default has been chosen based on your configuration.)
5401 EOM
5402    rp='Try to use 64-bit integers, if available?'
5403    . ./myread
5404    case "$ans" in
5405    [yY]*) val="$define" ;;
5406    *)     val="$undef"  ;;
5407    esac
5408    ;;
5409 esac
5410 set use64bitint
5411 eval $setvar
5412
5413 case "$use64bitall" in
5414 "$define"|true|[yY]*) dflt='y' ;;
5415 *) case "$longsize" in
5416    8) dflt='y' ;;
5417    *) dflt='n' ;;
5418    esac
5419    ;;
5420 esac    
5421 cat <<EOM
5422
5423 You may also choose to try maximal 64-bitness.  It means using as much
5424 64-bitness as possible on the platform.  This in turn means even more
5425 binary incompatibilities.  On the other hand, your platform may not
5426 have any more 64-bitness available than what you already have chosen.
5427
5428 If this doesn't make any sense to you, just accept the default '$dflt'.
5429 (The default has been chosen based on your configuration.)
5430 EOM
5431 rp='Try to use maximal 64-bit support, if available?'
5432 . ./myread
5433 case "$ans" in
5434 [yY]*) val="$define" ;;
5435 *)     val="$undef"  ;;
5436 esac
5437 set use64bitall
5438 eval $setvar
5439 case "$use64bitall" in
5440 "$define")
5441         case "$use64bitint" in
5442         "$undef")
5443                 cat <<EOM
5444
5445 Since you have chosen a maximally 64-bit build, I'm also turning on
5446 the use of 64-bit integers.
5447 EOM
5448                 use64bitint="$define" ;;
5449         esac
5450         ;;
5451 esac
5452
5453 : Look for a hint-file generated 'call-back-unit'.  If the
5454 : user has specified that a 64-bit perl is to be built,
5455 : we may need to set or change some other defaults.
5456         if $test -f use64bitint.cbu; then
5457         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5458                 . ./use64bitint.cbu
5459         fi
5460 case "$use64bitint" in
5461 "$define"|true|[yY]*)
5462         case "$longsize" in
5463         4) case "$archname64" in
5464            '') archname64=64int ;;
5465            esac
5466            ;;
5467         esac
5468         ;;
5469 esac
5470
5471 : Look for a hint-file generated 'call-back-unit'.  If the
5472 : user has specified that a maximally 64-bit perl is to be built,
5473 : we may need to set or change some other defaults.
5474         if $test -f use64bitall.cbu; then
5475         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5476                 . ./use64bitall.cbu
5477         fi
5478 case "$use64bitall" in
5479 "$define"|true|[yY]*)
5480         case "$longsize" in
5481         4) case "$archname64" in
5482            ''|64int) archname64=64all ;;
5483            esac
5484            ;;
5485         esac
5486         ;;
5487 esac
5488
5489 case "$d_quad:$use64bitint" in
5490 $undef:$define)
5491         cat >&4 <<EOF
5492
5493 *** You have chosen to use 64-bit integers,
5494 *** but none cannot be found.
5495 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5496 *** Cannot continue, aborting.
5497
5498 EOF
5499         exit 1
5500         ;;
5501 esac
5502
5503 : check for length of double
5504 echo " "
5505 case "$doublesize" in
5506 '')
5507         echo "Checking to see how big your double precision numbers are..." >&4
5508         $cat >try.c <<EOCP
5509 #include <stdio.h>
5510 #$i_stdlib I_STDLIB
5511 #ifdef I_STDLIB
5512 #include <stdlib.h>
5513 #endif
5514 int main()
5515 {
5516     printf("%d\n", (int)sizeof(double));
5517     exit(0);
5518 }
5519 EOCP
5520         set try
5521         if eval $compile_ok; then
5522                 doublesize=`$run ./try`
5523                 echo "Your double is $doublesize bytes long."
5524         else
5525                 dflt='8'
5526                 echo "(I can't seem to compile the test program.  Guessing...)"
5527                 rp="What is the size of a double precision number (in bytes)?"
5528                 . ./myread
5529                 doublesize="$ans"
5530         fi
5531         ;;
5532 esac
5533 $rm -f try.c try
5534
5535 : check for long doubles
5536 echo " "
5537 echo "Checking to see if you have long double..." >&4
5538 echo 'int main() { long double x = 7.0; }' > try.c
5539 set try
5540 if eval $compile; then
5541         val="$define"
5542         echo "You have long double."
5543 else
5544         val="$undef"
5545         echo "You do not have long double."
5546 fi
5547 $rm try.*
5548 set d_longdbl
5549 eval $setvar
5550
5551 : check for length of long double
5552 case "${d_longdbl}${longdblsize}" in
5553 $define)
5554         echo " "
5555         echo "Checking to see how big your long doubles are..." >&4
5556         $cat >try.c <<'EOCP'
5557 #include <stdio.h>
5558 int main()
5559 {
5560         printf("%d\n", sizeof(long double));
5561 }
5562 EOCP
5563         set try
5564         set try
5565         if eval $compile; then
5566                 longdblsize=`$run ./try`
5567                 echo "Your long doubles are $longdblsize bytes long."
5568         else
5569                 dflt='8'
5570                 echo " "
5571                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5572                 rp="What is the size of a long double (in bytes)?"
5573                 . ./myread
5574                 longdblsize="$ans"
5575         fi
5576         if $test "X$doublesize" = "X$longdblsize"; then
5577                 echo "That isn't any different from an ordinary double."
5578                 echo "I'll keep your setting anyway, but you may see some"
5579                 echo "harmless compilation warnings."
5580         fi      
5581         ;;
5582 esac
5583 $rm -f try.* try
5584
5585 : determine the architecture name
5586 echo " "
5587 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5588         tarch=`arch`"-$osname"
5589 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5590         if uname -m > tmparch 2>&1 ; then
5591                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5592                         -e 's/$/'"-$osname/" tmparch`
5593         else
5594                 tarch="$osname"
5595         fi
5596         $rm -f tmparch
5597 else
5598         tarch="$osname"
5599 fi
5600 case "$myarchname" in
5601 ''|"$tarch") ;;
5602 *)
5603         echo "(Your architecture name used to be $myarchname.)"
5604         archname=''
5605         ;;
5606 esac
5607 case "$targetarch" in
5608 '') ;;
5609 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5610 esac
5611 myarchname="$tarch"
5612 case "$archname" in
5613 '') dflt="$tarch";;
5614 *) dflt="$archname";;
5615 esac
5616 rp='What is your architecture name'
5617 . ./myread
5618 archname="$ans"
5619 case "$usethreads" in
5620 $define)
5621         echo "Threads selected." >&4
5622         case "$archname" in
5623         *-thread*) echo "...and architecture name already has -thread." >&4
5624                 ;;
5625         *)      archname="$archname-thread"
5626                 echo "...setting architecture name to $archname." >&4
5627                 ;;
5628         esac
5629         ;;
5630 esac
5631 case "$usemultiplicity" in
5632 $define)
5633         echo "Multiplicity selected." >&4
5634         case "$archname" in
5635         *-multi*) echo "...and architecture name already has -multi." >&4
5636                 ;;
5637         *)      archname="$archname-multi"
5638                 echo "...setting architecture name to $archname." >&4
5639                 ;;
5640         esac
5641         ;;
5642 esac
5643 case "$use64bitint$use64bitall" in
5644 *"$define"*)
5645         case "$archname64" in
5646         '')
5647                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5648                 ;;
5649         *)
5650                 case "$use64bitint" in
5651                 "$define") echo "64 bit integers selected." >&4 ;;
5652                 esac
5653                 case "$use64bitall" in
5654                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5655                 esac
5656                 case "$archname" in
5657                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5658                         ;;
5659                 *)      archname="$archname-$archname64"
5660                         echo "...setting architecture name to $archname." >&4
5661                         ;;
5662                 esac
5663                 ;;
5664         esac
5665 esac
5666 case "$uselongdouble" in
5667 $define)
5668         echo "Long doubles selected." >&4
5669         case "$longdblsize" in
5670         $doublesize)
5671                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5672                 ;;
5673         *)
5674                 case "$archname" in
5675                 *-ld*) echo "...and architecture name already has -ld." >&4
5676                         ;;
5677                 *)      archname="$archname-ld"
5678                         echo "...setting architecture name to $archname." >&4
5679                         ;;
5680                 esac
5681                 ;;
5682         esac
5683         ;;
5684 esac
5685 case "$useperlio" in
5686 $define)
5687         echo "Perlio selected." >&4
5688         ;;
5689 *)
5690         echo "Perlio not selected, using stdio." >&4
5691         case "$archname" in
5692         *-stdio*) echo "...and architecture name already has -stdio." >&4
5693                 ;;
5694         *)      archname="$archname-stdio"
5695                 echo "...setting architecture name to $archname." >&4
5696                 ;;
5697         esac
5698         ;;
5699 esac
5700 if $test -f archname.cbu; then
5701         echo "Your platform has some specific hints for architecture name, using them..."
5702         . ./archname.cbu
5703 fi
5704
5705 : determine root of directory hierarchy where package will be installed.
5706 case "$prefix" in
5707 '')
5708         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5709         ;;
5710 *?/)
5711         dflt=`echo "$prefix" | sed 's/.$//'`
5712         ;;
5713 *)
5714         dflt="$prefix"
5715         ;;
5716 esac
5717 $cat <<EOM
5718
5719 By default, $package will be installed in $dflt/bin, manual pages
5720 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5721 installation directories. Typically this is something like /usr/local.
5722 If you wish to have binaries under /usr/bin but other parts of the
5723 installation under /usr/local, that's ok: you will be prompted
5724 separately for each of the installation directories, the prefix being
5725 only used to set the defaults.
5726
5727 EOM
5728 fn=d~
5729 rp='Installation prefix to use?'
5730 . ./getfile
5731 oldprefix=''
5732 case "$prefix" in
5733 '') ;;
5734 *)
5735         case "$ans" in
5736         "$prefix") ;;
5737         *) oldprefix="$prefix";;
5738         esac
5739         ;;
5740 esac
5741 prefix="$ans"
5742 prefixexp="$ansexp"
5743
5744 case "$afsroot" in
5745 '')     afsroot=/afs ;;
5746 *)      afsroot=$afsroot ;;
5747 esac
5748
5749 : is AFS running?
5750 echo " "
5751 case "$afs" in
5752 $define|true)   afs=true ;;
5753 $undef|false)   afs=false ;;
5754 *)      if test -d $afsroot; then
5755                 afs=true
5756         else
5757                 afs=false
5758         fi
5759         ;;
5760 esac
5761 if $afs; then
5762         echo "AFS may be running... I'll be extra cautious then..." >&4
5763 else
5764         echo "AFS does not seem to be running..." >&4
5765 fi
5766
5767 : determine installation prefix for where package is to be installed.
5768 if $afs; then 
5769 $cat <<EOM
5770
5771 Since you are running AFS, I need to distinguish the directory in which
5772 files will reside from the directory in which they are installed (and from
5773 which they are presumably copied to the former directory by occult means).
5774
5775 EOM
5776         case "$installprefix" in
5777         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5778         *) dflt="$installprefix";;
5779         esac
5780 else
5781 $cat <<EOM
5782
5783 In some special cases, particularly when building $package for distribution,
5784 it is convenient to distinguish the directory in which files should be
5785 installed from the directory ($prefix) in which they will
5786 eventually reside.  For most users, these two directories are the same.
5787
5788 EOM
5789         case "$installprefix" in
5790         '') dflt=$prefix ;;
5791         *) dflt=$installprefix;;
5792         esac
5793 fi
5794 fn=d~
5795 rp='What installation prefix should I use for installing files?'
5796 . ./getfile
5797 installprefix="$ans"
5798 installprefixexp="$ansexp"
5799
5800 : set the prefixit variable, to compute a suitable default value
5801 prefixit='case "$3" in
5802 ""|none)
5803         case "$oldprefix" in
5804         "") eval "$1=\"\$$2\"";;
5805         *)
5806                 case "$3" in
5807                 "") eval "$1=";;
5808                 none)
5809                         eval "tp=\"\$$2\"";
5810                         case "$tp" in
5811                         ""|" ") eval "$1=\"\$$2\"";;
5812                         *) eval "$1=";;
5813                         esac;;
5814                 esac;;
5815         esac;;
5816 *)
5817         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5818         case "$tp" in
5819         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5820         /*-$oldprefix/*|\~*-$oldprefix/*)
5821                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5822         *) eval "$1=\"\$$2\"";;
5823         esac;;
5824 esac'
5825
5826 : get the patchlevel
5827 echo " "
5828 echo "Getting the current patchlevel..." >&4
5829 if $test -r $rsrc/patchlevel.h;then
5830         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5831         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5832         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5833         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5834         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5835         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5836        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5837 else
5838         revision=0
5839         patchlevel=0
5840         subversion=0
5841         api_revision=0
5842         api_version=0
5843         api_subversion=0
5844         perl_patchlevel=0
5845         $echo "(You do not have patchlevel.h.  Eek.)"
5846 fi
5847 if $test -r $rsrc/.patch ; then  
5848         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5849                 perl_patchlevel=`cat $rsrc/.patch`
5850         fi
5851 fi
5852 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5853 version_patchlevel_string="version $patchlevel subversion $subversion"
5854 case "$perl_patchlevel" in
5855 0|'') ;;
5856 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5857 esac
5858
5859 $echo "(You have $package $version_patchlevel_string.)"
5860
5861 case "$osname" in
5862 dos|vms)
5863         : XXX Should be a Configure test for double-dots in filenames.
5864         version=`echo $revision $patchlevel $subversion | \
5865                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5866         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5867                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5868         ;;
5869 *)
5870         version=`echo $revision $patchlevel $subversion | \
5871                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5872         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5873                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5874         ;;
5875 esac
5876 : Special case the 5.005_xx maintenance series, which used 5.005
5877 : without any subversion label as a subdirectory in $sitelib
5878 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5879         api_versionstring='5.005'
5880 fi
5881
5882 : determine installation style
5883 : For now, try to deduce it from prefix unless it is already set.
5884 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5885 case "$installstyle" in
5886 '')     case "$prefix" in
5887                 *perl*) dflt='lib';;
5888                 *) dflt='lib/perl5' ;;
5889         esac
5890         ;;
5891 *)      dflt="$installstyle" ;;
5892 esac
5893 : Probably not worth prompting for this since we prompt for all
5894 : the directories individually, and the prompt would be too long and
5895 : confusing anyway.
5896 installstyle=$dflt
5897
5898 : determine where private library files go
5899 : Usual default is /usr/local/lib/perl5/$version.
5900 : Also allow things like /opt/perl/lib/$version, since 
5901 : /opt/perl/lib/perl5... would be redundant.
5902 : The default "style" setting is made in installstyle.U
5903 case "$installstyle" in
5904 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5905 *)       set dflt privlib lib/$version ;;
5906 esac
5907 eval $prefixit
5908 $cat <<EOM
5909
5910 There are some auxiliary files for $package that need to be put into a
5911 private library directory that is accessible by everyone.
5912
5913 EOM
5914 fn=d~+
5915 rp='Pathname where the private library files will reside?'
5916 . ./getfile
5917 privlib="$ans"
5918 privlibexp="$ansexp"
5919 : Change installation prefix, if necessary.
5920 if $test X"$prefix" != X"$installprefix"; then
5921         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5922 else
5923         installprivlib="$privlibexp"
5924 fi
5925
5926 : set the prefixup variable, to restore leading tilda escape
5927 prefixup='case "$prefixexp" in
5928 "$prefix") ;;
5929 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5930 esac'
5931
5932 : determine where public architecture dependent libraries go
5933 set archlib archlib
5934 eval $prefixit
5935 : privlib default is /usr/local/lib/$package/$version
5936 : archlib default is /usr/local/lib/$package/$version/$archname
5937 : privlib may have an optional trailing /share.
5938 tdflt=`echo $privlib | $sed 's,/share$,,'`
5939 tdflt=$tdflt/$archname
5940 case "$archlib" in
5941 '')     dflt=$tdflt
5942         ;;
5943 *)      dflt="$archlib"
5944     ;;
5945 esac
5946 $cat <<EOM
5947
5948 $spackage contains architecture-dependent library files.  If you are
5949 sharing libraries in a heterogeneous environment, you might store
5950 these files in a separate location.  Otherwise, you can just include
5951 them with the rest of the public library files.
5952
5953 EOM
5954 fn=d+~
5955 rp='Where do you want to put the public architecture-dependent libraries?'
5956 . ./getfile
5957 archlib="$ans"
5958 archlibexp="$ansexp"
5959 if $test X"$archlib" = X"$privlib"; then
5960         d_archlib="$undef"
5961 else
5962         d_archlib="$define"
5963 fi
5964 : Change installation prefix, if necessary.
5965 if $test X"$prefix" != X"$installprefix"; then
5966         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5967 else
5968         installarchlib="$archlibexp"
5969 fi
5970
5971 : see if setuid scripts can be secure
5972 $cat <<EOM
5973
5974 Some kernels have a bug that prevents setuid #! scripts from being
5975 secure.  Some sites have disabled setuid #! scripts because of this.
5976
5977 First let's decide if your kernel supports secure setuid #! scripts.
5978 (If setuid #! scripts would be secure but have been disabled anyway,
5979 don't say that they are secure if asked.)
5980
5981 EOM
5982
5983 val="$undef"
5984 if $test -d /dev/fd; then
5985         echo "#!$ls" >reflect
5986         chmod +x,u+s reflect
5987         ./reflect >flect 2>&1
5988         if $contains "/dev/fd" flect >/dev/null; then
5989                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5990                 val="$define"
5991         else
5992                 $cat <<EOM
5993 If you are not sure if they are secure, I can check but I'll need a
5994 username and password different from the one you are using right now.
5995 If you don't have such a username or don't want me to test, simply
5996 enter 'none'.
5997
5998 EOM
5999                 rp='Other username to test security of setuid scripts with?'
6000                 dflt='none'
6001                 . ./myread
6002                 case "$ans" in
6003                 n|none)
6004                         case "$d_suidsafe" in
6005                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6006                                 dflt=n;;
6007                         "$undef")
6008                                 echo "Well, the $hint value is *not* secure." >&4
6009                                 dflt=n;;
6010                         *)      echo "Well, the $hint value *is* secure." >&4
6011                                 dflt=y;;
6012                         esac
6013                         ;;
6014                 *)
6015                         $rm -f reflect flect
6016                         echo "#!$ls" >reflect
6017                         chmod +x,u+s reflect
6018                         echo >flect
6019                         chmod a+w flect
6020                         echo '"su" will (probably) prompt you for '"$ans's password."
6021                         su $ans -c './reflect >flect'
6022                         if $contains "/dev/fd" flect >/dev/null; then
6023                                 echo "Okay, it looks like setuid scripts are secure." >&4
6024                                 dflt=y
6025                         else
6026                                 echo "I don't think setuid scripts are secure." >&4
6027                                 dflt=n
6028                         fi
6029                         ;;
6030                 esac
6031                 rp='Does your kernel have *secure* setuid scripts?'
6032                 . ./myread
6033                 case "$ans" in
6034                 [yY]*)  val="$define";;
6035                 *)      val="$undef";;
6036                 esac
6037         fi
6038 else
6039         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6040         echo "(That's for file descriptors, not floppy disks.)"
6041         val="$undef"
6042 fi
6043 set d_suidsafe
6044 eval $setvar
6045
6046 $rm -f reflect flect
6047
6048 : now see if they want to do setuid emulation
6049 echo " "
6050 val="$undef"
6051 case "$d_suidsafe" in
6052 "$define")
6053         val="$undef"
6054         echo "No need to emulate SUID scripts since they are secure here." >&4
6055         ;;
6056 *)
6057         $cat <<EOM
6058 Some systems have disabled setuid scripts, especially systems where
6059 setuid scripts cannot be secure.  On systems where setuid scripts have
6060 been disabled, the setuid/setgid bits on scripts are currently
6061 useless.  It is possible for $package to detect those bits and emulate
6062 setuid/setgid in a secure fashion.  This emulation will only work if
6063 setuid scripts have been disabled in your kernel.
6064
6065 EOM
6066         case "$d_dosuid" in
6067         "$define") dflt=y ;;
6068         *) dflt=n ;;
6069         esac
6070         rp="Do you want to do setuid/setgid emulation?"
6071         . ./myread
6072         case "$ans" in
6073         [yY]*)  val="$define";;
6074         *)      val="$undef";;
6075         esac
6076         ;;
6077 esac
6078 set d_dosuid
6079 eval $setvar
6080
6081 : see if this is a malloc.h system
6082 : we want a real compile instead of Inhdr because some systems have a
6083 : malloc.h that just gives a compile error saying to use stdlib.h instead
6084 echo " "
6085 $cat >try.c <<EOCP
6086 #include <stdlib.h>
6087 #include <malloc.h>
6088 int main () { return 0; }
6089 EOCP
6090 set try
6091 if eval $compile; then
6092     echo "<malloc.h> found." >&4
6093     val="$define"
6094 else
6095     echo "<malloc.h> NOT found." >&4
6096     val="$undef"
6097 fi
6098 $rm -f try.c try
6099 set i_malloc
6100 eval $setvar
6101
6102 : check for void type
6103 echo " "
6104 echo "Checking to see how well your C compiler groks the void type..." >&4
6105 case "$voidflags" in
6106 '')
6107         $cat >try.c <<EOCP
6108 #$i_stdlib I_STDLIB
6109 #ifdef I_STDLIB
6110 #include <stdlib.h>
6111 #endif
6112 #if TRY & 1
6113 void sub() {
6114 #else
6115 sub() {
6116 #endif
6117         extern void moo();      /* function returning void */
6118         void (*goo)();          /* ptr to func returning void */
6119 #if TRY & 8
6120         void *hue;              /* generic ptr */
6121 #endif
6122 #if TRY & 2
6123         void (*foo[10])();
6124 #endif
6125
6126 #if TRY & 4
6127         if(goo == moo) {
6128                 exit(0);
6129         }
6130 #endif
6131         exit(0);
6132 }
6133 int main() { sub(); }
6134 EOCP
6135         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6136                 voidflags=$defvoidused
6137         echo "Good.  It appears to support void to the level $package wants.">&4
6138                 if $contains warning .out >/dev/null 2>&1; then
6139                         echo "However, you might get some warnings that look like this:"
6140                         $cat .out
6141                 fi
6142         else
6143 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6144                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6145                         echo "It supports 1..."
6146                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6147                                 echo "It also supports 2..."
6148                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6149                                         voidflags=7
6150                                         echo "And it supports 4 but not 8 definitely."
6151                                 else
6152                                         echo "It doesn't support 4..."
6153                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6154                                                 voidflags=11
6155                                                 echo "But it supports 8."
6156                                         else
6157                                                 voidflags=3
6158                                                 echo "Neither does it support 8."
6159                                         fi
6160                                 fi
6161                         else
6162                                 echo "It does not support 2..."
6163                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6164                                         voidflags=13
6165                                         echo "But it supports 4 and 8."
6166                                 else
6167                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6168                                                 voidflags=5
6169                                                 echo "And it supports 4 but has not heard about 8."
6170                                         else
6171                                                 echo "However it supports 8 but not 4."
6172                                         fi
6173                                 fi
6174                         fi
6175                 else
6176                         echo "There is no support at all for void."
6177                         voidflags=0
6178                 fi
6179         fi
6180 esac
6181 case "$voidflags" in
6182 "$defvoidused") ;;
6183 *)      $cat >&4 <<'EOM'
6184   Support flag bits are:
6185     1: basic void declarations.
6186     2: arrays of pointers to functions returning void.
6187     4: operations between pointers to and addresses of void functions.
6188     8: generic void pointers.
6189 EOM
6190         dflt="$voidflags";
6191         rp="Your void support flags add up to what?"
6192         . ./myread
6193         voidflags="$ans"
6194         ;;
6195 esac
6196 $rm -f try.* .out
6197
6198 : check for length of pointer
6199 echo " "
6200 case "$ptrsize" in
6201 '')
6202         echo "Checking to see how big your pointers are..." >&4
6203         if test "$voidflags" -gt 7; then
6204                 echo '#define VOID_PTR char *' > try.c
6205         else
6206                 echo '#define VOID_PTR void *' > try.c
6207         fi
6208         $cat >>try.c <<EOCP
6209 #include <stdio.h>
6210 #$i_stdlib I_STDLIB
6211 #ifdef I_STDLIB
6212 #include <stdlib.h>
6213 #endif
6214 int main()
6215 {
6216     printf("%d\n", (int)sizeof(VOID_PTR));
6217     exit(0);
6218 }
6219 EOCP
6220         set try
6221         if eval $compile_ok; then
6222                 ptrsize=`$run ./try`
6223                 echo "Your pointers are $ptrsize bytes long."
6224         else
6225                 dflt='4'
6226                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6227                 rp="What is the size of a pointer (in bytes)?"
6228                 . ./myread
6229                 ptrsize="$ans"
6230         fi
6231         ;;
6232 esac
6233 $rm -f try.c try
6234 case "$use64bitall" in
6235 "$define"|true|[yY]*)
6236         case "$ptrsize" in
6237         4)      cat <<EOM >&4
6238
6239 *** You have chosen a maximally 64-bit build,
6240 *** but your pointers are only 4 bytes wide.
6241 *** Please rerun Configure without -Duse64bitall.
6242 EOM
6243                 case "$d_quad" in
6244                 define)
6245                         cat <<EOM >&4
6246 *** Since you have quads, you could possibly try with -Duse64bitint.
6247 EOM
6248                         ;;
6249                 esac
6250                 cat <<EOM >&4
6251 *** Cannot continue, aborting.
6252
6253 EOM
6254
6255                 exit 1
6256                 ;;
6257         esac
6258         ;;
6259 esac
6260
6261
6262 : determine which malloc to compile in
6263 echo " "
6264 case "$usemymalloc" in
6265 [yY]*|true|$define)     dflt='y' ;;
6266 [nN]*|false|$undef)     dflt='n' ;;
6267 *)      case "$ptrsize" in
6268         4) dflt='y' ;;
6269         *) dflt='n' ;;
6270         esac
6271         ;;
6272 esac
6273 rp="Do you wish to attempt to use the malloc that comes with $package?"
6274 . ./myread
6275 usemymalloc="$ans"
6276 case "$ans" in
6277 y*|true)
6278         usemymalloc='y'
6279         mallocsrc='malloc.c'
6280         mallocobj="malloc$_o"
6281         d_mymalloc="$define"
6282         case "$libs" in
6283         *-lmalloc*)
6284                 : Remove malloc from list of libraries to use
6285                 echo "Removing unneeded -lmalloc from library list" >&4
6286                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6287                 shift
6288                 libs="$*"
6289                 echo "libs = $libs" >&4
6290                 ;;
6291         esac
6292         ;;
6293 *)
6294         usemymalloc='n'
6295         mallocsrc=''
6296         mallocobj=''
6297         d_mymalloc="$undef"
6298         ;;
6299 esac
6300
6301 : compute the return types of malloc and free
6302 echo " "
6303 $cat >malloc.c <<END
6304 #$i_malloc I_MALLOC
6305 #$i_stdlib I_STDLIB
6306 #include <stdio.h>
6307 #include <sys/types.h>
6308 #ifdef I_MALLOC
6309 #include <malloc.h>
6310 #endif
6311 #ifdef I_STDLIB
6312 #include <stdlib.h>
6313 #endif
6314 #ifdef TRY_MALLOC
6315 void *malloc();
6316 #endif
6317 #ifdef TRY_FREE
6318 void free();
6319 #endif
6320 END
6321 case "$malloctype" in
6322 '')
6323         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6324                 malloctype='void *'
6325         else
6326                 malloctype='char *'
6327         fi
6328         ;;
6329 esac
6330 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6331
6332 case "$freetype" in
6333 '')
6334         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6335                 freetype='void'
6336         else
6337                 freetype='int'
6338         fi
6339         ;;
6340 esac
6341 echo "Your system uses $freetype free(), it would seem." >&4
6342 $rm -f malloc.[co]
6343 $cat <<EOM
6344
6345 After $package is installed, you may wish to install various
6346 add-on modules and utilities.  Typically, these add-ons will
6347 be installed under $prefix with the rest
6348 of this package.  However, you may wish to install such add-ons
6349 elsewhere under a different prefix.
6350
6351 If you do not wish to put everything under a single prefix, that's
6352 ok.  You will be prompted for the individual locations; this siteprefix
6353 is only used to suggest the defaults.
6354
6355 The default should be fine for most people.
6356
6357 EOM
6358 fn=d~+
6359 rp='Installation prefix to use for add-on modules and utilities?'
6360 : XXX Here might be another good place for an installstyle setting.
6361 case "$siteprefix" in
6362 '') dflt=$prefix ;;
6363 *)  dflt=$siteprefix ;;
6364 esac
6365 . ./getfile
6366 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6367 oldsiteprefix=''
6368 case "$siteprefix" in
6369 '') ;;
6370 *)      case "$ans" in
6371         "$prefix") ;;
6372         *) oldsiteprefix="$prefix";;
6373         esac
6374         ;;
6375 esac
6376 siteprefix="$ans"
6377 siteprefixexp="$ansexp"
6378
6379 : determine where site specific libraries go.
6380 : Usual default is /usr/local/lib/perl5/site_perl/$version
6381 : The default "style" setting is made in installstyle.U
6382 : XXX No longer works with Prefixit stuff.
6383 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6384 case "$sitelib" in
6385 '') case "$installstyle" in
6386         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6387         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6388         esac
6389         ;;
6390 *)      dflt="$sitelib"
6391         ;;
6392 esac
6393 $cat <<EOM
6394
6395 The installation process will create a directory for
6396 site-specific extensions and modules.  Most users find it convenient
6397 to place all site-specific files in this directory rather than in the
6398 main distribution directory.
6399
6400 EOM
6401 fn=d~+
6402 rp='Pathname for the site-specific library files?'
6403 . ./getfile
6404 sitelib="$ans"
6405 sitelibexp="$ansexp"
6406 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6407 : Change installation prefix, if necessary.
6408 if $test X"$prefix" != X"$installprefix"; then
6409         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6410 else
6411         installsitelib="$sitelibexp"
6412 fi
6413
6414 : determine where site specific architecture-dependent libraries go.
6415 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6416 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6417 : sitelib may have an optional trailing /share.
6418 case "$sitearch" in
6419 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6420         dflt="$dflt/$archname"
6421         ;;
6422 *)      dflt="$sitearch"
6423         ;;
6424 esac
6425 set sitearch sitearch none
6426 eval $prefixit
6427 $cat <<EOM
6428
6429 The installation process will also create a directory for
6430 architecture-dependent site-specific extensions and modules.
6431
6432 EOM
6433 fn=d~+
6434 rp='Pathname for the site-specific architecture-dependent library files?'
6435 . ./getfile
6436 sitearch="$ans"
6437 sitearchexp="$ansexp"
6438 : Change installation prefix, if necessary.
6439 if $test X"$prefix" != X"$installprefix"; then
6440         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6441 else
6442         installsitearch="$sitearchexp"
6443 fi
6444
6445 $cat <<EOM
6446
6447 The installation process will also create a directory for
6448 vendor-supplied add-ons.  Vendors who supply perl with their system
6449 may find it convenient to place all vendor-supplied files in this
6450 directory rather than in the main distribution directory.  This will
6451 ease upgrades between binary-compatible maintenance versions of perl.
6452
6453 Of course you may also use these directories in whatever way you see
6454 fit.  For example, you might use them to access modules shared over a
6455 company-wide network.
6456
6457 The default answer should be fine for most people.
6458 This causes further questions about vendor add-ons to be skipped
6459 and no vendor-specific directories will be configured for perl.
6460
6461 EOM
6462 rp='Do you want to configure vendor-specific add-on directories?'
6463 case "$usevendorprefix" in
6464 define|true|[yY]*) dflt=y ;;
6465 *)      : User may have set vendorprefix directly on Configure command line.
6466         case "$vendorprefix" in
6467         ''|' ') dflt=n ;;
6468         *)      dflt=y ;;
6469         esac
6470         ;;
6471 esac
6472 . ./myread
6473 case "$ans" in
6474 [yY]*)  fn=d~+
6475         rp='Installation prefix to use for vendor-supplied add-ons?'
6476         case "$vendorprefix" in
6477         '') dflt='' ;;
6478         *)  dflt=$vendorprefix ;;
6479         esac
6480         . ./getfile
6481         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6482         oldvendorprefix=''
6483         case "$vendorprefix" in
6484         '') ;;
6485         *)      case "$ans" in
6486                 "$prefix") ;;
6487                 *) oldvendorprefix="$prefix";;
6488                 esac
6489                 ;;
6490         esac
6491         usevendorprefix="$define"
6492         vendorprefix="$ans"
6493         vendorprefixexp="$ansexp"
6494         ;;
6495 *)      usevendorprefix="$undef"
6496         vendorprefix=''
6497         vendorprefixexp=''
6498         ;;
6499 esac
6500
6501 case "$vendorprefix" in
6502 '')     d_vendorlib="$undef"
6503         vendorlib=''
6504         vendorlibexp=''
6505         ;;
6506 *)      d_vendorlib="$define"
6507         : determine where vendor-supplied modules go.
6508         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6509         case "$vendorlib" in
6510         '')
6511                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6512                 case "$installstyle" in
6513                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6514                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6515                 esac
6516                 ;;
6517         *)      dflt="$vendorlib"
6518                 ;;
6519         esac
6520         fn=d~+
6521         rp='Pathname for the vendor-supplied library files?'
6522         . ./getfile
6523         vendorlib="$ans"
6524         vendorlibexp="$ansexp"
6525         ;;
6526 esac
6527 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6528 : Change installation prefix, if necessary.
6529 if $test X"$prefix" != X"$installprefix"; then
6530         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6531 else
6532         installvendorlib="$vendorlibexp"
6533 fi
6534
6535 case "$vendorprefix" in
6536 '')     d_vendorarch="$undef"
6537         vendorarch=''
6538         vendorarchexp=''
6539         ;;
6540 *)      d_vendorarch="$define"
6541         : determine where vendor-supplied architecture-dependent libraries go.
6542         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6543         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6544         : vendorlib may have an optional trailing /share.
6545         case "$vendorarch" in
6546         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6547                 dflt="$dflt/$archname"
6548                 ;;
6549         *)      dflt="$vendorarch" ;;
6550         esac
6551         fn=d~+
6552         rp='Pathname for vendor-supplied architecture-dependent files?'
6553         . ./getfile
6554         vendorarch="$ans"
6555         vendorarchexp="$ansexp"
6556         ;;
6557 esac
6558 : Change installation prefix, if necessary.
6559 if $test X"$prefix" != X"$installprefix"; then
6560         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6561 else
6562         installvendorarch="$vendorarchexp"
6563 fi
6564
6565 : Final catch-all directories to search
6566 $cat <<EOM
6567
6568 Lastly, you can have perl look in other directories for extensions and
6569 modules in addition to those already specified.
6570 These directories will be searched after 
6571         $sitearch 
6572         $sitelib 
6573 EOM
6574 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6575 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6576 echo ' '
6577 case "$otherlibdirs" in
6578 ''|' ') dflt='none' ;;
6579 *)      dflt="$otherlibdirs" ;;
6580 esac
6581 $cat <<EOM
6582 Enter a colon-separated set of extra paths to include in perl's @INC
6583 search path, or enter 'none' for no extra paths.
6584
6585 EOM
6586
6587 rp='Colon-separated list of additional directories for perl to search?'
6588 . ./myread
6589 case "$ans" in
6590 ' '|''|none)    otherlibdirs=' ' ;;     
6591 *)      otherlibdirs="$ans" ;;
6592 esac
6593 case "$otherlibdirs" in
6594 ' ') val=$undef ;;
6595 *)      val=$define ;;
6596 esac
6597 set d_perl_otherlibdirs
6598 eval $setvar
6599
6600 : Cruising for prototypes
6601 echo " "
6602 echo "Checking out function prototypes..." >&4
6603 $cat >prototype.c <<EOCP
6604 #$i_stdlib I_STDLIB
6605 #ifdef I_STDLIB
6606 #include <stdlib.h>
6607 #endif
6608 int main(int argc, char *argv[]) {
6609         exit(0);}
6610 EOCP
6611 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6612         echo "Your C compiler appears to support function prototypes."
6613         val="$define"
6614 else
6615         echo "Your C compiler doesn't seem to understand function prototypes."
6616         val="$undef"
6617 fi
6618 set prototype
6619 eval $setvar
6620 $rm -f prototype*
6621
6622 case "$prototype" in
6623 "$define") ;;
6624 *)      ansi2knr='ansi2knr'
6625         echo " "
6626         cat <<EOM >&4
6627
6628 $me:  FATAL ERROR:
6629 This version of $package can only be compiled by a compiler that 
6630 understands function prototypes.  Unfortunately, your C compiler 
6631         $cc $ccflags
6632 doesn't seem to understand them.  Sorry about that.
6633
6634 If GNU cc is available for your system, perhaps you could try that instead.  
6635
6636 Eventually, we hope to support building Perl with pre-ANSI compilers.
6637 If you would like to help in that effort, please contact <perlbug@perl.org>.
6638
6639 Aborting Configure now.
6640 EOM
6641         exit 2
6642         ;;
6643 esac
6644
6645 : determine where public executables go
6646 echo " "
6647 set dflt bin bin
6648 eval $prefixit
6649 fn=d~
6650 rp='Pathname where the public executables will reside?'
6651 . ./getfile
6652 if $test "X$ansexp" != "X$binexp"; then
6653         installbin=''
6654 fi
6655 bin="$ans"
6656 binexp="$ansexp"
6657 : Change installation prefix, if necessary.
6658 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6659 if $test X"$prefix" != X"$installprefix"; then
6660         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6661 else
6662         installbin="$binexp"
6663 fi
6664
6665 echo " "
6666 case "$extras" in
6667 '') dflt='n';;
6668 *) dflt='y';;
6669 esac
6670 cat <<EOM
6671 Perl can be built with extra modules or bundles of modules which
6672 will be fetched from the CPAN and installed alongside Perl.
6673
6674 Notice that you will need access to the CPAN; either via the Internet,
6675 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6676 be asked later to configure the CPAN.pm module which will in turn do
6677 the installation of the rest of the extra modules or bundles.)
6678
6679 Notice also that if the modules require any external software such as
6680 libraries and headers (the libz library and the zlib.h header for the
6681 Compress::Zlib module, for example) you MUST have any such software
6682 already installed, this configuration process will NOT install such
6683 things for you.
6684
6685 If this doesn't make any sense to you, just accept the default '$dflt'.
6686 EOM
6687 rp='Install any extra modules (y or n)?'
6688 . ./myread
6689 case "$ans" in
6690 y|Y)
6691         cat <<EOM
6692
6693 Please list any extra modules or bundles to be installed from CPAN,
6694 with spaces between the names.  The names can be in any format the
6695 'install' command of CPAN.pm will understand.  (Answer 'none',
6696 without the quotes, to install no extra modules or bundles.)
6697 EOM
6698         rp='Extras?'
6699         dflt="$extras"
6700         . ./myread
6701         extras="$ans"
6702 esac
6703 case "$extras" in
6704 ''|'none')
6705         val=''
6706         $rm -f ../extras.lst
6707         ;;
6708 *)      echo "(Saving the list of extras for later...)"
6709         echo "$extras" > ../extras.lst
6710         val="'$extras'"
6711         ;;
6712 esac
6713 set extras
6714 eval $setvar
6715 echo " "
6716
6717 : determine where html pages for programs go
6718 set html1dir html1dir none
6719 eval $prefixit
6720 $cat <<EOM
6721
6722 If you wish to install html files for programs in $spackage, indicate 
6723 the appropriate directory here.  To skip installing html files,
6724 answer "none".
6725 EOM
6726 case "$html1dir" in
6727 ''|none|$undef|' ') dflt=none ;;
6728 *) dflt=$html1dir ;;
6729 esac
6730 fn=dn+~
6731 rp="Directory for the main $spackage html pages?"
6732 . ./getfile
6733 html1dir="$ans"
6734 html1direxp="$ansexp"
6735 : Use ' ' for none so value is preserved next time through Configure
6736 $test X"$html1dir" = "X" && html1dir=' '
6737 : Change installation prefix, if necessary.
6738 if $test X"$prefix" != X"$installprefix"; then
6739         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6740 else
6741         installhtml1dir="$html1direxp"
6742 fi
6743
6744 : determine where html pages for libraries and modules go
6745 set html3dir html3dir none
6746 eval $prefixit
6747 $cat <<EOM
6748
6749 If you wish to install html files for modules associated with $spackage,
6750 indicate the appropriate directory here.  To skip installing html files,
6751 answer "none".
6752 EOM
6753 : There is no obvious default.  If they have specified html1dir, then
6754 : try to key off that, possibly changing .../html1 into .../html3.
6755 case "$html3dir" in
6756 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6757 *) dflt=$html3dir ;;
6758 esac
6759 fn=dn+~
6760 rp="Directory for the $spackage module html pages?"
6761 . ./getfile
6762 html3dir="$ans"
6763 html3direxp="$ansexp"
6764 : Use ' ' for none so value is preserved next time through Configure
6765 $test X"$html3dir" = "X" && html3dir=' '
6766 : Change installation prefix, if necessary.
6767 if $test X"$prefix" != X"$installprefix"; then
6768         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6769 else
6770         installhtml3dir="$html3direxp"
6771 fi
6772
6773 : Find perl5.005 or later.
6774 echo "Looking for a previously installed perl5.005 or later... "
6775 case "$perl5" in
6776 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6777                 : Check if this perl is recent and can load a simple module
6778                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6779                         perl5=$tdir/perl
6780                         break;
6781                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6782                         perl5=$tdir/perl5
6783                         break;
6784                 fi
6785         done
6786         ;;
6787 *)      perl5="$perl5"
6788         ;;
6789 esac
6790 case "$perl5" in
6791 '')     echo "None found.  That's ok.";;
6792 *)      echo "Using $perl5." ;;
6793 esac
6794
6795 : Determine list of previous versions to include in @INC
6796 $cat > getverlist <<EOPL
6797 #!$perl5 -w
6798 use File::Basename;
6799 \$api_versionstring = "$api_versionstring";
6800 \$version = "$version";
6801 \$stem = "$sitelib_stem";
6802 \$archname = "$archname";
6803 EOPL
6804         $cat >> getverlist <<'EOPL'
6805 # Can't have leading @ because metaconfig interprets it as a command!
6806 ;@inc_version_list=();
6807 # XXX Redo to do opendir/readdir? 
6808 if (-d $stem) {
6809     chdir($stem);
6810     ;@candidates = glob("5.*");
6811 }
6812 else {
6813     ;@candidates = ();
6814 }
6815
6816 # XXX ToDo:  These comparisons must be reworked when two-digit
6817 # subversions come along, so that 5.7.10 compares as greater than
6818 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6819 # widespread that we can use the built-in version vectors rather
6820 # than reinventing them here.  For 5.6.0, however, we must
6821 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6822 foreach $d (@candidates) {
6823     if ($d lt $version) {
6824         if ($d ge $api_versionstring) {
6825             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6826         }
6827         elsif ($d ge "5.005") {
6828             unshift(@inc_version_list, grep { -d } $d);
6829         }
6830     }
6831     else {
6832         # Skip newer version.  I.e. don't look in
6833         # 5.7.0 if we're installing 5.6.1.
6834     }
6835 }
6836
6837 if (@inc_version_list) {
6838     print join(' ', @inc_version_list);
6839 }
6840 else {
6841     # Blank space to preserve value for next Configure run.
6842     print " ";
6843 }
6844 EOPL
6845 chmod +x getverlist
6846 case "$inc_version_list" in
6847 '')     if test -x "$perl5$exe_ext"; then
6848                 dflt=`$perl5 getverlist`
6849         else
6850                 dflt='none'
6851         fi
6852         ;;
6853 $undef) dflt='none' ;;
6854 *)  eval dflt=\"$inc_version_list\" ;;
6855 esac
6856 case "$dflt" in
6857 ''|' ') dflt=none ;;
6858 esac
6859 case "$dflt" in
6860 5.005) dflt=none ;;
6861 esac
6862 $cat <<EOM
6863
6864 In order to ease the process of upgrading, this version of perl 
6865 can be configured to use modules built and installed with earlier 
6866 versions of perl that were installed under $prefix.  Specify here
6867 the list of earlier versions that this version of perl should check.
6868 If Configure detected no earlier versions of perl installed under
6869 $prefix, then the list will be empty.  Answer 'none' to tell perl
6870 to not search earlier versions.
6871
6872 The default should almost always be sensible, so if you're not sure,
6873 just accept the default.
6874 EOM
6875
6876 rp='List of earlier versions to include in @INC?'
6877 . ./myread
6878 case "$ans" in
6879 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6880 *) inc_version_list="$ans" ;;
6881 esac
6882 case "$inc_version_list" in
6883 ''|' ') 
6884         inc_version_list_init='0';;
6885 *)      inc_version_list_init=`echo $inc_version_list |
6886                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6887         ;;
6888 esac
6889 $rm -f getverlist
6890
6891 : determine whether to install perl also as /usr/bin/perl
6892
6893 echo " "
6894 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6895         $cat <<EOM
6896 Many scripts expect perl to be installed as /usr/bin/perl.
6897
6898 If you want to, I can install the perl you are about to compile
6899 as /usr/bin/perl (in addition to $bin/perl).
6900 EOM
6901         if test -f /usr/bin/perl; then
6902             $cat <<EOM
6903
6904 However, please note that because you already have a /usr/bin/perl,
6905 overwriting that with a new Perl would very probably cause problems.
6906 Therefore I'm assuming you don't want to do that (unless you insist).
6907
6908 EOM
6909             case "$installusrbinperl" in
6910             "$define"|[yY]*)    dflt='y';;
6911             *)                  dflt='n';;
6912             esac
6913         else
6914             $cat <<EOM
6915
6916 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6917
6918 EOM
6919             case "$installusrbinperl" in
6920             "$undef"|[nN]*)     dflt='n';;
6921             *)                  dflt='y';;
6922             esac
6923         fi
6924         rp="Do you want to install perl as /usr/bin/perl?"
6925         . ./myread
6926         case "$ans" in
6927         [yY]*)  val="$define";;
6928         *)      val="$undef" ;;
6929         esac
6930 else
6931         val="$undef"
6932 fi
6933 set installusrbinperl
6934 eval $setvar
6935
6936 echo " "
6937 echo "Checking for GNU C Library..." >&4
6938 cat >try.c <<'EOCP'
6939 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6940    alone are insufficient to distinguish different versions, such as
6941    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6942    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6943 */
6944 #include <stdio.h>
6945 int main(void)
6946 {
6947 #ifdef __GLIBC__
6948 #   ifdef __GLIBC_MINOR__
6949 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6950 #           include <gnu/libc-version.h>
6951             printf("%s\n",  gnu_get_libc_version());
6952 #       else
6953             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6954 #       endif
6955 #   else
6956         printf("%d\n",  __GLIBC__);
6957 #   endif
6958     return 0;
6959 #else
6960     return 1;
6961 #endif
6962 }
6963 EOCP
6964 set try
6965 if eval $compile_ok && $run ./try > glibc.ver; then
6966         val="$define"
6967         gnulibc_version=`$cat glibc.ver`
6968         echo "You are using the GNU C Library version $gnulibc_version"
6969 else
6970         val="$undef"
6971         gnulibc_version=''
6972         echo "You are not using the GNU C Library"
6973 fi
6974 $rm -f try try.* glibc.ver
6975 set d_gnulibc
6976 eval $setvar
6977
6978 : see if nm is to be used to determine whether a symbol is defined or not
6979 case "$usenm" in
6980 '')
6981         dflt=''
6982         case "$d_gnulibc" in
6983         "$define")
6984                 echo " "
6985                 echo "nm probably won't work on the GNU C Library." >&4
6986                 dflt=n
6987                 ;;
6988         esac
6989         case "$dflt" in
6990         '') 
6991                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6992                         echo " "
6993                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6994                         echo "'nm' won't be sufficient on this sytem." >&4
6995                         dflt=n
6996                 fi
6997                 ;;
6998         esac
6999         case "$dflt" in
7000         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7001                 if $test $dflt -gt 20; then
7002                         dflt=y
7003                 else
7004                         dflt=n
7005                 fi
7006                 ;;
7007         esac
7008         ;;
7009 *)
7010         case "$usenm" in
7011         true|$define) dflt=y;;
7012         *) dflt=n;;
7013         esac
7014         ;;
7015 esac
7016 $cat <<EOM
7017
7018 I can use $nm to extract the symbols from your C libraries. This
7019 is a time consuming task which may generate huge output on the disk (up
7020 to 3 megabytes) but that should make the symbols extraction faster. The
7021 alternative is to skip the 'nm' extraction part and to compile a small
7022 test program instead to determine whether each symbol is present. If
7023 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7024 this may be the best solution.
7025
7026 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7027
7028 EOM
7029 rp="Shall I use $nm to extract C symbols from the libraries?"
7030 . ./myread
7031 case "$ans" in
7032 [Nn]*) usenm=false;;
7033 *) usenm=true;;
7034 esac
7035
7036 runnm=$usenm
7037 case "$reuseval" in
7038 true) runnm=false;;
7039 esac
7040
7041 : nm options which may be necessary
7042 case "$nm_opt" in
7043 '') if $test -f /mach_boot; then
7044                 nm_opt=''       # Mach
7045         elif $test -d /usr/ccs/lib; then
7046                 nm_opt='-p'     # Solaris (and SunOS?)
7047         elif $test -f /dgux; then
7048                 nm_opt='-p'     # DG-UX
7049         elif $test -f /lib64/rld; then
7050                 nm_opt='-p'     # 64-bit Irix
7051         else
7052                 nm_opt=''
7053         fi;;
7054 esac
7055
7056 : nm options which may be necessary for shared libraries but illegal
7057 : for archive libraries.  Thank you, Linux.
7058 case "$nm_so_opt" in
7059 '')     case "$myuname" in
7060         *linux*)
7061                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7062                         nm_so_opt='--dynamic'
7063                 fi
7064                 ;;
7065         esac
7066         ;;
7067 esac
7068
7069 case "$runnm" in
7070 true)
7071 : get list of predefined functions in a handy place
7072 echo " "
7073 case "$libc" in
7074 '') libc=unknown
7075         case "$libs" in
7076         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7077         esac
7078         ;;
7079 esac
7080 case "$libs" in
7081 '') ;;
7082 *)  for thislib in $libs; do
7083         case "$thislib" in
7084         -lc|-lc_s)
7085                 : Handle C library specially below.
7086                 ;;
7087         -l*)
7088                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7089                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7090                         :
7091                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7092                         :
7093                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7094                         :
7095                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7096                         :
7097                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7098                         :
7099                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7100                         :
7101                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7102                         :
7103                 else
7104                         try=''
7105                 fi
7106                 libnames="$libnames $try"
7107                 ;;
7108         *) libnames="$libnames $thislib" ;;
7109         esac
7110         done
7111         ;;
7112 esac
7113 xxx=normal
7114 case "$libc" in
7115 unknown)
7116         set /lib/libc.$so
7117         for xxx in $libpth; do
7118                 $test -r $1 || set $xxx/libc.$so
7119                 : The messy sed command sorts on library version numbers.
7120                 $test -r $1 || \
7121                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7122                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7123                                 h
7124                                 s/[0-9][0-9]*/0000&/g
7125                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7126                                 G
7127                                 s/\n/ /' | \
7128                          $sort | $sed -e 's/^.* //'`
7129                 eval set \$$#
7130         done
7131         $test -r $1 || set /usr/ccs/lib/libc.$so
7132         $test -r $1 || set /lib/libsys_s$_a
7133         ;;
7134 *)
7135         set blurfl
7136         ;;
7137 esac
7138 if $test -r "$1"; then
7139         echo "Your (shared) C library seems to be in $1."
7140         libc="$1"
7141 elif $test -r /lib/libc && $test -r /lib/clib; then
7142         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7143         xxx=apollo
7144         libc='/lib/clib /lib/libc'
7145         if $test -r /lib/syslib; then
7146                 echo "(Your math library is in /lib/syslib.)"
7147                 libc="$libc /lib/syslib"
7148         fi
7149 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7150         echo "Your C library seems to be in $libc, as you said before."
7151 elif $test -r $incpath/usr/lib/libc$_a; then
7152         libc=$incpath/usr/lib/libc$_a;
7153         echo "Your C library seems to be in $libc.  That's fine."
7154 elif $test -r /lib/libc$_a; then
7155         libc=/lib/libc$_a;
7156         echo "Your C library seems to be in $libc.  You're normal."
7157 else
7158         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7159                 :
7160         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7161                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7162         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7163                 :
7164         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7165                 :
7166         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7167                 :
7168         else
7169                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7170         fi
7171         if $test -r "$tans"; then
7172                 echo "Your C library seems to be in $tans, of all places."
7173                 libc=$tans
7174         else
7175                 libc='blurfl'
7176         fi
7177 fi
7178 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7179         dflt="$libc"
7180         cat <<EOM
7181
7182 If the guess above is wrong (which it might be if you're using a strange
7183 compiler, or your machine supports multiple models), you can override it here.
7184
7185 EOM
7186 else
7187         dflt=''
7188         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7189         cat >&4 <<EOM
7190 I can't seem to find your C library.  I've looked in the following places:
7191
7192 EOM
7193         $sed 's/^/      /' libpath
7194         cat <<EOM
7195
7196 None of these seems to contain your C library. I need to get its name...
7197
7198 EOM
7199 fi
7200 fn=f
7201 rp='Where is your C library?'
7202 . ./getfile
7203 libc="$ans"
7204
7205 echo " "
7206 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7207 set X `cat libnames`
7208 shift
7209 xxx=files
7210 case $# in 1) xxx=file; esac
7211 echo "Extracting names from the following $xxx for later perusal:" >&4
7212 echo " "
7213 $sed 's/^/      /' libnames >&4
7214 echo " "
7215 $echo $n "This may take a while...$c" >&4
7216
7217 for file in $*; do
7218         case $file in
7219         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7220         *) $nm $nm_opt $file 2>/dev/null;;
7221         esac
7222 done >libc.tmp
7223
7224 $echo $n ".$c"
7225 $grep fprintf libc.tmp > libc.ptf
7226 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7227 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7228 xxx='[ADTSIW]'
7229 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7230         eval $xscan;\
7231         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7232                 eval $xrun
7233 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7234         eval $xscan;\
7235         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7236                 eval $xrun
7237 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7238         eval $xscan;\
7239         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7240                 eval $xrun
7241 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7242         eval $xscan;\
7243         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7244                 eval $xrun
7245 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7246         eval $xscan;\
7247         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7248                 eval $xrun
7249 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7250         eval $xscan;\
7251         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7252                 eval $xrun
7253 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7254                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7255         eval $xscan;\
7256         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7257                 eval $xrun
7258 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7259         eval $xscan;\
7260         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7261                 eval $xrun
7262 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7263         eval $xscan;\
7264         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7265                 eval $xrun
7266 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7267         eval $xscan;\
7268         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7269                 eval $xrun
7270 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7271         eval $xscan;\
7272         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7273                 eval $xrun
7274 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7275         eval $xscan;\
7276         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7277                 eval $xrun
7278 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7279         eval $xscan;\
7280         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7281                 eval $xrun
7282 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7283         eval $xscan;\
7284         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7285                 eval $xrun
7286 else
7287         $nm -p $* 2>/dev/null >libc.tmp
7288         $grep fprintf libc.tmp > libc.ptf
7289         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7290                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7291         then
7292                 nm_opt='-p'
7293                 eval $xrun
7294         else
7295                 echo " "
7296                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7297                 com=''
7298                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7299                         for thisname in $libnames $libc; do
7300                                 $ar t $thisname >>libc.tmp
7301                         done
7302                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7303                         echo "Ok." >&4
7304                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7305                         # Repeat libc to extract forwarders to DLL entries too
7306                         for thisname in $libnames $libc; do
7307                                 $ar tv $thisname >>libc.tmp
7308                                 # Revision 50 of EMX has bug in $ar.
7309                                 # it will not extract forwarders to DLL entries
7310                                 # Use emximp which will extract exactly them.
7311                                 emximp -o tmp.imp $thisname \
7312                                     2>/dev/null && \
7313                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7314                                     < tmp.imp >>libc.tmp
7315                                 $rm tmp.imp
7316                         done
7317                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7318                         echo "Ok." >&4
7319                 else
7320                         echo "$ar didn't seem to work right." >&4
7321                         echo "Maybe this is a Cray...trying bld instead..." >&4
7322                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7323                         then
7324                                 for thisname in $libnames; do
7325                                         bld t $libnames | \
7326                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7327                                         $ar t $thisname >>libc.tmp
7328                                 done
7329                                 echo "Ok." >&4
7330                         else
7331                                 echo "That didn't work either.  Giving up." >&4
7332                                 exit 1
7333                         fi
7334                 fi
7335         fi
7336 fi
7337 nm_extract="$com"
7338 case "$PASE" in
7339 define)
7340     echo " "
7341     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7342     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7343     ;;
7344 *)  if $test -f /lib/syscalls.exp; then
7345         echo " "
7346         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7347         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7348     fi
7349     ;;
7350 esac
7351 ;;
7352 esac
7353 $rm -f libnames libpath
7354
7355 : see if dld is available
7356 set dld.h i_dld
7357 eval $inhdr
7358
7359 : is a C symbol defined?
7360 csym='tlook=$1;
7361 case "$3" in
7362 -v) tf=libc.tmp; tdc="";;
7363 -a) tf=libc.tmp; tdc="[]";;
7364 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7365 esac;
7366 tx=yes;
7367 case "$reuseval-$4" in
7368 true-) ;;
7369 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7370 esac;
7371 case "$tx" in
7372 yes)
7373         tval=false;
7374         if $test "$runnm" = true; then
7375                 if $contains $tlook $tf >/dev/null 2>&1; then
7376                         tval=true;
7377                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7378                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7379                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7380                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7381                         $rm -f try$_exe try.c core core.* try.core;
7382                 fi;
7383         else
7384                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7385                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7386                 $rm -f try$_exe try.c;
7387         fi;
7388         ;;
7389 *)
7390         case "$tval" in
7391         $define) tval=true;;
7392         *) tval=false;;
7393         esac;
7394         ;;
7395 esac;
7396 eval "$2=$tval"'
7397
7398 : define an is-in-libc? function
7399 inlibc='echo " "; td=$define; tu=$undef;
7400 sym=$1; var=$2; eval "was=\$$2";
7401 tx=yes;
7402 case "$reuseval$was" in
7403 true) ;;
7404 true*) tx=no;;
7405 esac;
7406 case "$tx" in
7407 yes)
7408         set $sym tres -f;
7409         eval $csym;
7410         case "$tres" in
7411         true)
7412                 echo "$sym() found." >&4;
7413                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7414         *)
7415                 echo "$sym() NOT found." >&4;
7416                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7417         esac;;
7418 *)
7419         case "$was" in
7420         $define) echo "$sym() found." >&4;;
7421         *) echo "$sym() NOT found." >&4;;
7422         esac;;
7423 esac'
7424
7425 : see if dlopen exists
7426 xxx_runnm="$runnm"
7427 runnm=false
7428 set dlopen d_dlopen
7429 eval $inlibc
7430 runnm="$xxx_runnm"
7431
7432 : determine which dynamic loading, if any, to compile in
7433 echo " "
7434 dldir="ext/DynaLoader"
7435 case "$usedl" in
7436 $define|y|true)
7437         dflt='y'
7438         usedl="$define"
7439         ;;
7440 $undef|n|false)
7441         dflt='n'
7442         usedl="$undef"
7443         ;;
7444 *) 
7445         dflt='n'
7446         case "$d_dlopen" in
7447             $define) dflt='y' ;;
7448         esac
7449         case "$i_dld" in
7450             $define) dflt='y' ;;
7451         esac
7452         : Does a dl_xxx.xs file exist for this operating system
7453         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7454         ;;
7455 esac
7456 rp="Do you wish to use dynamic loading?"
7457 . ./myread
7458 usedl="$ans"
7459 case "$ans" in
7460 y*) usedl="$define"
7461         case "$dlsrc" in
7462         '')
7463                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7464                         dflt="$dldir/dl_${osname}.xs"
7465                 elif $test "$d_dlopen" = "$define" ; then
7466                         dflt="$dldir/dl_dlopen.xs"
7467                 elif $test "$i_dld" = "$define" ; then
7468                         dflt="$dldir/dl_dld.xs"
7469                 else
7470                         dflt=''
7471                 fi
7472                 ;;
7473         *)      dflt="$dldir/$dlsrc"
7474                 ;;
7475         esac
7476     echo "The following dynamic loading files are available:"
7477         : Can not go over to $dldir because getfile has path hard-coded in.
7478         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7479         rp="Source file to use for dynamic loading"
7480         fn="fne"
7481         gfpth="$src"
7482         . ./getfile
7483         usedl="$define"
7484         : emulate basename
7485         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7486
7487         $cat << EOM
7488
7489 Some systems may require passing special flags to $cc -c to
7490 compile modules that will be used to create a shared library.
7491 To use no flags, say "none".
7492
7493 EOM
7494     case "$cccdlflags" in
7495     '') case "$gccversion" in
7496                 '') case "$osname" in
7497                         hpux)   dflt='+z' ;;
7498                         next)   dflt='none' ;;
7499                         irix*)  dflt='-KPIC' ;;
7500                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7501                         sunos)  dflt='-pic' ;;
7502                         *)      dflt='none' ;;
7503                     esac
7504                         ;;
7505                 *)  case "$osname" in
7506                         darwin) dflt='none' ;;
7507                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7508                         *)      dflt='-fpic' ;;
7509                     esac ;;
7510             esac ;;
7511         ' ') dflt='none' ;;
7512     *)  dflt="$cccdlflags" ;;
7513     esac
7514     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7515     . ./myread
7516     case "$ans" in
7517     none) cccdlflags=' ' ;;
7518     *) cccdlflags="$ans" ;;
7519     esac
7520
7521     cat << EOM
7522
7523 Some systems use ld to create libraries that can be dynamically loaded,
7524 while other systems (such as those using ELF) use $cc.
7525
7526 EOM
7527         case "$ld" in
7528         '')     $cat >try.c <<EOM
7529 /* Test for whether ELF binaries are produced */
7530 #include <fcntl.h>
7531 #$i_stdlib I_STDLIB
7532 #ifdef I_STDLIB
7533 #include <stdlib.h>
7534 #endif
7535 int main() {
7536         char b[4];
7537         int i = open("a.out",O_RDONLY);
7538         if(i == -1) 
7539                 exit(1); /* fail */
7540         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7541                 exit(0); /* succeed (yes, it's ELF) */
7542         else
7543                 exit(1); /* fail */
7544 }
7545 EOM
7546                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7547                         cat <<EOM
7548 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7549 EOM
7550                         dflt="$cc"
7551                 else
7552                         echo "I'll use ld to build dynamic libraries."
7553                         dflt='ld'
7554                 fi
7555                 rm -f try.c a.out
7556                 ;;
7557         *)      dflt="$ld"
7558                 ;;
7559         esac
7560
7561     rp="What command should be used to create dynamic libraries?"
7562     . ./myread
7563         ld="$ans"
7564
7565     cat << EOM
7566
7567 Some systems may require passing special flags to $ld to create a
7568 library that can be dynamically loaded.  If your ld flags include
7569 -L/other/path options to locate libraries outside your loader's normal
7570 search path, you may need to specify those -L options here as well.  To
7571 use no flags, say "none".
7572
7573 EOM
7574     case "$lddlflags" in
7575     '') case "$osname" in
7576                         beos) dflt='-nostart' ;;
7577                         hpux) dflt='-b';
7578                               case "$gccversion" in
7579                               '') dflt="$dflt +vnocompatwarnings" ;;
7580                               esac
7581                               ;;        
7582                         linux|irix*)    dflt='-shared' ;;
7583                         next)  dflt='none' ;;
7584                         solaris) dflt='-G' ;;
7585                         sunos) dflt='-assert nodefinitions' ;;
7586                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7587                 *)     dflt='none' ;;
7588                         esac
7589                         ;;
7590     *) dflt="$lddlflags" ;;
7591     esac
7592
7593         : Try to guess additional flags to pick up local libraries.
7594         : Be careful not to append to a plain 'none'
7595         case "$dflt" in
7596         none) dflt='' ;;
7597         esac
7598         for thisflag in $ldflags; do
7599                 case "$thisflag" in
7600                 -L*|-R*|-Wl,-R*)
7601                         case " $dflt " in
7602                         *" $thisflag "*) ;;
7603                         *) dflt="$dflt $thisflag" ;;
7604                         esac
7605                         ;;
7606                 esac
7607         done
7608
7609         case "$dflt" in
7610         ''|' ') dflt='none' ;;
7611         esac
7612
7613     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7614     . ./myread
7615     case "$ans" in
7616     none) lddlflags=' ' ;;
7617     *) lddlflags="$ans" ;;
7618     esac
7619
7620         cat <<EOM
7621
7622 Some systems may require passing special flags to $cc to indicate that
7623 the resulting executable will use dynamic linking.  To use no flags,
7624 say "none".
7625
7626 EOM
7627     case "$ccdlflags" in
7628     '') case "$osname" in
7629                 hpux)   dflt='-Wl,-E' ;;
7630                 linux)  dflt='-rdynamic' ;;
7631                 next)   dflt='none' ;;
7632                 sunos)  dflt='none' ;;
7633                 *)      dflt='none' ;;
7634             esac ;;
7635     ' ')  dflt='none' ;;
7636     *)  dflt="$ccdlflags" ;;
7637     esac
7638     rp="Any special flags to pass to $cc to use dynamic linking?"
7639     . ./myread
7640     case "$ans" in
7641     none) ccdlflags=' ' ;;
7642     *) ccdlflags="$ans" ;;
7643     esac
7644     ;;
7645 *)  usedl="$undef"
7646         ld='ld'
7647     dlsrc='dl_none.xs'
7648     lddlflags=''
7649     ccdlflags=''
7650     ;;
7651 esac
7652
7653 also=''
7654 case "$usedl" in
7655 $undef)
7656         # No dynamic loading being used, so don't bother even to prompt.
7657         useshrplib='false'
7658         ;;
7659 *)      case "$useshrplib" in
7660         '')     case "$osname" in
7661                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7662                         dflt=y
7663                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7664                         ;;
7665                 next*)
7666                         case "$osvers" in
7667                         4*)     dflt=y
7668                                 also='Building a shared libperl is needed for MAB support.'
7669                                 ;;
7670                         *)      dflt=n
7671                                 ;;
7672                         esac
7673                         ;;
7674                 *)      dflt=n
7675                         ;;
7676                 esac
7677                 ;;
7678         $define|true|[Yy]*)
7679                 dflt=y
7680                 ;;
7681         *)      dflt=n
7682                 ;;
7683         esac
7684         $cat << EOM
7685
7686 The perl executable is normally obtained by linking perlmain.c with
7687 libperl${_a}, any static extensions (usually just DynaLoader), and
7688 any other libraries needed on this system (such as -lm, etc.).  Since
7689 your system supports dynamic loading, it is probably possible to build
7690 a shared libperl.$so.  If you will have more than one executable linked
7691 to libperl.$so, this will significantly reduce the size of each
7692 executable, but it may have a noticeable affect on performance.  The
7693 default is probably sensible for your system.
7694 $also
7695
7696 EOM
7697         rp="Build a shared libperl.$so (y/n)"
7698         . ./myread
7699         case "$ans" in
7700         true|$define|[Yy]*)
7701                 useshrplib='true'  ;;
7702         *)      useshrplib='false' ;;
7703         esac
7704         ;;
7705 esac
7706
7707 case "$useshrplib" in
7708 true)
7709         case "$libperl" in
7710         '')
7711                 # Figure out a good name for libperl.so.  Since it gets stored in
7712                 # a version-specific architecture-dependent library, the version
7713                 # number isn't really that important, except for making cc/ld happy.
7714                 #
7715                 # A name such as libperl.so.3.1
7716                 majmin="libperl.$so.$patchlevel.$subversion"
7717                 # A name such as libperl.so.301
7718                 majonly=`echo $patchlevel $subversion |
7719                         $awk '{printf "%d%02d", $1, $2}'`
7720                 majonly=libperl.$so.$majonly
7721                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7722                 # rely on figuring it out from the naming of libc.
7723                 case "${osname}${osvers}" in
7724                 next4*)
7725                         dflt=libperl.5.$so
7726                         # XXX How handle the --version stuff for MAB?
7727                         ;;
7728                 linux*)  # ld won't link with a bare -lperl otherwise.
7729                         dflt=libperl.$so
7730                         ;;
7731                 cygwin*) # ld links against an importlib
7732                         dflt=libperl$lib_ext
7733                         ;;
7734                 *)      # Try to guess based on whether libc has major.minor.
7735                         case "$libc" in
7736                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7737                         *libc.$so.[0-9]*) dflt=$majonly ;;
7738                         *)      dflt=libperl.$so ;;
7739                         esac
7740                         ;;
7741                 esac
7742                 ;;
7743         *)      dflt=$libperl
7744                 ;;
7745         esac
7746         cat << EOM
7747
7748 I need to select a good name for the shared libperl.  If your system uses
7749 library names with major and minor numbers, then you might want something
7750 like $majmin.  Alternatively, if your system uses a single version
7751 number for shared libraries, then you might want to use $majonly.
7752 Or, your system might be quite happy with a simple libperl.$so.
7753
7754 Since the shared libperl will get installed into a version-specific
7755 architecture-dependent directory, the version number of the shared perl
7756 library probably isn't important, so the default should be o.k.
7757
7758 EOM
7759         rp='What name do you want to give to the shared libperl?'
7760         . ./myread
7761         libperl=$ans
7762         echo "Ok, I'll use $libperl"
7763         ;;
7764 *)
7765         libperl="libperl${_a}"
7766         ;;
7767 esac
7768
7769 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7770 case "$shrpdir" in
7771 '') ;;
7772 *)      $cat >&4 <<EOM
7773 WARNING:  Use of the shrpdir variable for the installation location of
7774 the shared $libperl is not supported.  It was never documented and
7775 will not work in this version.  Let me (perlbug@perl.org)
7776 know of any problems this may cause.
7777
7778 EOM
7779         case "$shrpdir" in
7780         "$archlibexp/CORE")
7781                 $cat >&4 <<EOM
7782 But your current setting of $shrpdir is
7783 the default anyway, so it's harmless.
7784 EOM
7785                 ;;
7786         *)
7787                 $cat >&4 <<EOM
7788 Further, your current attempted setting of $shrpdir
7789 conflicts with the value of $archlibexp/CORE
7790 that installperl will use.
7791 EOM
7792                 ;;
7793         esac
7794         ;;
7795 esac
7796
7797 # How will the perl executable find the installed shared $libperl?
7798 # Add $xxx to ccdlflags.
7799 # If we can't figure out a command-line option, use $shrpenv to
7800 # set env LD_RUN_PATH.  The main perl makefile uses this.
7801 shrpdir=$archlibexp/CORE
7802 xxx=''
7803 tmp_shrpenv=''
7804 if "$useshrplib"; then
7805     case "$osname" in 
7806         aix)
7807                 # We'll set it in Makefile.SH...
7808                 ;;
7809         solaris)
7810                 xxx="-R $shrpdir"
7811                 ;;
7812         freebsd|netbsd|openbsd)
7813                 xxx="-Wl,-R$shrpdir"
7814                 ;;
7815         bsdos|linux|irix*|dec_osf)
7816                 xxx="-Wl,-rpath,$shrpdir"
7817                 ;;
7818         next)
7819                 # next doesn't like the default...
7820                 ;;
7821         beos)
7822                 # beos doesn't like the default, either.
7823                 ;;
7824         hpux*)
7825                 # hpux doesn't like the default, either.
7826                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7827                 ;;
7828         *)
7829                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7830                 ;;
7831         esac
7832         case "$xxx" in
7833         '') ;;
7834         *)      
7835                 # Only add $xxx if it isn't already in ccdlflags.
7836                 case " $ccdlflags " in
7837                 *" $xxx "*)     ;;
7838                 *)      ccdlflags="$ccdlflags $xxx"
7839                         cat <<EOM >&4
7840
7841 Adding $xxx to the flags
7842 passed to $ld so that the perl executable will find the 
7843 installed shared $libperl.
7844
7845 EOM
7846                         ;;
7847                 esac
7848                 ;;
7849         esac
7850 fi
7851 # Fix ccdlflags in AIX for building external extensions.
7852 # (For building Perl itself bare -bE:perl.exp is needed,
7853 #  Makefile.SH takes care of this.)
7854 case "$osname" in
7855 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7856 esac
7857 # Respect a hint or command-line value.
7858 case "$shrpenv" in
7859 '') shrpenv="$tmp_shrpenv" ;;
7860 esac
7861 case "$ldlibpthname" in
7862 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7863 none)   ldlibpthname='' ;;
7864 esac
7865
7866 : determine where manual pages are on this system
7867 echo " "
7868 case "$sysman" in
7869 '') 
7870         syspath='/usr/share/man/man1 /usr/man/man1'
7871         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7872         syspath="$syspath /usr/man/u_man/man1"
7873         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7874         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7875         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7876         sysman=`./loc . /usr/man/man1 $syspath`
7877         ;;
7878 esac
7879 if $test -d "$sysman"; then
7880         echo "System manual is in $sysman." >&4
7881 else
7882         echo "Could not find manual pages in source form." >&4
7883 fi
7884
7885 : determine where manual pages go
7886 set man1dir man1dir none
7887 eval $prefixit
7888 $cat <<EOM
7889
7890 $spackage has manual pages available in source form.
7891 EOM
7892 case "$nroff" in
7893 nroff)
7894         echo "However, you don't have nroff, so they're probably useless to you."
7895         case "$man1dir" in
7896         '') man1dir="none";;
7897         esac;;
7898 esac
7899 echo "If you don't want the manual sources installed, answer 'none'."
7900 case "$man1dir" in
7901 ' ') dflt=none
7902         ;;
7903 '')
7904         lookpath="$prefixexp/share/man/man1"
7905         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7906         lookpath="$lookpath $prefixexp/man/p_man/man1"
7907         lookpath="$lookpath $prefixexp/man/u_man/man1"
7908         lookpath="$lookpath $prefixexp/man/man.1"
7909         case "$sysman" in
7910         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7911         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7912         esac
7913         set dflt
7914         eval $prefixup
7915         ;;
7916 *)  dflt="$man1dir"
7917         ;;
7918 esac
7919 echo " "
7920 fn=dn+~
7921 rp="Where do the main $spackage manual pages (source) go?"
7922 . ./getfile
7923 if $test "X$man1direxp" != "X$ansexp"; then
7924         installman1dir=''
7925 fi
7926 man1dir="$ans"
7927 man1direxp="$ansexp"
7928 case "$man1dir" in
7929 '')     man1dir=' '
7930         installman1dir='';;
7931 esac
7932
7933 : Change installation prefix, if necessary.
7934 if $test X"$prefix" != X"$installprefix"; then
7935         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7936 else
7937         installman1dir="$man1direxp"
7938 fi
7939
7940 : What suffix to use on installed man pages
7941
7942 case "$man1dir" in
7943 ' ')
7944         man1ext='0'
7945         ;;
7946 *)
7947         rp="What suffix should be used for the main $spackage man pages?"
7948         case "$man1ext" in
7949         '')     case "$man1dir" in
7950                 *1)  dflt=1 ;;
7951                 *1p) dflt=1p ;;
7952                 *1pm) dflt=1pm ;;
7953                 *l) dflt=l;;
7954                 *n) dflt=n;;
7955                 *o) dflt=o;;
7956                 *p) dflt=p;;
7957                 *C) dflt=C;;
7958                 *L) dflt=L;;
7959                 *L1) dflt=L1;;
7960                 *) dflt=1;;
7961                 esac
7962                 ;;
7963         *)      dflt="$man1ext";;
7964         esac
7965         . ./myread
7966         man1ext="$ans"
7967         ;;
7968 esac
7969
7970 : see if we can have long filenames
7971 echo " "
7972 first=123456789abcdef
7973 $rm -f $first
7974 if (echo hi >$first) 2>/dev/null; then
7975         if $test -f 123456789abcde; then
7976                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7977                 val="$undef"
7978         else
7979                 echo 'You can have filenames longer than 14 characters.'>&4
7980                 val="$define"
7981         fi
7982 else
7983         $cat <<'EOM'
7984 You can't have filenames longer than 14 chars.
7985 You can't even think about them!
7986 EOM
7987         val="$undef"
7988 fi 
7989 set d_flexfnam
7990 eval $setvar
7991 $rm -rf 123456789abcde*
7992
7993 : determine where library module manual pages go
7994 set man3dir man3dir none
7995 eval $prefixit
7996 $cat <<EOM
7997
7998 $spackage has manual pages for many of the library modules.
7999 EOM
8000
8001 case "$nroff" in
8002 nroff)
8003         $cat <<'EOM'
8004 However, you don't have nroff, so they're probably useless to you.
8005 EOM
8006         case "$man3dir" in
8007         '') man3dir="none";;
8008         esac;;
8009 esac
8010
8011 case "$d_flexfnam" in
8012 undef)
8013         $cat <<'EOM'
8014 However, your system can't handle the long file names like File::Basename.3. 
8015 EOM
8016         case "$man3dir" in
8017         '') man3dir="none";;
8018         esac;;
8019 esac
8020
8021 echo "If you don't want the manual sources installed, answer 'none'."
8022 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8023 case "$man3dir" in
8024 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8025         if $test -d "$privlib/man/man3"; then
8026                 cat <<EOM >&4
8027
8028 WARNING:  Previous versions of perl installed man3 pages into
8029 $privlib/man/man3.  This version will suggest a 
8030 new default of $dflt.  
8031 EOM
8032                 tdflt=$dflt
8033                 dflt='n'
8034                 rp='Do you wish to preserve the old behavior?(y/n)'
8035                 . ./myread
8036                 case "$ans" in
8037                 y*) dflt="$privlib/man/man3" ;;
8038                 *)  dflt=$tdflt ;;
8039                 esac
8040     fi
8041         ;;
8042 *)      dflt="$man3dir" ;;
8043 esac
8044 case "$dflt" in
8045 ' ') dflt=none ;;
8046 esac
8047 echo " "
8048 fn=dn+~
8049 rp="Where do the $package library man pages (source) go?"
8050 . ./getfile
8051 man3dir="$ans"
8052 man3direxp="$ansexp"
8053 case "$man3dir" in
8054 '')     man3dir=' '
8055         installman3dir='';;
8056 esac
8057
8058 : Change installation prefix, if necessary.
8059 if $test X"$prefix" != X"$installprefix"; then
8060         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8061 else
8062         installman3dir="$man3direxp"
8063 fi
8064
8065 : What suffix to use on installed man pages
8066 case "$man3dir" in
8067 ' ')
8068         man3ext='0'
8069         ;;
8070 *)
8071         rp="What suffix should be used for the $package library man pages?"
8072         case "$man3ext" in
8073         '')     case "$man3dir" in
8074                 *3)  dflt=3 ;;
8075                 *3p) dflt=3p ;;
8076                 *3pm) dflt=3pm ;;
8077                 *l) dflt=l;;
8078                 *n) dflt=n;;
8079                 *o) dflt=o;;
8080                 *p) dflt=p;;
8081                 *C) dflt=C;;
8082                 *L) dflt=L;;
8083                 *L3) dflt=L3;;
8084                 *) dflt=3;;
8085                 esac
8086                 ;;
8087         *)      dflt="$man3ext";;
8088         esac
8089         . ./myread
8090         man3ext="$ans"
8091         ;;
8092 esac
8093
8094 : see if we have to deal with yellow pages, now NIS.
8095 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8096         if $test -f /usr/etc/nibindd; then
8097                 echo " "
8098                 echo "I'm fairly confident you're on a NeXT."
8099                 echo " "
8100                 rp='Do you get the hosts file via NetInfo?'
8101                 dflt=y
8102                 case "$hostcat" in
8103                 nidump*) ;;
8104                 '') ;;
8105                 *) dflt=n;;
8106                 esac
8107                 . ./myread
8108                 case "$ans" in
8109                 y*) hostcat='nidump hosts .';;
8110                 *)      case "$hostcat" in
8111                         nidump*) hostcat='';;
8112                         esac
8113                         ;;
8114                 esac
8115         fi
8116         case "$hostcat" in
8117         nidump*) ;;
8118         *)
8119                 case "$hostcat" in
8120                 *ypcat*) dflt=y;;
8121                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8122                                 dflt=y
8123                         else
8124                                 dflt=n
8125                         fi;;
8126                 *) dflt=n;;
8127                 esac
8128                 echo " "
8129                 rp='Are you getting the hosts file via yellow pages?'
8130                 . ./myread
8131                 case "$ans" in
8132                 y*) hostcat='ypcat hosts';;
8133                 *) hostcat='cat /etc/hosts';;
8134                 esac
8135                 ;;
8136         esac
8137 fi
8138 case "$hostcat" in
8139 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8140 esac
8141 case "$groupcat" in
8142 '') test -f /etc/group && groupcat='cat /etc/group';;
8143 esac
8144 case "$passcat" in
8145 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8146 esac
8147
8148 : now get the host name
8149 echo " "
8150 echo "Figuring out host name..." >&4
8151 case "$myhostname" in
8152 '') cont=true
8153         echo 'Maybe "hostname" will work...'
8154         if tans=`sh -c hostname 2>&1` ; then
8155                 myhostname=$tans
8156                 phostname=hostname
8157                 cont=''
8158         fi
8159         ;;
8160 *) cont='';;
8161 esac
8162 if $test "$cont"; then
8163         if ./xenix; then
8164                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8165                 if tans=`cat /etc/systemid 2>&1` ; then
8166                         myhostname=$tans
8167                         phostname='cat /etc/systemid'
8168                         echo "Whadyaknow.  Xenix always was a bit strange..."
8169                         cont=''
8170                 fi
8171         elif $test -r /etc/systemid; then
8172                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8173         fi
8174 fi
8175 if $test "$cont"; then
8176         echo 'No, maybe "uuname -l" will work...'
8177         if tans=`sh -c 'uuname -l' 2>&1` ; then
8178                 myhostname=$tans
8179                 phostname='uuname -l'
8180         else
8181                 echo 'Strange.  Maybe "uname -n" will work...'
8182                 if tans=`sh -c 'uname -n' 2>&1` ; then
8183                         myhostname=$tans
8184                         phostname='uname -n'
8185                 else
8186                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8187                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8188                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8189                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8190                         else
8191                                 case "$myhostname" in
8192                                 '') echo "Does this machine have an identity crisis or something?"
8193                                         phostname='';;
8194                                 *)
8195                                         echo "Well, you said $myhostname before..."
8196                                         phostname='echo $myhostname';;
8197                                 esac
8198                         fi
8199                 fi
8200         fi
8201 fi
8202 case "$myhostname" in
8203 '') myhostname=noname ;;
8204 esac
8205 : you do not want to know about this
8206 set $myhostname
8207 myhostname=$1
8208
8209 : verify guess
8210 if $test "$myhostname" ; then
8211         dflt=y
8212         rp='Your host name appears to be "'$myhostname'".'" Right?"
8213         . ./myread
8214         case "$ans" in
8215         y*) ;;
8216         *) myhostname='';;
8217         esac
8218 fi
8219
8220 : bad guess or no guess
8221 while $test "X$myhostname" = X ; do
8222         dflt=''
8223         rp="Please type the (one word) name of your host:"
8224         . ./myread
8225         myhostname="$ans"
8226 done
8227
8228 : translate upper to lower if necessary
8229 case "$myhostname" in
8230 *[A-Z]*)
8231         echo "(Normalizing case in your host name)"
8232         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8233         ;;
8234 esac
8235
8236 case "$myhostname" in
8237 *.*)
8238         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8239         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8240         echo "(Trimming domain name from host name--host name is now $myhostname)"
8241         ;;
8242 *) case "$mydomain" in
8243         '')
8244                 {
8245                         test "X$hostcat" = "Xypcat hosts" &&
8246                         ypmatch "$myhostname" hosts 2>/dev/null |\
8247                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8248                         $test -s hosts
8249                 } || {
8250                         test "X$hostcat" != "X" &&
8251                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8252                                         /[       ]$myhostname[  . ]/p" > hosts
8253                 }
8254                 tmp_re="[       . ]"
8255                 if $test -f hosts; then
8256                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8257                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8258                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8259                                 hosts | $sort | $uniq | \
8260                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8261                         case `$echo X$dflt` in
8262                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8263                                 dflt=.
8264                                 ;;
8265                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8266                                 ;;
8267                         esac
8268                 else
8269                         echo "(I cannot locate a hosts database anywhere)"
8270                         dflt=.
8271                 fi
8272                 case "$dflt" in
8273                 .)
8274                         tans=`./loc resolv.conf X /etc /usr/etc`
8275                         if $test -f "$tans"; then
8276                                 echo "(Attempting domain name extraction from $tans)"
8277                                 dflt=.`$sed -n -e 's/   / /g' \
8278                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8279                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8280                                 case "$dflt" in
8281                                 .) dflt=.`$sed -n -e 's/        / /g' \
8282                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8283                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8284                                         ;;
8285                                 esac
8286                         fi
8287                         ;;
8288                 esac
8289                 case "$dflt" in
8290                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8291                         dflt=.`sh -c domainname 2>/dev/null`
8292                         case "$dflt" in
8293                         '') dflt='.';;
8294                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8295                         esac
8296                         ;;
8297                 esac
8298                 case "$dflt$osname" in
8299                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8300                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8301                         ;;
8302                 esac
8303                 case "$dflt" in
8304                 .) echo "(Lost all hope -- silly guess then)"
8305                         dflt='.nonet'
8306                         ;;
8307                 esac
8308                 $rm -f hosts
8309                 ;;
8310         *) dflt="$mydomain";;
8311         esac;;
8312 esac
8313 echo " "
8314 rp="What is your domain name?"
8315 . ./myread
8316 tans="$ans"
8317 case "$ans" in
8318 '') ;;
8319 .*) ;;
8320 *) tans=".$tans";;
8321 esac
8322 mydomain="$tans"
8323
8324 : translate upper to lower if necessary
8325 case "$mydomain" in
8326 *[A-Z]*)
8327         echo "(Normalizing case in your domain name)"
8328         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8329         ;;
8330 esac
8331
8332 : a little sanity check here
8333 case "$phostname" in
8334 '') ;;
8335 *)
8336         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8337         $myhostname$mydomain|$myhostname) ;;
8338         *)
8339                 case "$phostname" in
8340                 sed*)
8341                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8342                         ;;
8343                 *)
8344                         echo "(That doesn't agree with your $phostname command, by the way.)"
8345                         ;;
8346                 esac
8347         ;;
8348         esac
8349         ;;
8350 esac
8351
8352 $cat <<EOM
8353
8354 I need to get your e-mail address in Internet format if possible, i.e.
8355 something like user@host.domain. Please answer accurately since I have
8356 no easy means to double check it. The default value provided below
8357 is most probably close to reality but may not be valid from outside
8358 your organization...
8359
8360 EOM
8361 cont=x
8362 while test "$cont"; do
8363         case "$cf_email" in
8364         '') dflt="$cf_by@$myhostname$mydomain";;
8365         *) dflt="$cf_email";;
8366         esac
8367         rp='What is your e-mail address?'
8368         . ./myread
8369         cf_email="$ans"
8370         case "$cf_email" in
8371         *@*.*) cont='' ;;
8372         *)
8373                 rp='Address does not look like an Internet one.  Use it anyway?'
8374                 case "$fastread" in
8375                 yes) dflt=y ;;
8376                 *) dflt=n ;;
8377                 esac
8378                 . ./myread
8379                 case "$ans" in
8380                 y*) cont='' ;;
8381                 *) echo " " ;;
8382                 esac
8383                 ;;
8384         esac
8385 done
8386
8387 $cat <<EOM
8388
8389 If you or somebody else will be maintaining perl at your site, please
8390 fill in the correct e-mail address here so that they may be contacted
8391 if necessary. Currently, the "perlbug" program included with perl
8392 will send mail to this address in addition to perlbug@perl.org. You may
8393 enter "none" for no administrator.
8394
8395 EOM
8396 case "$perladmin" in
8397 '') dflt="$cf_email";;
8398 *) dflt="$perladmin";;
8399 esac
8400 rp='Perl administrator e-mail address'
8401 . ./myread
8402 perladmin="$ans"
8403
8404 : determine whether to only install version-specific parts.
8405 echo " "
8406 $cat <<EOM
8407 Do you want to install only the version-specific parts of the perl
8408 distribution?  Usually you do *not* want to do this.
8409 EOM
8410 case "$versiononly" in
8411 "$define"|[Yy]*|true) dflt='y' ;;
8412 *) dflt='n';
8413 esac
8414 rp="Do you want to install only the version-specific parts of perl?"
8415 . ./myread
8416 case "$ans" in
8417 [yY]*)  val="$define";;
8418 *)      val="$undef" ;;
8419 esac
8420 set versiononly
8421 eval $setvar
8422
8423 case "$versiononly" in
8424 "$define") inc_version_list=''
8425            inc_version_list_init=0
8426            ;;
8427 esac
8428
8429 : figure out how to guarantee perl startup
8430 case "$startperl" in
8431 '')
8432         case "$sharpbang" in
8433         *!)
8434                 $cat <<EOH
8435
8436 I can use the #! construct to start perl on your system. This will
8437 make startup of perl scripts faster, but may cause problems if you
8438 want to share those scripts and perl is not in a standard place
8439 ($binexp/perl) on all your platforms. The alternative is to force
8440 a shell by starting the script with a single ':' character.
8441
8442 EOH
8443                 case "$versiononly" in
8444                 "$define")      dflt="$binexp/perl$version";;  
8445                 *)              dflt="$binexp/perl";;
8446                 esac
8447                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8448                 . ./myread
8449                 case "$ans" in
8450                 none)   startperl=": # use perl";;
8451                 *)      startperl="#!$ans"
8452                         if $test 30 -lt `echo "$ans" | wc -c`; then
8453                                 $cat >&4 <<EOM
8454
8455 WARNING:  Some systems limit the #! command to 32 characters.
8456 If you experience difficulty running Perl scripts with #!, try
8457 installing Perl in a directory with a shorter pathname.
8458
8459 EOM
8460                         fi ;;
8461                 esac
8462                 ;;
8463         *) startperl=": # use perl"
8464                 ;;
8465         esac
8466         ;;
8467 esac
8468 echo "I'll use $startperl to start perl scripts."
8469
8470 : figure best path for perl in scripts
8471 case "$perlpath" in
8472 '')
8473         case "$versiononly" in
8474         "$define")      perlpath="$binexp/perl$version";;
8475         *)              perlpath="$binexp/perl";;
8476         esac
8477         case "$startperl" in
8478         *!*) ;;
8479         *)
8480                 $cat <<EOH
8481
8482 I will use the "eval 'exec'" idiom to start Perl on your system.
8483 I can use the full path of your Perl binary for this purpose, but
8484 doing so may cause problems if you want to share those scripts and
8485 Perl is not always in a standard place ($binexp/perl).
8486
8487 EOH
8488                 dflt="$binexp/perl"
8489                 rp="What path shall I use in \"eval 'exec'\"?"
8490                 . ./myread
8491                 perlpath="$ans"
8492                 ;;
8493         esac
8494         ;;
8495 esac
8496 case "$startperl" in
8497 *!*)    ;;
8498 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8499 esac
8500
8501 : determine where public executable scripts go
8502 set scriptdir scriptdir
8503 eval $prefixit
8504 case "$scriptdir" in
8505 '')
8506         dflt="$bin"
8507         : guess some guesses
8508         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8509         $test -d /usr/share/bin     && dflt=/usr/share/bin
8510         $test -d /usr/local/script  && dflt=/usr/local/script
8511         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8512         $test -d $prefixexp/script  && dflt=$prefixexp/script
8513         set dflt
8514         eval $prefixup
8515         ;;
8516 *)  dflt="$scriptdir"
8517         ;;
8518 esac
8519 $cat <<EOM
8520  
8521 Some installations have a separate directory just for executable scripts so
8522 that they can mount it across multiple architectures but keep the scripts in
8523 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8524 Or you might just lump your scripts in with all your other executables.
8525  
8526 EOM
8527 fn=d~
8528 rp='Where do you keep publicly executable scripts?'
8529 . ./getfile
8530 if $test "X$ansexp" != "X$scriptdirexp"; then
8531         installscript=''
8532 fi
8533 scriptdir="$ans"
8534 scriptdirexp="$ansexp"
8535 : Change installation prefix, if necessary.
8536 if $test X"$prefix" != X"$installprefix"; then
8537         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8538 else
8539         installscript="$scriptdirexp"
8540 fi
8541
8542 : determine where add-on public executables go
8543 case "$sitebin" in
8544 '')     dflt=$siteprefix/bin ;;
8545 *)      dflt=$sitebin ;;
8546 esac
8547 fn=d~
8548 rp='Pathname where the add-on public executables should be installed?'
8549 . ./getfile
8550 sitebin="$ans"
8551 sitebinexp="$ansexp"
8552 : Change installation prefix, if necessary.
8553 if $test X"$prefix" != X"$installprefix"; then
8554         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8555 else
8556         installsitebin="$sitebinexp"
8557 fi
8558
8559 : determine where add-on html pages go
8560 : There is no standard location, so try to copy the previously-selected
8561 : directory structure for the core html pages.
8562 case "$sitehtml1dir" in
8563 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8564 *)     dflt=$sitehtml1dir ;;
8565 esac
8566 case "$dflt" in
8567 ''|' ') dflt=none ;;
8568 esac
8569 fn=dn+~
8570 rp='Pathname where the site-specific html pages should be installed?'
8571 . ./getfile
8572 sitehtml1dir="$ans"
8573 sitehtml1direxp="$ansexp"
8574 : Change installation prefix, if necessary.
8575 if $test X"$prefix" != X"$installprefix"; then
8576         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8577 else
8578         installsitehtml1dir="$sitehtml1direxp"
8579 fi
8580
8581 : determine where add-on library html pages go
8582 : There is no standard location, so try to copy the previously-selected
8583 : directory structure for the core html pages.
8584 case "$sitehtml3dir" in
8585 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8586 *)     dflt=$sitehtml3dir ;;
8587 esac
8588 case "$dflt" in
8589 ''|' ') dflt=none ;;
8590 esac
8591 fn=dn+~
8592 rp='Pathname where the site-specific library html pages should be installed?'
8593 . ./getfile
8594 sitehtml3dir="$ans"
8595 sitehtml3direxp="$ansexp"
8596 : Change installation prefix, if necessary.
8597 if $test X"$prefix" != X"$installprefix"; then
8598         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8599 else
8600         installsitehtml3dir="$sitehtml3direxp"
8601 fi
8602
8603 : determine where add-on manual pages go
8604 case "$siteman1dir" in
8605 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8606 *)      dflt=$siteman1dir ;;
8607 esac
8608 case "$dflt" in
8609 ''|' ') dflt=none ;;
8610 esac
8611 fn=dn+~
8612 rp='Pathname where the site-specific manual pages should be installed?'
8613 . ./getfile
8614 siteman1dir="$ans"
8615 siteman1direxp="$ansexp"
8616 : Change installation prefix, if necessary.
8617 if $test X"$prefix" != X"$installprefix"; then
8618         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8619 else
8620         installsiteman1dir="$siteman1direxp"
8621 fi
8622
8623 : determine where add-on library man pages go
8624 case "$siteman3dir" in
8625 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8626 *)      dflt=$siteman3dir ;;
8627 esac
8628 case "$dflt" in
8629 ''|' ') dflt=none ;;
8630 esac
8631 fn=dn+~
8632 rp='Pathname where the site-specific library manual pages should be installed?'
8633 . ./getfile
8634 siteman3dir="$ans"
8635 siteman3direxp="$ansexp"
8636 : Change installation prefix, if necessary.
8637 if $test X"$prefix" != X"$installprefix"; then
8638         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8639 else
8640         installsiteman3dir="$siteman3direxp"
8641 fi
8642
8643 : determine where add-on public executable scripts go
8644 case "$sitescript" in
8645 '')     dflt=$siteprefix/script
8646         $test -d $dflt || dflt=$sitebin ;;
8647 *)  dflt="$sitescript" ;;
8648 esac
8649 fn=d~+
8650 rp='Pathname where add-on public executable scripts should be installed?'
8651 . ./getfile
8652 sitescript="$ans"
8653 sitescriptexp="$ansexp"
8654 : Change installation prefix, if necessary.
8655 if $test X"$prefix" != X"$installprefix"; then
8656         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8657 else
8658         installsitescript="$sitescriptexp"
8659 fi
8660
8661 case "$usefaststdio" in
8662 $define|true|[yY]*|'')
8663         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8664         case "$xversion" in
8665         [68])   dflt='y' ;;
8666         *)      dflt='n' ;;
8667         esac
8668         ;;
8669 *) dflt='n';;
8670 esac
8671 cat <<EOM
8672
8673 Perl can be built to use 'fast stdio', which means using the stdio
8674 library but also directly manipulating the stdio buffers to enable
8675 faster I/O.  Using stdio is better for backward compatibility (especially
8676 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8677 interface has been preferred instead of stdio.
8678
8679 If this doesn't make any sense to you, just accept the default '$dflt'.
8680 EOM
8681 rp='Use the "fast stdio" if available?'
8682 . ./myread
8683 case "$ans" in
8684 y|Y)    val="$define" ;;     
8685 *)      val="$undef" ;;
8686 esac
8687 set usefaststdio
8688 eval $setvar
8689
8690
8691 : define an is-a-typedef? function
8692 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8693 case "$inclist" in
8694 "") inclist="sys/types.h";;
8695 esac;
8696 eval "varval=\$$var";
8697 case "$varval" in
8698 "")
8699         $rm -f temp.c;
8700         for inc in $inclist; do
8701                 echo "#include <$inc>" >>temp.c;
8702         done;
8703         echo "#ifdef $type" >> temp.c;
8704         echo "printf(\"We have $type\");" >> temp.c;
8705         echo "#endif" >> temp.c;
8706         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8707         if $contains $type temp.E >/dev/null 2>&1; then
8708                 eval "$var=\$type";
8709         else
8710                 eval "$var=\$def";
8711         fi;
8712         $rm -f temp.?;;
8713 *) eval "$var=\$varval";;
8714 esac'
8715
8716 : define an is-a-typedef? function that prompts if the type is not available.
8717 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8718 case "$inclist" in
8719 "") inclist="sys/types.h";;
8720 esac;
8721 eval "varval=\$$var";
8722 case "$varval" in
8723 "")
8724         $rm -f temp.c;
8725         for inc in $inclist; do
8726                 echo "#include <$inc>" >>temp.c;
8727         done;
8728         echo "#ifdef $type" >> temp.c;
8729         echo "printf(\"We have $type\");" >> temp.c;
8730         echo "#endif" >> temp.c;
8731         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8732         echo " " ;
8733         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8734         if $contains $type temp.E >/dev/null 2>&1; then
8735                 echo "$type found." >&4;
8736                 eval "$var=\$type";
8737         else
8738                 echo "$type NOT found." >&4;
8739                 dflt="$def";
8740                 . ./myread ;
8741                 eval "$var=\$ans";
8742         fi;
8743         $rm -f temp.?;;
8744 *) eval "$var=\$varval";;
8745 esac'
8746
8747 : see what type lseek is declared as in the kernel
8748 rp="What is the type used for lseek's offset on this system?"
8749 set off_t lseektype long stdio.h sys/types.h
8750 eval $typedef_ask
8751
8752 echo " "
8753 echo "Checking to see how big your file offsets are..." >&4
8754 $cat >try.c <<EOCP
8755 #include <sys/types.h>
8756 #include <stdio.h>
8757 int main()
8758 {
8759     printf("%d\n", (int)sizeof($lseektype));
8760     return(0); 
8761 }
8762 EOCP
8763 set try
8764 if eval $compile_ok; then
8765         lseeksize=`$run ./try`
8766         echo "Your file offsets are $lseeksize bytes long."
8767 else
8768         dflt=$longsize
8769         echo " "
8770         echo "(I can't seem to compile the test program.  Guessing...)"
8771         rp="What is the size of your file offsets (in bytes)?"
8772         . ./myread
8773         lseeksize="$ans"
8774 fi
8775 $rm -f try.c try
8776
8777 : see what type file positions are declared as in the library
8778 rp="What is the type for file position used by fsetpos()?"
8779 set fpos_t fpostype long stdio.h sys/types.h
8780 eval $typedef_ask
8781
8782 echo " "
8783 case "$fpostype" in
8784 *_t) zzz="$fpostype"    ;;
8785 *)   zzz="fpos_t"       ;;
8786 esac
8787 echo "Checking the size of $zzz..." >&4 
8788 cat > try.c <<EOCP
8789 #include <sys/types.h>
8790 #include <stdio.h>
8791 #$i_stdlib I_STDLIB
8792 #ifdef I_STDLIB
8793 #include <stdlib.h>
8794 #endif
8795 int main() {
8796     printf("%d\n", (int)sizeof($fpostype));
8797     exit(0);
8798 }
8799 EOCP
8800 set try
8801 if eval $compile_ok; then
8802         yyy=`$run ./try`
8803         case "$yyy" in
8804         '')     fpossize=4
8805                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8806                 ;;
8807         *)      fpossize=$yyy
8808                 echo "Your $zzz is $fpossize bytes long."
8809                 ;;
8810         esac
8811 else
8812         dflt="$longsize"
8813         echo " " >&4
8814         echo "(I can't compile the test program.  Guessing...)" >&4
8815         rp="What is the size of your file positions (in bytes)?"
8816         . ./myread
8817         fpossize="$ans"
8818 fi
8819
8820 # Backward compatibility (uselfs is deprecated).
8821 case "$uselfs" in
8822 "$define"|true|[yY]*)
8823         cat <<EOM >&4
8824
8825 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8826 EOM
8827         uselargefiles="$define"
8828         ;;
8829 esac                          
8830
8831 case "$lseeksize:$fpossize" in
8832 8:8) cat <<EOM
8833
8834 You can have files larger than 2 gigabytes.
8835 EOM
8836    val="$define" ;;
8837 *)    case "$uselargefiles" in
8838    "$undef"|false|[nN]*) dflt='n' ;;
8839    *)   dflt='y' ;;
8840    esac
8841    cat <<EOM
8842
8843 Perl can be built to understand large files (files larger than 2 gigabytes)
8844 on some systems.  To do so, Configure can be run with -Duselargefiles.
8845
8846 If this doesn't make any sense to you, just accept the default '$dflt'.
8847 EOM
8848    rp='Try to understand large files, if available?'
8849    . ./myread
8850    case "$ans" in
8851    y|Y)         val="$define" ;;
8852    *)           val="$undef"  ;;
8853    esac
8854    ;;
8855 esac
8856 set uselargefiles
8857 eval $setvar
8858 : Look for a hint-file generated 'call-back-unit'.  If the
8859 : user has specified that a large files perl is to be built,
8860 : we may need to set or change some other defaults.
8861 if $test -f uselargefiles.cbu; then
8862         echo "Your platform has some specific hints regarding large file builds, using them..."
8863         . ./uselargefiles.cbu
8864 fi
8865 case "$uselargefiles" in
8866 "$define")
8867         if $test -f uselargefiles.cbu; then
8868                 echo " "
8869                 echo "Rechecking to see how big your file offsets are..." >&4
8870                 $cat >try.c <<EOCP
8871 #include <sys/types.h>
8872 #include <stdio.h>
8873 int main()
8874 {
8875     printf("%d\n", (int)sizeof($lseektype));
8876     return(0); 
8877 }
8878 EOCP
8879                 set try
8880                 if eval $compile_ok; then
8881                         lseeksize=`$run ./try`
8882                         $echo "Your file offsets are now $lseeksize bytes long."
8883                 else
8884                         dflt="$lseeksize"
8885                         echo " "
8886                         echo "(I can't seem to compile the test program.  Guessing...)"
8887                         rp="What is the size of your file offsets (in bytes)?"
8888                         . ./myread
8889                         lseeksize="$ans"
8890                 fi
8891                 case "$fpostype" in
8892                 *_t) zzz="$fpostype"    ;;
8893                 *)   zzz="fpos_t"       ;;
8894                 esac
8895                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8896                 $cat > try.c <<EOCP
8897 #include <sys/types.h>
8898 #include <stdio.h>
8899 #$i_stdlib I_STDLIB
8900 #ifdef I_STDLIB
8901 #include <stdlib.h>
8902 #endif
8903 int main() {
8904     printf("%d\n", (int)sizeof($fpostype));
8905     return(0);
8906 }
8907 EOCP
8908                 set try
8909                 if eval $compile_ok; then
8910                         yyy=`$run ./try`
8911                         dflt="$lseeksize"
8912                         case "$yyy" in
8913                         '')     echo " "
8914                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8915                                 ;;
8916                         *)      fpossize=$yyy
8917                                 echo " $fpossize bytes." >&4
8918                                 ;;
8919                         esac
8920                 else
8921                         dflt="$fpossize"
8922                         echo " "
8923                         echo "(I can't compile the test program.  Guessing...)" >&4
8924                         rp="What is the size of your file positions (in bytes)?"
8925                         . ./myread
8926                         fpossize="$ans"
8927                 fi
8928                 $rm -f try.c try
8929         fi
8930         ;;
8931 esac
8932
8933 case "$vendorprefix" in
8934 '')     d_vendorbin="$undef"
8935         vendorbin=''
8936         vendorbinexp=''
8937         ;;
8938 *)      d_vendorbin="$define"
8939         : determine where vendor-supplied executables go.
8940         case "$vendorbin" in
8941         '') dflt=$vendorprefix/bin ;;
8942         *)      dflt="$vendorbin" ;;
8943         esac
8944         fn=d~+
8945         rp='Pathname for the vendor-supplied executables directory?'
8946         . ./getfile
8947         vendorbin="$ans"
8948         vendorbinexp="$ansexp"
8949         ;;
8950 esac
8951 : Change installation prefix, if necessary.
8952 if $test X"$prefix" != X"$installprefix"; then
8953         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8954 else
8955         installvendorbin="$vendorbinexp"
8956 fi
8957
8958 case "$vendorprefix" in
8959 '')     vendorhtml1dir=''
8960         vendorhtml1direxp=''
8961         ;;
8962 *)      : determine where vendor-supplied html pages go.
8963         : There is no standard location, so try to copy the previously-selected
8964         : directory structure for the core html pages.
8965         : XXX Better default suggestions would be welcome.
8966         case "$vendorhtml1dir" in
8967         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8968         *)      dflt=$vendorhtml1dir ;;
8969         esac
8970         case "$dflt" in
8971         ''|' ') dflt=none ;;
8972         esac
8973         fn=dn+~
8974         rp='Pathname for the vendor-supplied html pages?'
8975         . ./getfile
8976         vendorhtml1dir="$ans"
8977         vendorhtml1direxp="$ansexp"
8978         ;;
8979 esac
8980 : Use ' ' for none so value is preserved next time through Configure
8981 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8982 : Change installation prefix, if necessary.
8983 if $test X"$prefix" != X"$installprefix"; then
8984         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
8985 else
8986         installvendorhtml1dir="$vendorhtml1direxp"
8987 fi
8988
8989 case "$vendorprefix" in
8990 '')     vendorhtml3dir=''
8991         vendorhtml3direxp=''
8992         ;;
8993 *)      : determine where vendor-supplied module html pages go.
8994         : There is no standard location, so try to copy the previously-selected
8995         : directory structure for the core html pages.
8996         : XXX Better default suggestions would be welcome.
8997         case "$vendorhtml3dir" in
8998         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8999         *)      dflt=$vendorhtml3dir ;;
9000         esac
9001         case "$dflt" in
9002         ''|' ') dflt=none ;;
9003         esac
9004         fn=dn+~
9005         rp='Pathname for the vendor-supplied html pages?'
9006         . ./getfile
9007         vendorhtml3dir="$ans"
9008         vendorhtml3direxp="$ansexp"
9009         ;;
9010 esac
9011 : Use ' ' for none so value is preserved next time through Configure
9012 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9013 : Change installation prefix, if necessary.
9014 if $test X"$prefix" != X"$installprefix"; then
9015         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9016 else
9017         installvendorhtml3dir="$vendorhtml3direxp"
9018 fi
9019
9020 case "$vendorprefix" in
9021 '')     vendorman1dir=''
9022         vendorman1direxp=''
9023         ;;
9024 *)      : determine where vendor-supplied manual pages go.
9025         case "$vendorman1dir" in
9026         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9027         *)      dflt=$vendorman1dir ;;
9028         esac
9029         case "$dflt" in
9030         ''|' ') dflt=none ;;
9031         esac
9032         fn=nd~+
9033         rp='Pathname for the vendor-supplied manual section 1 pages?'
9034         . ./getfile
9035         vendorman1dir="$ans"
9036         vendorman1direxp="$ansexp"
9037         ;;
9038 esac
9039 : Use ' ' for none so value is preserved next time through Configure
9040 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9041 : Change installation prefix, if necessary.
9042 if $test X"$prefix" != X"$installprefix"; then
9043         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9044 else
9045         installvendorman1dir="$vendorman1direxp"
9046 fi
9047
9048 case "$vendorprefix" in
9049 '')     vendorman3dir=''
9050         vendorman3direxp=''
9051         ;;
9052 *)      : determine where vendor-supplied module manual pages go.
9053         case "$vendorman3dir" in
9054         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9055         *)      dflt=$vendorman3dir ;;
9056         esac
9057         case "$dflt" in
9058         ''|' ') dflt=none ;;
9059         esac
9060         fn=nd~+
9061         rp='Pathname for the vendor-supplied manual section 3 pages?'
9062         . ./getfile
9063         vendorman3dir="$ans"
9064         vendorman3direxp="$ansexp"
9065         ;;
9066 esac
9067 : Use ' ' for none so value is preserved next time through Configure
9068 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9069 : Change installation prefix, if necessary.
9070 if $test X"$prefix" != X"$installprefix"; then
9071         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9072 else
9073         installvendorman3dir="$vendorman3direxp"
9074 fi
9075
9076 case "$vendorprefix" in
9077 '')     d_vendorscript="$undef"
9078         vendorscript=''
9079         vendorscriptexp=''
9080         ;;
9081 *)      d_vendorscript="$define"
9082         : determine where vendor-supplied scripts go.
9083         case "$vendorscript" in
9084         '')     dflt=$vendorprefix/script
9085                 $test -d $dflt || dflt=$vendorbin ;;
9086         *)  dflt="$vendorscript" ;;
9087         esac
9088         $cat <<EOM
9089
9090 The installation process will create a directory for 
9091 vendor-supplied scripts.
9092
9093 EOM
9094         fn=d~+
9095         rp='Pathname for the vendor-supplied scripts directory?'
9096         . ./getfile
9097         vendorscript="$ans"
9098         vendorscriptexp="$ansexp"
9099         ;;
9100 esac
9101 : Change installation prefix, if necessary.
9102 if $test X"$prefix" != X"$installprefix"; then
9103         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9104 else
9105         installvendorscript="$vendorscriptexp"
9106 fi
9107
9108 : see if qgcvt exists
9109 set qgcvt d_qgcvt
9110 eval $inlibc
9111
9112 echo " "
9113
9114 if $test X"$d_longdbl" = X"$define"; then
9115
9116 echo "Checking how to print long doubles..." >&4
9117
9118 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9119         $cat >try.c <<'EOCP'
9120 #include <sys/types.h>
9121 #include <stdio.h>
9122 int main() {
9123   double d = 123.456;
9124   printf("%.3f\n", d);
9125 }
9126 EOCP
9127         set try
9128         if eval $compile; then
9129                 yyy=`$run ./try`
9130                 case "$yyy" in
9131                 123.456)
9132                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9133                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9134                         echo "We will use %f."
9135                         ;;
9136                 esac
9137         fi
9138 fi
9139
9140 if $test X"$sPRIfldbl" = X; then
9141         $cat >try.c <<'EOCP'
9142 #include <sys/types.h>
9143 #include <stdio.h>
9144 int main() {
9145   long double d = 123.456;
9146   printf("%.3Lf\n", d);
9147 }
9148 EOCP
9149         set try
9150         if eval $compile; then
9151                 yyy=`$run ./try`
9152                 case "$yyy" in
9153                 123.456)
9154                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9155                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9156                         echo "We will use %Lf."
9157                         ;;
9158                 esac
9159         fi
9160 fi
9161
9162 if $test X"$sPRIfldbl" = X; then
9163         $cat >try.c <<'EOCP'
9164 #include <sys/types.h>
9165 #include <stdio.h>
9166 int main() {
9167   long double d = 123.456;
9168   printf("%.3llf\n", d);
9169 }
9170 EOCP
9171         set try
9172         if eval $compile; then
9173                 yyy=`$run ./try`
9174                 case "$yyy" in
9175                 123.456)
9176                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9177                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9178                         echo "We will use %llf."
9179                         ;;
9180                 esac
9181         fi
9182 fi
9183
9184 if $test X"$sPRIfldbl" = X; then
9185         $cat >try.c <<'EOCP'
9186 #include <sys/types.h>
9187 #include <stdio.h>
9188 int main() {
9189   long double d = 123.456;
9190   printf("%.3lf\n", d);
9191 }
9192 EOCP
9193         set try
9194         if eval $compile; then
9195                 yyy=`$run ./try`
9196                 case "$yyy" in
9197                 123.456)
9198                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9199                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9200                         echo "We will use %lf."
9201                         ;;
9202                 esac
9203         fi
9204 fi
9205
9206 if $test X"$sPRIfldbl" = X; then
9207         echo "Cannot figure out how to print long doubles." >&4
9208 else
9209         sSCNfldbl=$sPRIfldbl    # expect consistency
9210 fi
9211
9212 $rm -f try try.*
9213
9214 fi # d_longdbl
9215
9216 case "$sPRIfldbl" in
9217 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9218         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9219         d_SCNfldbl="$undef";
9220         ;;
9221 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9222         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9223         d_SCNfldbl="$define";
9224         ;;
9225 esac
9226
9227 : Check how to convert floats to strings.
9228
9229 if test "X$d_Gconvert" = X; then
9230
9231 echo " "
9232 echo "Checking for an efficient way to convert floats to strings."
9233 echo " " > try.c
9234 case "$uselongdouble" in
9235 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9236 esac
9237 case "$d_longdbl" in
9238 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9239 esac
9240 case "$d_PRIgldbl" in
9241 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9242 esac
9243 $cat >>try.c <<EOP
9244 #ifdef TRY_gconvert
9245 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9246 char *myname = "gconvert";
9247 #endif
9248 #ifdef TRY_gcvt
9249 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9250 char *myname = "gcvt";
9251 #endif
9252 #ifdef TRY_qgcvt
9253 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9254 char *myname = "qgcvt";
9255 #define DOUBLETYPE long double
9256 #endif
9257 #ifdef TRY_sprintf
9258 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9259 #ifdef HAS_PRIgldbl
9260 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9261 #else
9262 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9263 #endif
9264 #else
9265 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9266 #endif
9267 char *myname = "sprintf";
9268 #endif
9269
9270 #ifndef DOUBLETYPE
9271 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9272 #define DOUBLETYPE long double
9273 #else
9274 #define DOUBLETYPE double
9275 #endif
9276 #endif
9277
9278 #include <stdio.h>
9279
9280 #define I_STDLIB $i_stdlib
9281 #ifdef I_STDLIB
9282 #include <stdlib.h>
9283 #endif
9284
9285 int
9286 checkit(expect, got)
9287 char *expect;
9288 char *got;
9289 {
9290     if (strcmp(expect, got)) {
9291                 printf("%s oddity:  Expected %s, got %s\n",
9292                         myname, expect, got);
9293                 exit(1);
9294         }
9295 }
9296
9297 int main()
9298
9299         char buf[64]; 
9300         buf[63] = '\0';
9301
9302         /* This must be 1st test on (which?) platform */
9303         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9304         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9305         checkit("0.1", buf);
9306
9307         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9308         checkit("0.01", buf);
9309
9310         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9311         checkit("0.001", buf);
9312
9313         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9314         checkit("0.0001", buf);
9315
9316         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9317         if (strlen(buf) > 5)
9318             checkit("9e-005", buf); /* for Microsoft ?? */
9319         else
9320             checkit("9e-05", buf);
9321
9322         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9323         checkit("1", buf);
9324
9325         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9326         checkit("1.1", buf);
9327
9328         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9329         checkit("1.01", buf);
9330
9331         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9332         checkit("1.001", buf);
9333
9334         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9335         checkit("1.0001", buf);
9336
9337         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9338         checkit("1.00001", buf);
9339
9340         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9341         checkit("1.000001", buf);
9342
9343         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9344         checkit("0", buf);
9345
9346         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9347         checkit("-1", buf);
9348
9349         /* Some Linux gcvt's give 1.e+5 here. */
9350         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9351         checkit("100000", buf);
9352         
9353         /* Some Linux gcvt's give -1.e+5 here. */
9354         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9355         checkit("-100000", buf);
9356
9357         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9358         checkit("123.456", buf);
9359
9360         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9361         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9362         /* 34 should be enough to scare even long double
9363          * places into using the e notation. */
9364         if (strlen(buf) > 5)
9365             checkit("1e+034", buf); /* for Microsoft */
9366         else
9367             checkit("1e+34", buf);
9368
9369         /* For Perl, if you add additional tests here, also add them to
9370          * t/base/num.t for benefit of platforms not using Configure or
9371          * overriding d_Gconvert */
9372
9373         exit(0);
9374 }
9375 EOP
9376 : first add preferred functions to our list
9377 xxx_list=""
9378 for xxx_convert in $gconvert_preference; do
9379     case $xxx_convert in
9380     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9381     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9382     esac 
9383 done
9384 : then add any others
9385 for xxx_convert in gconvert gcvt sprintf; do
9386     case "$xxx_list" in
9387     *$xxx_convert*) ;;
9388     *) xxx_list="$xxx_list $xxx_convert" ;;
9389     esac 
9390 done
9391
9392 case "$d_longdbl$uselongdouble" in
9393 "$define$define")
9394     : again, add prefered functions to our list first
9395     xxx_ld_list=""
9396     for xxx_convert in $gconvert_ld_preference; do
9397         case $xxx_convert in
9398         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9399         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9400         esac
9401     done
9402     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9403     for xxx_convert in qgcvt sprintf $xxx_list; do
9404         case "$xxx_ld_list" in
9405         $xxx_convert*|*" $xxx_convert"*) ;;
9406         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9407         esac
9408     done
9409     : if sprintf cannot do long doubles, move it to the end
9410     if test "$d_PRIgldbl" != "$define"; then
9411         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9412     fi
9413     : if no qgcvt, remove it
9414     if test "$d_qgcvt" != "$define"; then
9415         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9416     fi
9417     : use the ld_list
9418     xxx_list="$xxx_ld_list"
9419     ;;
9420 esac
9421
9422 for xxx_convert in $xxx_list; do
9423         echo "Trying $xxx_convert..."
9424         $rm -f try try$_o
9425         set try -DTRY_$xxx_convert
9426         if eval $compile; then
9427                 echo "$xxx_convert() found." >&4
9428                 if $run ./try; then
9429                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9430                         break;
9431                 else
9432                         echo "...But $xxx_convert didn't work as I expected."
9433                         xxx_convert=''
9434                 fi
9435         else
9436                 echo "$xxx_convert NOT found." >&4
9437         fi
9438 done
9439
9440 if test X$xxx_convert = X; then
9441     echo "*** WHOA THERE!!! ***" >&4
9442     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9443     xxx_convert=sprintf
9444 fi
9445
9446 case "$xxx_convert" in
9447 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9448 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9449 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9450 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9451    "$define$define$define")
9452       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9453    "$define$define$undef")
9454       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9455    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9456    esac
9457    ;;  
9458 esac
9459
9460 fi
9461
9462 : see if _fwalk exists
9463 set fwalk d__fwalk
9464 eval $inlibc
9465
9466 : Initialize h_fcntl
9467 h_fcntl=false
9468
9469 : Initialize h_sysfile
9470 h_sysfile=false
9471
9472 : access call always available on UNIX
9473 set access d_access
9474 eval $inlibc
9475
9476 : locate the flags for 'access()'
9477 case "$d_access" in
9478 "$define")
9479         echo " "
9480         $cat >access.c <<EOCP
9481 #include <sys/types.h>
9482 #ifdef I_FCNTL
9483 #include <fcntl.h>
9484 #endif
9485 #ifdef I_SYS_FILE
9486 #include <sys/file.h>
9487 #endif
9488 #ifdef I_UNISTD
9489 #include <unistd.h>
9490 #endif
9491 #$i_stdlib I_STDLIB
9492 #ifdef I_STDLIB
9493 #include <stdlib.h>
9494 #endif
9495 int main() {
9496         exit(R_OK);
9497 }
9498 EOCP
9499         : check sys/file.h first, no particular reason here
9500         if $test `./findhdr sys/file.h` && \
9501                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9502                 h_sysfile=true;
9503                 echo "<sys/file.h> defines the *_OK access constants." >&4
9504         elif $test `./findhdr fcntl.h` && \
9505                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9506                 h_fcntl=true;
9507                 echo "<fcntl.h> defines the *_OK access constants." >&4
9508         elif $test `./findhdr unistd.h` && \
9509                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9510                 echo "<unistd.h> defines the *_OK access constants." >&4
9511         else
9512                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9513         fi
9514         ;;
9515 esac
9516 $rm -f access*
9517
9518 : see if accessx exists
9519 set accessx d_accessx
9520 eval $inlibc
9521
9522 : see if aintl exists
9523 set aintl d_aintl
9524 eval $inlibc
9525
9526 : see if alarm exists
9527 set alarm d_alarm
9528 eval $inlibc
9529
9530 : see if POSIX threads are available
9531 set pthread.h i_pthread
9532 eval $inhdr
9533
9534 : define a fucntion to check prototypes
9535 $cat > protochk <<EOSH
9536 $startsh
9537 cc="$cc"
9538 optimize="$optimize"
9539 ccflags="$ccflags"
9540 prototype="$prototype"
9541 define="$define"
9542 rm=$rm
9543 usethreads=$usethreads
9544 i_pthread=$i_pthread
9545 pthread_h_first=$pthread_h_first
9546 EOSH
9547
9548 $cat >> protochk <<'EOSH'
9549
9550 $rm -f try.c
9551 foo="$1"
9552 shift
9553 while test $# -ge 2; do
9554         case "$1" in
9555                 $define) echo "#include <$2>" >> try.c ;;
9556                 literal) echo "$2" >> try.c ;;
9557         esac
9558     # Extra magic for the benefit of systems that need pthread.h
9559     # to be included early to correctly detect threadsafe functions.
9560     # Such functions must guarantee themselves, though, that the usethreads
9561     # and i_pthread have been defined, before calling protochk.
9562     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9563         echo "#include <pthread.h>" >> try.c
9564         pthread_h_done=yes
9565     fi
9566     shift 2
9567 done
9568 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9569 cat >> try.c <<'EOCP'
9570 #ifdef CAN_PROTOTYPE
9571 #define _(args) args
9572 #else
9573 #define _(args) ()
9574 #endif
9575 EOCP
9576 echo "$foo" >> try.c
9577 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9578 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9579 status=$?
9580 $rm -f try.[co]
9581 exit $status
9582 EOSH
9583 chmod +x protochk
9584 $eunicefix protochk
9585
9586 hasproto='varname=$1; func=$2; shift; shift;
9587 while $test $# -ge 2; do
9588         case "$1" in
9589         $define) echo "#include <$2>";;
9590         esac ;
9591     shift 2;
9592 done > try.c;
9593 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9594 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9595         echo "$func() prototype found.";
9596         val="$define";
9597 else
9598         echo "$func() prototype NOT found.";
9599         val="$undef";
9600 fi;
9601 set $varname;
9602 eval $setvar;
9603 $rm -f try.c tryout.c'
9604
9605 : see if sys/types.h has to be included
9606 set sys/types.h i_systypes
9607 eval $inhdr
9608
9609 : see if sys/select.h has to be included
9610 set sys/select.h i_sysselct
9611 eval $inhdr
9612
9613 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9614 while $test $# -ge 2; do
9615         case "$1" in
9616         $define) echo "#include <$2>";;
9617         esac ;
9618     shift 2;
9619 done > try.c;
9620 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9621 set try;
9622 if eval $compile; then
9623         val="$define";
9624 else
9625         val="$undef";
9626 fi;
9627 set $varname;
9628 eval $setvar;
9629 $rm -f try.c try.o'
9630
9631 : see if we should include time.h, sys/time.h, or both
9632 echo " "
9633 if test "X$timeincl" = X; then
9634         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9635         $echo $n "I'm now running the test program...$c"
9636         $cat >try.c <<EOCP
9637 #include <sys/types.h>
9638 #ifdef I_TIME
9639 #include <time.h>
9640 #endif
9641 #ifdef I_SYSTIME
9642 #ifdef SYSTIMEKERNEL
9643 #define KERNEL
9644 #endif
9645 #include <sys/time.h>
9646 #endif
9647 #ifdef I_SYSSELECT
9648 #include <sys/select.h>
9649 #endif
9650 #$i_stdlib I_STDLIB
9651 #ifdef I_STDLIB
9652 #include <stdlib.h>
9653 #endif
9654 int main()
9655 {
9656         struct tm foo;
9657 #ifdef S_TIMEVAL
9658         struct timeval bar;
9659 #endif
9660 #ifdef S_TIMEZONE
9661         struct timezone tzp;
9662 #endif
9663         if (foo.tm_sec == foo.tm_sec)
9664                 exit(0);
9665 #ifdef S_TIMEVAL
9666         if (bar.tv_sec == bar.tv_sec)
9667                 exit(0);
9668 #endif
9669         exit(1);
9670 }
9671 EOCP
9672         flags=''
9673         for s_timezone in '-DS_TIMEZONE' ''; do
9674         sysselect=''
9675         for s_timeval in '-DS_TIMEVAL' ''; do
9676         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9677         for i_time in '' '-DI_TIME'; do
9678         for i_systime in '-DI_SYSTIME' ''; do
9679                 case "$flags" in
9680                 '') $echo $n ".$c"
9681                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9682                         if eval $compile; then
9683                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9684                                 shift
9685                                 flags="$*"
9686                                 echo " "
9687                                 $echo $n "Succeeded with $flags$c"
9688                         fi
9689                         ;;
9690                 esac
9691         done
9692         done
9693         done
9694         done
9695         done
9696         timeincl=''
9697         echo " "
9698         case "$flags" in
9699         *SYSTIMEKERNEL*) i_systimek="$define"
9700                 timeincl=`./findhdr sys/time.h`
9701                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9702         *) i_systimek="$undef";;
9703         esac
9704         case "$flags" in
9705         *I_TIME*) i_time="$define"
9706                 timeincl=`./findhdr time.h`" $timeincl"
9707                 echo "We'll include <time.h>." >&4;;
9708         *) i_time="$undef";;
9709         esac
9710         case "$flags" in
9711         *I_SYSTIME*) i_systime="$define"
9712                 timeincl=`./findhdr sys/time.h`" $timeincl"
9713                 echo "We'll include <sys/time.h>." >&4;;
9714         *) i_systime="$undef";;
9715         esac
9716         $rm -f try.c try
9717 fi
9718 : see if struct tm knows about tm_zone
9719 case "$i_systime$i_time" in
9720 *$define*) 
9721         echo " "
9722         echo "Checking to see if your struct tm has tm_zone field..." >&4
9723         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9724         eval $hasfield
9725         ;;
9726 *)      val="$undef"
9727         set d_tm_tm_zone
9728         eval $setvar
9729         ;;
9730 esac
9731 case "$d_tm_tm_zone" in
9732 "$define")      echo "Yes, it does."   ;;
9733 *)              echo "No, it doesn't." ;;
9734 esac
9735 : see if struct tm knows about tm_gmtoff
9736 case "$i_systime$i_time" in
9737 *$define*) 
9738         echo " "
9739         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9740         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9741         eval $hasfield
9742         ;;
9743 *)      val="$undef"
9744         set d_tm_tm_gmtoff
9745         eval $setvar
9746         ;;
9747 esac
9748 case "$d_tm_tm_gmtoff" in
9749 "$define")      echo "Yes, it does."   ;;
9750 *)              echo "No, it doesn't." ;;
9751 esac
9752
9753 : see if asctime_r exists
9754 set asctime_r d_asctime_r
9755 eval $inlibc
9756 case "$d_asctime_r" in
9757 "$define")
9758         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9759         case "$d_asctime_r_proto:$usethreads" in
9760         ":define")      d_asctime_r_proto=define
9761                 set d_asctime_r_proto asctime_r $hdrs
9762                 eval $hasproto ;;
9763         *)      ;;
9764         esac
9765         case "$d_asctime_r_proto" in
9766         define)
9767         case "$asctime_r_proto" in
9768         ''|0) try='char* asctime_r(const struct tm*, char*);'
9769         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9770         esac
9771         case "$asctime_r_proto" in
9772         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9773         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9774         esac
9775         case "$asctime_r_proto" in
9776         ''|0) try='int asctime_r(const struct tm*, char*);'
9777         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9778         esac
9779         case "$asctime_r_proto" in
9780         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9781         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9782         esac
9783         case "$asctime_r_proto" in
9784         ''|0)   d_asctime_r=undef
9785                 asctime_r_proto=0
9786                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9787         * )     case "$asctime_r_proto" in
9788                 REENTRANT_PROTO*) ;;
9789                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9790                 esac
9791                 echo "Prototype: $try" ;;
9792         esac
9793         ;;
9794         *)      case "$usethreads" in
9795                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9796                 esac
9797                 d_asctime_r=undef
9798                 asctime_r_proto=0
9799                 ;;
9800         esac
9801         ;;
9802 *)      asctime_r_proto=0
9803         ;;
9804 esac
9805
9806 : see if atolf exists
9807 set atolf d_atolf
9808 eval $inlibc
9809
9810 : see if atoll exists
9811 set atoll d_atoll
9812 eval $inlibc
9813
9814 : Look for GNU-cc style attribute checking
9815 echo " "
9816 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9817 $cat >attrib.c <<'EOCP'
9818 #include <stdio.h>
9819 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9820 EOCP
9821 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9822         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9823                 echo "Your C compiler doesn't fully support __attribute__."
9824                 val="$undef"
9825         else
9826                 echo "Your C compiler supports __attribute__."
9827                 val="$define"
9828         fi
9829 else
9830         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9831         val="$undef"
9832 fi
9833 set d_attribut
9834 eval $setvar
9835 $rm -f attrib*
9836
9837 : see if bcmp exists
9838 set bcmp d_bcmp
9839 eval $inlibc
9840
9841 : see if bcopy exists
9842 set bcopy d_bcopy
9843 eval $inlibc
9844
9845 : see if this is a unistd.h system
9846 set unistd.h i_unistd
9847 eval $inhdr
9848
9849 : see if getpgrp exists
9850 set getpgrp d_getpgrp
9851 eval $inlibc
9852
9853 case "$d_getpgrp" in
9854 "$define")
9855         echo " "
9856         echo "Checking to see which flavor of getpgrp is in use..."
9857         $cat >try.c <<EOP
9858 #$i_unistd I_UNISTD
9859 #include <sys/types.h>
9860 #ifdef I_UNISTD
9861 #  include <unistd.h>
9862 #endif
9863 #$i_stdlib I_STDLIB
9864 #ifdef I_STDLIB
9865 #include <stdlib.h>
9866 #endif
9867 int main()
9868 {
9869         if (getuid() == 0) {
9870                 printf("(I see you are running Configure as super-user...)\n");
9871                 setuid(1);
9872         }
9873 #ifdef TRY_BSD_PGRP
9874         if (getpgrp(1) == 0)
9875                 exit(0);
9876 #else
9877         if (getpgrp() > 0)
9878                 exit(0);
9879 #endif
9880         exit(1);
9881 }
9882 EOP
9883         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9884                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9885                 val="$define"
9886         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9887                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9888                 val="$undef"
9889         else
9890                 echo "I can't seem to compile and run the test program."
9891                 if ./usg; then
9892                         xxx="a USG one, i.e. you use getpgrp()."
9893                 else
9894                         # SVR4 systems can appear rather BSD-ish.
9895                         case "$i_unistd" in
9896                         $undef)
9897                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9898                                 val="$define"
9899                                 ;;
9900                         $define)
9901                                 xxx="probably a USG one, i.e. you use getpgrp()."
9902                                 val="$undef"
9903                                 ;;
9904                         esac
9905                 fi
9906                 echo "Assuming your getpgrp is $xxx" >&4
9907         fi
9908         ;;
9909 *) val="$undef";;
9910 esac
9911 set d_bsdgetpgrp
9912 eval $setvar
9913 $rm -f try try.*
9914
9915 : see if setpgrp exists
9916 set setpgrp d_setpgrp
9917 eval $inlibc
9918
9919 case "$d_setpgrp" in
9920 "$define")
9921         echo " "
9922         echo "Checking to see which flavor of setpgrp is in use..."
9923         $cat >try.c <<EOP
9924 #$i_unistd I_UNISTD
9925 #include <sys/types.h>
9926 #ifdef I_UNISTD
9927 #  include <unistd.h>
9928 #endif
9929 #$i_stdlib I_STDLIB
9930 #ifdef I_STDLIB
9931 #include <stdlib.h>
9932 #endif
9933 int main()
9934 {
9935         if (getuid() == 0) {
9936                 printf("(I see you are running Configure as super-user...)\n");
9937                 setuid(1);
9938         }
9939 #ifdef TRY_BSD_PGRP
9940         if (-1 == setpgrp(1, 1))
9941                 exit(0);
9942 #else
9943         if (setpgrp() != -1)
9944                 exit(0);
9945 #endif
9946         exit(1);
9947 }
9948 EOP
9949         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9950                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9951                 val="$define"
9952         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9953                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9954                 val="$undef"
9955         else
9956                 echo "(I can't seem to compile and run the test program.)"
9957                 if ./usg; then
9958                         xxx="a USG one, i.e. you use setpgrp()."
9959                 else
9960                         # SVR4 systems can appear rather BSD-ish.
9961                         case "$i_unistd" in
9962                         $undef)
9963                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9964                                 val="$define"
9965                                 ;;
9966                         $define)
9967                                 xxx="probably a USG one, i.e. you use setpgrp()."
9968                                 val="$undef"
9969                                 ;;
9970                         esac
9971                 fi
9972                 echo "Assuming your setpgrp is $xxx" >&4
9973         fi
9974         ;;
9975 *) val="$undef";;
9976 esac
9977 set d_bsdsetpgrp
9978 eval $setvar
9979 $rm -f try try.*
9980 : see if bzero exists
9981 set bzero d_bzero
9982 eval $inlibc
9983
9984 : see if signal is declared as pointer to function returning int or void
9985 echo " "
9986 xxx=`./findhdr signal.h`
9987 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9988 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9989         echo "You have int (*signal())() instead of void." >&4
9990         val="$undef"
9991 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9992         echo "You have void (*signal())()." >&4
9993         val="$define"
9994 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9995         echo "You have int (*signal())() instead of void." >&4
9996         val="$undef"
9997 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9998         echo "You have void (*signal())()." >&4
9999         val="$define"
10000 else
10001         case "$d_voidsig" in
10002         '')
10003         echo "I can't determine whether signal handler returns void or int..." >&4
10004                 dflt=void
10005                 rp="What type does your signal handler return?"
10006                 . ./myread
10007                 case "$ans" in
10008                 v*) val="$define";;
10009                 *) val="$undef";;
10010                 esac;;
10011         "$define")
10012                 echo "As you already told me, signal handler returns void." >&4
10013                 val="$define"
10014                 ;;
10015         *)      echo "As you already told me, signal handler returns int." >&4
10016                 val="$undef"
10017                 ;;
10018         esac
10019 fi
10020 set d_voidsig
10021 eval $setvar
10022 case "$d_voidsig" in
10023 "$define") signal_t="void";;
10024 *) signal_t="int";;
10025 esac
10026 $rm -f $$.tmp
10027
10028 : check for ability to cast large floats to 32-bit ints.
10029 echo " "
10030 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10031 if $test "$intsize" -ge 4; then
10032         xxx=int
10033 else
10034         xxx=long
10035 fi
10036 $cat >try.c <<EOCP
10037 #include <stdio.h>
10038 #$i_stdlib I_STDLIB
10039 #ifdef I_STDLIB
10040 #include <stdlib.h>
10041 #endif
10042 #include <sys/types.h>
10043 #include <signal.h>
10044 $signal_t blech(s) int s; { exit(3); }
10045 int main()
10046 {
10047         $xxx i32;
10048         double f, g;
10049         int result = 0;
10050         char str[16];
10051         signal(SIGFPE, blech);
10052
10053         /* Don't let compiler optimize the test away.  Store the number 
10054            in a writable string for gcc to pass to sscanf under HP/UX.
10055         */
10056         sprintf(str, "2147483647");
10057         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10058         g = 10 * f;
10059         i32  = ($xxx) g;
10060
10061         /* x86 processors will probably give 0x8000 0000, which is a
10062        sign change.  We don't want that.  We want to mimic SPARC
10063            behavior here, which is to preserve the sign and give
10064            back 0x7fff ffff.
10065         */
10066         if (i32 != ($xxx) f)
10067                 result |= 1;
10068         exit(result);
10069 }
10070 EOCP
10071 set try
10072 if eval $compile_ok; then
10073         $run ./try
10074         yyy=$?
10075 else
10076         echo "(I can't seem to compile the test program--assuming it can't)"
10077         yyy=1
10078 fi
10079 case "$yyy" in
10080 0)      val="$define"
10081         echo "Yup, it can."
10082         ;;
10083 *)      val="$undef"
10084         echo "Nope, it can't."
10085         ;;
10086 esac
10087 set d_casti32
10088 eval $setvar
10089 $rm -f try try.*
10090
10091 : check for ability to cast negative floats to unsigned
10092 echo " "
10093 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10094 $cat >try.c <<EOCP
10095 #include <stdio.h>
10096 #$i_stdlib I_STDLIB
10097 #ifdef I_STDLIB
10098 #include <stdlib.h>
10099 #endif
10100 #include <sys/types.h>
10101 #include <signal.h>
10102 $signal_t blech(s) int s; { exit(7); }
10103 $signal_t blech_in_list(s) int s; { exit(4); }
10104 unsigned long dummy_long(p) unsigned long p; { return p; }
10105 unsigned int dummy_int(p) unsigned int p; { return p; }
10106 unsigned short dummy_short(p) unsigned short p; { return p; }
10107 int main()
10108 {
10109         double f;
10110         unsigned long along;
10111         unsigned int aint;
10112         unsigned short ashort;
10113         int result = 0;
10114         char str[16];
10115         
10116         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10117            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10118            optimized the whole file away
10119         */
10120         /* Store the number in a writable string for gcc to pass to 
10121            sscanf under HP/UX.
10122         */
10123         sprintf(str, "-123");
10124         sscanf(str, "%lf", &f);  /* f = -123.; */
10125
10126         signal(SIGFPE, blech);
10127         along = (unsigned long)f;
10128         aint = (unsigned int)f;
10129         ashort = (unsigned short)f;
10130         if (along != (unsigned long)-123)
10131                 result |= 1;
10132         if (aint != (unsigned int)-123)
10133                 result |= 1;
10134         if (ashort != (unsigned short)-123)
10135                 result |= 1;
10136         sprintf(str, "1073741824.");
10137         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10138         f = f + f;
10139         along = 0;
10140         along = (unsigned long)f;
10141         if (along != 0x80000000)
10142                 result |= 2;
10143         f -= 1.;
10144         along = 0;
10145         along = (unsigned long)f;
10146         if (along != 0x7fffffff)
10147                 result |= 1;
10148         f += 2.;
10149         along = 0;
10150         along = (unsigned long)f;
10151         if (along != 0x80000001)
10152                 result |= 2;
10153         if (result)
10154                 exit(result);
10155         signal(SIGFPE, blech_in_list);
10156         sprintf(str, "123.");
10157         sscanf(str, "%lf", &f);  /* f = 123.; */
10158         along = dummy_long((unsigned long)f);
10159         aint = dummy_int((unsigned int)f);
10160         ashort = dummy_short((unsigned short)f);
10161         if (along != (unsigned long)123)
10162                 result |= 4;
10163         if (aint != (unsigned int)123)
10164                 result |= 4;
10165         if (ashort != (unsigned short)123)
10166                 result |= 4;
10167         exit(result);
10168
10169 }
10170 EOCP
10171 set try
10172 if eval $compile_ok; then
10173         $run ./try
10174         castflags=$?
10175 else
10176         echo "(I can't seem to compile the test program--assuming it can't)"
10177         castflags=7
10178 fi
10179 case "$castflags" in
10180 0)      val="$define"
10181         echo "Yup, it can."
10182         ;;
10183 *)      val="$undef"
10184         echo "Nope, it can't."
10185         ;;
10186 esac
10187 set d_castneg
10188 eval $setvar
10189 $rm -f try.*
10190
10191 : see if vprintf exists
10192 echo " "
10193 if set vprintf val -f d_vprintf; eval $csym; $val; then
10194         echo 'vprintf() found.' >&4
10195         val="$define"
10196         $cat >try.c <<EOF
10197 #include <varargs.h>
10198 #$i_stdlib I_STDLIB
10199 #ifdef I_STDLIB
10200 #include <stdlib.h>
10201 #endif
10202
10203 int main() { xxx("foo"); }
10204
10205 xxx(va_alist)
10206 va_dcl
10207 {
10208         va_list args;
10209         char buf[10];
10210
10211         va_start(args);
10212         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10213 }
10214 EOF
10215         set try
10216         if eval $compile && $run ./try; then
10217                 echo "Your vsprintf() returns (int)." >&4
10218                 val2="$undef"
10219         else
10220                 echo "Your vsprintf() returns (char*)." >&4
10221                 val2="$define"
10222         fi
10223 else
10224         echo 'vprintf() NOT found.' >&4
10225                 val="$undef"
10226                 val2="$undef"
10227 fi
10228 $rm -f try try.*
10229 set d_vprintf
10230 eval $setvar
10231 val=$val2
10232 set d_charvspr
10233 eval $setvar
10234
10235 : see if chown exists
10236 set chown d_chown
10237 eval $inlibc
10238
10239 : see if chroot exists
10240 set chroot d_chroot
10241 eval $inlibc
10242
10243 : see if chsize exists
10244 set chsize d_chsize
10245 eval $inlibc
10246
10247 : see if class exists
10248 set class d_class
10249 eval $inlibc
10250
10251 hasstruct='varname=$1; struct=$2; shift; shift;
10252 while $test $# -ge 2; do
10253         case "$1" in
10254         $define) echo "#include <$2>";;
10255         esac ;
10256     shift 2;
10257 done > try.c;
10258 echo "int main () { struct $struct foo; }" >> try.c;
10259 set try;
10260 if eval $compile; then
10261         val="$define";
10262 else
10263         val="$undef";
10264 fi;
10265 set $varname;
10266 eval $setvar;
10267 $rm -f try.c try.o'
10268
10269 socketlib=''
10270 sockethdr=''
10271 : see whether socket exists
10272 echo " "
10273 $echo $n "Hmm... $c" >&4
10274 if set socket val -f d_socket; eval $csym; $val; then
10275         echo "Looks like you have Berkeley networking support." >&4
10276         d_socket="$define"
10277         if set setsockopt val -f; eval $csym; $val; then
10278                 d_oldsock="$undef"
10279         else
10280                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10281                 d_oldsock="$define"
10282         fi
10283 else
10284         if $contains socklib libc.list >/dev/null 2>&1; then
10285                 echo "Looks like you have Berkeley networking support." >&4
10286                 d_socket="$define"
10287                 : we will have to assume that it supports the 4.2 BSD interface
10288                 d_oldsock="$undef"
10289         else
10290                 echo "You don't have Berkeley networking in libc$_a..." >&4
10291                 if test "X$d_socket" = "X$define"; then
10292                    echo "...but you seem to believe that you have sockets." >&4
10293                 else
10294                         for net in net socket
10295                         do
10296                                 if test -f /usr/lib/lib$net$_a; then
10297                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10298                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10299                                         if $contains socket libc.list >/dev/null 2>&1; then
10300                                                 d_socket="$define"
10301                                                 socketlib="-l$net"
10302                                                 case "$net" in
10303                                                 net)
10304                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10305                                                         sockethdr="-I/usr/netinclude"
10306                                                         ;;
10307                                                 esac
10308                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10309                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10310                                                         d_oldsock="$undef"
10311                                                 else
10312                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10313                                                         d_oldsock="$define"
10314                                                 fi
10315                                                 break
10316                                         fi
10317                                 fi
10318                         done
10319                         if test "X$d_socket" != "X$define"; then
10320                            echo "or anywhere else I see." >&4
10321                            d_socket="$undef"
10322                            d_oldsock="$undef"
10323                         fi
10324                 fi
10325         fi
10326 fi
10327
10328 : see if socketpair exists
10329 set socketpair d_sockpair
10330 eval $inlibc
10331
10332
10333 echo " "
10334 echo "Checking the availability of certain socket constants..." >&4
10335 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10336         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10337         $cat >try.c <<EOF
10338 #include <sys/types.h>
10339 #include <sys/socket.h>
10340 int main() {
10341     int i = $ENUM;
10342 }
10343 EOF
10344         val="$undef"
10345         set try; if eval $compile; then
10346                 val="$define"
10347         fi
10348         set d_${enum}; eval $setvar
10349         $rm -f try.c try
10350 done
10351
10352 : see if this is a sys/uio.h system
10353 set sys/uio.h i_sysuio
10354 eval $inhdr
10355
10356
10357 echo " "
10358 echo "Checking to see if your system supports struct cmsghdr..." >&4
10359 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10360 eval $hasstruct
10361 case "$d_cmsghdr_s" in
10362 "$define")      echo "Yes, it does."   ;;
10363 *)              echo "No, it doesn't." ;;
10364 esac
10365
10366
10367 : check for const keyword
10368 echo " "
10369 echo 'Checking to see if your C compiler knows about "const"...' >&4
10370 $cat >const.c <<'EOCP'
10371 typedef struct spug { int drokk; } spug;
10372 int main()
10373 {
10374         const char *foo;
10375         const spug y;
10376 }
10377 EOCP
10378 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10379         val="$define"
10380         echo "Yup, it does."
10381 else
10382         val="$undef"
10383         echo "Nope, it doesn't."
10384 fi
10385 set d_const
10386 eval $setvar
10387
10388 : see if copysignl exists
10389 set copysignl d_copysignl
10390 eval $inlibc
10391
10392 : see if crypt exists
10393 echo " "
10394 set crypt d_crypt
10395 eval $inlibc
10396 case "$d_crypt" in
10397 $define) cryptlib='' ;;
10398 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10399                 echo 'crypt() found.' >&4
10400                 val="$define"
10401                 cryptlib=''
10402         else
10403                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10404                 if $test -z "$cryptlib"; then
10405                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10406                 else
10407                         cryptlib=-lcrypt
10408                 fi
10409                 if $test -z "$cryptlib"; then
10410                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10411                 else
10412                         cryptlib=-lcrypt
10413                 fi
10414                 if $test -z "$cryptlib"; then
10415                         cryptlib=`./loc libcrypt$_a "" $libpth`
10416                 else
10417                         cryptlib=-lcrypt
10418                 fi
10419                 if $test -z "$cryptlib"; then
10420                         echo 'crypt() NOT found.' >&4
10421                         val="$undef"
10422                 else
10423                         val="$define"
10424                 fi
10425         fi
10426         set d_crypt
10427         eval $setvar
10428         ;;
10429 esac
10430
10431 : see if this is a crypt.h system
10432 set crypt.h i_crypt
10433 eval $inhdr
10434
10435 : see if crypt_r exists
10436 set crypt_r d_crypt_r
10437 eval $inlibc
10438 case "$d_crypt_r" in
10439 "$define")
10440         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10441         case "$d_crypt_r_proto:$usethreads" in
10442         ":define")      d_crypt_r_proto=define
10443                 set d_crypt_r_proto crypt_r $hdrs
10444                 eval $hasproto ;;
10445         *)      ;;
10446         esac
10447         case "$d_crypt_r_proto" in
10448         define)
10449         case "$crypt_r_proto" in
10450         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10451         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10452         esac
10453         case "$crypt_r_proto" in
10454         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10455         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10456         esac
10457         case "$crypt_r_proto" in
10458         ''|0)   d_crypt_r=undef
10459                 crypt_r_proto=0
10460                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10461         * )     case "$crypt_r_proto" in
10462                 REENTRANT_PROTO*) ;;
10463                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10464                 esac
10465                 echo "Prototype: $try" ;;
10466         esac
10467         ;;
10468         *)      case "$usethreads" in
10469                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10470                 esac
10471                 d_crypt_r=undef
10472                 crypt_r_proto=0
10473                 ;;
10474         esac
10475         ;;
10476 *)      crypt_r_proto=0
10477         ;;
10478 esac
10479
10480 : get csh whereabouts
10481 case "$csh" in
10482 'csh') val="$undef" ;;
10483 *) val="$define" ;;
10484 esac
10485 set d_csh
10486 eval $setvar
10487 : Respect a hint or command line value for full_csh.
10488 case "$full_csh" in
10489 '') full_csh=$csh ;;
10490 esac
10491
10492 : see if ctermid_r exists
10493 set ctermid_r d_ctermid_r
10494 eval $inlibc
10495 case "$d_ctermid_r" in
10496 "$define")
10497         hdrs="$i_systypes sys/types.h define stdio.h "
10498         case "$d_ctermid_r_proto:$usethreads" in
10499         ":define")      d_ctermid_r_proto=define
10500                 set d_ctermid_r_proto ctermid_r $hdrs
10501                 eval $hasproto ;;
10502         *)      ;;
10503         esac
10504         case "$d_ctermid_r_proto" in
10505         define)
10506         case "$ctermid_r_proto" in
10507         ''|0) try='char* ctermid_r(char*);'
10508         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10509         esac
10510         case "$ctermid_r_proto" in
10511         ''|0)   d_ctermid_r=undef
10512                 ctermid_r_proto=0
10513                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10514         * )     case "$ctermid_r_proto" in
10515                 REENTRANT_PROTO*) ;;
10516                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10517                 esac
10518                 echo "Prototype: $try" ;;
10519         esac
10520         ;;
10521         *)      case "$usethreads" in
10522                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10523                 esac
10524                 d_ctermid_r=undef
10525                 ctermid_r_proto=0
10526                 ;;
10527         esac
10528         ;;
10529 *)      ctermid_r_proto=0
10530         ;;
10531 esac
10532
10533 : see if ctime_r exists
10534 set ctime_r d_ctime_r
10535 eval $inlibc
10536 case "$d_ctime_r" in
10537 "$define")
10538         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10539         case "$d_ctime_r_proto:$usethreads" in
10540         ":define")      d_ctime_r_proto=define
10541                 set d_ctime_r_proto ctime_r $hdrs
10542                 eval $hasproto ;;
10543         *)      ;;
10544         esac
10545         case "$d_ctime_r_proto" in
10546         define)
10547         case "$ctime_r_proto" in
10548         ''|0) try='char* ctime_r(const time_t*, char*);'
10549         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10550         esac
10551         case "$ctime_r_proto" in
10552         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10553         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10554         esac
10555         case "$ctime_r_proto" in
10556         ''|0) try='int ctime_r(const time_t*, char*);'
10557         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10558         esac
10559         case "$ctime_r_proto" in
10560         ''|0) try='int ctime_r(const time_t*, char*, int);'
10561         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10562         esac
10563         case "$ctime_r_proto" in
10564         ''|0)   d_ctime_r=undef
10565                 ctime_r_proto=0
10566                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10567         * )     case "$ctime_r_proto" in
10568                 REENTRANT_PROTO*) ;;
10569                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10570                 esac
10571                 echo "Prototype: $try" ;;
10572         esac
10573         ;;
10574         *)      case "$usethreads" in
10575                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10576                 esac
10577                 d_ctime_r=undef
10578                 ctime_r_proto=0
10579                 ;;
10580         esac
10581         ;;
10582 *)      ctime_r_proto=0
10583         ;;
10584 esac
10585
10586 : see if cuserid exists
10587 set cuserid d_cuserid
10588 eval $inlibc
10589
10590 : see if this is a limits.h system
10591 set limits.h i_limits
10592 eval $inhdr
10593
10594 : see if this is a float.h system
10595 set float.h i_float
10596 eval $inhdr
10597
10598 : See if number of significant digits in a double precision number is known
10599 echo " "
10600 $cat >dbl_dig.c <<EOM
10601 #$i_limits I_LIMITS
10602 #$i_float I_FLOAT
10603 #ifdef I_LIMITS
10604 #include <limits.h>
10605 #endif
10606 #ifdef I_FLOAT
10607 #include <float.h>
10608 #endif
10609 #ifdef DBL_DIG
10610 printf("Contains DBL_DIG");
10611 #endif
10612 EOM
10613 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10614 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10615         echo "DBL_DIG found." >&4
10616         val="$define"
10617 else
10618         echo "DBL_DIG NOT found." >&4
10619         val="$undef"
10620 fi
10621 $rm -f dbl_dig.?
10622 set d_dbl_dig
10623 eval $setvar
10624
10625 : see if dbm.h is available
10626 : see if dbmclose exists
10627 set dbmclose d_dbmclose
10628 eval $inlibc
10629
10630 case "$d_dbmclose" in
10631 $define)
10632         set dbm.h i_dbm
10633         eval $inhdr
10634         case "$i_dbm" in
10635         $define)
10636                 val="$undef"
10637                 set i_rpcsvcdbm
10638                 eval $setvar
10639                 ;;
10640         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10641                 eval $inhdr
10642                 ;;
10643         esac
10644         ;;
10645 *)      echo "We won't be including <dbm.h>"
10646         val="$undef"
10647         set i_dbm
10648         eval $setvar
10649         val="$undef"
10650         set i_rpcsvcdbm
10651         eval $setvar
10652         ;;
10653 esac
10654
10655 : see if prototype for dbminit is available
10656 echo " "
10657 set d_dbminitproto dbminit $i_dbm dbm.h
10658 eval $hasproto
10659
10660 : see if difftime exists
10661 set difftime d_difftime
10662 eval $inlibc
10663
10664 : see if this is a dirent system
10665 echo " "
10666 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10667         val="$define"
10668         echo "<dirent.h> found." >&4
10669 else
10670         val="$undef"
10671         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10672                 echo "<sys/dir.h> found." >&4
10673                 echo " "
10674         else
10675                 xinc=`./findhdr sys/ndir.h`
10676         fi
10677         echo "<dirent.h> NOT found." >&4
10678 fi
10679 set i_dirent
10680 eval $setvar
10681
10682 : Look for type of directory structure.
10683 echo " "
10684 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10685
10686 case "$direntrytype" in
10687 ''|' ')
10688         case "$i_dirent" in
10689         $define) guess1='struct dirent' ;;
10690         *) guess1='struct direct'  ;;
10691         esac
10692         ;;
10693 *)      guess1="$direntrytype"
10694         ;;
10695 esac
10696
10697 case "$guess1" in
10698 'struct dirent') guess2='struct direct' ;;
10699 *) guess2='struct dirent' ;;
10700 esac
10701                 
10702 if $contains "$guess1" try.c >/dev/null 2>&1; then
10703         direntrytype="$guess1"
10704         echo "Your directory entries are $direntrytype." >&4
10705 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10706         direntrytype="$guess2"
10707         echo "Your directory entries seem to be $direntrytype." >&4
10708 else
10709         echo "I don't recognize your system's directory entries." >&4
10710         rp="What type is used for directory entries on this system?"
10711         dflt="$guess1"
10712         . ./myread
10713         direntrytype="$ans"
10714 fi
10715 $rm -f try.c
10716
10717
10718 : see if the directory entry stores field length
10719 echo " "
10720 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10721 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10722         echo "Good, your directory entry keeps length information in d_namlen." >&4
10723         val="$define"
10724 else
10725         echo "Your directory entry does not know about the d_namlen field." >&4
10726         val="$undef"
10727 fi
10728 set d_dirnamlen
10729 eval $setvar
10730 $rm -f try.c
10731
10732 : see if this is an sysdir system
10733 set sys/dir.h i_sysdir
10734 eval $inhdr
10735
10736 : see if this is an sysndir system
10737 set sys/ndir.h i_sysndir
10738 eval $inhdr
10739
10740 : Look for dirfd
10741 echo " "
10742 $cat >dirfd.c <<EOM
10743 #include <stdio.h>
10744 #$i_stdlib I_STDLIB
10745 #ifdef I_STDLIB
10746 #include <stdlib.h>
10747 #endif
10748 #$i_dirent I_DIRENT             /**/
10749 #$i_sysdir I_SYS_DIR            /**/
10750 #$i_sysndir I_SYS_NDIR          /**/
10751 #$i_systypes I_SYS_TYPES        /**/
10752 #if defined(I_SYS_TYPES)
10753 #include <sys/types.h>
10754 #endif
10755 #if defined(I_DIRENT)
10756 #include <dirent.h>
10757 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10758 #include <sys/dir.h>
10759 #endif
10760 #else
10761 #ifdef I_SYS_NDIR
10762 #include <sys/ndir.h>
10763 #else
10764 #ifdef I_SYS_DIR
10765 #ifdef hp9000s500
10766 #include <ndir.h>       /* may be wrong in the future */
10767 #else
10768 #include <sys/dir.h>
10769 #endif
10770 #endif
10771 #endif
10772 #endif 
10773 int main() {
10774         DIR *dirp = opendir(".");
10775         if (dirfd(dirp) >= 0)
10776                 exit(0);
10777         else
10778                 exit(1);
10779 }
10780 EOM
10781 set dirfd
10782 if eval $compile; then
10783         val="$define"
10784 fi
10785 case "$val" in
10786 $define)        echo "dirfd() found." >&4       ;;
10787 *)              echo "dirfd() NOT found." >&4   ;;
10788 esac
10789 set d_dirfd
10790 eval $setvar
10791 $rm -f dirfd*
10792
10793 : see if dlerror exists
10794 xxx_runnm="$runnm"
10795 runnm=false
10796 set dlerror d_dlerror
10797 eval $inlibc
10798 runnm="$xxx_runnm"
10799
10800 : see if dlfcn is available
10801 set dlfcn.h i_dlfcn
10802 eval $inhdr
10803
10804 case "$usedl" in
10805 $define|y|true)
10806         $cat << EOM
10807
10808 On a few systems, the dynamically loaded modules that perl generates and uses
10809 will need a different extension than shared libs. The default will probably
10810 be appropriate.
10811
10812 EOM
10813         case "$dlext" in
10814         '')     dflt="$so" ;;
10815         *)      dflt="$dlext" ;;
10816         esac
10817         rp='What is the extension of dynamically loaded modules'
10818         . ./myread
10819         dlext="$ans"
10820         ;;
10821 *)
10822         dlext="none"
10823         ;;
10824 esac
10825
10826 : Check if dlsym need a leading underscore
10827 echo " "
10828 val="$undef"
10829
10830 case "$dlsrc" in
10831 dl_dlopen.xs)
10832         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10833         $cat >dyna.c <<'EOM'
10834 fred () { }
10835 EOM
10836
10837 $cat >fred.c<<EOM
10838
10839 #include <stdio.h>
10840 #$i_stdlib I_STDLIB
10841 #ifdef I_STDLIB
10842 #include <stdlib.h>
10843 #endif
10844 #$i_dlfcn I_DLFCN
10845 #ifdef I_DLFCN
10846 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10847 #else
10848 #include <sys/types.h>
10849 #include <nlist.h>
10850 #include <link.h>
10851 #endif
10852
10853 extern int fred() ;
10854
10855 int main()
10856 {
10857     void * handle ;
10858     void * symbol ;
10859 #ifndef RTLD_LAZY
10860     int mode = 1 ;
10861 #else
10862     int mode = RTLD_LAZY ;
10863 #endif
10864     handle = dlopen("./dyna.$dlext", mode) ;
10865     if (handle == NULL) {
10866         printf ("1\n") ;
10867         fflush (stdout) ;
10868         exit(0);
10869     }
10870     symbol = dlsym(handle, "fred") ;
10871     if (symbol == NULL) {
10872         /* try putting a leading underscore */
10873         symbol = dlsym(handle, "_fred") ;
10874         if (symbol == NULL) {
10875             printf ("2\n") ;
10876             fflush (stdout) ;
10877             exit(0);
10878         }
10879         printf ("3\n") ;
10880     }
10881     else
10882         printf ("4\n") ;
10883     fflush (stdout) ;
10884     exit(0);
10885 }
10886 EOM
10887         : Call the object file tmp-dyna.o in case dlext=o.
10888         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10889                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10890                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10891                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10892                 xxx=`$run ./fred`
10893                 case $xxx in
10894                 1)      echo "Test program failed using dlopen." >&4
10895                         echo "Perhaps you should not use dynamic loading." >&4;;
10896                 2)      echo "Test program failed using dlsym." >&4
10897                         echo "Perhaps you should not use dynamic loading." >&4;;
10898                 3)      echo "dlsym needs a leading underscore" >&4
10899                         val="$define" ;;
10900                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10901                 esac
10902         else
10903                 echo "I can't compile and run the test program." >&4
10904                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10905         fi
10906         ;;
10907 esac
10908                 
10909 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10910
10911 set d_dlsymun
10912 eval $setvar
10913
10914 : see if drand48_r exists
10915 set drand48_r d_drand48_r
10916 eval $inlibc
10917 case "$d_drand48_r" in
10918 "$define")
10919         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10920         case "$d_drand48_r_proto:$usethreads" in
10921         ":define")      d_drand48_r_proto=define
10922                 set d_drand48_r_proto drand48_r $hdrs
10923                 eval $hasproto ;;
10924         *)      ;;
10925         esac
10926         case "$d_drand48_r_proto" in
10927         define)
10928         case "$drand48_r_proto" in
10929         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10930         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10931         esac
10932         case "$drand48_r_proto" in
10933         ''|0)   d_drand48_r=undef
10934                 drand48_r_proto=0
10935                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10936         * )     case "$drand48_r_proto" in
10937                 REENTRANT_PROTO*) ;;
10938                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10939                 esac
10940                 echo "Prototype: $try" ;;
10941         esac
10942         ;;
10943         *)      case "$usethreads" in
10944                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10945                 esac
10946                 d_drand48_r=undef
10947                 drand48_r_proto=0
10948                 ;;
10949         esac
10950         ;;
10951 *)      drand48_r_proto=0
10952         ;;
10953 esac
10954
10955 : see if prototype for drand48 is available
10956 echo " "
10957 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10958 eval $hasproto
10959
10960 : see if dup2 exists
10961 set dup2 d_dup2
10962 eval $inlibc
10963
10964 : see if eaccess exists
10965 set eaccess d_eaccess
10966 eval $inlibc
10967
10968 : see if endgrent exists
10969 set endgrent d_endgrent
10970 eval $inlibc
10971
10972 : see if this is an grp system
10973 set grp.h i_grp
10974 eval $inhdr
10975
10976 case "$i_grp" in
10977 $define)
10978         xxx=`./findhdr grp.h`
10979         $cppstdin $cppflags $cppminus < $xxx >$$.h
10980
10981         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10982                 val="$define"
10983         else
10984                 val="$undef"
10985         fi
10986         set d_grpasswd
10987         eval $setvar
10988
10989         $rm -f $$.h
10990         ;;
10991 *)
10992         val="$undef";
10993         set d_grpasswd; eval $setvar
10994         ;;
10995 esac
10996
10997 : see if endgrent_r exists
10998 set endgrent_r d_endgrent_r
10999 eval $inlibc
11000 case "$d_endgrent_r" in
11001 "$define")
11002         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11003         case "$d_endgrent_r_proto:$usethreads" in
11004         ":define")      d_endgrent_r_proto=define
11005                 set d_endgrent_r_proto endgrent_r $hdrs
11006                 eval $hasproto ;;
11007         *)      ;;
11008         esac
11009         case "$d_endgrent_r_proto" in
11010         define)
11011         case "$endgrent_r_proto" in
11012         ''|0) try='int endgrent_r(FILE**);'
11013         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11014         esac
11015         case "$endgrent_r_proto" in
11016         ''|0) try='void endgrent_r(FILE**);'
11017         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11018         esac
11019         case "$endgrent_r_proto" in
11020         ''|0)   d_endgrent_r=undef
11021                 endgrent_r_proto=0
11022                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11023         * )     case "$endgrent_r_proto" in
11024                 REENTRANT_PROTO*) ;;
11025                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11026                 esac
11027                 echo "Prototype: $try" ;;
11028         esac
11029         ;;
11030         *)      case "$usethreads" in
11031                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11032                 esac
11033                 d_endgrent_r=undef
11034                 endgrent_r_proto=0
11035                 ;;
11036         esac
11037         ;;
11038 *)      endgrent_r_proto=0
11039         ;;
11040 esac
11041
11042 : see if endhostent exists
11043 set endhostent d_endhent
11044 eval $inlibc
11045
11046 : see if this is a netdb.h system
11047 set netdb.h i_netdb
11048 eval $inhdr
11049
11050 : see if endhostent_r exists
11051 set endhostent_r d_endhostent_r
11052 eval $inlibc
11053 case "$d_endhostent_r" in
11054 "$define")
11055         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11056         case "$d_endhostent_r_proto:$usethreads" in
11057         ":define")      d_endhostent_r_proto=define
11058                 set d_endhostent_r_proto endhostent_r $hdrs
11059                 eval $hasproto ;;
11060         *)      ;;
11061         esac
11062         case "$d_endhostent_r_proto" in
11063         define)
11064         case "$endhostent_r_proto" in
11065         ''|0) try='int endhostent_r(struct hostent_data*);'
11066         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11067         esac
11068         case "$endhostent_r_proto" in
11069         ''|0) try='void endhostent_r(struct hostent_data*);'
11070         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11071         esac
11072         case "$endhostent_r_proto" in
11073         ''|0)   d_endhostent_r=undef
11074                 endhostent_r_proto=0
11075                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11076         * )     case "$endhostent_r_proto" in
11077                 REENTRANT_PROTO*) ;;
11078                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11079                 esac
11080                 echo "Prototype: $try" ;;
11081         esac
11082         ;;
11083         *)      case "$usethreads" in
11084                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11085                 esac
11086                 d_endhostent_r=undef
11087                 endhostent_r_proto=0
11088                 ;;
11089         esac
11090         ;;
11091 *)      endhostent_r_proto=0
11092         ;;
11093 esac
11094
11095 : see if endnetent exists
11096 set endnetent d_endnent
11097 eval $inlibc
11098
11099 : see if endnetent_r exists
11100 set endnetent_r d_endnetent_r
11101 eval $inlibc
11102 case "$d_endnetent_r" in
11103 "$define")
11104         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11105         case "$d_endnetent_r_proto:$usethreads" in
11106         ":define")      d_endnetent_r_proto=define
11107                 set d_endnetent_r_proto endnetent_r $hdrs
11108                 eval $hasproto ;;
11109         *)      ;;
11110         esac
11111         case "$d_endnetent_r_proto" in
11112         define)
11113         case "$endnetent_r_proto" in
11114         ''|0) try='int endnetent_r(struct netent_data*);'
11115         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11116         esac
11117         case "$endnetent_r_proto" in
11118         ''|0) try='void endnetent_r(struct netent_data*);'
11119         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11120         esac
11121         case "$endnetent_r_proto" in
11122         ''|0)   d_endnetent_r=undef
11123                 endnetent_r_proto=0
11124                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11125         * )     case "$endnetent_r_proto" in
11126                 REENTRANT_PROTO*) ;;
11127                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11128                 esac
11129                 echo "Prototype: $try" ;;
11130         esac
11131         ;;
11132         *)      case "$usethreads" in
11133                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11134                 esac
11135                 d_endnetent_r=undef
11136                 endnetent_r_proto=0
11137                 ;;
11138         esac
11139         ;;
11140 *)      endnetent_r_proto=0
11141         ;;
11142 esac
11143
11144 : see if endprotoent exists
11145 set endprotoent d_endpent
11146 eval $inlibc
11147
11148 : see if endprotoent_r exists
11149 set endprotoent_r d_endprotoent_r
11150 eval $inlibc
11151 case "$d_endprotoent_r" in
11152 "$define")
11153         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11154         case "$d_endprotoent_r_proto:$usethreads" in
11155         ":define")      d_endprotoent_r_proto=define
11156                 set d_endprotoent_r_proto endprotoent_r $hdrs
11157                 eval $hasproto ;;
11158         *)      ;;
11159         esac
11160         case "$d_endprotoent_r_proto" in
11161         define)
11162         case "$endprotoent_r_proto" in
11163         ''|0) try='int endprotoent_r(struct protoent_data*);'
11164         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11165         esac
11166         case "$endprotoent_r_proto" in
11167         ''|0) try='void endprotoent_r(struct protoent_data*);'
11168         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11169         esac
11170         case "$endprotoent_r_proto" in
11171         ''|0)   d_endprotoent_r=undef
11172                 endprotoent_r_proto=0
11173                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11174         * )     case "$endprotoent_r_proto" in
11175                 REENTRANT_PROTO*) ;;
11176                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11177                 esac
11178                 echo "Prototype: $try" ;;
11179         esac
11180         ;;
11181         *)      case "$usethreads" in
11182                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11183                 esac
11184                 d_endprotoent_r=undef
11185                 endprotoent_r_proto=0
11186                 ;;
11187         esac
11188         ;;
11189 *)      endprotoent_r_proto=0
11190         ;;
11191 esac
11192
11193 : see if endpwent exists
11194 set endpwent d_endpwent
11195 eval $inlibc
11196
11197 : see if this is a pwd.h system
11198 set pwd.h i_pwd
11199 eval $inhdr
11200
11201 case "$i_pwd" in
11202 $define)
11203         xxx=`./findhdr pwd.h`
11204         $cppstdin $cppflags $cppminus < $xxx >$$.h
11205
11206         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11207                 val="$define"
11208         else
11209                 val="$undef"
11210         fi
11211         set d_pwquota
11212         eval $setvar
11213
11214         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11215                 val="$define"
11216         else
11217                 val="$undef"
11218         fi
11219         set d_pwage
11220         eval $setvar
11221
11222         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11223                 val="$define"
11224         else
11225                 val="$undef"
11226         fi
11227         set d_pwchange
11228         eval $setvar
11229
11230         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11231                 val="$define"
11232         else
11233                 val="$undef"
11234         fi
11235         set d_pwclass
11236         eval $setvar
11237
11238         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11239                 val="$define"
11240         else
11241                 val="$undef"
11242         fi
11243         set d_pwexpire
11244         eval $setvar
11245
11246         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11247                 val="$define"
11248         else
11249                 val="$undef"
11250         fi
11251         set d_pwcomment
11252         eval $setvar
11253
11254         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11255                 val="$define"
11256         else
11257                 val="$undef"
11258         fi
11259         set d_pwgecos
11260         eval $setvar
11261
11262         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11263                 val="$define"
11264         else
11265                 val="$undef"
11266         fi
11267         set d_pwpasswd
11268         eval $setvar
11269
11270         $rm -f $$.h
11271         ;;
11272 *)
11273         val="$undef"; 
11274         set d_pwquota; eval $setvar
11275         set d_pwage; eval $setvar
11276         set d_pwchange; eval $setvar
11277         set d_pwclass; eval $setvar
11278         set d_pwexpire; eval $setvar
11279         set d_pwcomment; eval $setvar
11280         set d_pwgecos; eval $setvar
11281         set d_pwpasswd; eval $setvar
11282         ;;
11283 esac
11284
11285 : see if endpwent_r exists
11286 set endpwent_r d_endpwent_r
11287 eval $inlibc
11288 case "$d_endpwent_r" in
11289 "$define")
11290         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11291         case "$d_endpwent_r_proto:$usethreads" in
11292         ":define")      d_endpwent_r_proto=define
11293                 set d_endpwent_r_proto endpwent_r $hdrs
11294                 eval $hasproto ;;
11295         *)      ;;
11296         esac
11297         case "$d_endpwent_r_proto" in
11298         define)
11299         case "$endpwent_r_proto" in
11300         ''|0) try='int endpwent_r(FILE**);'
11301         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11302         esac
11303         case "$endpwent_r_proto" in
11304         ''|0) try='void endpwent_r(FILE**);'
11305         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11306         esac
11307         case "$endpwent_r_proto" in
11308         ''|0)   d_endpwent_r=undef
11309                 endpwent_r_proto=0
11310                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11311         * )     case "$endpwent_r_proto" in
11312                 REENTRANT_PROTO*) ;;
11313                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11314                 esac
11315                 echo "Prototype: $try" ;;
11316         esac
11317         ;;
11318         *)      case "$usethreads" in
11319                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11320                 esac
11321                 d_endpwent_r=undef
11322                 endpwent_r_proto=0
11323                 ;;
11324         esac
11325         ;;
11326 *)      endpwent_r_proto=0
11327         ;;
11328 esac
11329
11330 : see if endservent exists
11331 set endservent d_endsent
11332 eval $inlibc
11333
11334 : see if endservent_r exists
11335 set endservent_r d_endservent_r
11336 eval $inlibc
11337 case "$d_endservent_r" in
11338 "$define")
11339         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11340         case "$d_endservent_r_proto:$usethreads" in
11341         ":define")      d_endservent_r_proto=define
11342                 set d_endservent_r_proto endservent_r $hdrs
11343                 eval $hasproto ;;
11344         *)      ;;
11345         esac
11346         case "$d_endservent_r_proto" in
11347         define)
11348         case "$endservent_r_proto" in
11349         ''|0) try='int endservent_r(struct servent_data*);'
11350         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11351         esac
11352         case "$endservent_r_proto" in
11353         ''|0) try='void endservent_r(struct servent_data*);'
11354         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11355         esac
11356         case "$endservent_r_proto" in
11357         ''|0)   d_endservent_r=undef
11358                 endservent_r_proto=0
11359                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11360         * )     case "$endservent_r_proto" in
11361                 REENTRANT_PROTO*) ;;
11362                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11363                 esac
11364                 echo "Prototype: $try" ;;
11365         esac
11366         ;;
11367         *)      case "$usethreads" in
11368                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11369                 esac
11370                 d_endservent_r=undef
11371                 endservent_r_proto=0
11372                 ;;
11373         esac
11374         ;;
11375 *)      endservent_r_proto=0
11376         ;;
11377 esac
11378
11379 : Locate the flags for 'open()'
11380 echo " "
11381 $cat >try.c <<EOCP
11382 #include <sys/types.h>
11383 #ifdef I_FCNTL
11384 #include <fcntl.h>
11385 #endif
11386 #ifdef I_SYS_FILE
11387 #include <sys/file.h>
11388 #endif
11389 #$i_stdlib I_STDLIB
11390 #ifdef I_STDLIB
11391 #include <stdlib.h>
11392 #endif
11393 int main() {
11394         if(O_RDONLY);
11395 #ifdef O_TRUNC
11396         exit(0);
11397 #else
11398         exit(1);
11399 #endif
11400 }
11401 EOCP
11402 : check sys/file.h first to get FREAD on Sun
11403 if $test `./findhdr sys/file.h` && \
11404                 set try -DI_SYS_FILE && eval $compile; then
11405         h_sysfile=true;
11406         echo "<sys/file.h> defines the O_* constants..." >&4
11407         if $run ./try; then
11408                 echo "and you have the 3 argument form of open()." >&4
11409                 val="$define"
11410         else
11411                 echo "but not the 3 argument form of open().  Oh, well." >&4
11412                 val="$undef"
11413         fi
11414 elif $test `./findhdr fcntl.h` && \
11415                 set try -DI_FCNTL && eval $compile; then
11416         h_fcntl=true;
11417         echo "<fcntl.h> defines the O_* constants..." >&4
11418         if $run ./try; then
11419                 echo "and you have the 3 argument form of open()." >&4
11420                 val="$define"
11421         else
11422                 echo "but not the 3 argument form of open().  Oh, well." >&4
11423                 val="$undef"
11424         fi
11425 else
11426         val="$undef"
11427         echo "I can't find the O_* constant definitions!  You got problems." >&4
11428 fi
11429 set d_open3
11430 eval $setvar
11431 $rm -f try try.*
11432
11433 : see which of string.h or strings.h is needed
11434 echo " "
11435 strings=`./findhdr string.h`
11436 if $test "$strings" && $test -r "$strings"; then
11437         echo "Using <string.h> instead of <strings.h>." >&4
11438         val="$define"
11439 else
11440         val="$undef"
11441         strings=`./findhdr strings.h`
11442         if $test "$strings" && $test -r "$strings"; then
11443                 echo "Using <strings.h> instead of <string.h>." >&4
11444         else
11445                 echo "No string header found -- You'll surely have problems." >&4
11446         fi
11447 fi
11448 set i_string
11449 eval $setvar
11450 case "$i_string" in
11451 "$undef") strings=`./findhdr strings.h`;;
11452 *)        strings=`./findhdr string.h`;;
11453 esac
11454
11455 : see if this is a sys/file.h system
11456 val=''
11457 set sys/file.h val
11458 eval $inhdr
11459
11460 : do we need to include sys/file.h ?
11461 case "$val" in
11462 "$define")
11463         echo " "
11464         if $h_sysfile; then
11465                 val="$define"
11466                 echo "We'll be including <sys/file.h>." >&4
11467         else
11468                 val="$undef"
11469                 echo "We won't be including <sys/file.h>." >&4
11470         fi
11471         ;;
11472 *)
11473         h_sysfile=false
11474         ;;
11475 esac
11476 set i_sysfile
11477 eval $setvar
11478
11479 : see if fcntl.h is there
11480 val=''
11481 set fcntl.h val
11482 eval $inhdr
11483
11484 : see if we can include fcntl.h
11485 case "$val" in
11486 "$define")
11487         echo " "
11488         if $h_fcntl; then
11489                 val="$define"
11490                 echo "We'll be including <fcntl.h>." >&4
11491         else
11492                 val="$undef"
11493                 if $h_sysfile; then
11494         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11495                 else
11496                         echo "We won't be including <fcntl.h>." >&4
11497                 fi
11498         fi
11499         ;;
11500 *)
11501         h_fcntl=false
11502         val="$undef"
11503         ;;
11504 esac
11505 set i_fcntl
11506 eval $setvar
11507
11508 : check for non-blocking I/O stuff
11509 case "$h_sysfile" in
11510 true) echo "#include <sys/file.h>" > head.c;;
11511 *)
11512        case "$h_fcntl" in
11513        true) echo "#include <fcntl.h>" > head.c;;
11514        *) echo "#include <sys/fcntl.h>" > head.c;;
11515        esac
11516        ;;
11517 esac
11518 echo " "
11519 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11520 case "$o_nonblock" in
11521 '')
11522         $cat head.c > try.c
11523         $cat >>try.c <<EOCP
11524 #include <stdio.h>
11525 #$i_stdlib I_STDLIB
11526 #ifdef I_STDLIB
11527 #include <stdlib.h>
11528 #endif
11529 #$i_fcntl I_FCNTL
11530 #ifdef I_FCNTL
11531 #include <fcntl.h>
11532 #endif
11533 int main() {
11534 #ifdef O_NONBLOCK
11535         printf("O_NONBLOCK\n");
11536         exit(0);
11537 #endif
11538 #ifdef O_NDELAY
11539         printf("O_NDELAY\n");
11540         exit(0);
11541 #endif
11542 #ifdef FNDELAY
11543         printf("FNDELAY\n");
11544         exit(0);
11545 #endif
11546         exit(0);
11547 }
11548 EOCP
11549         set try
11550         if eval $compile_ok; then
11551                 o_nonblock=`$run ./try`
11552                 case "$o_nonblock" in
11553                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11554                 *) echo "Seems like we can use $o_nonblock.";;
11555                 esac
11556         else
11557                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11558         fi
11559         ;;
11560 *) echo "Using $hint value $o_nonblock.";;
11561 esac
11562 $rm -f try try.* .out core
11563
11564 echo " "
11565 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11566 case "$eagain" in
11567 '')
11568         $cat head.c > try.c
11569         $cat >>try.c <<EOCP
11570 #include <errno.h>
11571 #include <sys/types.h>
11572 #include <signal.h>
11573 #include <stdio.h> 
11574 #$i_stdlib I_STDLIB
11575 #ifdef I_STDLIB
11576 #include <stdlib.h>
11577 #endif
11578 #$i_fcntl I_FCNTL
11579 #ifdef I_FCNTL
11580 #include <fcntl.h>
11581 #endif
11582 #define MY_O_NONBLOCK $o_nonblock
11583 #ifndef errno  /* XXX need better Configure test */
11584 extern int errno;
11585 #endif
11586 #$i_unistd I_UNISTD
11587 #ifdef I_UNISTD
11588 #include <unistd.h>
11589 #endif
11590 #$i_string I_STRING
11591 #ifdef I_STRING
11592 #include <string.h>
11593 #else
11594 #include <strings.h>
11595 #endif
11596 $signal_t blech(x) int x; { exit(3); }
11597 EOCP
11598         $cat >> try.c <<'EOCP'
11599 int main()
11600 {
11601         int pd[2];
11602         int pu[2];
11603         char buf[1];
11604         char string[100];
11605
11606         pipe(pd);       /* Down: child -> parent */
11607         pipe(pu);       /* Up: parent -> child */
11608         if (0 != fork()) {
11609                 int ret;
11610                 close(pd[1]);   /* Parent reads from pd[0] */
11611                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11612 #ifdef F_SETFL
11613                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11614                         exit(1);
11615 #else
11616                 exit(4);
11617 #endif
11618                 signal(SIGALRM, blech);
11619                 alarm(5);
11620                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11621                         exit(2);
11622                 sprintf(string, "%d\n", ret);
11623                 write(2, string, strlen(string));
11624                 alarm(0);
11625 #ifdef EAGAIN
11626                 if (errno == EAGAIN) {
11627                         printf("EAGAIN\n");
11628                         goto ok;
11629                 }
11630 #endif
11631 #ifdef EWOULDBLOCK
11632                 if (errno == EWOULDBLOCK)
11633                         printf("EWOULDBLOCK\n");
11634 #endif
11635         ok:
11636                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11637                 sleep(2);                               /* Give it time to close our pipe */
11638                 alarm(5);
11639                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11640                 alarm(0);
11641                 sprintf(string, "%d\n", ret);
11642                 write(4, string, strlen(string));
11643                 exit(0);
11644         }
11645
11646         close(pd[0]);                   /* We write to pd[1] */
11647         close(pu[1]);                   /* We read from pu[0] */
11648         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11649         close(pd[1]);                   /* Pipe pd is now fully closed! */
11650         exit(0);                                /* Bye bye, thank you for playing! */
11651 }
11652 EOCP
11653         set try
11654         if eval $compile_ok; then
11655                 echo "$startsh" >mtry
11656                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11657                 chmod +x mtry
11658                 ./mtry >/dev/null 2>&1
11659                 case $? in
11660                 0) eagain=`$cat try.out`;;
11661                 1) echo "Could not perform non-blocking setting!";;
11662                 2) echo "I did a successful read() for something that was not there!";;
11663                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11664                 4) echo "Could not find F_SETFL!";;
11665                 *) echo "Something terribly wrong happened during testing.";;
11666                 esac
11667                 rd_nodata=`$cat try.ret`
11668                 echo "A read() system call with no data present returns $rd_nodata."
11669                 case "$rd_nodata" in
11670                 0|-1) ;;
11671                 *)
11672                         echo "(That's peculiar, fixing that to be -1.)"
11673                         rd_nodata=-1
11674                         ;;
11675                 esac
11676                 case "$eagain" in
11677                 '')
11678                         echo "Forcing errno EAGAIN on read() with no data available."
11679                         eagain=EAGAIN
11680                         ;;
11681                 *)
11682                         echo "Your read() sets errno to $eagain when no data is available."
11683                         ;;
11684                 esac
11685                 status=`$cat try.err`
11686                 case "$status" in
11687                 0) echo "And it correctly returns 0 to signal EOF.";;
11688                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11689                 *) echo "However, your read() returns '$status' on EOF??";;
11690                 esac
11691                 val="$define"
11692                 if test "$status" = "$rd_nodata"; then
11693                         echo "WARNING: you can't distinguish between EOF and no data!"
11694                         val="$undef"
11695                 fi
11696         else
11697                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11698                 eagain=EAGAIN
11699         fi
11700         set d_eofnblk
11701         eval $setvar
11702         ;;
11703 *)
11704         echo "Using $hint value $eagain."
11705         echo "Your read() returns $rd_nodata when no data is present."
11706         case "$d_eofnblk" in
11707         "$define") echo "And you can see EOF because read() returns 0.";;
11708         "$undef") echo "But you can't see EOF status from read() returned value.";;
11709         *)
11710                 echo "(Assuming you can't see EOF status from read anyway.)"
11711                 d_eofnblk=$undef
11712                 ;;
11713         esac
11714         ;;
11715 esac
11716 $rm -f try try.* .out core head.c mtry
11717
11718 : see if _ptr and _cnt from stdio act std
11719 echo " "
11720
11721 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11722         echo "(Looks like you have stdio.h from BSD.)"
11723         case "$stdio_ptr" in
11724         '') stdio_ptr='((fp)->_p)'
11725                 ptr_lval=$define
11726                 ;;
11727         *)      ptr_lval=$d_stdio_ptr_lval;;
11728         esac
11729         case "$stdio_cnt" in
11730         '') stdio_cnt='((fp)->_r)'
11731                 cnt_lval=$define
11732                 ;;
11733         *)      cnt_lval=$d_stdio_cnt_lval;;
11734         esac
11735         case "$stdio_base" in
11736         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11737         esac
11738         case "$stdio_bufsiz" in
11739         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11740         esac
11741 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11742         echo "(Looks like you have stdio.h from Linux.)"
11743         case "$stdio_ptr" in
11744         '') stdio_ptr='((fp)->_IO_read_ptr)'
11745                 ptr_lval=$define
11746                 ;;
11747         *)      ptr_lval=$d_stdio_ptr_lval;;
11748         esac
11749         case "$stdio_cnt" in
11750         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11751                 cnt_lval=$undef
11752                 ;;
11753         *)      cnt_lval=$d_stdio_cnt_lval;;
11754         esac
11755         case "$stdio_base" in
11756         '') stdio_base='((fp)->_IO_read_base)';;
11757         esac
11758         case "$stdio_bufsiz" in
11759         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11760         esac
11761 else
11762         case "$stdio_ptr" in
11763         '') stdio_ptr='((fp)->_ptr)'
11764                 ptr_lval=$define
11765                 ;;
11766         *)      ptr_lval=$d_stdio_ptr_lval;;
11767         esac
11768         case "$stdio_cnt" in
11769         '') stdio_cnt='((fp)->_cnt)'
11770                 cnt_lval=$define
11771                 ;;
11772         *)      cnt_lval=$d_stdio_cnt_lval;;
11773         esac
11774         case "$stdio_base" in
11775         '') stdio_base='((fp)->_base)';;
11776         esac
11777         case "$stdio_bufsiz" in
11778         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11779         esac
11780 fi
11781
11782 : test whether _ptr and _cnt really work
11783 echo "Checking how std your stdio is..." >&4
11784 $cat >try.c <<EOP
11785 #include <stdio.h>
11786 #$i_stdlib I_STDLIB
11787 #ifdef I_STDLIB
11788 #include <stdlib.h>
11789 #endif
11790 #define FILE_ptr(fp)    $stdio_ptr
11791 #define FILE_cnt(fp)    $stdio_cnt
11792 int main() {
11793         FILE *fp = fopen("try.c", "r");
11794         char c = getc(fp);
11795         if (
11796                 18 <= FILE_cnt(fp) &&
11797                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11798         )
11799                 exit(0);
11800         exit(1);
11801 }
11802 EOP
11803 val="$undef"
11804 set try
11805 if eval $compile && $to try.c; then
11806         if $run ./try; then
11807                 echo "Your stdio acts pretty std."
11808                 val="$define"
11809         else
11810                 echo "Your stdio isn't very std."
11811         fi
11812 else
11813         echo "Your stdio doesn't appear very std."
11814 fi
11815 $rm -f try.c try
11816
11817 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11818 # direct buffer manipulation no longer works.  The Configure tests
11819 # should be changed to correctly detect this, but until then,
11820 # the following check should at least let perl compile and run.
11821 # (This quick fix should be updated before 5.8.1.)
11822 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11823 # A. Dougherty, June 3, 2002.
11824 case "$d_gnulibc" in
11825 $define)
11826         case "$gnulibc_version" in
11827         2.[01]*)  ;;
11828         2.2) ;;
11829         2.2.[0-9]) ;;
11830         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11831                 val="$undef"
11832                 ;;
11833         esac
11834         ;;
11835 esac
11836 set d_stdstdio
11837 eval $setvar
11838
11839 : Can _ptr be used as an lvalue?
11840 case "$d_stdstdio$ptr_lval" in
11841 $define$define) val=$define ;;
11842 *) val=$undef ;;
11843 esac
11844 set d_stdio_ptr_lval
11845 eval $setvar
11846
11847 : Can _cnt be used as an lvalue?
11848 case "$d_stdstdio$cnt_lval" in
11849 $define$define) val=$define ;;
11850 *) val=$undef ;;
11851 esac
11852 set d_stdio_cnt_lval
11853 eval $setvar
11854
11855
11856 : test whether setting _ptr sets _cnt as a side effect
11857 d_stdio_ptr_lval_sets_cnt="$undef"
11858 d_stdio_ptr_lval_nochange_cnt="$undef"
11859 case "$d_stdio_ptr_lval$d_stdstdio" in
11860 $define$define)
11861         echo "Checking to see what happens if we set the stdio ptr..." >&4
11862 $cat >try.c <<EOP
11863 #include <stdio.h>
11864 /* Can we scream? */
11865 /* Eat dust sed :-) */
11866 /* In the buffer space, no one can hear you scream. */
11867 #$i_stdlib I_STDLIB
11868 #ifdef I_STDLIB
11869 #include <stdlib.h>
11870 #endif
11871 #define FILE_ptr(fp)    $stdio_ptr
11872 #define FILE_cnt(fp)    $stdio_cnt
11873 #include <sys/types.h>
11874 int main() {
11875         FILE *fp = fopen("try.c", "r");
11876         int c;
11877         char *ptr;
11878         size_t cnt;
11879         if (!fp) {
11880             puts("Fail even to read");
11881             exit(1);
11882         }
11883         c = getc(fp); /* Read away the first # */
11884         if (c == EOF) {
11885             puts("Fail even to read");
11886             exit(1);
11887         }
11888         if (!(
11889                 18 <= FILE_cnt(fp) &&
11890                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11891         )) {
11892                 puts("Fail even to read");
11893                 exit (1);
11894         }
11895         ptr = (char*) FILE_ptr(fp);
11896         cnt = (size_t)FILE_cnt(fp);
11897
11898         FILE_ptr(fp) += 42;
11899
11900         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11901                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11902                 exit (1);
11903         }
11904         if (FILE_cnt(fp) <= 20) {
11905                 printf ("Fail (<20 chars to test)");
11906                 exit (1);
11907         }
11908         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11909                 puts("Fail compare");
11910                 exit (1);
11911         }
11912         if (cnt == FILE_cnt(fp)) {
11913                 puts("Pass_unchanged");
11914                 exit (0);
11915         }       
11916         if (FILE_cnt(fp) == (cnt - 42)) {
11917                 puts("Pass_changed");
11918                 exit (0);
11919         }
11920         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11921         return 1;
11922
11923 }
11924 EOP
11925         set try
11926         if eval $compile && $to try.c; then
11927                 case `$run ./try` in
11928                 Pass_changed)
11929                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11930                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11931                 Pass_unchanged)
11932                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11933                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11934                 Fail*)
11935                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11936                 *)
11937                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11938         esac
11939         else
11940                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11941         fi
11942         $rm -f try.c try
11943         ;;
11944 esac
11945
11946 : see if _base is also standard
11947 val="$undef"
11948 case "$d_stdstdio" in
11949 $define)
11950         $cat >try.c <<EOP
11951 #include <stdio.h>
11952 #$i_stdlib I_STDLIB
11953 #ifdef I_STDLIB
11954 #include <stdlib.h>
11955 #endif
11956 #define FILE_base(fp)   $stdio_base
11957 #define FILE_bufsiz(fp) $stdio_bufsiz
11958 int main() {
11959         FILE *fp = fopen("try.c", "r");
11960         char c = getc(fp);
11961         if (
11962                 19 <= FILE_bufsiz(fp) &&
11963                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11964         )
11965                 exit(0);
11966         exit(1);
11967 }
11968 EOP
11969         set try
11970         if eval $compile && $to try.c; then
11971                 if $run ./try; then
11972                         echo "And its _base field acts std."
11973                         val="$define"
11974                 else
11975                         echo "But its _base field isn't std."
11976                 fi
11977         else
11978                 echo "However, it seems to be lacking the _base field."
11979         fi
11980         $rm -f try.c try
11981         ;;
11982 esac
11983 set d_stdiobase
11984 eval $setvar
11985
11986 : see if fast_stdio exists
11987 val="$undef"
11988 case "$d_stdstdio:$d_stdio_ptr_lval" in
11989 "$define:$define")
11990         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11991         *$define*)
11992                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11993                 val="$define"
11994                 ;;
11995         esac
11996         ;;
11997 esac
11998 set d_faststdio
11999 eval $setvar
12000
12001
12002
12003 : see if fchdir exists
12004 set fchdir d_fchdir
12005 eval $inlibc
12006
12007 : see if fchmod exists
12008 set fchmod d_fchmod
12009 eval $inlibc
12010
12011 : see if fchown exists
12012 set fchown d_fchown
12013 eval $inlibc
12014
12015 : see if this is an fcntl system
12016 set fcntl d_fcntl
12017 eval $inlibc
12018
12019 echo " "
12020 : See if fcntl-based locking works.
12021 $cat >try.c <<EOCP
12022 #$i_stdlib I_STDLIB
12023 #ifdef I_STDLIB
12024 #include <stdlib.h>
12025 #endif
12026 #include <unistd.h>
12027 #include <fcntl.h>
12028 #include <signal.h>
12029 $signal_t blech(x) int x; { exit(3); }
12030 int main() {
12031 #if defined(F_SETLK) && defined(F_SETLKW)
12032      struct flock flock;
12033      int retval, fd;
12034      fd = open("try.c", O_RDONLY);
12035      flock.l_type = F_RDLCK;
12036      flock.l_whence = SEEK_SET;
12037      flock.l_start = flock.l_len = 0;
12038      signal(SIGALRM, blech);
12039      alarm(10);
12040      retval = fcntl(fd, F_SETLK, &flock);
12041      close(fd);
12042      (retval < 0 ? exit(2) : exit(0));
12043 #else
12044      exit(2);
12045 #endif
12046 }
12047 EOCP
12048 echo "Checking if fcntl-based file locking works... "
12049 case "$d_fcntl" in
12050 "$define")
12051         set try
12052         if eval $compile_ok; then
12053                 if $run ./try; then
12054                         echo "Yes, it seems to work."
12055                         val="$define"
12056                 else
12057                         echo "Nope, it didn't work."
12058                         val="$undef"
12059                         case "$?" in
12060                         3) $cat >&4 <<EOM
12061 ***
12062 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12063 *** This is (almost) impossible.
12064 *** If your NFS lock daemons are not feeling well, something like
12065 *** this may happen, please investigate.  Cannot continue, aborting.
12066 ***
12067 EOM
12068                                 exit 1
12069                                 ;;
12070                         esac
12071                 fi
12072         else
12073                 echo "I'm unable to compile the test program, so I'll assume not."
12074                 val="$undef"
12075         fi
12076         ;;
12077 *) val="$undef";
12078         echo "Nope, since you don't even have fcntl()."
12079         ;;
12080 esac
12081 set d_fcntl_can_lock
12082 eval $setvar
12083 $rm -f try*
12084
12085
12086 : check for fd_set items
12087 $cat <<EOM
12088
12089 Checking to see how well your C compiler handles fd_set and friends ...
12090 EOM
12091 $cat >try.c <<EOCP
12092 #$i_stdlib I_STDLIB
12093 #ifdef I_STDLIB
12094 #include <stdlib.h>
12095 #endif
12096 #$i_systime I_SYS_TIME
12097 #$i_sysselct I_SYS_SELECT
12098 #$d_socket HAS_SOCKET
12099 #include <sys/types.h>
12100 #ifdef HAS_SOCKET
12101 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12102 #endif
12103 #ifdef I_SYS_TIME
12104 #include <sys/time.h>
12105 #endif
12106 #ifdef I_SYS_SELECT
12107 #include <sys/select.h>
12108 #endif
12109 int main() {
12110         fd_set fds;
12111
12112 #ifdef TRYBITS
12113         if(fds.fds_bits);
12114 #endif
12115
12116 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12117         exit(0);
12118 #else
12119         exit(1);
12120 #endif
12121 }
12122 EOCP
12123 set try -DTRYBITS
12124 if eval $compile; then
12125         d_fds_bits="$define"
12126         d_fd_set="$define"
12127         echo "Well, your system knows about the normal fd_set typedef..." >&4
12128         if $run ./try; then
12129                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12130                 d_fd_macros="$define"
12131         else
12132                 $cat >&4 <<'EOM'
12133 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12134 EOM
12135                 d_fd_macros="$undef"
12136         fi
12137 else
12138         $cat <<'EOM'
12139 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12140 EOM
12141         set try
12142         if eval $compile; then
12143                 d_fds_bits="$undef"
12144                 d_fd_set="$define"
12145                 echo "Well, your system has some sort of fd_set available..." >&4
12146                 if $run ./try; then
12147                         echo "and you have the normal fd_set macros." >&4
12148                         d_fd_macros="$define"
12149                 else
12150                         $cat <<'EOM'
12151 but not the normal fd_set macros!  Gross!  More work for me...
12152 EOM
12153                         d_fd_macros="$undef"
12154                 fi
12155         else
12156         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12157                 d_fd_set="$undef"
12158                 d_fds_bits="$undef"
12159                 d_fd_macros="$undef"
12160         fi
12161 fi
12162 $rm -f try try.*
12163
12164 : see if fgetpos exists
12165 set fgetpos d_fgetpos
12166 eval $inlibc
12167
12168 : see if finite exists
12169 set finite d_finite
12170 eval $inlibc
12171
12172 : see if finitel exists
12173 set finitel d_finitel
12174 eval $inlibc
12175
12176 : see if flock exists
12177 set flock d_flock
12178 eval $inlibc
12179
12180 : see if prototype for flock is available
12181 echo " "
12182 set d_flockproto flock $i_sysfile sys/file.h
12183 eval $hasproto
12184
12185 : see if fork exists
12186 set fork d_fork
12187 eval $inlibc
12188
12189 : see if fp_class exists
12190 set fp_class d_fp_class
12191 eval $inlibc
12192
12193 : see if pathconf exists
12194 set pathconf d_pathconf
12195 eval $inlibc
12196
12197 : see if fpathconf exists
12198 set fpathconf d_fpathconf
12199 eval $inlibc
12200
12201 : see if fpclass exists
12202 set fpclass d_fpclass
12203 eval $inlibc
12204
12205 : see if fpclassify exists
12206 set fpclassify d_fpclassify
12207 eval $inlibc
12208
12209 : see if fpclassl exists
12210 set fpclassl d_fpclassl
12211 eval $inlibc
12212
12213
12214 : check for fpos64_t
12215 echo " "
12216 echo "Checking to see if you have fpos64_t..." >&4
12217 $cat >try.c <<EOCP
12218 #include <stdio.h>
12219 int main() { fpos64_t x = 7; }
12220 EOCP
12221 set try
12222 if eval $compile; then
12223         val="$define"
12224         echo "You have fpos64_t."
12225 else
12226         val="$undef"
12227         echo "You do not have fpos64_t."
12228         case "$fpossize" in
12229         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12230         esac
12231 fi
12232 $rm -f try.* try
12233 set d_fpos64_t
12234 eval $setvar
12235
12236 : see if frexpl exists
12237 set frexpl d_frexpl
12238 eval $inlibc
12239
12240 : see if this is a sys/param system
12241 set sys/param.h i_sysparam
12242 eval $inhdr
12243
12244 : see if this is a sys/mount.h system
12245 set sys/mount.h i_sysmount
12246 eval $inhdr
12247
12248
12249 echo " "
12250 echo "Checking to see if your system supports struct fs_data..." >&4
12251 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12252 eval $hasstruct
12253 case "$d_fs_data_s" in
12254 "$define")      echo "Yes, it does."   ;;
12255 *)              echo "No, it doesn't." ;;
12256 esac
12257
12258 : see if fseeko exists
12259 set fseeko d_fseeko
12260 eval $inlibc
12261 case "$longsize" in
12262 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12263 esac
12264
12265 : see if fsetpos exists
12266 set fsetpos d_fsetpos
12267 eval $inlibc
12268
12269
12270 : see if fstatfs exists
12271 set fstatfs d_fstatfs
12272 eval $inlibc
12273
12274
12275 : see if statvfs exists
12276 set statvfs d_statvfs
12277 eval $inlibc
12278
12279 : see if fstatvfs exists
12280 set fstatvfs d_fstatvfs
12281 eval $inlibc
12282
12283
12284 : see if fsync exists
12285 set fsync d_fsync
12286 eval $inlibc
12287
12288 : see if ftello exists
12289 set ftello d_ftello
12290 eval $inlibc
12291 case "$longsize" in
12292 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12293 esac
12294
12295 : see if getcwd exists
12296 set getcwd d_getcwd
12297 eval $inlibc
12298
12299 : see if getespwnam exists
12300 set getespwnam d_getespwnam
12301 eval $inlibc
12302
12303
12304 : see if getfsstat exists
12305 set getfsstat d_getfsstat
12306 eval $inlibc
12307
12308 : see if getgrent exists
12309 set getgrent d_getgrent
12310 eval $inlibc
12311
12312 : see if getgrent_r exists
12313 set getgrent_r d_getgrent_r
12314 eval $inlibc
12315 case "$d_getgrent_r" in
12316 "$define")
12317         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12318         case "$d_getgrent_r_proto:$usethreads" in
12319         ":define")      d_getgrent_r_proto=define
12320                 set d_getgrent_r_proto getgrent_r $hdrs
12321                 eval $hasproto ;;
12322         *)      ;;
12323         esac
12324         case "$d_getgrent_r_proto" in
12325         define)
12326         case "$getgrent_r_proto" in
12327         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12328         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12329         esac
12330         case "$getgrent_r_proto" in
12331         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12332         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12333         esac
12334         case "$getgrent_r_proto" in
12335         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12336         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12337         esac
12338         case "$getgrent_r_proto" in
12339         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12340         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12341         esac
12342         case "$getgrent_r_proto" in
12343         ''|0) try='int getgrent_r(struct group*, char*, int);'
12344         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12345         esac
12346         case "$getgrent_r_proto" in
12347         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12348         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12349         esac
12350         case "$getgrent_r_proto" in
12351         ''|0)   d_getgrent_r=undef
12352                 getgrent_r_proto=0
12353                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12354         * )     case "$getgrent_r_proto" in
12355                 REENTRANT_PROTO*) ;;
12356                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12357                 esac
12358                 echo "Prototype: $try" ;;
12359         esac
12360         ;;
12361         *)      case "$usethreads" in
12362                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12363                 esac
12364                 d_getgrent_r=undef
12365                 getgrent_r_proto=0
12366                 ;;
12367         esac
12368         ;;
12369 *)      getgrent_r_proto=0
12370         ;;
12371 esac
12372
12373 : see if getgrgid_r exists
12374 set getgrgid_r d_getgrgid_r
12375 eval $inlibc
12376 case "$d_getgrgid_r" in
12377 "$define")
12378         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12379         case "$d_getgrgid_r_proto:$usethreads" in
12380         ":define")      d_getgrgid_r_proto=define
12381                 set d_getgrgid_r_proto getgrgid_r $hdrs
12382                 eval $hasproto ;;
12383         *)      ;;
12384         esac
12385         case "$d_getgrgid_r_proto" in
12386         define)
12387         case "$getgrgid_r_proto" in
12388         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12389         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12390         esac
12391         case "$getgrgid_r_proto" in
12392         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12393         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12394         esac
12395         case "$getgrgid_r_proto" in
12396         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12397         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12398         esac
12399         case "$getgrgid_r_proto" in
12400         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12401         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12402         esac
12403         case "$getgrgid_r_proto" in
12404         ''|0)   d_getgrgid_r=undef
12405                 getgrgid_r_proto=0
12406                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12407         * )     case "$getgrgid_r_proto" in
12408                 REENTRANT_PROTO*) ;;
12409                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12410                 esac
12411                 echo "Prototype: $try" ;;
12412         esac
12413         ;;
12414         *)      case "$usethreads" in
12415                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12416                 esac
12417                 d_getgrgid_r=undef
12418                 getgrgid_r_proto=0
12419                 ;;
12420         esac
12421         ;;
12422 *)      getgrgid_r_proto=0
12423         ;;
12424 esac
12425
12426 : see if getgrnam_r exists
12427 set getgrnam_r d_getgrnam_r
12428 eval $inlibc
12429 case "$d_getgrnam_r" in
12430 "$define")
12431         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12432         case "$d_getgrnam_r_proto:$usethreads" in
12433         ":define")      d_getgrnam_r_proto=define
12434                 set d_getgrnam_r_proto getgrnam_r $hdrs
12435                 eval $hasproto ;;
12436         *)      ;;
12437         esac
12438         case "$d_getgrnam_r_proto" in
12439         define)
12440         case "$getgrnam_r_proto" in
12441         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12442         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12443         esac
12444         case "$getgrnam_r_proto" in
12445         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12446         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12447         esac
12448         case "$getgrnam_r_proto" in
12449         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12450         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12451         esac
12452         case "$getgrnam_r_proto" in
12453         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12454         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12455         esac
12456         case "$getgrnam_r_proto" in
12457         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12458         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12459         esac
12460         case "$getgrnam_r_proto" in
12461         ''|0)   d_getgrnam_r=undef
12462                 getgrnam_r_proto=0
12463                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12464         * )     case "$getgrnam_r_proto" in
12465                 REENTRANT_PROTO*) ;;
12466                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12467                 esac
12468                 echo "Prototype: $try" ;;
12469         esac
12470         ;;
12471         *)      case "$usethreads" in
12472                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12473                 esac
12474                 d_getgrnam_r=undef
12475                 getgrnam_r_proto=0
12476                 ;;
12477         esac
12478         ;;
12479 *)      getgrnam_r_proto=0
12480         ;;
12481 esac
12482
12483 : see if gethostbyaddr exists
12484 set gethostbyaddr d_gethbyaddr
12485 eval $inlibc
12486
12487 : see if gethostbyname exists
12488 set gethostbyname d_gethbyname
12489 eval $inlibc
12490
12491 : see if gethostent exists
12492 set gethostent d_gethent
12493 eval $inlibc
12494
12495 : see how we will look up host name
12496 echo " "
12497 call=''
12498 if set gethostname val -f d_gethname; eval $csym; $val; then
12499         echo 'gethostname() found.' >&4
12500         d_gethname="$define"
12501         call=gethostname
12502 fi
12503 if set uname val -f d_uname; eval $csym; $val; then
12504         if ./xenix; then
12505                 $cat <<'EOM'
12506 uname() was found, but you're running xenix, and older versions of xenix
12507 have a broken uname(). If you don't really know whether your xenix is old
12508 enough to have a broken system call, use the default answer.
12509
12510 EOM
12511                 dflt=y
12512                 case "$d_uname" in
12513                 "$define") dflt=n;;
12514                 esac
12515                 rp='Is your uname() broken?'
12516                 . ./myread
12517                 case "$ans" in
12518                 n*) d_uname="$define"; call=uname;;
12519                 esac
12520         else
12521                 echo 'uname() found.' >&4
12522                 d_uname="$define"
12523                 case "$call" in
12524                 '') call=uname ;;
12525                 esac
12526         fi
12527 fi
12528 case "$d_gethname" in
12529 '') d_gethname="$undef";;
12530 esac
12531 case "$d_uname" in
12532 '') d_uname="$undef";;
12533 esac
12534 case "$d_uname$d_gethname" in
12535 *define*)
12536         dflt=n
12537         cat <<EOM
12538  
12539 Every now and then someone has a $call() that lies about the hostname
12540 but can't be fixed for political or economic reasons.  If you wish, I can
12541 pretend $call() isn't there and maybe compute hostname at run-time
12542 thanks to the '$phostname' command.
12543
12544 EOM
12545         rp="Shall I ignore $call() from now on?"
12546         . ./myread
12547         case "$ans" in
12548         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12549         esac;;
12550 esac
12551 case "$phostname" in
12552 '') aphostname='';;
12553 *) case "$aphostname" in
12554         /*) ;;
12555         *) set X $phostname
12556                 shift
12557                 file=$1
12558                 shift
12559                 file=`./loc $file $file $pth`
12560                 aphostname=`echo $file $*`
12561                 ;;
12562         esac
12563         ;;
12564 esac
12565 case "$d_uname$d_gethname" in
12566 *define*) ;;
12567 *)
12568         case "$phostname" in
12569         '')
12570                 echo "There will be no way for $package to get your hostname." >&4;;
12571         *)
12572         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12573                 ;;
12574         esac;;
12575 esac
12576 case "$d_phostname" in
12577 '') d_phostname="$undef";;
12578 esac
12579
12580 : see if gethostbyaddr_r exists
12581 set gethostbyaddr_r d_gethostbyaddr_r
12582 eval $inlibc
12583 case "$d_gethostbyaddr_r" in
12584 "$define")
12585         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12586         case "$d_gethostbyaddr_r_proto:$usethreads" in
12587         ":define")      d_gethostbyaddr_r_proto=define
12588                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12589                 eval $hasproto ;;
12590         *)      ;;
12591         esac
12592         case "$d_gethostbyaddr_r_proto" in
12593         define)
12594         case "$gethostbyaddr_r_proto" in
12595         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12596         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12597         esac
12598         case "$gethostbyaddr_r_proto" in
12599         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12600         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12601         esac
12602         case "$gethostbyaddr_r_proto" in
12603         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12604         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12605         esac
12606         case "$gethostbyaddr_r_proto" in
12607         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12608         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12609         esac
12610         case "$gethostbyaddr_r_proto" in
12611         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12612         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12613         esac
12614         case "$gethostbyaddr_r_proto" in
12615         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12616         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12617         esac
12618         case "$gethostbyaddr_r_proto" in
12619         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12620         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12621         esac
12622         case "$gethostbyaddr_r_proto" in
12623         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12624         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12625         esac
12626         case "$gethostbyaddr_r_proto" in
12627         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12628         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12629         esac
12630         case "$gethostbyaddr_r_proto" in
12631         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12632         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12633         esac
12634         case "$gethostbyaddr_r_proto" in
12635         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12636         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12637         esac
12638         case "$gethostbyaddr_r_proto" in
12639         ''|0)   d_gethostbyaddr_r=undef
12640                 gethostbyaddr_r_proto=0
12641                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12642         * )     case "$gethostbyaddr_r_proto" in
12643                 REENTRANT_PROTO*) ;;
12644                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12645                 esac
12646                 echo "Prototype: $try" ;;
12647         esac
12648         ;;
12649         *)      case "$usethreads" in
12650                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12651                 esac
12652                 d_gethostbyaddr_r=undef
12653                 gethostbyaddr_r_proto=0
12654                 ;;
12655         esac
12656         ;;
12657 *)      gethostbyaddr_r_proto=0
12658         ;;
12659 esac
12660
12661 : see if gethostbyname_r exists
12662 set gethostbyname_r d_gethostbyname_r
12663 eval $inlibc
12664 case "$d_gethostbyname_r" in
12665 "$define")
12666         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12667         case "$d_gethostbyname_r_proto:$usethreads" in
12668         ":define")      d_gethostbyname_r_proto=define
12669                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12670                 eval $hasproto ;;
12671         *)      ;;
12672         esac
12673         case "$d_gethostbyname_r_proto" in
12674         define)
12675         case "$gethostbyname_r_proto" in
12676         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12677         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12678         esac
12679         case "$gethostbyname_r_proto" in
12680         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12681         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12682         esac
12683         case "$gethostbyname_r_proto" in
12684         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12685         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12686         esac
12687         case "$gethostbyname_r_proto" in
12688         ''|0)   d_gethostbyname_r=undef
12689                 gethostbyname_r_proto=0
12690                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12691         * )     case "$gethostbyname_r_proto" in
12692                 REENTRANT_PROTO*) ;;
12693                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12694                 esac
12695                 echo "Prototype: $try" ;;
12696         esac
12697         ;;
12698         *)      case "$usethreads" in
12699                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12700                 esac
12701                 d_gethostbyname_r=undef
12702                 gethostbyname_r_proto=0
12703                 ;;
12704         esac
12705         ;;
12706 *)      gethostbyname_r_proto=0
12707         ;;
12708 esac
12709
12710 : see if gethostent_r exists
12711 set gethostent_r d_gethostent_r
12712 eval $inlibc
12713 case "$d_gethostent_r" in
12714 "$define")
12715         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12716         case "$d_gethostent_r_proto:$usethreads" in
12717         ":define")      d_gethostent_r_proto=define
12718                 set d_gethostent_r_proto gethostent_r $hdrs
12719                 eval $hasproto ;;
12720         *)      ;;
12721         esac
12722         case "$d_gethostent_r_proto" in
12723         define)
12724         case "$gethostent_r_proto" in
12725         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12726         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12727         esac
12728         case "$gethostent_r_proto" in
12729         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12730         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12731         esac
12732         case "$gethostent_r_proto" in
12733         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12734         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12735         esac
12736         case "$gethostent_r_proto" in
12737         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12738         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12739         esac
12740         case "$gethostent_r_proto" in
12741         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12742         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12743         esac
12744         case "$gethostent_r_proto" in
12745         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12746         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12747         esac
12748         case "$gethostent_r_proto" in
12749         ''|0)   d_gethostent_r=undef
12750                 gethostent_r_proto=0
12751                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12752         * )     case "$gethostent_r_proto" in
12753                 REENTRANT_PROTO*) ;;
12754                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12755                 esac
12756                 echo "Prototype: $try" ;;
12757         esac
12758         ;;
12759         *)      case "$usethreads" in
12760                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12761                 esac
12762                 d_gethostent_r=undef
12763                 gethostent_r_proto=0
12764                 ;;
12765         esac
12766         ;;
12767 *)      gethostent_r_proto=0
12768         ;;
12769 esac
12770
12771 : see if prototypes for various gethostxxx netdb.h functions are available
12772 echo " "
12773 set d_gethostprotos gethostent $i_netdb netdb.h
12774 eval $hasproto
12775
12776 : see if getitimer exists
12777 set getitimer d_getitimer
12778 eval $inlibc
12779
12780 : see if getlogin exists
12781 set getlogin d_getlogin
12782 eval $inlibc
12783
12784 : see if getlogin_r exists
12785 set getlogin_r d_getlogin_r
12786 eval $inlibc
12787 case "$d_getlogin_r" in
12788 "$define")
12789         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12790         case "$d_getlogin_r_proto:$usethreads" in
12791         ":define")      d_getlogin_r_proto=define
12792                 set d_getlogin_r_proto getlogin_r $hdrs
12793                 eval $hasproto ;;
12794         *)      ;;
12795         esac
12796         case "$d_getlogin_r_proto" in
12797         define)
12798         case "$getlogin_r_proto" in
12799         ''|0) try='int getlogin_r(char*, size_t);'
12800         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12801         esac
12802         case "$getlogin_r_proto" in
12803         ''|0) try='int getlogin_r(char*, int);'
12804         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12805         esac
12806         case "$getlogin_r_proto" in
12807         ''|0) try='char* getlogin_r(char*, size_t);'
12808         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12809         esac
12810         case "$getlogin_r_proto" in
12811         ''|0) try='char* getlogin_r(char*, int);'
12812         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12813         esac
12814         case "$getlogin_r_proto" in
12815         ''|0)   d_getlogin_r=undef
12816                 getlogin_r_proto=0
12817                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12818         * )     case "$getlogin_r_proto" in
12819                 REENTRANT_PROTO*) ;;
12820                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12821                 esac
12822                 echo "Prototype: $try" ;;
12823         esac
12824         ;;
12825         *)      case "$usethreads" in
12826                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12827                 esac
12828                 d_getlogin_r=undef
12829                 getlogin_r_proto=0
12830                 ;;
12831         esac
12832         ;;
12833 *)      getlogin_r_proto=0
12834         ;;
12835 esac
12836
12837 : see if getmnt exists
12838 set getmnt d_getmnt
12839 eval $inlibc
12840
12841 : see if getmntent exists
12842 set getmntent d_getmntent
12843 eval $inlibc
12844
12845 : see if getnetbyaddr exists
12846 set getnetbyaddr d_getnbyaddr
12847 eval $inlibc
12848
12849 : see if getnetbyname exists
12850 set getnetbyname d_getnbyname
12851 eval $inlibc
12852
12853 : see if getnetent exists
12854 set getnetent d_getnent
12855 eval $inlibc
12856
12857 : see if getnetbyaddr_r exists
12858 set getnetbyaddr_r d_getnetbyaddr_r
12859 eval $inlibc
12860 case "$d_getnetbyaddr_r" in
12861 "$define")
12862         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12863         case "$d_getnetbyaddr_r_proto:$usethreads" in
12864         ":define")      d_getnetbyaddr_r_proto=define
12865                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12866                 eval $hasproto ;;
12867         *)      ;;
12868         esac
12869         case "$d_getnetbyaddr_r_proto" in
12870         define)
12871         case "$getnetbyaddr_r_proto" in
12872         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12873         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12874         esac
12875         case "$getnetbyaddr_r_proto" in
12876         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12877         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12878         esac
12879         case "$getnetbyaddr_r_proto" in
12880         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12881         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12882         esac
12883         case "$getnetbyaddr_r_proto" in
12884         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12885         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12886         esac
12887         case "$getnetbyaddr_r_proto" in
12888         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12889         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12890         esac
12891         case "$getnetbyaddr_r_proto" in
12892         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12893         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12894         esac
12895         case "$getnetbyaddr_r_proto" in
12896         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12897         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12898         esac
12899         case "$getnetbyaddr_r_proto" in
12900         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12901         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12902         esac
12903         case "$getnetbyaddr_r_proto" in
12904         ''|0)   d_getnetbyaddr_r=undef
12905                 getnetbyaddr_r_proto=0
12906                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12907         * )     case "$getnetbyaddr_r_proto" in
12908                 REENTRANT_PROTO*) ;;
12909                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12910                 esac
12911                 echo "Prototype: $try" ;;
12912         esac
12913         ;;
12914         *)      case "$usethreads" in
12915                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12916                 esac
12917                 d_getnetbyaddr_r=undef
12918                 getnetbyaddr_r_proto=0
12919                 ;;
12920         esac
12921         ;;
12922 *)      getnetbyaddr_r_proto=0
12923         ;;
12924 esac
12925
12926 : see if getnetbyname_r exists
12927 set getnetbyname_r d_getnetbyname_r
12928 eval $inlibc
12929 case "$d_getnetbyname_r" in
12930 "$define")
12931         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12932         case "$d_getnetbyname_r_proto:$usethreads" in
12933         ":define")      d_getnetbyname_r_proto=define
12934                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12935                 eval $hasproto ;;
12936         *)      ;;
12937         esac
12938         case "$d_getnetbyname_r_proto" in
12939         define)
12940         case "$getnetbyname_r_proto" in
12941         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12942         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12943         esac
12944         case "$getnetbyname_r_proto" in
12945         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12946         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12947         esac
12948         case "$getnetbyname_r_proto" in
12949         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12950         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12951         esac
12952         case "$getnetbyname_r_proto" in
12953         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12954         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12955         esac
12956         case "$getnetbyname_r_proto" in
12957         ''|0)   d_getnetbyname_r=undef
12958                 getnetbyname_r_proto=0
12959                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12960         * )     case "$getnetbyname_r_proto" in
12961                 REENTRANT_PROTO*) ;;
12962                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12963                 esac
12964                 echo "Prototype: $try" ;;
12965         esac
12966         ;;
12967         *)      case "$usethreads" in
12968                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12969                 esac
12970                 d_getnetbyname_r=undef
12971                 getnetbyname_r_proto=0
12972                 ;;
12973         esac
12974         ;;
12975 *)      getnetbyname_r_proto=0
12976         ;;
12977 esac
12978
12979 : see if getnetent_r exists
12980 set getnetent_r d_getnetent_r
12981 eval $inlibc
12982 case "$d_getnetent_r" in
12983 "$define")
12984         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12985         case "$d_getnetent_r_proto:$usethreads" in
12986         ":define")      d_getnetent_r_proto=define
12987                 set d_getnetent_r_proto getnetent_r $hdrs
12988                 eval $hasproto ;;
12989         *)      ;;
12990         esac
12991         case "$d_getnetent_r_proto" in
12992         define)
12993         case "$getnetent_r_proto" in
12994         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12995         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12996         esac
12997         case "$getnetent_r_proto" in
12998         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12999         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13000         esac
13001         case "$getnetent_r_proto" in
13002         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13003         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13004         esac
13005         case "$getnetent_r_proto" in
13006         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13007         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13008         esac
13009         case "$getnetent_r_proto" in
13010         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13011         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13012         esac
13013         case "$getnetent_r_proto" in
13014         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13015         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13016         esac
13017         case "$getnetent_r_proto" in
13018         ''|0)   d_getnetent_r=undef
13019                 getnetent_r_proto=0
13020                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13021         * )     case "$getnetent_r_proto" in
13022                 REENTRANT_PROTO*) ;;
13023                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13024                 esac
13025                 echo "Prototype: $try" ;;
13026         esac
13027         ;;
13028         *)      case "$usethreads" in
13029                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13030                 esac
13031                 d_getnetent_r=undef
13032                 getnetent_r_proto=0
13033                 ;;
13034         esac
13035         ;;
13036 *)      getnetent_r_proto=0
13037         ;;
13038 esac
13039
13040 : see if prototypes for various getnetxxx netdb.h functions are available
13041 echo " "
13042 set d_getnetprotos getnetent $i_netdb netdb.h
13043 eval $hasproto
13044
13045 : see if getpagesize exists
13046 set getpagesize d_getpagsz
13047 eval $inlibc
13048
13049
13050 : see if getprotobyname exists
13051 set getprotobyname d_getpbyname
13052 eval $inlibc
13053
13054 : see if getprotobynumber exists
13055 set getprotobynumber d_getpbynumber
13056 eval $inlibc
13057
13058 : see if getprotoent exists
13059 set getprotoent d_getpent
13060 eval $inlibc
13061
13062 : see if getpgid exists
13063 set getpgid d_getpgid
13064 eval $inlibc
13065
13066 : see if getpgrp2 exists
13067 set getpgrp2 d_getpgrp2
13068 eval $inlibc
13069
13070 : see if getppid exists
13071 set getppid d_getppid
13072 eval $inlibc
13073
13074 : see if getpriority exists
13075 set getpriority d_getprior
13076 eval $inlibc
13077
13078 : see if getprotobyname_r exists
13079 set getprotobyname_r d_getprotobyname_r
13080 eval $inlibc
13081 case "$d_getprotobyname_r" in
13082 "$define")
13083         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13084         case "$d_getprotobyname_r_proto:$usethreads" in
13085         ":define")      d_getprotobyname_r_proto=define
13086                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13087                 eval $hasproto ;;
13088         *)      ;;
13089         esac
13090         case "$d_getprotobyname_r_proto" in
13091         define)
13092         case "$getprotobyname_r_proto" in
13093         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13094         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13095         esac
13096         case "$getprotobyname_r_proto" in
13097         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13098         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13099         esac
13100         case "$getprotobyname_r_proto" in
13101         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13102         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13103         esac
13104         case "$getprotobyname_r_proto" in
13105         ''|0)   d_getprotobyname_r=undef
13106                 getprotobyname_r_proto=0
13107                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13108         * )     case "$getprotobyname_r_proto" in
13109                 REENTRANT_PROTO*) ;;
13110                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13111                 esac
13112                 echo "Prototype: $try" ;;
13113         esac
13114         ;;
13115         *)      case "$usethreads" in
13116                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13117                 esac
13118                 d_getprotobyname_r=undef
13119                 getprotobyname_r_proto=0
13120                 ;;
13121         esac
13122         ;;
13123 *)      getprotobyname_r_proto=0
13124         ;;
13125 esac
13126
13127 : see if getprotobynumber_r exists
13128 set getprotobynumber_r d_getprotobynumber_r
13129 eval $inlibc
13130 case "$d_getprotobynumber_r" in
13131 "$define")
13132         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13133         case "$d_getprotobynumber_r_proto:$usethreads" in
13134         ":define")      d_getprotobynumber_r_proto=define
13135                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13136                 eval $hasproto ;;
13137         *)      ;;
13138         esac
13139         case "$d_getprotobynumber_r_proto" in
13140         define)
13141         case "$getprotobynumber_r_proto" in
13142         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13143         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13144         esac
13145         case "$getprotobynumber_r_proto" in
13146         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13147         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13148         esac
13149         case "$getprotobynumber_r_proto" in
13150         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13151         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13152         esac
13153         case "$getprotobynumber_r_proto" in
13154         ''|0)   d_getprotobynumber_r=undef
13155                 getprotobynumber_r_proto=0
13156                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13157         * )     case "$getprotobynumber_r_proto" in
13158                 REENTRANT_PROTO*) ;;
13159                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13160                 esac
13161                 echo "Prototype: $try" ;;
13162         esac
13163         ;;
13164         *)      case "$usethreads" in
13165                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13166                 esac
13167                 d_getprotobynumber_r=undef
13168                 getprotobynumber_r_proto=0
13169                 ;;
13170         esac
13171         ;;
13172 *)      getprotobynumber_r_proto=0
13173         ;;
13174 esac
13175
13176 : see if getprotoent_r exists
13177 set getprotoent_r d_getprotoent_r
13178 eval $inlibc
13179 case "$d_getprotoent_r" in
13180 "$define")
13181         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13182         case "$d_getprotoent_r_proto:$usethreads" in
13183         ":define")      d_getprotoent_r_proto=define
13184                 set d_getprotoent_r_proto getprotoent_r $hdrs
13185                 eval $hasproto ;;
13186         *)      ;;
13187         esac
13188         case "$d_getprotoent_r_proto" in
13189         define)
13190         case "$getprotoent_r_proto" in
13191         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13192         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13193         esac
13194         case "$getprotoent_r_proto" in
13195         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13196         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13197         esac
13198         case "$getprotoent_r_proto" in
13199         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13200         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13201         esac
13202         case "$getprotoent_r_proto" in
13203         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13204         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13205         esac
13206         case "$getprotoent_r_proto" in
13207         ''|0)   d_getprotoent_r=undef
13208                 getprotoent_r_proto=0
13209                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13210         * )     case "$getprotoent_r_proto" in
13211                 REENTRANT_PROTO*) ;;
13212                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13213                 esac
13214                 echo "Prototype: $try" ;;
13215         esac
13216         ;;
13217         *)      case "$usethreads" in
13218                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13219                 esac
13220                 d_getprotoent_r=undef
13221                 getprotoent_r_proto=0
13222                 ;;
13223         esac
13224         ;;
13225 *)      getprotoent_r_proto=0
13226         ;;
13227 esac
13228
13229 : see if prototypes for various getprotoxxx netdb.h functions are available
13230 echo " "
13231 set d_getprotoprotos getprotoent $i_netdb netdb.h
13232 eval $hasproto
13233
13234 : see if getprpwnam exists
13235 set getprpwnam d_getprpwnam
13236 eval $inlibc
13237
13238 : see if getpwent exists
13239 set getpwent d_getpwent
13240 eval $inlibc
13241
13242 : see if getpwent_r exists
13243 set getpwent_r d_getpwent_r
13244 eval $inlibc
13245 case "$d_getpwent_r" in
13246 "$define")
13247         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13248         case "$d_getpwent_r_proto:$usethreads" in
13249         ":define")      d_getpwent_r_proto=define
13250                 set d_getpwent_r_proto getpwent_r $hdrs
13251                 eval $hasproto ;;
13252         *)      ;;
13253         esac
13254         case "$d_getpwent_r_proto" in
13255         define)
13256         case "$getpwent_r_proto" in
13257         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13258         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13259         esac
13260         case "$getpwent_r_proto" in
13261         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13262         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13263         esac
13264         case "$getpwent_r_proto" in
13265         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13266         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13267         esac
13268         case "$getpwent_r_proto" in
13269         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13270         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13271         esac
13272         case "$getpwent_r_proto" in
13273         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13274         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13275         esac
13276         case "$getpwent_r_proto" in
13277         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13278         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13279         esac
13280         case "$getpwent_r_proto" in
13281         ''|0)   d_getpwent_r=undef
13282                 getpwent_r_proto=0
13283                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13284         * )     case "$getpwent_r_proto" in
13285                 REENTRANT_PROTO*) ;;
13286                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13287                 esac
13288                 echo "Prototype: $try" ;;
13289         esac
13290         ;;
13291         *)      case "$usethreads" in
13292                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13293                 esac
13294                 d_getpwent_r=undef
13295                 getpwent_r_proto=0
13296                 ;;
13297         esac
13298         ;;
13299 *)      getpwent_r_proto=0
13300         ;;
13301 esac
13302
13303 : see if getpwnam_r exists
13304 set getpwnam_r d_getpwnam_r
13305 eval $inlibc
13306 case "$d_getpwnam_r" in
13307 "$define")
13308         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13309         case "$d_getpwnam_r_proto:$usethreads" in
13310         ":define")      d_getpwnam_r_proto=define
13311                 set d_getpwnam_r_proto getpwnam_r $hdrs
13312                 eval $hasproto ;;
13313         *)      ;;
13314         esac
13315         case "$d_getpwnam_r_proto" in
13316         define)
13317         case "$getpwnam_r_proto" in
13318         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13319         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13320         esac
13321         case "$getpwnam_r_proto" in
13322         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13323         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13324         esac
13325         case "$getpwnam_r_proto" in
13326         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13327         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13328         esac
13329         case "$getpwnam_r_proto" in
13330         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13331         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13332         esac
13333         case "$getpwnam_r_proto" in
13334         ''|0)   d_getpwnam_r=undef
13335                 getpwnam_r_proto=0
13336                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13337         * )     case "$getpwnam_r_proto" in
13338                 REENTRANT_PROTO*) ;;
13339                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13340                 esac
13341                 echo "Prototype: $try" ;;
13342         esac
13343         ;;
13344         *)      case "$usethreads" in
13345                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13346                 esac
13347                 d_getpwnam_r=undef
13348                 getpwnam_r_proto=0
13349                 ;;
13350         esac
13351         ;;
13352 *)      getpwnam_r_proto=0
13353         ;;
13354 esac
13355
13356 : see if getpwuid_r exists
13357 set getpwuid_r d_getpwuid_r
13358 eval $inlibc
13359 case "$d_getpwuid_r" in
13360 "$define")
13361         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13362         case "$d_getpwuid_r_proto:$usethreads" in
13363         ":define")      d_getpwuid_r_proto=define
13364                 set d_getpwuid_r_proto getpwuid_r $hdrs
13365                 eval $hasproto ;;
13366         *)      ;;
13367         esac
13368         case "$d_getpwuid_r_proto" in
13369         define)
13370         case "$getpwuid_r_proto" in
13371         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13372         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13373         esac
13374         case "$getpwuid_r_proto" in
13375         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13376         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13377         esac
13378         case "$getpwuid_r_proto" in
13379         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13380         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13381         esac
13382         case "$getpwuid_r_proto" in
13383         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13384         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13385         esac
13386         case "$getpwuid_r_proto" in
13387         ''|0)   d_getpwuid_r=undef
13388                 getpwuid_r_proto=0
13389                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13390         * )     case "$getpwuid_r_proto" in
13391                 REENTRANT_PROTO*) ;;
13392                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13393                 esac
13394                 echo "Prototype: $try" ;;
13395         esac
13396         ;;
13397         *)      case "$usethreads" in
13398                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13399                 esac
13400                 d_getpwuid_r=undef
13401                 getpwuid_r_proto=0
13402                 ;;
13403         esac
13404         ;;
13405 *)      getpwuid_r_proto=0
13406         ;;
13407 esac
13408
13409
13410 : see if getservbyname exists
13411 set getservbyname d_getsbyname
13412 eval $inlibc
13413
13414 : see if getservbyport exists
13415 set getservbyport d_getsbyport
13416 eval $inlibc
13417
13418 : see if getservent exists
13419 set getservent d_getsent
13420 eval $inlibc
13421
13422 : see if getservbyname_r exists
13423 set getservbyname_r d_getservbyname_r
13424 eval $inlibc
13425 case "$d_getservbyname_r" in
13426 "$define")
13427         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13428         case "$d_getservbyname_r_proto:$usethreads" in
13429         ":define")      d_getservbyname_r_proto=define
13430                 set d_getservbyname_r_proto getservbyname_r $hdrs
13431                 eval $hasproto ;;
13432         *)      ;;
13433         esac
13434         case "$d_getservbyname_r_proto" in
13435         define)
13436         case "$getservbyname_r_proto" in
13437         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13438         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13439         esac
13440         case "$getservbyname_r_proto" in
13441         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13442         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13443         esac
13444         case "$getservbyname_r_proto" in
13445         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13446         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13447         esac
13448         case "$getservbyname_r_proto" in
13449         ''|0)   d_getservbyname_r=undef
13450                 getservbyname_r_proto=0
13451                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13452         * )     case "$getservbyname_r_proto" in
13453                 REENTRANT_PROTO*) ;;
13454                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13455                 esac
13456                 echo "Prototype: $try" ;;
13457         esac
13458         ;;
13459         *)      case "$usethreads" in
13460                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13461                 esac
13462                 d_getservbyname_r=undef
13463                 getservbyname_r_proto=0
13464                 ;;
13465         esac
13466         ;;
13467 *)      getservbyname_r_proto=0
13468         ;;
13469 esac
13470
13471 : see if getservbyport_r exists
13472 set getservbyport_r d_getservbyport_r
13473 eval $inlibc
13474 case "$d_getservbyport_r" in
13475 "$define")
13476         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13477         case "$d_getservbyport_r_proto:$usethreads" in
13478         ":define")      d_getservbyport_r_proto=define
13479                 set d_getservbyport_r_proto getservbyport_r $hdrs
13480                 eval $hasproto ;;
13481         *)      ;;
13482         esac
13483         case "$d_getservbyport_r_proto" in
13484         define)
13485         case "$getservbyport_r_proto" in
13486         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13487         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13488         esac
13489         case "$getservbyport_r_proto" in
13490         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13491         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13492         esac
13493         case "$getservbyport_r_proto" in
13494         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13495         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13496         esac
13497         case "$getservbyport_r_proto" in
13498         ''|0)   d_getservbyport_r=undef
13499                 getservbyport_r_proto=0
13500                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13501         * )     case "$getservbyport_r_proto" in
13502                 REENTRANT_PROTO*) ;;
13503                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13504                 esac
13505                 echo "Prototype: $try" ;;
13506         esac
13507         ;;
13508         *)      case "$usethreads" in
13509                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13510                 esac
13511                 d_getservbyport_r=undef
13512                 getservbyport_r_proto=0
13513                 ;;
13514         esac
13515         ;;
13516 *)      getservbyport_r_proto=0
13517         ;;
13518 esac
13519
13520 : see if getservent_r exists
13521 set getservent_r d_getservent_r
13522 eval $inlibc
13523 case "$d_getservent_r" in
13524 "$define")
13525         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13526         case "$d_getservent_r_proto:$usethreads" in
13527         ":define")      d_getservent_r_proto=define
13528                 set d_getservent_r_proto getservent_r $hdrs
13529                 eval $hasproto ;;
13530         *)      ;;
13531         esac
13532         case "$d_getservent_r_proto" in
13533         define)
13534         case "$getservent_r_proto" in
13535         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13536         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13537         esac
13538         case "$getservent_r_proto" in
13539         ''|0) try='int getservent_r(struct servent*, char*, int);'
13540         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13541         esac
13542         case "$getservent_r_proto" in
13543         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13544         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13545         esac
13546         case "$getservent_r_proto" in
13547         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13548         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13549         esac
13550         case "$getservent_r_proto" in
13551         ''|0)   d_getservent_r=undef
13552                 getservent_r_proto=0
13553                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13554         * )     case "$getservent_r_proto" in
13555                 REENTRANT_PROTO*) ;;
13556                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13557                 esac
13558                 echo "Prototype: $try" ;;
13559         esac
13560         ;;
13561         *)      case "$usethreads" in
13562                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13563                 esac
13564                 d_getservent_r=undef
13565                 getservent_r_proto=0
13566                 ;;
13567         esac
13568         ;;
13569 *)      getservent_r_proto=0
13570         ;;
13571 esac
13572
13573 : see if prototypes for various getservxxx netdb.h functions are available
13574 echo " "
13575 set d_getservprotos getservent $i_netdb netdb.h
13576 eval $hasproto
13577
13578 : see if getspnam exists
13579 set getspnam d_getspnam
13580 eval $inlibc
13581
13582 : see if this is a shadow.h system
13583 set shadow.h i_shadow
13584 eval $inhdr
13585
13586 : see if getspnam_r exists
13587 set getspnam_r d_getspnam_r
13588 eval $inlibc
13589 case "$d_getspnam_r" in
13590 "$define")
13591         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13592         case "$d_getspnam_r_proto:$usethreads" in
13593         ":define")      d_getspnam_r_proto=define
13594                 set d_getspnam_r_proto getspnam_r $hdrs
13595                 eval $hasproto ;;
13596         *)      ;;
13597         esac
13598         case "$d_getspnam_r_proto" in
13599         define)
13600         case "$getspnam_r_proto" in
13601         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13602         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13603         esac
13604         case "$getspnam_r_proto" in
13605         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13606         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13607         esac
13608         case "$getspnam_r_proto" in
13609         ''|0)   d_getspnam_r=undef
13610                 getspnam_r_proto=0
13611                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13612         * )     case "$getspnam_r_proto" in
13613                 REENTRANT_PROTO*) ;;
13614                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13615                 esac
13616                 echo "Prototype: $try" ;;
13617         esac
13618         ;;
13619         *)      case "$usethreads" in
13620                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13621                 esac
13622                 d_getspnam_r=undef
13623                 getspnam_r_proto=0
13624                 ;;
13625         esac
13626         ;;
13627 *)      getspnam_r_proto=0
13628         ;;
13629 esac
13630
13631 : see if gettimeofday or ftime exists
13632 set gettimeofday d_gettimeod
13633 eval $inlibc
13634 case "$d_gettimeod" in
13635 "$undef")
13636         set ftime d_ftime 
13637         eval $inlibc
13638         ;;
13639 *)
13640         val="$undef"; set d_ftime; eval $setvar
13641         ;;
13642 esac
13643 case "$d_gettimeod$d_ftime" in
13644 "$undef$undef")
13645         echo " "
13646         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13647         ;;
13648 esac
13649
13650 : see if gmtime_r exists
13651 set gmtime_r d_gmtime_r
13652 eval $inlibc
13653 case "$d_gmtime_r" in
13654 "$define")
13655         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13656         case "$d_gmtime_r_proto:$usethreads" in
13657         ":define")      d_gmtime_r_proto=define
13658                 set d_gmtime_r_proto gmtime_r $hdrs
13659                 eval $hasproto ;;
13660         *)      ;;
13661         esac
13662         case "$d_gmtime_r_proto" in
13663         define)
13664         case "$gmtime_r_proto" in
13665         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13666         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13667         esac
13668         case "$gmtime_r_proto" in
13669         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13670         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13671         esac
13672         case "$gmtime_r_proto" in
13673         ''|0)   d_gmtime_r=undef
13674                 gmtime_r_proto=0
13675                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13676         * )     case "$gmtime_r_proto" in
13677                 REENTRANT_PROTO*) ;;
13678                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13679                 esac
13680                 echo "Prototype: $try" ;;
13681         esac
13682         ;;
13683         *)      case "$usethreads" in
13684                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13685                 esac
13686                 d_gmtime_r=undef
13687                 gmtime_r_proto=0
13688                 ;;
13689         esac
13690         ;;
13691 *)      gmtime_r_proto=0
13692         ;;
13693 esac
13694
13695 : see if hasmntopt exists
13696 set hasmntopt d_hasmntopt
13697 eval $inlibc
13698
13699 : see if this is a netinet/in.h or sys/in.h system
13700 set netinet/in.h i_niin sys/in.h i_sysin
13701 eval $inhdr
13702
13703 : see if arpa/inet.h has to be included
13704 set arpa/inet.h i_arpainet
13705 eval $inhdr
13706
13707 : see if htonl --and friends-- exists
13708 val=''
13709 set htonl val
13710 eval $inlibc
13711
13712 : Maybe they are macros.
13713 case "$val" in
13714 $undef)
13715         $cat >htonl.c <<EOM
13716 #include <stdio.h>
13717 #include <sys/types.h>
13718 #$i_niin I_NETINET_IN
13719 #$i_sysin I_SYS_IN
13720 #$i_arpainet I_ARPA_INET
13721 #ifdef I_NETINET_IN
13722 #include <netinet/in.h>
13723 #endif
13724 #ifdef I_SYS_IN
13725 #include <sys/in.h>
13726 #endif
13727 #ifdef I_ARPA_INET
13728 #include <arpa/inet.h>
13729 #endif
13730 #ifdef htonl
13731 printf("Defined as a macro.");
13732 #endif
13733 EOM
13734         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13735         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13736                 val="$define"
13737                 echo "But it seems to be defined as a macro." >&4
13738         fi
13739         $rm -f htonl.?
13740         ;;
13741 esac
13742 set d_htonl
13743 eval $setvar
13744
13745 : see if ilogbl exists
13746 set ilogbl d_ilogbl
13747 eval $inlibc
13748
13749 : index or strchr
13750 echo " "
13751 if set index val -f; eval $csym; $val; then
13752         if set strchr val -f d_strchr; eval $csym; $val; then
13753                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13754                         val="$define"
13755                         vali="$undef"
13756                         echo "strchr() found." >&4
13757                 else
13758                         val="$undef"
13759                         vali="$define"
13760                         echo "index() found." >&4
13761                 fi
13762         else
13763                 val="$undef"
13764                 vali="$define"
13765                 echo "index() found." >&4
13766         fi
13767 else
13768         if set strchr val -f d_strchr; eval $csym; $val; then
13769                 val="$define"
13770                 vali="$undef"
13771                 echo "strchr() found." >&4
13772         else
13773                 echo "No index() or strchr() found!" >&4
13774                 val="$undef"
13775                 vali="$undef"
13776         fi
13777 fi
13778 set d_strchr; eval $setvar
13779 val="$vali"
13780 set d_index; eval $setvar
13781
13782 : check whether inet_aton exists
13783 set inet_aton d_inetaton
13784 eval $inlibc
13785
13786 : Look for isascii
13787 echo " "
13788 $cat >isascii.c <<EOCP
13789 #include <stdio.h>
13790 #include <ctype.h>
13791 #$i_stdlib I_STDLIB
13792 #ifdef I_STDLIB
13793 #include <stdlib.h>
13794 #endif
13795 int main() {
13796         int c = 'A';
13797         if (isascii(c))
13798                 exit(0);
13799         else
13800                 exit(1);
13801 }
13802 EOCP
13803 set isascii
13804 if eval $compile; then
13805         echo "isascii() found." >&4
13806         val="$define"
13807 else
13808         echo "isascii() NOT found." >&4
13809         val="$undef"
13810 fi
13811 set d_isascii
13812 eval $setvar
13813 $rm -f isascii*
13814
13815 : see if isfinite exists
13816 set isfinite d_isfinite
13817 eval $inlibc
13818
13819 : see if isinf exists
13820 set isinf d_isinf
13821 eval $inlibc
13822
13823 : see if isnan exists
13824 set isnan d_isnan
13825 eval $inlibc
13826
13827 : see if isnanl exists
13828 set isnanl d_isnanl
13829 eval $inlibc
13830
13831 : see if killpg exists
13832 set killpg d_killpg
13833 eval $inlibc
13834
13835 : see if lchown exists
13836 echo " "
13837 $cat > try.c <<'EOCP'
13838 /* System header to define __stub macros and hopefully few prototypes,
13839     which can conflict with char lchown(); below.  */
13840 #include <assert.h>
13841 /* Override any gcc2 internal prototype to avoid an error.  */
13842 /* We use char because int might match the return type of a gcc2
13843    builtin and then its argument prototype would still apply.  */
13844 char lchown();
13845 int main() {
13846     /*  The GNU C library defines this for functions which it implements
13847         to always fail with ENOSYS.  Some functions are actually named
13848         something starting with __ and the normal name is an alias.  */
13849 #if defined (__stub_lchown) || defined (__stub___lchown)
13850 choke me
13851 #else
13852 lchown();
13853 #endif
13854 ; return 0; }
13855 EOCP
13856 set try
13857 if eval $compile; then
13858     $echo "lchown() found." >&4
13859     val="$define"
13860 else
13861     $echo "lchown() NOT found." >&4
13862     val="$undef"
13863 fi
13864 set d_lchown
13865 eval $setvar
13866
13867 : See if number of significant digits in a double precision number is known
13868 echo " "
13869 $cat >ldbl_dig.c <<EOM
13870 #$i_limits I_LIMITS
13871 #$i_float I_FLOAT
13872 #ifdef I_LIMITS
13873 #include <limits.h>
13874 #endif
13875 #ifdef I_FLOAT
13876 #include <float.h>
13877 #endif
13878 #ifdef LDBL_DIG
13879 printf("Contains LDBL_DIG");
13880 #endif
13881 EOM
13882 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13883 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13884         echo "LDBL_DIG found." >&4
13885         val="$define"
13886 else
13887         echo "LDBL_DIG NOT found." >&4
13888         val="$undef"
13889 fi
13890 $rm -f ldbl_dig.?
13891 set d_ldbl_dig
13892 eval $setvar
13893
13894 : see if link exists
13895 set link d_link
13896 eval $inlibc
13897
13898 : see if localtime_r exists
13899 set localtime_r d_localtime_r
13900 eval $inlibc
13901 case "$d_localtime_r" in
13902 "$define")
13903         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13904         case "$d_localtime_r_proto:$usethreads" in
13905         ":define")      d_localtime_r_proto=define
13906                 set d_localtime_r_proto localtime_r $hdrs
13907                 eval $hasproto ;;
13908         *)      ;;
13909         esac
13910         case "$d_localtime_r_proto" in
13911         define)
13912         case "$localtime_r_proto" in
13913         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13914         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13915         esac
13916         case "$localtime_r_proto" in
13917         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13918         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13919         esac
13920         case "$localtime_r_proto" in
13921         ''|0)   d_localtime_r=undef
13922                 localtime_r_proto=0
13923                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13924         * )     case "$localtime_r_proto" in
13925                 REENTRANT_PROTO*) ;;
13926                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13927                 esac
13928                 echo "Prototype: $try" ;;
13929         esac
13930         ;;
13931         *)      case "$usethreads" in
13932                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13933                 esac
13934                 d_localtime_r=undef
13935                 localtime_r_proto=0
13936                 ;;
13937         esac
13938         ;;
13939 *)      localtime_r_proto=0
13940         ;;
13941 esac
13942
13943 : see if localeconv exists
13944 set localeconv d_locconv
13945 eval $inlibc
13946
13947 : see if lockf exists
13948 set lockf d_lockf
13949 eval $inlibc
13950
13951 : see if prototype for lseek is available
13952 echo " "
13953 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13954 eval $hasproto
13955
13956 : see if lstat exists
13957 set lstat d_lstat
13958 eval $inlibc
13959
13960 : see if madvise exists
13961 set madvise d_madvise
13962 eval $inlibc
13963
13964 : see if mblen exists
13965 set mblen d_mblen
13966 eval $inlibc
13967
13968 : see if mbstowcs exists
13969 set mbstowcs d_mbstowcs
13970 eval $inlibc
13971
13972 : see if mbtowc exists
13973 set mbtowc d_mbtowc
13974 eval $inlibc
13975
13976 : see if memchr exists
13977 set memchr d_memchr
13978 eval $inlibc
13979
13980 : see if memcmp exists
13981 set memcmp d_memcmp
13982 eval $inlibc
13983
13984 : see if memcpy exists
13985 set memcpy d_memcpy
13986 eval $inlibc
13987
13988 : see if memmove exists
13989 set memmove d_memmove
13990 eval $inlibc
13991
13992 : see if memset exists
13993 set memset d_memset
13994 eval $inlibc
13995
13996 : see if mkdir exists
13997 set mkdir d_mkdir
13998 eval $inlibc
13999
14000 : see if mkdtemp exists
14001 set mkdtemp d_mkdtemp
14002 eval $inlibc
14003
14004 : see if mkfifo exists
14005 set mkfifo d_mkfifo
14006 eval $inlibc
14007
14008 : see if mkstemp exists
14009 set mkstemp d_mkstemp
14010 eval $inlibc
14011
14012 : see if mkstemps exists
14013 set mkstemps d_mkstemps
14014 eval $inlibc
14015
14016 : see if mktime exists
14017 set mktime d_mktime
14018 eval $inlibc
14019
14020 : see if this is a sys/mman.h system
14021 set sys/mman.h i_sysmman
14022 eval $inhdr
14023
14024 : see if mmap exists
14025 set mmap d_mmap
14026 eval $inlibc
14027 : see what shmat returns
14028 : default to something harmless
14029 mmaptype='void *'
14030 case "$i_sysmman$d_mmap" in
14031 "$define$define")
14032         $cat >mmap.c <<'END'
14033 #include <sys/mman.h>
14034 void *mmap();
14035 END
14036         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14037                 mmaptype='void *'
14038         else
14039                 mmaptype='caddr_t'
14040         fi
14041         echo "and it returns ($mmaptype)." >&4
14042         ;;
14043 esac
14044
14045
14046
14047 : see if sqrtl exists
14048 set sqrtl d_sqrtl
14049 eval $inlibc
14050
14051 : see if scalbnl exists
14052 set scalbnl d_scalbnl
14053 eval $inlibc
14054
14055 : see if modfl exists
14056 set modfl d_modfl
14057 eval $inlibc
14058
14059 : see if prototype for modfl is available
14060 echo " "
14061 set d_modflproto modfl math.h
14062 eval $hasproto
14063
14064 d_modfl_pow32_bug="$undef"
14065
14066 case "$d_longdbl$d_modfl" in
14067 $define$define)
14068         $cat <<EOM
14069 Checking to see whether your modfl() is okay for large values...
14070 EOM
14071 $cat >try.c <<EOCP
14072 #include <math.h> 
14073 #include <stdio.h>
14074 EOCP
14075 if $test "X$d_modflproto" != "X$define"; then
14076         $cat >>try.c <<EOCP
14077 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14078 long double modfl (long double, long double *);
14079 EOCP
14080 fi
14081 $cat >>try.c <<EOCP
14082 int main() {
14083     long double nv = 4294967303.15;
14084     long double v, w;
14085     v = modfl(nv, &w);         
14086 #ifdef __GLIBC__
14087     printf("glibc");
14088 #endif
14089     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14090     return 0;
14091 }
14092 EOCP
14093         case "$osname:$gccversion" in
14094         aix:)   saveccflags="$ccflags"
14095                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14096         esac
14097         set try
14098         if eval $compile; then
14099                 foo=`$run ./try`
14100                 case "$foo" in
14101                 *" 4294967303.150000 1.150000 4294967302.000000")
14102                         echo >&4 "Your modfl() is broken for large values."
14103                         d_modfl_pow32_bug="$define"
14104                         case "$foo" in
14105                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14106                         ;;
14107                         esac
14108                         ;;
14109                 *" 4294967303.150000 0.150000 4294967303.000000")
14110                         echo >&4 "Your modfl() seems okay for large values."
14111                         ;;
14112                 *)      echo >&4 "I don't understand your modfl() at all."
14113                         d_modfl="$undef"
14114                         ;;
14115                 esac
14116                 $rm -f try.* try core core.try.*
14117         else
14118                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14119                 d_modfl="$undef"
14120         fi
14121         case "$osname:$gccversion" in
14122         aix:)   ccflags="$saveccflags" ;; # restore
14123         esac
14124         ;;
14125 esac
14126
14127 if $test "$uselongdouble" = "$define"; then
14128     message=""
14129     if $test "$d_sqrtl" != "$define"; then
14130         message="$message sqrtl"
14131     fi
14132     if $test "$d_modfl" != "$define"; then
14133         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14134             echo "You have both aintl and copysignl, so I can emulate modfl."
14135         else
14136             message="$message modfl"
14137         fi
14138     fi
14139     if $test "$d_frexpl" != "$define"; then
14140         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14141             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14142         else
14143             message="$message frexpl"
14144         fi
14145     fi
14146
14147     if $test "$message" != ""; then
14148         $cat <<EOM >&4
14149
14150 *** You requested the use of long doubles but you do not seem to have
14151 *** the following mathematical functions needed for long double support:
14152 ***    $message
14153 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14154 *** Cannot continue, aborting.
14155
14156 EOM
14157
14158         exit 1
14159     fi
14160 fi
14161
14162 : see if mprotect exists
14163 set mprotect d_mprotect
14164 eval $inlibc
14165
14166 : see if msgctl exists
14167 set msgctl d_msgctl
14168 eval $inlibc
14169
14170 : see if msgget exists
14171 set msgget d_msgget
14172 eval $inlibc
14173
14174 : see if msgsnd exists
14175 set msgsnd d_msgsnd
14176 eval $inlibc
14177
14178 : see if msgrcv exists
14179 set msgrcv d_msgrcv
14180 eval $inlibc
14181
14182 : see how much of the 'msg*(2)' library is present.
14183 h_msg=true
14184 echo " "
14185 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14186 *"$undef"*) h_msg=false;;
14187 esac
14188 case "$osname" in
14189 freebsd)
14190     case "`ipcs 2>&1`" in
14191     "SVID messages"*"not configured"*)
14192         echo "Your $osname does not have the msg*(2) configured." >&4
14193         h_msg=false
14194         val="$undef"
14195         set msgctl d_msgctl
14196         eval $setvar
14197         set msgget d_msgget
14198         eval $setvar
14199         set msgsnd d_msgsnd
14200         eval $setvar
14201         set msgrcv d_msgrcv
14202         eval $setvar
14203         ;;
14204     esac
14205     ;;
14206 esac
14207 : we could also check for sys/ipc.h ...
14208 if $h_msg && $test `./findhdr sys/msg.h`; then
14209         echo "You have the full msg*(2) library." >&4
14210         val="$define"
14211 else
14212         echo "You don't have the full msg*(2) library." >&4
14213         val="$undef"
14214 fi
14215 set d_msg
14216 eval $setvar
14217
14218
14219 echo " "
14220 echo "Checking to see if your system supports struct msghdr..." >&4
14221 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14222 eval $hasstruct
14223 case "$d_msghdr_s" in
14224 "$define")      echo "Yes, it does."   ;;
14225 *)              echo "No, it doesn't." ;;
14226 esac
14227
14228
14229 : see if msync exists
14230 set msync d_msync
14231 eval $inlibc
14232
14233 : see if munmap exists
14234 set munmap d_munmap
14235 eval $inlibc
14236
14237 : see if nice exists
14238 set nice d_nice
14239 eval $inlibc
14240
14241 : see if this is a langinfo.h system
14242 set langinfo.h i_langinfo
14243 eval $inhdr
14244
14245 : see if nl_langinfo exists
14246 set nl_langinfo d_nl_langinfo
14247 eval $inlibc
14248
14249 : check for length of character
14250 echo " "
14251 case "$charsize" in
14252 '')
14253         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14254         $cat >try.c <<EOCP
14255 #include <stdio.h>
14256 #$i_stdlib I_STDLIB
14257 #ifdef I_STDLIB
14258 #include <stdlib.h>
14259 #endif
14260 int main()
14261 {
14262     printf("%d\n", (int)sizeof(char));
14263     exit(0);
14264 }
14265 EOCP
14266         set try
14267         if eval $compile_ok; then
14268                 dflt=`$run ./try`
14269         else
14270                 dflt='1'
14271                 echo "(I can't seem to compile the test program.  Guessing...)"
14272         fi
14273         ;;
14274 *)
14275         dflt="$charsize"
14276         ;;
14277 esac
14278 rp="What is the size of a character (in bytes)?"
14279 . ./myread
14280 charsize="$ans"
14281 $rm -f try.c try
14282
14283 : check for volatile keyword
14284 echo " "
14285 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14286 $cat >try.c <<'EOCP'
14287 int main()
14288 {
14289         typedef struct _goo_struct goo_struct;
14290         goo_struct * volatile goo = ((goo_struct *)0);
14291         struct _goo_struct {
14292                 long long_int;
14293                 int reg_int;
14294                 char char_var;
14295         };
14296         typedef unsigned short foo_t;
14297         char *volatile foo;
14298         volatile int bar;
14299         volatile foo_t blech;
14300         foo = foo;
14301 }
14302 EOCP
14303 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14304         val="$define"
14305         echo "Yup, it does."
14306 else
14307         val="$undef"
14308         echo "Nope, it doesn't."
14309 fi
14310 set d_volatile
14311 eval $setvar
14312 $rm -f try.*
14313
14314
14315 echo " "
14316 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14317
14318 case "$use64bitint:$d_quad:$quadtype" in
14319 define:define:?*)
14320         ivtype="$quadtype"
14321         uvtype="$uquadtype"
14322         ivsize=8
14323         uvsize=8
14324         ;;
14325 *)      ivtype="long"
14326         uvtype="unsigned long"
14327         ivsize=$longsize
14328         uvsize=$longsize
14329         ;;
14330 esac
14331
14332 case "$uselongdouble:$d_longdbl" in
14333 define:define)
14334         nvtype="long double"
14335         nvsize=$longdblsize
14336         ;;
14337 *)      nvtype=double
14338         nvsize=$doublesize
14339         ;;
14340 esac
14341
14342 $echo "(IV will be "$ivtype", $ivsize bytes)"
14343 $echo "(UV will be "$uvtype", $uvsize bytes)"
14344 $echo "(NV will be "$nvtype", $nvsize bytes)"
14345
14346 $cat >try.c <<EOCP
14347 #$i_inttypes I_INTTYPES
14348 #ifdef I_INTTYPES
14349 #include <inttypes.h>
14350 #endif
14351 #include <stdio.h>
14352 int main() {
14353 #ifdef INT8
14354    int8_t i =  INT8_MAX;
14355   uint8_t u = UINT8_MAX;
14356   printf("int8_t\n");
14357 #endif
14358 #ifdef INT16
14359    int16_t i =  INT16_MAX;
14360   uint16_t i = UINT16_MAX;
14361   printf("int16_t\n");
14362 #endif
14363 #ifdef INT32
14364    int32_t i =  INT32_MAX;
14365   uint32_t u = UINT32_MAX;
14366   printf("int32_t\n");
14367 #endif
14368 }
14369 EOCP
14370
14371 case "$i8type" in
14372 '')     case "$charsize" in
14373         1)      i8type=char
14374                 u8type="unsigned char"
14375                 i8size=$charsize
14376                 u8size=$charsize
14377                 ;;
14378         esac
14379         ;;
14380 esac
14381 case "$i8type" in
14382 '')     set try -DINT8
14383         if eval $compile; then
14384                 case "`$run ./try`" in
14385                 int8_t) i8type=int8_t
14386                         u8type=uint8_t
14387                         i8size=1
14388                         u8size=1
14389                         ;;
14390                 esac
14391         fi
14392         ;;
14393 esac
14394 case "$i8type" in
14395 '')     if $test $charsize -ge 1; then
14396                 i8type=char
14397                 u8type="unsigned char"
14398                 i8size=$charsize
14399                 u8size=$charsize
14400         fi
14401         ;;
14402 esac
14403
14404 case "$i16type" in
14405 '')     case "$shortsize" in
14406         2)      i16type=short
14407                 u16type="unsigned short"
14408                 i16size=$shortsize
14409                 u16size=$shortsize
14410                 ;;
14411         esac
14412         ;;
14413 esac
14414 case "$i16type" in
14415 '')     set try -DINT16
14416         if eval $compile; then
14417                 case "`$run ./try`" in
14418                 int16_t)
14419                         i16type=int16_t
14420                         u16type=uint16_t
14421                         i16size=2
14422                         u16size=2
14423                         ;;
14424                 esac
14425         fi
14426         ;;
14427 esac
14428 case "$i16type" in
14429 '')     if $test $shortsize -ge 2; then
14430                 i16type=short
14431                 u16type="unsigned short"
14432                 i16size=$shortsize
14433                 u16size=$shortsize
14434         fi
14435         ;;
14436 esac
14437
14438 case "$i32type" in
14439 '')     case "$longsize" in
14440         4)      i32type=long
14441                 u32type="unsigned long"
14442                 i32size=$longsize
14443                 u32size=$longsize
14444                 ;;
14445         *)      case "$intsize" in
14446                 4)      i32type=int
14447                         u32type="unsigned int"
14448                         i32size=$intsize
14449                         u32size=$intsize
14450                         ;;
14451                 esac
14452                 ;;
14453         esac
14454         ;;
14455 esac
14456 case "$i32type" in
14457 '')     set try -DINT32
14458         if eval $compile; then
14459                 case "`$run ./try`" in
14460                 int32_t)
14461                         i32type=int32_t
14462                         u32type=uint32_t
14463                         i32size=4
14464                         u32size=4
14465                         ;;
14466                 esac
14467         fi
14468         ;;
14469 esac
14470 case "$i32type" in
14471 '')     if $test $intsize -ge 4; then
14472                 i32type=int
14473                 u32type="unsigned int"
14474                 i32size=$intsize
14475                 u32size=$intsize
14476         fi
14477         ;;
14478 esac
14479
14480 case "$i64type" in
14481 '')     case "$d_quad:$quadtype" in
14482         define:?*)
14483                 i64type="$quadtype"
14484                 u64type="$uquadtype"
14485                 i64size=8
14486                 u64size=8
14487                 ;;
14488         esac
14489         ;;
14490 esac
14491
14492 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14493 : volatile so that the compiler has to store it out to memory.
14494 if test X"$d_volatile" = X"$define"; then
14495         volatile=volatile
14496 fi
14497 $cat <<EOP >try.c
14498 #include <stdio.h>
14499 #$i_stdlib I_STDLIB
14500 #ifdef I_STDLIB
14501 #include <stdlib.h>
14502 #endif
14503 #include <sys/types.h>
14504 #include <signal.h>
14505 #ifdef SIGFPE
14506 $volatile int bletched = 0;
14507 $signal_t blech(s) int s; { bletched = 1; }
14508 #endif
14509 int main() {
14510     $uvtype u = 0;
14511     $nvtype d;
14512     int     n = 8 * $uvsize;
14513     int     i;
14514 #ifdef SIGFPE
14515     signal(SIGFPE, blech);
14516 #endif
14517
14518     for (i = 0; i < n; i++) {
14519       u = u << 1 | ($uvtype)1;
14520       d = ($nvtype)u;
14521       if (($uvtype)d != u)
14522         break;
14523       if (d <= 0)
14524         break;
14525       d = ($nvtype)(u - 1);
14526       if (($uvtype)d != (u - 1))
14527         break;
14528 #ifdef SIGFPE
14529       if (bletched) {
14530         break;
14531 #endif
14532       } 
14533     }
14534     printf("%d\n", ((i == n) ? -n : i));
14535     exit(0);
14536 }
14537 EOP
14538 set try
14539
14540 d_nv_preserves_uv="$undef"
14541 if eval $compile; then
14542         nv_preserves_uv_bits="`$run ./try`"
14543 fi
14544 case "$nv_preserves_uv_bits" in
14545 \-[1-9]*)       
14546         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14547         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14548         d_nv_preserves_uv="$define"
14549         ;;
14550 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14551         d_nv_preserves_uv="$undef" ;;
14552 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14553         nv_preserves_uv_bits="$undef" ;;
14554 esac
14555
14556 $rm -f try.* try
14557
14558
14559 : check for off64_t
14560 echo " "
14561 echo "Checking to see if you have off64_t..." >&4
14562 $cat >try.c <<EOCP
14563 #include <sys/types.h>
14564 #include <unistd.h>
14565 int main() { off64_t x = 7; }
14566 EOCP
14567 set try
14568 if eval $compile; then
14569         val="$define"
14570         echo "You have off64_t."
14571 else
14572         val="$undef"
14573         echo "You do not have off64_t."
14574         case "$lseeksize" in
14575         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14576         esac
14577 fi
14578 $rm -f try.* try
14579 set d_off64_t
14580 eval $setvar
14581
14582 : how to create joinable pthreads
14583 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14584         echo " "
14585         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14586         $cat >try.c <<'EOCP'
14587 #include <pthread.h>
14588 int main() {
14589     int detachstate = JOINABLE;
14590 }
14591 EOCP
14592         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14593         if eval $compile; then
14594                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14595                 val="$undef" # Yes, undef.
14596                 set d_old_pthread_create_joinable
14597                 eval $setvar
14598                 val=""
14599                 set old_pthread_create_joinable
14600                 eval $setvar
14601         else
14602                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14603                 if eval $compile; then
14604                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14605                         val="$define"
14606                         set d_old_pthread_create_joinable
14607                         eval $setvar
14608                         val=PTHREAD_CREATE_UNDETACHED
14609                         set old_pthread_create_joinable
14610                         eval $setvar
14611                 else            
14612                         set try -DJOINABLE=__UNDETACHED
14613                         if eval $compile; then
14614                                 echo "You seem to use __UNDETACHED." >&4
14615                                 val="$define"
14616                                 set d_old_pthread_create_joinable
14617                                 eval $setvar
14618                                 val=__UNDETACHED
14619                                 set old_pthread_create_joinable
14620                                 eval $setvar
14621                         else
14622                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14623                                 val="$define"
14624                                 set d_old_pthread_create_joinable
14625                                 eval $setvar
14626                                 val=0
14627                                 set old_pthread_create_joinable
14628                                 eval $setvar
14629                         fi
14630                 fi
14631         fi
14632         $rm -f try try.*
14633 else
14634     d_old_pthread_create_joinable="$undef"
14635     old_pthread_create_joinable=""
14636 fi
14637
14638 : see if pause exists
14639 set pause d_pause
14640 eval $inlibc
14641
14642 : see if pipe exists
14643 set pipe d_pipe
14644 eval $inlibc
14645
14646 : see if poll exists
14647 set poll d_poll
14648 eval $inlibc
14649
14650 : see if readlink exists
14651 set readlink d_readlink
14652 eval $inlibc
14653
14654 echo " "
14655 procselfexe=''
14656 val="$undef"
14657 case "$d_readlink" in
14658 "$define")
14659         if $issymlink /proc/self/exe ; then
14660                 $ls -l /proc/self/exe > reflect
14661                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14662                         echo "You have Linux-like /proc/self/exe."
14663                         procselfexe='"/proc/self/exe"'
14664                         val="$define"
14665                 fi
14666         fi
14667         if $issymlink /proc/curproc/file ; then
14668                 $ls -l /proc/curproc/file > reflect
14669                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14670                         echo "You have BSD-like /proc/curproc/file."
14671                         procselfexe='"/proc/curproc/file"'
14672                         val="$define"
14673                 fi
14674         fi
14675         ;;
14676 esac
14677 $rm -f reflect
14678 set d_procselfexe
14679 eval $setvar
14680
14681 : see whether the pthread_atfork exists
14682 $cat >try.c <<EOP
14683 #include <pthread.h>
14684 #include <stdio.h>
14685 int main() {
14686 #ifdef  PTHREAD_ATFORK
14687         pthread_atfork(NULL,NULL,NULL);
14688 #endif
14689 }
14690 EOP
14691
14692 : see if pthread_atfork exists
14693 set try -DPTHREAD_ATFORK
14694 if eval $compile; then
14695     val="$define"
14696 else
14697     val="$undef"
14698 fi
14699 case "$usethreads" in
14700 $define)
14701         case "$val" in
14702         $define) echo 'pthread_atfork found.' >&4        ;;
14703         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14704         esac
14705 esac
14706 set d_pthread_atfork
14707 eval $setvar
14708
14709 : see if pthread_attr_setscope exists
14710 set pthread_attr_setscope d_pthread_attr_setscope
14711 eval $inlibc
14712
14713
14714 : see whether the various POSIXish _yields exist
14715 $cat >try.c <<EOP
14716 #include <pthread.h>
14717 #include <stdio.h>
14718 int main() {
14719 #ifdef SCHED_YIELD
14720         sched_yield();
14721 #else
14722 #ifdef PTHREAD_YIELD
14723         pthread_yield();
14724 #else
14725 #ifdef PTHREAD_YIELD_NULL
14726         pthread_yield(NULL);
14727 #endif
14728 #endif
14729 #endif
14730 }
14731 EOP
14732 : see if sched_yield exists
14733 set try -DSCHED_YIELD
14734 if eval $compile; then
14735     val="$define"
14736     sched_yield='sched_yield()'
14737 else
14738     val="$undef"
14739 fi
14740 case "$usethreads" in
14741 $define)
14742         case "$val" in
14743         $define) echo 'sched_yield() found.' >&4        ;;
14744         *)       echo 'sched_yield() NOT found.' >&4    ;;
14745         esac
14746 esac
14747 set d_sched_yield
14748 eval $setvar
14749
14750 : see if pthread_yield exists
14751 set try -DPTHREAD_YIELD
14752 if eval $compile; then
14753     val="$define"
14754     case "$sched_yield" in
14755     '') sched_yield='pthread_yield()' ;;
14756     esac
14757 else
14758     set try -DPTHREAD_YIELD_NULL
14759     if eval $compile; then
14760         val="$define"
14761         case "$sched_yield" in
14762         '') sched_yield='pthread_yield(NULL)' ;;
14763         esac
14764     else
14765         val="$undef"
14766     fi
14767 fi
14768 case "$usethreads" in
14769 $define)
14770         case "$val" in
14771         $define) echo 'pthread_yield() found.' >&4      ;;
14772         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14773         esac
14774         ;;
14775 esac
14776 set d_pthread_yield
14777 eval $setvar
14778
14779 case "$sched_yield" in
14780 '') sched_yield=undef ;;
14781 esac
14782
14783 $rm -f try try.*
14784
14785 : see if random_r exists
14786 set random_r d_random_r
14787 eval $inlibc
14788 case "$d_random_r" in
14789 "$define")
14790         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14791         case "$d_random_r_proto:$usethreads" in
14792         ":define")      d_random_r_proto=define
14793                 set d_random_r_proto random_r $hdrs
14794                 eval $hasproto ;;
14795         *)      ;;
14796         esac
14797         case "$d_random_r_proto" in
14798         define)
14799         case "$random_r_proto" in
14800         ''|0) try='int random_r(int*, struct random_data*);'
14801         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14802         esac
14803         case "$random_r_proto" in
14804         ''|0) try='int random_r(long*, struct random_data*);'
14805         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14806         esac
14807         case "$random_r_proto" in
14808         ''|0) try='int random_r(struct random_data*, int32_t*);'
14809         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14810         esac
14811         case "$random_r_proto" in
14812         ''|0)   d_random_r=undef
14813                 random_r_proto=0
14814                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14815         * )     case "$random_r_proto" in
14816                 REENTRANT_PROTO*) ;;
14817                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14818                 esac
14819                 echo "Prototype: $try" ;;
14820         esac
14821         ;;
14822         *)      case "$usethreads" in
14823                 define) echo "random_r has no prototype, not using it." >&4 ;;
14824                 esac
14825                 d_random_r=undef
14826                 random_r_proto=0
14827                 ;;
14828         esac
14829         ;;
14830 *)      random_r_proto=0
14831         ;;
14832 esac
14833
14834 : see if readdir and friends exist
14835 set readdir d_readdir
14836 eval $inlibc
14837 set seekdir d_seekdir
14838 eval $inlibc
14839 set telldir d_telldir
14840 eval $inlibc
14841 set rewinddir d_rewinddir
14842 eval $inlibc
14843
14844 : see if readdir64_r exists
14845 set readdir64_r d_readdir64_r
14846 eval $inlibc
14847 case "$d_readdir64_r" in
14848 "$define")
14849         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14850         case "$d_readdir64_r_proto:$usethreads" in
14851         ":define")      d_readdir64_r_proto=define
14852                 set d_readdir64_r_proto readdir64_r $hdrs
14853                 eval $hasproto ;;
14854         *)      ;;
14855         esac
14856         case "$d_readdir64_r_proto" in
14857         define)
14858         case "$readdir64_r_proto" in
14859         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14860         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14861         esac
14862         case "$readdir64_r_proto" in
14863         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14864         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14865         esac
14866         case "$readdir64_r_proto" in
14867         ''|0)   d_readdir64_r=undef
14868                 readdir64_r_proto=0
14869                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14870         * )     case "$readdir64_r_proto" in
14871                 REENTRANT_PROTO*) ;;
14872                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14873                 esac
14874                 echo "Prototype: $try" ;;
14875         esac
14876         ;;
14877         *)      case "$usethreads" in
14878                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14879                 esac
14880                 d_readdir64_r=undef
14881                 readdir64_r_proto=0
14882                 ;;
14883         esac
14884         ;;
14885 *)      readdir64_r_proto=0
14886         ;;
14887 esac
14888
14889 : see if readdir_r exists
14890 set readdir_r d_readdir_r
14891 eval $inlibc
14892 case "$d_readdir_r" in
14893 "$define")
14894         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14895         case "$d_readdir_r_proto:$usethreads" in
14896         ":define")      d_readdir_r_proto=define
14897                 set d_readdir_r_proto readdir_r $hdrs
14898                 eval $hasproto ;;
14899         *)      ;;
14900         esac
14901         case "$d_readdir_r_proto" in
14902         define)
14903         case "$readdir_r_proto" in
14904         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14905         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14906         esac
14907         case "$readdir_r_proto" in
14908         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14909         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14910         esac
14911         case "$readdir_r_proto" in
14912         ''|0)   d_readdir_r=undef
14913                 readdir_r_proto=0
14914                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14915         * )     case "$readdir_r_proto" in
14916                 REENTRANT_PROTO*) ;;
14917                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14918                 esac
14919                 echo "Prototype: $try" ;;
14920         esac
14921         ;;
14922         *)      case "$usethreads" in
14923                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14924                 esac
14925                 d_readdir_r=undef
14926                 readdir_r_proto=0
14927                 ;;
14928         esac
14929         ;;
14930 *)      readdir_r_proto=0
14931         ;;
14932 esac
14933
14934 : see if readv exists
14935 set readv d_readv
14936 eval $inlibc
14937
14938 : see if recvmsg exists
14939 set recvmsg d_recvmsg
14940 eval $inlibc
14941
14942 : see if rename exists
14943 set rename d_rename
14944 eval $inlibc
14945
14946 : see if rmdir exists
14947 set rmdir d_rmdir
14948 eval $inlibc
14949
14950 : see if memory.h is available.
14951 val=''
14952 set memory.h val
14953 eval $inhdr
14954
14955 : See if it conflicts with string.h
14956 case "$val" in
14957 $define)
14958         case "$strings" in
14959         '') ;;
14960         *)
14961                 $cppstdin $cppflags $cppminus < $strings > mem.h
14962                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14963                         echo " "
14964                         echo "We won't be including <memory.h>."
14965                         val="$undef"
14966                 fi
14967                 $rm -f mem.h
14968                 ;;
14969         esac
14970 esac
14971 set i_memory
14972 eval $setvar
14973
14974 : can bcopy handle overlapping blocks?
14975 echo " "
14976 val="$undef"
14977 case "$d_memmove" in
14978 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14979 *)      case "$d_bcopy" in
14980         "$define")
14981                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14982                 $cat >try.c <<EOCP
14983 #$i_memory I_MEMORY
14984 #$i_stdlib I_STDLIB
14985 #$i_string I_STRING
14986 #$i_unistd I_UNISTD
14987 EOCP
14988         $cat >>try.c <<'EOCP'
14989 #include <stdio.h>
14990 #ifdef I_MEMORY
14991 #  include <memory.h>
14992 #endif
14993 #ifdef I_STDLIB
14994 #  include <stdlib.h>
14995 #endif
14996 #ifdef I_STRING
14997 #  include <string.h>
14998 #else
14999 #  include <strings.h>
15000 #endif
15001 #ifdef I_UNISTD
15002 #  include <unistd.h>  /* Needed for NetBSD */
15003 #endif
15004 int main()
15005 {
15006 char buf[128], abc[128];
15007 char *b;
15008 int len;
15009 int off;
15010 int align;
15011
15012 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15013    try to store the string in read-only memory. */
15014 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15015
15016 for (align = 7; align >= 0; align--) {
15017         for (len = 36; len; len--) {
15018                 b = buf+align;
15019                 bcopy(abc, b, len);
15020                 for (off = 1; off <= len; off++) {
15021                         bcopy(b, b+off, len);
15022                         bcopy(b+off, b, len);
15023                         if (bcmp(b, abc, len))
15024                                 exit(1);
15025                 }
15026         }
15027 }
15028 exit(0);
15029 }
15030 EOCP
15031                 set try
15032                 if eval $compile_ok; then
15033                         if ./try 2>/dev/null; then
15034                                 echo "Yes, it can."
15035                                 val="$define"
15036                         else
15037                                 echo "It can't, sorry."
15038                         fi
15039                 else
15040                         echo "(I can't compile the test program, so we'll assume not...)"
15041                 fi
15042                 ;;
15043         esac
15044         $rm -f try.* try core
15045         ;;
15046 esac
15047 set d_safebcpy
15048 eval $setvar
15049
15050 : can memcpy handle overlapping blocks?
15051 echo " "
15052 val="$undef"
15053 case "$d_memmove" in
15054 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15055 *)      case "$d_memcpy" in
15056         "$define")
15057                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15058                 $cat >try.c <<EOCP
15059 #$i_memory I_MEMORY
15060 #$i_stdlib I_STDLIB
15061 #$i_string I_STRING
15062 #$i_unistd I_UNISTD
15063 EOCP
15064         $cat >>try.c <<'EOCP'
15065 #include <stdio.h>
15066 #ifdef I_MEMORY
15067 #  include <memory.h>
15068 #endif
15069 #ifdef I_STDLIB
15070 #  include <stdlib.h>
15071 #endif
15072 #ifdef I_STRING
15073 #  include <string.h>
15074 #else
15075 #  include <strings.h>
15076 #endif
15077 #ifdef I_UNISTD
15078 #  include <unistd.h>  /* Needed for NetBSD */
15079 #endif
15080 int main()
15081 {
15082 char buf[128], abc[128];
15083 char *b;
15084 int len;
15085 int off;
15086 int align;
15087
15088 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15089    try to store the string in read-only memory. */
15090 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15091
15092 for (align = 7; align >= 0; align--) {
15093         for (len = 36; len; len--) {
15094                 b = buf+align;
15095                 memcpy(b, abc, len);
15096                 for (off = 1; off <= len; off++) {
15097                         memcpy(b+off, b, len);
15098                         memcpy(b, b+off, len);
15099                         if (memcmp(b, abc, len))
15100                                 exit(1);
15101                 }
15102         }
15103 }
15104 exit(0);
15105 }
15106 EOCP
15107                 set try
15108                 if eval $compile_ok; then
15109                         if ./try 2>/dev/null; then
15110                                 echo "Yes, it can."
15111                                 val="$define"
15112                         else
15113                                 echo "It can't, sorry."
15114                         fi
15115                 else
15116                         echo "(I can't compile the test program, so we'll assume not...)"
15117                 fi
15118                 ;;
15119         esac
15120         $rm -f try.* try core
15121         ;;
15122 esac
15123 set d_safemcpy
15124 eval $setvar
15125
15126 : can memcmp be trusted to compare relative magnitude?
15127 val="$undef"
15128 case "$d_memcmp" in
15129 "$define")
15130         echo " "
15131         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15132         $cat >try.c <<EOCP
15133 #$i_memory I_MEMORY
15134 #$i_stdlib I_STDLIB
15135 #$i_string I_STRING
15136 #$i_unistd I_UNISTD
15137 EOCP
15138         $cat >>try.c <<'EOCP'
15139 #include <stdio.h>
15140 #ifdef I_MEMORY
15141 #  include <memory.h>
15142 #endif
15143 #ifdef I_STDLIB
15144 #  include <stdlib.h>
15145 #endif
15146 #ifdef I_STRING
15147 #  include <string.h>
15148 #else
15149 #  include <strings.h>
15150 #endif
15151 #ifdef I_UNISTD
15152 #  include <unistd.h>  /* Needed for NetBSD */
15153 #endif
15154 int main()
15155 {
15156 char a = -1;
15157 char b = 0;
15158 if ((a < b) && memcmp(&a, &b, 1) < 0)
15159         exit(1);
15160 exit(0);
15161 }
15162 EOCP
15163         set try
15164         if eval $compile_ok; then
15165                 if $run ./try 2>/dev/null; then
15166                         echo "Yes, it can."
15167                         val="$define"
15168                 else
15169                         echo "No, it can't (it uses signed chars)."
15170                 fi
15171         else
15172                 echo "(I can't compile the test program, so we'll assume not...)"
15173         fi
15174         ;;
15175 esac
15176 $rm -f try.* try core
15177 set d_sanemcmp
15178 eval $setvar
15179
15180 : see if prototype for sbrk is available
15181 echo " "
15182 set d_sbrkproto sbrk $i_unistd unistd.h
15183 eval $hasproto
15184
15185 : see if select exists
15186 set select d_select
15187 eval $inlibc
15188
15189 : see if semctl exists
15190 set semctl d_semctl
15191 eval $inlibc
15192
15193 : see if semget exists
15194 set semget d_semget
15195 eval $inlibc
15196
15197 : see if semop exists
15198 set semop d_semop
15199 eval $inlibc
15200
15201 : see how much of the 'sem*(2)' library is present.
15202 h_sem=true
15203 echo " "
15204 case "$d_semctl$d_semget$d_semop" in
15205 *"$undef"*) h_sem=false;;
15206 esac
15207 case "$osname" in
15208 freebsd)
15209     case "`ipcs 2>&1`" in
15210     "SVID messages"*"not configured"*)
15211         echo "Your $osname does not have the sem*(2) configured." >&4
15212         h_sem=false
15213         val="$undef"
15214         set semctl d_semctl
15215         eval $setvar
15216         set semget d_semget
15217         eval $setvar
15218         set semop d_semop
15219         eval $setvar
15220         ;;
15221     esac
15222     ;;
15223 esac
15224 : we could also check for sys/ipc.h ...
15225 if $h_sem && $test `./findhdr sys/sem.h`; then
15226         echo "You have the full sem*(2) library." >&4
15227         val="$define"
15228 else
15229         echo "You don't have the full sem*(2) library." >&4
15230         val="$undef"
15231 fi
15232 set d_sem
15233 eval $setvar
15234
15235 : see whether sys/sem.h defines union semun
15236 echo " "
15237 $cat > try.c <<'END'
15238 #include <sys/types.h>
15239 #include <sys/ipc.h>
15240 #include <sys/sem.h>
15241 int main () { union semun semun; semun.buf = 0; }
15242 END
15243 set try
15244 if eval $compile; then
15245     echo "You have union semun in <sys/sem.h>." >&4
15246     val="$define"
15247 else
15248     echo "You do not have union semun in <sys/sem.h>." >&4
15249     val="$undef"
15250 fi
15251 $rm -f try try.c
15252 set d_union_semun
15253 eval $setvar
15254
15255 : see how to do semctl IPC_STAT
15256 case "$d_sem" in
15257 $define)
15258     echo " "
15259     $cat > try.h <<END
15260 #ifndef S_IRUSR
15261 #   ifdef S_IREAD
15262 #       define S_IRUSR S_IREAD
15263 #       define S_IWUSR S_IWRITE
15264 #       define S_IXUSR S_IEXEC
15265 #   else
15266 #       define S_IRUSR 0400
15267 #       define S_IWUSR 0200
15268 #       define S_IXUSR 0100
15269 #   endif
15270 #   define S_IRGRP (S_IRUSR>>3)
15271 #   define S_IWGRP (S_IWUSR>>3)
15272 #   define S_IXGRP (S_IXUSR>>3)
15273 #   define S_IROTH (S_IRUSR>>6)
15274 #   define S_IWOTH (S_IWUSR>>6)
15275 #   define S_IXOTH (S_IXUSR>>6)
15276 #endif
15277 #ifndef S_IRWXU
15278 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15279 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15280 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15281 #endif
15282 END
15283     : see whether semctl IPC_STAT can use union semun
15284     val="$undef"
15285     case "$d_semctl_semun" in
15286     '')
15287       $cat > try.c <<END
15288 #include <sys/types.h>
15289 #include <sys/ipc.h>
15290 #include <sys/sem.h>
15291 #include <sys/stat.h>
15292 #include <stdio.h>
15293 #include <errno.h>
15294 #include "try.h"
15295 #ifndef errno
15296 extern int errno;
15297 #endif
15298 #$d_union_semun HAS_UNION_SEMUN
15299 int main() {
15300     union semun
15301 #ifndef HAS_UNION_SEMUN
15302     {
15303         int val;
15304         struct semid_ds *buf;
15305         unsigned short *array;
15306     }
15307 #endif
15308     arg;
15309     int sem, st;
15310
15311 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15312     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15313     if (sem > -1) {
15314         struct semid_ds argbuf;
15315         arg.buf = &argbuf;
15316 #       ifdef IPC_STAT
15317         st = semctl(sem, 0, IPC_STAT, arg);
15318         if (st == 0)
15319             printf("semun\n");
15320         else
15321 #       endif /* IPC_STAT */
15322             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15323 #       ifdef IPC_RMID
15324         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15325 #       endif /* IPC_RMID */
15326             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15327     } else
15328 #endif /* IPC_PRIVATE && ... */
15329         printf("semget failed: errno = %d\n", errno);
15330   return 0;
15331 }
15332 END
15333       set try
15334       if eval $compile; then
15335           xxx=`$run ./try`
15336           case "$xxx" in
15337           semun) val="$define" ;;
15338           esac
15339       fi
15340       $rm -f try try.c
15341       ;;
15342     esac
15343     set d_semctl_semun
15344     eval $setvar
15345     case "$d_semctl_semun" in
15346     $define)
15347         echo "You can use union semun for semctl IPC_STAT." >&4
15348         also='also'
15349         ;;
15350     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15351         also=''
15352         ;;
15353     esac
15354
15355     : see whether semctl IPC_STAT can use struct semid_ds pointer
15356     val="$undef"
15357     case "$d_semctl_semid_ds" in
15358     '')
15359       $cat > try.c <<'END'
15360 #include <sys/types.h>
15361 #include <sys/ipc.h>
15362 #include <sys/sem.h>
15363 #include <sys/stat.h>
15364 #include "try.h"
15365 #include <stdio.h>
15366 #include <errno.h>
15367 #ifndef errno
15368 extern int errno;
15369 #endif
15370 int main() {
15371     struct semid_ds arg;
15372     int sem, st;
15373
15374 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15375     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15376     if (sem > -1) {
15377 #       ifdef IPC_STAT
15378         st = semctl(sem, 0, IPC_STAT, &arg);
15379         if (st == 0)
15380             printf("semid_ds\n");
15381         else
15382 #       endif /* IPC_STAT */
15383             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15384 #       ifdef IPC_RMID
15385         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15386 #       endif /* IPC_RMID */
15387             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15388     } else
15389 #endif /* IPC_PRIVATE && ... */
15390         printf("semget failed: errno = %d\n", errno);
15391
15392     return 0;
15393 }
15394 END
15395       set try
15396       if eval $compile; then
15397           xxx=`$run ./try`
15398           case "$xxx" in
15399           semid_ds) val="$define" ;;
15400           esac
15401       fi
15402       $rm -f try try.c
15403       ;;
15404     esac
15405     set d_semctl_semid_ds
15406     eval $setvar
15407     case "$d_semctl_semid_ds" in
15408     $define)
15409         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15410         ;;
15411     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15412         ;;
15413     esac
15414     $rm -f try.h
15415     ;;
15416 *)  val="$undef"
15417
15418     # We do not have the full sem*(2) library, so assume we can not
15419     # use either.
15420
15421     set d_semctl_semun
15422     eval $setvar
15423
15424     set d_semctl_semid_ds
15425     eval $setvar
15426     ;;
15427 esac
15428
15429 : see if sendmsg exists
15430 set sendmsg d_sendmsg
15431 eval $inlibc
15432
15433 : see if setegid exists
15434 set setegid d_setegid
15435 eval $inlibc
15436
15437 : see if seteuid exists
15438 set seteuid d_seteuid
15439 eval $inlibc
15440
15441 : see if setgrent exists
15442 set setgrent d_setgrent
15443 eval $inlibc
15444
15445 : see if setgrent_r exists
15446 set setgrent_r d_setgrent_r
15447 eval $inlibc
15448 case "$d_setgrent_r" in
15449 "$define")
15450         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15451         case "$d_setgrent_r_proto:$usethreads" in
15452         ":define")      d_setgrent_r_proto=define
15453                 set d_setgrent_r_proto setgrent_r $hdrs
15454                 eval $hasproto ;;
15455         *)      ;;
15456         esac
15457         case "$d_setgrent_r_proto" in
15458         define)
15459         case "$setgrent_r_proto" in
15460         ''|0) try='int setgrent_r(FILE**);'
15461         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15462         esac
15463         case "$setgrent_r_proto" in
15464         ''|0) try='void setgrent_r(FILE**);'
15465         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15466         esac
15467         case "$setgrent_r_proto" in
15468         ''|0)   d_setgrent_r=undef
15469                 setgrent_r_proto=0
15470                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15471         * )     case "$setgrent_r_proto" in
15472                 REENTRANT_PROTO*) ;;
15473                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15474                 esac
15475                 echo "Prototype: $try" ;;
15476         esac
15477         ;;
15478         *)      case "$usethreads" in
15479                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15480                 esac
15481                 d_setgrent_r=undef
15482                 setgrent_r_proto=0
15483                 ;;
15484         esac
15485         ;;
15486 *)      setgrent_r_proto=0
15487         ;;
15488 esac
15489
15490 : see if sethostent exists
15491 set sethostent d_sethent
15492 eval $inlibc
15493
15494 : see if sethostent_r exists
15495 set sethostent_r d_sethostent_r
15496 eval $inlibc
15497 case "$d_sethostent_r" in
15498 "$define")
15499         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15500         case "$d_sethostent_r_proto:$usethreads" in
15501         ":define")      d_sethostent_r_proto=define
15502                 set d_sethostent_r_proto sethostent_r $hdrs
15503                 eval $hasproto ;;
15504         *)      ;;
15505         esac
15506         case "$d_sethostent_r_proto" in
15507         define)
15508         case "$sethostent_r_proto" in
15509         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15510         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15511         esac
15512         case "$sethostent_r_proto" in
15513         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15514         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15515         esac
15516         case "$sethostent_r_proto" in
15517         ''|0)   d_sethostent_r=undef
15518                 sethostent_r_proto=0
15519                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15520         * )     case "$sethostent_r_proto" in
15521                 REENTRANT_PROTO*) ;;
15522                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15523                 esac
15524                 echo "Prototype: $try" ;;
15525         esac
15526         ;;
15527         *)      case "$usethreads" in
15528                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15529                 esac
15530                 d_sethostent_r=undef
15531                 sethostent_r_proto=0
15532                 ;;
15533         esac
15534         ;;
15535 *)      sethostent_r_proto=0
15536         ;;
15537 esac
15538
15539 : see if setitimer exists
15540 set setitimer d_setitimer
15541 eval $inlibc
15542
15543 : see if setlinebuf exists
15544 set setlinebuf d_setlinebuf
15545 eval $inlibc
15546
15547 : see if setlocale exists
15548 set setlocale d_setlocale
15549 eval $inlibc
15550
15551 : see if locale.h is available
15552 set locale.h i_locale
15553 eval $inhdr
15554
15555 : see if setlocale_r exists
15556 set setlocale_r d_setlocale_r
15557 eval $inlibc
15558 case "$d_setlocale_r" in
15559 "$define")
15560         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15561         case "$d_setlocale_r_proto:$usethreads" in
15562         ":define")      d_setlocale_r_proto=define
15563                 set d_setlocale_r_proto setlocale_r $hdrs
15564                 eval $hasproto ;;
15565         *)      ;;
15566         esac
15567         case "$d_setlocale_r_proto" in
15568         define)
15569         case "$setlocale_r_proto" in
15570         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15571         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15572         esac
15573         case "$setlocale_r_proto" in
15574         ''|0)   d_setlocale_r=undef
15575                 setlocale_r_proto=0
15576                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15577         * )     case "$setlocale_r_proto" in
15578                 REENTRANT_PROTO*) ;;
15579                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15580                 esac
15581                 echo "Prototype: $try" ;;
15582         esac
15583         ;;
15584         *)      case "$usethreads" in
15585                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15586                 esac
15587                 d_setlocale_r=undef
15588                 setlocale_r_proto=0
15589                 ;;
15590         esac
15591         ;;
15592 *)      setlocale_r_proto=0
15593         ;;
15594 esac
15595
15596 : see if setnetent exists
15597 set setnetent d_setnent
15598 eval $inlibc
15599
15600 : see if setnetent_r exists
15601 set setnetent_r d_setnetent_r
15602 eval $inlibc
15603 case "$d_setnetent_r" in
15604 "$define")
15605         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15606         case "$d_setnetent_r_proto:$usethreads" in
15607         ":define")      d_setnetent_r_proto=define
15608                 set d_setnetent_r_proto setnetent_r $hdrs
15609                 eval $hasproto ;;
15610         *)      ;;
15611         esac
15612         case "$d_setnetent_r_proto" in
15613         define)
15614         case "$setnetent_r_proto" in
15615         ''|0) try='int setnetent_r(int, struct netent_data*);'
15616         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15617         esac
15618         case "$setnetent_r_proto" in
15619         ''|0) try='void setnetent_r(int, struct netent_data*);'
15620         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15621         esac
15622         case "$setnetent_r_proto" in
15623         ''|0)   d_setnetent_r=undef
15624                 setnetent_r_proto=0
15625                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15626         * )     case "$setnetent_r_proto" in
15627                 REENTRANT_PROTO*) ;;
15628                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15629                 esac
15630                 echo "Prototype: $try" ;;
15631         esac
15632         ;;
15633         *)      case "$usethreads" in
15634                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15635                 esac
15636                 d_setnetent_r=undef
15637                 setnetent_r_proto=0
15638                 ;;
15639         esac
15640         ;;
15641 *)      setnetent_r_proto=0
15642         ;;
15643 esac
15644
15645 : see if setprotoent exists
15646 set setprotoent d_setpent
15647 eval $inlibc
15648
15649 : see if setpgid exists
15650 set setpgid d_setpgid
15651 eval $inlibc
15652
15653 : see if setpgrp2 exists
15654 set setpgrp2 d_setpgrp2
15655 eval $inlibc
15656
15657 : see if setpriority exists
15658 set setpriority d_setprior
15659 eval $inlibc
15660
15661 : see if setproctitle exists
15662 set setproctitle d_setproctitle
15663 eval $inlibc
15664
15665 : see if setprotoent_r exists
15666 set setprotoent_r d_setprotoent_r
15667 eval $inlibc
15668 case "$d_setprotoent_r" in
15669 "$define")
15670         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15671         case "$d_setprotoent_r_proto:$usethreads" in
15672         ":define")      d_setprotoent_r_proto=define
15673                 set d_setprotoent_r_proto setprotoent_r $hdrs
15674                 eval $hasproto ;;
15675         *)      ;;
15676         esac
15677         case "$d_setprotoent_r_proto" in
15678         define)
15679         case "$setprotoent_r_proto" in
15680         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15681         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15682         esac
15683         case "$setprotoent_r_proto" in
15684         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15685         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15686         esac
15687         case "$setprotoent_r_proto" in
15688         ''|0)   d_setprotoent_r=undef
15689                 setprotoent_r_proto=0
15690                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15691         * )     case "$setprotoent_r_proto" in
15692                 REENTRANT_PROTO*) ;;
15693                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15694                 esac
15695                 echo "Prototype: $try" ;;
15696         esac
15697         ;;
15698         *)      case "$usethreads" in
15699                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15700                 esac
15701                 d_setprotoent_r=undef
15702                 setprotoent_r_proto=0
15703                 ;;
15704         esac
15705         ;;
15706 *)      setprotoent_r_proto=0
15707         ;;
15708 esac
15709
15710 : see if setpwent exists
15711 set setpwent d_setpwent
15712 eval $inlibc
15713
15714 : see if setpwent_r exists
15715 set setpwent_r d_setpwent_r
15716 eval $inlibc
15717 case "$d_setpwent_r" in
15718 "$define")
15719         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15720         case "$d_setpwent_r_proto:$usethreads" in
15721         ":define")      d_setpwent_r_proto=define
15722                 set d_setpwent_r_proto setpwent_r $hdrs
15723                 eval $hasproto ;;
15724         *)      ;;
15725         esac
15726         case "$d_setpwent_r_proto" in
15727         define)
15728         case "$setpwent_r_proto" in
15729         ''|0) try='int setpwent_r(FILE**);'
15730         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15731         esac
15732         case "$setpwent_r_proto" in
15733         ''|0) try='void setpwent_r(FILE**);'
15734         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15735         esac
15736         case "$setpwent_r_proto" in
15737         ''|0)   d_setpwent_r=undef
15738                 setpwent_r_proto=0
15739                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15740         * )     case "$setpwent_r_proto" in
15741                 REENTRANT_PROTO*) ;;
15742                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15743                 esac
15744                 echo "Prototype: $try" ;;
15745         esac
15746         ;;
15747         *)      case "$usethreads" in
15748                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15749                 esac
15750                 d_setpwent_r=undef
15751                 setpwent_r_proto=0
15752                 ;;
15753         esac
15754         ;;
15755 *)      setpwent_r_proto=0
15756         ;;
15757 esac
15758
15759 : see if setregid exists
15760 set setregid d_setregid
15761 eval $inlibc
15762 set setresgid d_setresgid
15763 eval $inlibc
15764
15765 : see if setreuid exists
15766 set setreuid d_setreuid
15767 eval $inlibc
15768 set setresuid d_setresuid
15769 eval $inlibc
15770
15771 : see if setrgid exists
15772 set setrgid d_setrgid
15773 eval $inlibc
15774
15775 : see if setruid exists
15776 set setruid d_setruid
15777 eval $inlibc
15778
15779 : see if setservent exists
15780 set setservent d_setsent
15781 eval $inlibc
15782
15783 : see if setservent_r exists
15784 set setservent_r d_setservent_r
15785 eval $inlibc
15786 case "$d_setservent_r" in
15787 "$define")
15788         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15789         case "$d_setservent_r_proto:$usethreads" in
15790         ":define")      d_setservent_r_proto=define
15791                 set d_setservent_r_proto setservent_r $hdrs
15792                 eval $hasproto ;;
15793         *)      ;;
15794         esac
15795         case "$d_setservent_r_proto" in
15796         define)
15797         case "$setservent_r_proto" in
15798         ''|0) try='int setservent_r(int, struct servent_data*);'
15799         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15800         esac
15801         case "$setservent_r_proto" in
15802         ''|0) try='void setservent_r(int, struct servent_data*);'
15803         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15804         esac
15805         case "$setservent_r_proto" in
15806         ''|0)   d_setservent_r=undef
15807                 setservent_r_proto=0
15808                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15809         * )     case "$setservent_r_proto" in
15810                 REENTRANT_PROTO*) ;;
15811                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15812                 esac
15813                 echo "Prototype: $try" ;;
15814         esac
15815         ;;
15816         *)      case "$usethreads" in
15817                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15818                 esac
15819                 d_setservent_r=undef
15820                 setservent_r_proto=0
15821                 ;;
15822         esac
15823         ;;
15824 *)      setservent_r_proto=0
15825         ;;
15826 esac
15827
15828 : see if setsid exists
15829 set setsid d_setsid
15830 eval $inlibc
15831
15832 : see if setvbuf exists
15833 set setvbuf d_setvbuf
15834 eval $inlibc
15835
15836 : see if sfio.h is available
15837 set sfio.h i_sfio
15838 eval $inhdr
15839
15840
15841 : see if sfio library is available
15842 case "$i_sfio" in
15843 $define)
15844         val=''
15845         set sfreserve val
15846         eval $inlibc
15847         ;;
15848 *)
15849         val="$undef"
15850         ;;
15851 esac
15852 : Ok, but do we want to use it.
15853 case "$val" in
15854 $define)
15855         case "$usesfio" in
15856         true|$define|[yY]*) dflt='y';;
15857         *) dflt='n';;
15858         esac
15859         echo "$package can use the sfio library, but it is experimental."
15860         case "$useperlio" in
15861         "$undef")
15862             echo "For sfio also the PerlIO abstraction layer is needed."
15863             echo "Earlier you said you wouldn't want that."
15864             ;;
15865         esac
15866         rp="You seem to have sfio available, do you want to try using it?"
15867         . ./myread
15868         case "$ans" in
15869         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15870                 useperlio="$define"
15871                 val="$define"
15872                 ;;
15873         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15874                 val="$undef"
15875                 ;;
15876         esac
15877         ;;
15878 *)      case "$usesfio" in
15879         true|$define|[yY]*)
15880                 echo "Sorry, cannot find sfio on this machine." >&4
15881                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15882                 val="$undef"
15883                 ;;
15884         esac
15885         ;;
15886 esac
15887 set d_sfio
15888 eval $setvar
15889 case "$d_sfio" in
15890 $define) usesfio='true';;
15891 *) usesfio='false';;
15892 esac
15893 case "$d_sfio" in
15894 $define) ;;
15895 *)      : Remove sfio from list of libraries to use
15896         case "$libs" in
15897         *-lsfio*)
15898                 echo "Removing unneeded -lsfio from library list" >&4
15899                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15900                 shift
15901                 libs="$*"
15902                 echo "libs = $libs" >&4
15903                 ;;
15904         esac
15905 ;;
15906 esac
15907
15908
15909 : see if shmctl exists
15910 set shmctl d_shmctl
15911 eval $inlibc
15912
15913 : see if shmget exists
15914 set shmget d_shmget
15915 eval $inlibc
15916
15917 : see if shmat exists
15918 set shmat d_shmat
15919 eval $inlibc
15920 : see what shmat returns
15921 case "$d_shmat" in
15922 "$define")
15923         $cat >shmat.c <<'END'
15924 #include <sys/shm.h>
15925 void *shmat();
15926 END
15927         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15928                 shmattype='void *'
15929         else
15930                 shmattype='char *'
15931         fi
15932         echo "and it returns ($shmattype)." >&4
15933         : see if a prototype for shmat is available
15934         xxx=`./findhdr sys/shm.h`
15935         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15936         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15937                 val="$define"
15938         else
15939                 val="$undef"
15940         fi
15941         $rm -f shmat.[co]
15942         ;;
15943 *)
15944         val="$undef"
15945         ;;
15946 esac
15947 set d_shmatprototype
15948 eval $setvar
15949
15950 : see if shmdt exists
15951 set shmdt d_shmdt
15952 eval $inlibc
15953
15954 : see how much of the 'shm*(2)' library is present.
15955 h_shm=true
15956 echo " "
15957 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15958 *"$undef"*) h_shm=false;;
15959 esac
15960 case "$osname" in
15961 freebsd)
15962     case "`ipcs 2>&1`" in
15963     "SVID shared memory"*"not configured"*)
15964         echo "Your $osname does not have the shm*(2) configured." >&4
15965         h_shm=false
15966         val="$undef"
15967         set shmctl d_shmctl
15968         evat $setvar
15969         set shmget d_shmget
15970         evat $setvar
15971         set shmat d_shmat
15972         evat $setvar
15973         set shmdt d_shmdt
15974         evat $setvar
15975         ;;
15976     esac
15977     ;;
15978 esac
15979 : we could also check for sys/ipc.h ...
15980 if $h_shm && $test `./findhdr sys/shm.h`; then
15981         echo "You have the full shm*(2) library." >&4
15982         val="$define"
15983 else
15984         echo "You don't have the full shm*(2) library." >&4
15985         val="$undef"
15986 fi
15987 set d_shm
15988 eval $setvar
15989
15990 echo " "
15991 : see if we have sigaction
15992 if set sigaction val -f d_sigaction; eval $csym; $val; then
15993         echo 'sigaction() found.' >&4
15994         $cat > try.c <<EOP
15995 #include <stdio.h>
15996 #include <sys/types.h>
15997 #include <signal.h>
15998 #$i_stdlib I_STDLIB
15999 #ifdef I_STDLIB
16000 #include <stdlib.h>
16001 #endif
16002 int main()
16003 {
16004     struct sigaction act, oact;
16005     act.sa_flags = 0;
16006     oact.sa_handler = 0;
16007     /* so that act and oact are used */
16008     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16009 }
16010 EOP
16011         set try
16012         if eval $compile_ok; then
16013                 val="$define"
16014         else
16015                 echo "But you don't seem to have a useable struct sigaction." >&4
16016                 val="$undef"
16017         fi
16018 else
16019         echo 'sigaction NOT found.' >&4
16020         val="$undef"
16021 fi
16022 set d_sigaction; eval $setvar
16023 $rm -f try try$_o try.c
16024
16025 : see if sigprocmask exists
16026 set sigprocmask d_sigprocmask
16027 eval $inlibc
16028
16029 : see if sigsetjmp exists
16030 echo " "
16031 case "$d_sigsetjmp" in
16032 '')
16033         $cat >try.c <<EOP
16034 #include <setjmp.h>
16035 #$i_stdlib I_STDLIB
16036 #ifdef I_STDLIB
16037 #include <stdlib.h>
16038 #endif
16039 sigjmp_buf env;
16040 int set = 1;
16041 int main()
16042 {
16043         if (sigsetjmp(env,1))
16044                 exit(set);
16045         set = 0;
16046         siglongjmp(env, 1);
16047         exit(1);
16048 }
16049 EOP
16050         set try
16051         if eval $compile; then
16052                 if $run ./try >/dev/null 2>&1; then
16053                         echo "POSIX sigsetjmp found." >&4
16054                         val="$define"
16055                 else
16056                         $cat >&4 <<EOM
16057 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16058 I'll ignore them.
16059 EOM
16060                         val="$undef"
16061                 fi
16062         else
16063                 echo "sigsetjmp not found." >&4
16064                 val="$undef"
16065         fi
16066         ;;
16067 *) val="$d_sigsetjmp"
16068         case "$d_sigsetjmp" in
16069         $define) echo "POSIX sigsetjmp found." >&4;;
16070         $undef) echo "sigsetjmp not found." >&4;;
16071         esac
16072         ;;
16073 esac
16074 set d_sigsetjmp
16075 eval $setvar
16076 $rm -f try.c try
16077
16078 : see if sockatmark exists
16079 set sockatmark d_sockatmark
16080 eval $inlibc
16081
16082 : see if prototype for sockatmark is available
16083 echo " "
16084 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16085 eval $hasproto
16086
16087 : see if socks5_init exists
16088 set socks5_init d_socks5_init
16089 eval $inlibc
16090
16091 : see if srand48_r exists
16092 set srand48_r d_srand48_r
16093 eval $inlibc
16094 case "$d_srand48_r" in
16095 "$define")
16096         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16097         case "$d_srand48_r_proto:$usethreads" in
16098         ":define")      d_srand48_r_proto=define
16099                 set d_srand48_r_proto srand48_r $hdrs
16100                 eval $hasproto ;;
16101         *)      ;;
16102         esac
16103         case "$d_srand48_r_proto" in
16104         define)
16105         case "$srand48_r_proto" in
16106         ''|0) try='int srand48_r(long, struct drand48_data*);'
16107         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16108         esac
16109         case "$srand48_r_proto" in
16110         ''|0)   d_srand48_r=undef
16111                 srand48_r_proto=0
16112                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16113         * )     case "$srand48_r_proto" in
16114                 REENTRANT_PROTO*) ;;
16115                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16116                 esac
16117                 echo "Prototype: $try" ;;
16118         esac
16119         ;;
16120         *)      case "$usethreads" in
16121                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16122                 esac
16123                 d_srand48_r=undef
16124                 srand48_r_proto=0
16125                 ;;
16126         esac
16127         ;;
16128 *)      srand48_r_proto=0
16129         ;;
16130 esac
16131
16132 : see if srandom_r exists
16133 set srandom_r d_srandom_r
16134 eval $inlibc
16135 case "$d_srandom_r" in
16136 "$define")
16137         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16138         case "$d_srandom_r_proto:$usethreads" in
16139         ":define")      d_srandom_r_proto=define
16140                 set d_srandom_r_proto srandom_r $hdrs
16141                 eval $hasproto ;;
16142         *)      ;;
16143         esac
16144         case "$d_srandom_r_proto" in
16145         define)
16146         case "$srandom_r_proto" in
16147         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16148         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16149         esac
16150         case "$srandom_r_proto" in
16151         ''|0)   d_srandom_r=undef
16152                 srandom_r_proto=0
16153                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16154         * )     case "$srandom_r_proto" in
16155                 REENTRANT_PROTO*) ;;
16156                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16157                 esac
16158                 echo "Prototype: $try" ;;
16159         esac
16160         ;;
16161         *)      case "$usethreads" in
16162                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16163                 esac
16164                 d_srandom_r=undef
16165                 srandom_r_proto=0
16166                 ;;
16167         esac
16168         ;;
16169 *)      srandom_r_proto=0
16170         ;;
16171 esac
16172
16173 : see if prototype for setresgid is available
16174 echo " "
16175 set d_sresgproto setresgid $i_unistd unistd.h
16176 eval $hasproto
16177
16178 : see if prototype for setresuid is available
16179 echo " "
16180 set d_sresuproto setresuid $i_unistd unistd.h
16181 eval $hasproto
16182
16183 : see if sys/stat.h is available
16184 set sys/stat.h i_sysstat
16185 eval $inhdr
16186
16187
16188 : see if stat knows about block sizes
16189 echo " "
16190 echo "Checking to see if your struct stat has st_blocks field..." >&4
16191 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16192 eval $hasfield
16193
16194
16195 : see if this is a sys/vfs.h system
16196 set sys/vfs.h i_sysvfs
16197 eval $inhdr
16198
16199
16200 : see if this is a sys/statfs.h system
16201 set sys/statfs.h i_sysstatfs
16202 eval $inhdr
16203
16204
16205 echo " "
16206 echo "Checking to see if your system supports struct statfs..." >&4
16207 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
16208 eval $hasstruct
16209 case "$d_statfs_s" in
16210 "$define")      echo "Yes, it does."   ;;
16211 *)              echo "No, it doesn't." ;;
16212 esac
16213
16214
16215
16216 : see if struct statfs knows about f_flags
16217 case "$d_statfs_s" in
16218 define) 
16219         echo " "
16220         echo "Checking to see if your struct statfs has f_flags field..." >&4
16221         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
16222         eval $hasfield
16223         ;;
16224 *)      val="$undef"
16225         set d_statfs_f_flags
16226         eval $setvar
16227         ;;
16228 esac
16229 case "$d_statfs_f_flags" in
16230 "$define")      echo "Yes, it does."   ;;
16231 *)              echo "No, it doesn't." ;;
16232 esac
16233
16234 $cat >&4 <<EOM
16235 Checking how to access stdio streams by file descriptor number...
16236 EOM
16237 case "$stdio_stream_array" in
16238 '')     $cat >try.c <<EOCP
16239 #include <stdio.h>
16240 int main() {
16241   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16242     printf("yes\n");
16243 }
16244 EOCP
16245         for s in _iob __iob __sF
16246         do
16247                 set try -DSTDIO_STREAM_ARRAY=$s
16248                 if eval $compile; then
16249                         case "`$run ./try`" in
16250                         yes)    stdio_stream_array=$s; break ;;
16251                         esac
16252                 fi
16253         done
16254         $rm -f try.* try$exe_ext
16255 esac
16256 case "$stdio_stream_array" in
16257 '')     $cat >&4 <<EOM
16258 I can't figure out how to access stdio streams by file descriptor number.
16259 EOM
16260         d_stdio_stream_array="$undef"
16261         ;;
16262 *)      $cat >&4 <<EOM
16263 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16264 EOM
16265         d_stdio_stream_array="$define"
16266         ;;
16267 esac
16268
16269 : see if strcoll exists
16270 set strcoll d_strcoll
16271 eval $inlibc
16272
16273 : check for structure copying
16274 echo " "
16275 echo "Checking to see if your C compiler can copy structs..." >&4
16276 $cat >try.c <<'EOCP'
16277 int main()
16278 {
16279         struct blurfl {
16280                 int dyick;
16281         } foo, bar;
16282
16283         foo = bar;
16284 }
16285 EOCP
16286 if $cc -c try.c >/dev/null 2>&1 ; then
16287         val="$define"
16288         echo "Yup, it can."
16289 else
16290         val="$undef"
16291         echo "Nope, it can't."
16292 fi
16293 set d_strctcpy
16294 eval $setvar
16295 $rm -f try.*
16296
16297 : see if strerror and/or sys_errlist[] exist
16298 echo " "
16299 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16300     if set strerror val -f d_strerror; eval $csym; $val; then
16301                 echo 'strerror() found.' >&4
16302                 d_strerror="$define"
16303                 d_strerrm='strerror(e)'
16304                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16305                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16306                         d_syserrlst="$define"
16307                 else
16308                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16309                         d_syserrlst="$undef"
16310                 fi
16311     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16312                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16313                 echo 'strerror() found in string header.' >&4
16314                 d_strerror="$define"
16315                 d_strerrm='strerror(e)'
16316                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16317                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16318                                 d_syserrlst="$define"
16319                 else
16320                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16321                         d_syserrlst="$undef"
16322                 fi
16323     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16324                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16325                 d_strerror="$undef"
16326                 d_syserrlst="$define"
16327                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16328     else
16329                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16330                 d_strerror="$undef"
16331                 d_syserrlst="$undef"
16332                 d_strerrm='"unknown"'
16333     fi
16334 fi
16335
16336 : see if strerror_r exists
16337 set strerror_r d_strerror_r
16338 eval $inlibc
16339 case "$d_strerror_r" in
16340 "$define")
16341         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16342         case "$d_strerror_r_proto:$usethreads" in
16343         ":define")      d_strerror_r_proto=define
16344                 set d_strerror_r_proto strerror_r $hdrs
16345                 eval $hasproto ;;
16346         *)      ;;
16347         esac
16348         case "$d_strerror_r_proto" in
16349         define)
16350         case "$strerror_r_proto" in
16351         ''|0) try='int strerror_r(int, char*, size_t);'
16352         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16353         esac
16354         case "$strerror_r_proto" in
16355         ''|0) try='int strerror_r(int, char*, int);'
16356         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16357         esac
16358         case "$strerror_r_proto" in
16359         ''|0) try='char* strerror_r(int, char*, size_t);'
16360         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16361         esac
16362         case "$strerror_r_proto" in
16363         ''|0)   d_strerror_r=undef
16364                 strerror_r_proto=0
16365                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16366         * )     case "$strerror_r_proto" in
16367                 REENTRANT_PROTO*) ;;
16368                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16369                 esac
16370                 echo "Prototype: $try" ;;
16371         esac
16372         ;;
16373         *)      case "$usethreads" in
16374                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16375                 esac
16376                 d_strerror_r=undef
16377                 strerror_r_proto=0
16378                 ;;
16379         esac
16380         ;;
16381 *)      strerror_r_proto=0
16382         ;;
16383 esac
16384
16385 : see if strftime exists
16386 set strftime d_strftime
16387 eval $inlibc
16388
16389 : see if strtod exists
16390 set strtod d_strtod
16391 eval $inlibc
16392
16393 : see if strtol exists
16394 set strtol d_strtol
16395 eval $inlibc
16396
16397 : see if strtold exists
16398 set strtold d_strtold
16399 eval $inlibc
16400
16401 : see if strtoll exists
16402 set strtoll d_strtoll
16403 eval $inlibc
16404
16405 case "$d_longlong-$d_strtoll" in
16406 "$define-$define")
16407         $cat <<EOM
16408 Checking whether your strtoll() works okay...
16409 EOM
16410         $cat >try.c <<'EOCP'
16411 #include <errno.h>
16412 #ifdef __hpux
16413 #define strtoll __strtoll
16414 #endif
16415 #ifdef __EMX__
16416 #define strtoll _strtoll
16417 #endif
16418 #include <stdio.h>
16419 extern long long int strtoll(char *s, char **, int); 
16420 static int bad = 0;
16421 int check(char *s, long long ell, int een) {
16422         long long gll;
16423         errno = 0;
16424         gll = strtoll(s, 0, 10);
16425         if (!((gll == ell) && (errno == een)))
16426                 bad++;
16427 }
16428 int main() {
16429         check(" 1",                                      1LL, 0);
16430         check(" 0",                                      0LL, 0);
16431         check("-1",                                     -1LL, 0);
16432         check("-9223372036854775808", -9223372036854775808LL, 0);
16433         check("-9223372036854775808", -9223372036854775808LL, 0);
16434         check(" 9223372036854775807",  9223372036854775807LL, 0);
16435         check("-9223372036854775808", -9223372036854775808LL, 0);
16436         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16437         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16438         if (!bad)
16439                 printf("ok\n");
16440 }
16441 EOCP
16442         set try
16443         if eval $compile; then
16444                 yyy=`$run ./try`
16445                 case "$yyy" in
16446                 ok) echo "Your strtoll() seems to be working okay." ;;
16447                 *) cat <<EOM >&4
16448 Your strtoll() doesn't seem to be working okay.
16449 EOM
16450                    d_strtoll="$undef"
16451                    ;;
16452                 esac
16453         else
16454                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16455                 d_strtoll="$undef"
16456         fi
16457         ;;
16458 esac
16459
16460 : see if strtoq exists
16461 set strtoq d_strtoq
16462 eval $inlibc
16463
16464 : see if strtoul exists
16465 set strtoul d_strtoul
16466 eval $inlibc
16467
16468 case "$d_strtoul" in
16469 "$define")
16470         $cat <<EOM
16471 Checking whether your strtoul() works okay...
16472 EOM
16473         $cat >try.c <<'EOCP'
16474 #include <errno.h>
16475 #include <stdio.h>
16476 extern unsigned long int strtoul(char *s, char **, int); 
16477 static int bad = 0;
16478 void check(char *s, unsigned long eul, int een) {
16479         unsigned long gul;
16480         errno = 0;
16481         gul = strtoul(s, 0, 10);
16482         if (!((gul == eul) && (errno == een)))
16483                 bad++;
16484 }
16485 int main() {
16486         check(" 1", 1L, 0);
16487         check(" 0", 0L, 0);
16488 EOCP
16489         case "$longsize" in
16490         8)
16491             $cat >>try.c <<'EOCP'
16492         check("18446744073709551615", 18446744073709551615UL, 0);
16493         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16494 #if 0 /* strtoul() for /^-/ strings is undefined. */
16495         check("-1", 18446744073709551615UL, 0);
16496         check("-18446744073709551614", 2, 0);
16497         check("-18446744073709551615", 1, 0);
16498         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16499         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16500 #endif
16501 EOCP
16502                 ;;
16503         4)
16504                     $cat >>try.c <<'EOCP'
16505         check("4294967295", 4294967295UL, 0);
16506         check("4294967296", 4294967295UL, ERANGE);
16507 #if 0 /* strtoul() for /^-/ strings is undefined. */
16508         check("-1", 4294967295UL, 0);
16509         check("-4294967294", 2, 0);
16510         check("-4294967295", 1, 0);
16511         check("-4294967296", 4294967295UL, ERANGE);
16512         check("-4294967297", 4294967295UL, ERANGE);
16513 #endif
16514 EOCP
16515                 ;;
16516         *)
16517 : Should we write these tests to be more portable by sprintf-ing
16518 : ~0 and then manipulating that char string as input for strtol?
16519                 ;;
16520         esac
16521         $cat >>try.c <<'EOCP'
16522         if (!bad)
16523                 printf("ok\n");
16524         return 0;
16525 }
16526 EOCP
16527         set try
16528         if eval $compile; then
16529                 case "`$run ./try`" in
16530                 ok) echo "Your strtoul() seems to be working okay." ;;
16531                 *) cat <<EOM >&4
16532 Your strtoul() doesn't seem to be working okay.
16533 EOM
16534                    d_strtoul="$undef"
16535                    ;;
16536                 esac
16537         fi
16538         ;;
16539 esac
16540
16541 : see if strtoull exists
16542 set strtoull d_strtoull
16543 eval $inlibc
16544
16545 case "$d_longlong-$d_strtoull" in
16546 "$define-$define")
16547         $cat <<EOM
16548 Checking whether your strtoull() works okay...
16549 EOM
16550         $cat >try.c <<'EOCP'
16551 #include <errno.h>
16552 #ifdef __hpux
16553 #define strtoull __strtoull
16554 #endif
16555 #include <stdio.h>
16556 extern unsigned long long int strtoull(char *s, char **, int); 
16557 static int bad = 0;
16558 int check(char *s, long long eull, int een) {
16559         long long gull;
16560         errno = 0;
16561         gull = strtoull(s, 0, 10);
16562         if (!((gull == eull) && (errno == een)))
16563                 bad++;
16564 }
16565 int main() {
16566         check(" 1",                                        1LL, 0);
16567         check(" 0",                                        0LL, 0);
16568         check("18446744073709551615",  18446744073709551615ULL, 0);
16569         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16570 #if 0 /* strtoull() for /^-/ strings is undefined. */
16571         check("-1",                    18446744073709551615ULL, 0);
16572         check("-18446744073709551614",                     2LL, 0);
16573         check("-18446744073709551615",                     1LL, 0);
16574         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16575         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16576 #endif
16577         if (!bad)
16578                 printf("ok\n");
16579 }
16580 EOCP
16581         set try
16582         if eval $compile; then
16583                 case "`$run ./try`" in
16584                 ok) echo "Your strtoull() seems to be working okay." ;;
16585                 *) cat <<EOM >&4
16586 Your strtoull() doesn't seem to be working okay.
16587 EOM
16588                    d_strtoull="$undef"
16589                    ;;
16590                 esac
16591         fi
16592         ;;
16593 esac
16594
16595 : see if strtouq exists
16596 set strtouq d_strtouq
16597 eval $inlibc
16598
16599 case "$d_strtouq" in
16600 "$define")
16601         $cat <<EOM
16602 Checking whether your strtouq() works okay...
16603 EOM
16604         $cat >try.c <<'EOCP'
16605 #include <errno.h>
16606 #include <stdio.h>
16607 extern unsigned long long int strtouq(char *s, char **, int); 
16608 static int bad = 0;
16609 void check(char *s, unsigned long long eull, int een) {
16610         unsigned long long gull;
16611         errno = 0;
16612         gull = strtouq(s, 0, 10);
16613         if (!((gull == eull) && (errno == een)))
16614                 bad++;
16615 }
16616 int main() {
16617         check(" 1",                                        1LL, 0);
16618         check(" 0",                                        0LL, 0);
16619         check("18446744073709551615",  18446744073709551615ULL, 0);
16620         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16621 #if 0 /* strtouq() for /^-/ strings is undefined. */
16622         check("-1",                    18446744073709551615ULL, 0);
16623         check("-18446744073709551614",                     2LL, 0);
16624         check("-18446744073709551615",                     1LL, 0);
16625         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16626         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16627 #endif
16628         if (!bad)
16629                 printf("ok\n");
16630         return 0;
16631 }
16632 EOCP
16633         set try
16634         if eval $compile; then
16635                 case "`$run ./try`" in
16636                 ok) echo "Your strtouq() seems to be working okay." ;;
16637                 *) cat <<EOM >&4
16638 Your strtouq() doesn't seem to be working okay.
16639 EOM
16640                    d_strtouq="$undef"
16641                    ;;
16642                 esac
16643         fi
16644         ;;
16645 esac
16646
16647 : see if strxfrm exists
16648 set strxfrm d_strxfrm
16649 eval $inlibc
16650
16651 : see if symlink exists
16652 set symlink d_symlink
16653 eval $inlibc
16654
16655 : see if syscall exists
16656 set syscall d_syscall
16657 eval $inlibc
16658
16659 : see if prototype for syscall is available
16660 echo " "
16661 set d_syscallproto syscall $i_unistd unistd.h
16662 eval $hasproto
16663
16664 : see if sysconf exists
16665 set sysconf d_sysconf
16666 eval $inlibc
16667
16668 : see if system exists
16669 set system d_system
16670 eval $inlibc
16671
16672 : see if tcgetpgrp exists
16673 set tcgetpgrp d_tcgetpgrp
16674 eval $inlibc
16675
16676 : see if tcsetpgrp exists
16677 set tcsetpgrp d_tcsetpgrp
16678 eval $inlibc
16679
16680 : see if prototype for telldir is available
16681 echo " "
16682 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16683 eval $hasproto
16684
16685 : see if time exists
16686 echo " "
16687 if test "X$d_time" = X -o X"$timetype" = X; then
16688     if set time val -f d_time; eval $csym; $val; then
16689                 echo 'time() found.' >&4
16690                 val="$define"
16691                 rp="What is the type returned by time() on this system?"
16692                 set time_t timetype long stdio.h sys/types.h
16693                 eval $typedef_ask
16694     else
16695                 echo 'time() not found, hope that will do.' >&4
16696                 val="$undef"
16697                 timetype='int';
16698     fi
16699     set d_time
16700     eval $setvar
16701 fi
16702
16703 : see if this is a sys/times.h system
16704 set sys/times.h i_systimes
16705 eval $inhdr
16706
16707 : see if times exists
16708 echo " "
16709 if set times val -f d_times; eval $csym; $val; then
16710         echo 'times() found.' >&4
16711         d_times="$define"
16712         inc=''
16713         case "$i_systimes" in
16714         "$define") inc='sys/times.h';;
16715         esac
16716         rp="What is the type returned by times() on this system?"
16717         set clock_t clocktype long stdio.h sys/types.h $inc
16718         eval $typedef_ask
16719 else
16720         echo 'times() NOT found, hope that will do.' >&4
16721         d_times="$undef"
16722         clocktype='int'
16723 fi
16724
16725 : see if tmpnam_r exists
16726 set tmpnam_r d_tmpnam_r
16727 eval $inlibc
16728 case "$d_tmpnam_r" in
16729 "$define")
16730         hdrs="$i_systypes sys/types.h define stdio.h "
16731         case "$d_tmpnam_r_proto:$usethreads" in
16732         ":define")      d_tmpnam_r_proto=define
16733                 set d_tmpnam_r_proto tmpnam_r $hdrs
16734                 eval $hasproto ;;
16735         *)      ;;
16736         esac
16737         case "$d_tmpnam_r_proto" in
16738         define)
16739         case "$tmpnam_r_proto" in
16740         ''|0) try='char* tmpnam_r(char*);'
16741         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16742         esac
16743         case "$tmpnam_r_proto" in
16744         ''|0)   d_tmpnam_r=undef
16745                 tmpnam_r_proto=0
16746                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16747         * )     case "$tmpnam_r_proto" in
16748                 REENTRANT_PROTO*) ;;
16749                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16750                 esac
16751                 echo "Prototype: $try" ;;
16752         esac
16753         ;;
16754         *)      case "$usethreads" in
16755                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16756                 esac
16757                 d_tmpnam_r=undef
16758                 tmpnam_r_proto=0
16759                 ;;
16760         esac
16761         ;;
16762 *)      tmpnam_r_proto=0
16763         ;;
16764 esac
16765
16766 : see if truncate exists
16767 set truncate d_truncate
16768 eval $inlibc
16769
16770 : see if ttyname_r exists
16771 set ttyname_r d_ttyname_r
16772 eval $inlibc
16773 case "$d_ttyname_r" in
16774 "$define")
16775         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16776         case "$d_ttyname_r_proto:$usethreads" in
16777         ":define")      d_ttyname_r_proto=define
16778                 set d_ttyname_r_proto ttyname_r $hdrs
16779                 eval $hasproto ;;
16780         *)      ;;
16781         esac
16782         case "$d_ttyname_r_proto" in
16783         define)
16784         case "$ttyname_r_proto" in
16785         ''|0) try='int ttyname_r(int, char*, size_t);'
16786         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16787         esac
16788         case "$ttyname_r_proto" in
16789         ''|0) try='int ttyname_r(int, char*, int);'
16790         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16791         esac
16792         case "$ttyname_r_proto" in
16793         ''|0) try='char* ttyname_r(int, char*, int);'
16794         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16795         esac
16796         case "$ttyname_r_proto" in
16797         ''|0)   d_ttyname_r=undef
16798                 ttyname_r_proto=0
16799                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16800         * )     case "$ttyname_r_proto" in
16801                 REENTRANT_PROTO*) ;;
16802                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16803                 esac
16804                 echo "Prototype: $try" ;;
16805         esac
16806         ;;
16807         *)      case "$usethreads" in
16808                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16809                 esac
16810                 d_ttyname_r=undef
16811                 ttyname_r_proto=0
16812                 ;;
16813         esac
16814         ;;
16815 *)      ttyname_r_proto=0
16816         ;;
16817 esac
16818
16819 : see if tzname[] exists
16820 echo " "
16821 if set tzname val -a d_tzname; eval $csym; $val; then
16822         val="$define"
16823         echo 'tzname[] found.' >&4
16824 else
16825         val="$undef"
16826         echo 'tzname[] NOT found.' >&4
16827 fi
16828 set d_tzname
16829 eval $setvar
16830
16831 case "$osname" in
16832 next|rhapsody|darwin) multiarch="$define" ;;
16833 esac
16834 case "$multiarch" in
16835 ''|[nN]*) multiarch="$undef" ;;
16836 esac
16837
16838 : check for ordering of bytes in a UV
16839 echo " "
16840 case "$usecrosscompile$multiarch" in
16841 *$define*)
16842         $cat <<EOM
16843 You seem to be either cross-compiling or doing a multiarchitecture build,
16844 skipping the byteorder check.
16845
16846 EOM
16847         byteorder='ffff'
16848         ;;
16849 *)
16850         case "$byteorder" in
16851         '')
16852                 $cat <<'EOM'
16853 In the following, larger digits indicate more significance.  A big-endian
16854 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16855 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16856 machines may have weird orders like 3412.  A Cray will report 87654321,
16857 an Alpha will report 12345678. If the test program works the default is
16858 probably right.
16859 I'm now running the test program...
16860 EOM
16861                 $cat >try.c <<EOCP
16862 #include <stdio.h>
16863 #$i_stdlib I_STDLIB
16864 #ifdef I_STDLIB
16865 #include <stdlib.h>
16866 #endif
16867 #include <sys/types.h>
16868 typedef $uvtype UV;
16869 int main()
16870 {
16871         int i;
16872         union {
16873                 UV l;
16874                 char c[$uvsize];
16875         } u;
16876
16877         if ($uvsize > 4)
16878                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16879         else
16880                 u.l = (UV)0x04030201;
16881         for (i = 0; i < $uvsize; i++)
16882                 printf("%c", u.c[i]+'0');
16883         printf("\n");
16884         exit(0);
16885 }
16886 EOCP
16887                 xxx_prompt=y
16888                 set try
16889                 if eval $compile && ./try > /dev/null; then
16890                         dflt=`$run ./try`
16891                         case "$dflt" in
16892                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16893                                 echo "(The test program ran ok.)"
16894                                 echo "byteorder=$dflt"
16895                                 xxx_prompt=n
16896                         ;;
16897                         ????|????????) echo "(The test program ran ok.)" ;;
16898                         *) echo "(The test program didn't run right for some reason.)" ;;
16899                         esac
16900                 else
16901                         dflt='4321'
16902                         cat <<'EOM'
16903 (I can't seem to compile the test program.  Guessing big-endian...)
16904 EOM
16905                 fi
16906                 case "$xxx_prompt" in
16907                 y)
16908                         rp="What is the order of bytes in $uvtype?"
16909                         . ./myread
16910                         byteorder="$ans"
16911                         ;;
16912                 *)      byteorder=$dflt
16913                         ;;
16914                 esac
16915                 ;;
16916         esac
16917         $rm -f try.c try
16918         ;;
16919 esac
16920
16921
16922 $cat <<EOM
16923
16924 Checking to see whether you can access character data unalignedly...
16925 EOM
16926 case "$d_u32align" in
16927 '')   $cat >try.c <<EOCP
16928 #include <stdio.h>
16929 #$i_stdlib I_STDLIB
16930 #ifdef I_STDLIB
16931 #include <stdlib.h>
16932 #endif
16933 #define U32 $u32type
16934 #define BYTEORDER 0x$byteorder
16935 #define U8 $u8type
16936 #include <signal.h>
16937 #ifdef SIGBUS
16938 $signal_t bletch(s) int s; { exit(4); }
16939 #endif
16940 int main() {
16941 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16942     U8 buf[8];
16943     U32 *up;
16944     int i;
16945
16946     if (sizeof(U32) != 4) {
16947         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16948         exit(1);
16949     }
16950
16951     fflush(stdout);
16952
16953 #ifdef SIGBUS
16954     signal(SIGBUS, bletch);
16955 #endif
16956
16957     buf[0] = 0;
16958     buf[1] = 0;
16959     buf[2] = 0;
16960     buf[3] = 1;
16961     buf[4] = 0;
16962     buf[5] = 0;
16963     buf[6] = 0;
16964     buf[7] = 1;
16965
16966     for (i = 0; i < 4; i++) {
16967         up = (U32*)(buf + i);
16968         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16969                (*up == 1 << (8*(3-i)))  /* little-endian */
16970               )
16971            )
16972         {
16973             printf("read failed (%x)\n", *up);
16974             exit(2);
16975         }
16976     }
16977
16978     /* write test */
16979     for (i = 0; i < 4; i++) {
16980         up = (U32*)(buf + i);
16981         *up = 0xBeef;
16982         if (*up != 0xBeef) {
16983             printf("write failed (%x)\n", *up);
16984             exit(3);
16985         }
16986     }
16987
16988     exit(0);
16989 #else
16990     printf("1\n");
16991     exit(1);
16992 #endif
16993     return 0;
16994 }
16995 EOCP
16996 set try
16997 if eval $compile_ok; then
16998         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16999         $run ./try 2>&1 >/dev/null
17000         case "$?" in
17001         0)      cat >&4 <<EOM
17002 You can access character data pretty unalignedly.
17003 EOM
17004                 d_u32align="$undef"
17005                 ;;
17006         *)      cat >&4 <<EOM
17007 It seems that you must access character data in an aligned manner.
17008 EOM
17009                 d_u32align="$define"
17010                 ;;
17011         esac
17012 else
17013         rp='Can you access character data at unaligned addresses?'
17014         dflt='n'
17015         . ./myread
17016         case "$ans" in
17017         [yY]*)  d_u32align="$undef"  ;;
17018         *)      d_u32align="$define" ;;
17019         esac
17020 fi
17021 $rm -f core core.try.* try.core
17022 ;;
17023 esac
17024
17025 : see if ualarm exists
17026 set ualarm d_ualarm
17027 eval $inlibc
17028
17029 : see if umask exists
17030 set umask d_umask
17031 eval $inlibc
17032
17033 : see if unordered exists
17034 set unordered d_unordered
17035 eval $inlibc
17036
17037 : see if usleep exists
17038 set usleep d_usleep
17039 eval $inlibc
17040
17041 : see if prototype for usleep is available
17042 echo " "
17043 set d_usleepproto usleep $i_unistd unistd.h
17044 eval $hasproto
17045
17046 : see if ustat exists
17047 set ustat d_ustat
17048 eval $inlibc
17049
17050 : backward compatibility for d_hvfork
17051 if test X$d_hvfork != X; then
17052         d_vfork="$d_hvfork"
17053         d_hvfork=''
17054 fi
17055 : see if there is a vfork
17056 val=''
17057 set vfork val
17058 eval $inlibc
17059
17060 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17061 : perl on Solaris 2.x, and probably elsewhere.
17062 case "$val" in
17063 $define)
17064         echo " "
17065         case "$usevfork" in
17066         false) dflt='n';;
17067         *) dflt='y';;
17068         esac
17069         cat <<'EOM'
17070  
17071 Perl can only use a vfork() that doesn't suffer from strict
17072 restrictions on calling functions or modifying global data in
17073 the child.  For example, glibc-2.1 contains such a vfork()
17074 that is unsuitable.  If your system provides a proper fork()
17075 call, chances are that you do NOT want perl to use vfork().
17076
17077 EOM
17078         rp="Do you still want to use vfork()?"
17079         . ./myread
17080         case "$ans" in
17081         y|Y) ;;
17082         *)
17083                 echo "Ok, we won't use vfork()."
17084                 val="$undef"
17085                 ;;
17086         esac
17087         ;;
17088 esac
17089 set d_vfork
17090 eval $setvar
17091 case "$d_vfork" in
17092 $define) usevfork='true';;
17093 *) usevfork='false';;
17094 esac
17095
17096 : see if closedir exists
17097 set closedir d_closedir
17098 eval $inlibc
17099
17100 case "$d_closedir" in
17101 "$define")
17102         echo " "
17103         echo "Checking whether closedir() returns a status..." >&4
17104         cat > try.c <<EOM
17105 #$i_dirent I_DIRENT             /**/
17106 #$i_sysdir I_SYS_DIR            /**/
17107 #$i_sysndir I_SYS_NDIR          /**/
17108 #$i_systypes I_SYS_TYPES        /**/
17109
17110 #if defined(I_SYS_TYPES)
17111 #include <sys/types.h>
17112 #endif
17113 #if defined(I_DIRENT)
17114 #include <dirent.h>
17115 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17116 #include <sys/dir.h>
17117 #endif
17118 #else
17119 #ifdef I_SYS_NDIR
17120 #include <sys/ndir.h>
17121 #else
17122 #ifdef I_SYS_DIR
17123 #ifdef hp9000s500
17124 #include <ndir.h>       /* may be wrong in the future */
17125 #else
17126 #include <sys/dir.h>
17127 #endif
17128 #endif
17129 #endif
17130 #endif 
17131 int main() { return closedir(opendir(".")); }
17132 EOM
17133         set try
17134         if eval $compile_ok; then
17135                 if $run ./try > /dev/null 2>&1 ; then
17136                         echo "Yes, it does."
17137                         val="$undef"
17138                 else
17139                         echo "No, it doesn't."
17140                         val="$define"
17141                 fi
17142         else
17143                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17144                 val="$define"
17145         fi
17146         ;;
17147 *)
17148         val="$undef";
17149         ;;
17150 esac
17151 set d_void_closedir
17152 eval $setvar
17153 $rm -f try try.*
17154 : see if there is a wait4
17155 set wait4 d_wait4
17156 eval $inlibc
17157
17158 : see if waitpid exists
17159 set waitpid d_waitpid
17160 eval $inlibc
17161
17162 : see if wcstombs exists
17163 set wcstombs d_wcstombs
17164 eval $inlibc
17165
17166 : see if wctomb exists
17167 set wctomb d_wctomb
17168 eval $inlibc
17169
17170 : see if writev exists
17171 set writev d_writev
17172 eval $inlibc
17173
17174 : preserve RCS keywords in files with variable substitution, grrr
17175 Date='$Date'
17176 Id='$Id'
17177 Log='$Log'
17178 RCSfile='$RCSfile'
17179 Revision='$Revision'
17180
17181 : check for alignment requirements
17182 echo " "
17183 case "$usecrosscompile$multiarch" in
17184 *$define*)
17185         $cat <<EOM
17186 You seem to be either cross-compiling or doing a multiarchitecture build,
17187 skipping the memory alignment check.
17188
17189 EOM
17190         case "$alignbytes" in
17191         '') alignbytes=8 ;;
17192         esac
17193         ;;
17194 *)
17195         case "$alignbytes" in
17196         '') echo "Checking alignment constraints..." >&4
17197                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17198                         $cat >try.c <<'EOCP'
17199 typedef long double NV;
17200 EOCP
17201                 else
17202                         $cat >try.c <<'EOCP'
17203 typedef double NV;
17204 EOCP
17205                 fi
17206                 $cat >>try.c <<'EOCP'
17207 #include <stdio.h>
17208 struct foobar {
17209         char foo;
17210         NV bar;
17211 } try_algn;
17212 int main()
17213 {
17214     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17215     return(0);
17216 }
17217 EOCP
17218                 set try
17219                 if eval $compile_ok; then
17220                         dflt=`$run ./try`
17221                 else
17222                         dflt='8'
17223                         echo "(I can't seem to compile the test program...)"
17224                 fi
17225                 ;;
17226         *) dflt="$alignbytes"
17227                 ;;
17228         esac
17229         rp="Doubles must be aligned on a how-many-byte boundary?"
17230         . ./myread
17231         alignbytes="$ans"
17232         $rm -f try.c try
17233         ;;
17234 esac
17235
17236
17237 : set the base revision
17238 baserev=5.0
17239
17240 : how do we concatenate cpp tokens here?
17241 echo " "
17242 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17243 $cat >cpp_stuff.c <<'EOCP'
17244 #define RCAT(a,b)a/**/b
17245 #define ACAT(a,b)a ## b
17246 RCAT(Rei,ser)
17247 ACAT(Cir,cus)
17248 EOCP
17249 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17250 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17251         echo "Oh!  Smells like ANSI's been here." >&4
17252         echo "We can catify or stringify, separately or together!"
17253         cpp_stuff=42
17254 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17255         echo "Ah, yes!  The good old days!" >&4
17256         echo "However, in the good old days we don't know how to stringify and"
17257         echo "catify at the same time."
17258         cpp_stuff=1
17259 else
17260         $cat >&4 <<EOM
17261 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17262 You're going to have to edit the values of CAT[2-5] in config.h...
17263 EOM
17264         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17265 fi
17266 $rm -f cpp_stuff.*
17267
17268 : see if this is a db.h system
17269 set db.h i_db
17270 eval $inhdr
17271
17272 case "$i_db" in
17273 $define)
17274         : Check db version.
17275         echo " "
17276         echo "Checking Berkeley DB version ..." >&4
17277         $cat >try.c <<EOCP
17278 #$d_const HASCONST
17279 #ifndef HASCONST
17280 #define const
17281 #endif
17282 #include <sys/types.h>
17283 #include <stdio.h>
17284 #$i_stdlib I_STDLIB
17285 #ifdef I_STDLIB
17286 #include <stdlib.h>
17287 #endif
17288 #include <db.h>
17289 int main(int argc, char *argv[])
17290 {
17291 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17292     int Major, Minor, Patch ;
17293     unsigned long Version ;
17294     (void)db_version(&Major, &Minor, &Patch) ;
17295     if (argc == 2) {
17296         printf("%d %d %d %d %d %d\n",
17297                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17298                Major, Minor, Patch);
17299         exit(0);
17300     }
17301     printf("You have Berkeley DB Version 2 or greater.\n");
17302
17303     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17304                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17305     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17306                 Major, Minor, Patch) ;
17307
17308     /* check that db.h & libdb are compatible */
17309     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17310         printf("db.h and libdb are incompatible.\n") ;
17311         exit(3);        
17312     }
17313
17314     printf("db.h and libdb are compatible.\n") ;
17315
17316     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17317                 + DB_VERSION_PATCH ;
17318
17319     /* needs to be >= 2.3.4 */
17320     if (Version < 2003004) {
17321     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17322         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17323         exit(2);        
17324     }
17325
17326     exit(0);
17327 #else
17328 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17329     if (argc == 2) {
17330         printf("1 0 0\n");
17331         exit(0);
17332     }
17333     printf("You have Berkeley DB Version 1.\n");
17334     exit(0);    /* DB version < 2: the coast is clear. */
17335 #else
17336     exit(1);    /* <db.h> not Berkeley DB? */
17337 #endif
17338 #endif
17339 }
17340 EOCP
17341         set try
17342         if eval $compile_ok && $run ./try; then
17343                 echo 'Looks OK.' >&4
17344                 set `$run ./try 1`
17345                 db_version_major=$1
17346                 db_version_minor=$2
17347                 db_version_patch=$3
17348         else
17349                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17350                 i_db=$undef
17351                 case " $libs " in
17352                 *"-ldb "*)
17353                         : Remove db from list of libraries to use
17354                         echo "Removing unusable -ldb from library list" >&4
17355                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17356                         shift
17357                         libs="$*"
17358                         echo "libs = $libs" >&4
17359                         ;;
17360                 esac
17361         fi
17362         $rm -f try.*
17363         ;;
17364 esac
17365
17366 case "$i_db" in
17367 define)
17368         : Check the return type needed for hash 
17369         echo " "
17370         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17371         $cat >try.c <<EOCP
17372 #$d_const HASCONST
17373 #ifndef HASCONST
17374 #define const
17375 #endif
17376 #include <sys/types.h>
17377 #include <db.h>
17378
17379 #ifndef DB_VERSION_MAJOR
17380 u_int32_t hash_cb (ptr, size)
17381 const void *ptr;
17382 size_t size;
17383 {
17384 }
17385 HASHINFO info;
17386 int main()
17387 {
17388         info.hash = hash_cb;
17389 }
17390 #endif
17391 EOCP
17392         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17393                 if $contains warning try.out >>/dev/null 2>&1 ; then
17394                         db_hashtype='int'
17395                 else
17396                         db_hashtype='u_int32_t'
17397                 fi
17398         else
17399                 : XXX Maybe we should just give up here.
17400                 db_hashtype=u_int32_t
17401                 $cat try.out >&4
17402                 echo "Help:  I can't seem to compile the db test program." >&4
17403                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17404         fi
17405         $rm -f try.*
17406         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17407         ;;
17408 *)      db_hashtype=u_int32_t
17409         ;;
17410 esac
17411 case "$i_db" in
17412 define)
17413         : Check the return type needed for prefix 
17414         echo " "
17415         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17416         cat >try.c <<EOCP
17417 #$d_const HASCONST
17418 #ifndef HASCONST
17419 #define const
17420 #endif
17421 #include <sys/types.h>
17422 #include <db.h>
17423
17424 #ifndef DB_VERSION_MAJOR
17425 size_t prefix_cb (key1, key2)
17426 const DBT *key1;
17427 const DBT *key2;
17428 {
17429 }
17430 BTREEINFO info;
17431 int main()
17432 {
17433         info.prefix = prefix_cb;
17434 }
17435 #endif
17436 EOCP
17437         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17438                 if $contains warning try.out >>/dev/null 2>&1 ; then
17439                         db_prefixtype='int'
17440                 else
17441                         db_prefixtype='size_t'
17442                 fi
17443         else
17444                 db_prefixtype='size_t'
17445                 : XXX Maybe we should just give up here.
17446                 $cat try.out >&4
17447                 echo "Help:  I can't seem to compile the db test program." >&4
17448                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17449         fi
17450         $rm -f try.*
17451         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17452         ;;
17453 *)      db_prefixtype='size_t'
17454         ;;
17455 esac
17456
17457
17458 : How can we generate normalized random numbers ?
17459 echo " "
17460 echo "Looking for a random number function..." >&4
17461 case "$randfunc" in
17462 '')
17463         if set drand48 val -f; eval $csym; $val; then
17464                 dflt="drand48"
17465                 echo "Good, found drand48()." >&4
17466         elif set random val -f; eval $csym; $val; then
17467                 dflt="random"
17468                 echo "OK, found random()." >&4
17469         else
17470                 dflt="rand"
17471                 echo "Yick, looks like I have to use rand()." >&4
17472         fi
17473         echo " "
17474         ;;
17475 *)
17476         dflt="$randfunc"
17477         ;;
17478 esac
17479 cont=true
17480
17481 case "$ccflags" in
17482 *-Dmy_rand=*|*-Dmy_srand=*)
17483         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17484         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17485         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17486         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17487         ;;
17488 esac
17489
17490 while $test "$cont"; do
17491         rp="Use which function to generate random numbers?"
17492         . ./myread
17493         if $test "$ans" = "$dflt"; then
17494                 : null
17495         else
17496                 randbits=''
17497         fi
17498         randfunc="$ans"
17499         if set $ans val -f; eval $csym; $val; then
17500                 cont=''
17501         else
17502                 dflt=y
17503                 rp="I cannot find function $ans. Use that name anyway?"
17504                 . ./myread
17505                 dflt=rand
17506                 case "$ans" in
17507                         [yY]*) cont='';;
17508                 esac
17509         fi
17510         case "$cont" in
17511         '')
17512                 case "$randfunc" in
17513                 drand48)
17514                         drand01="drand48()"
17515                         seedfunc="srand48"
17516                         randbits=48
17517                         randseedtype=long
17518                         ;;
17519                 rand|random)
17520                         case "$randbits" in
17521                         '')
17522 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17523                                 $cat >try.c <<EOCP
17524 #$i_unistd I_UNISTD
17525 #$i_stdlib I_STDLIB
17526 #include <stdio.h>
17527 #ifdef I_UNISTD
17528 #  include <unistd.h>
17529 #endif
17530 #ifdef I_STDLIB
17531 #  include <stdlib.h>
17532 #endif
17533 int main()
17534 {
17535         register int i;
17536         register unsigned long tmp;
17537         register unsigned long max = 0L;
17538
17539         for (i = 1000; i; i--) {
17540                 tmp = (unsigned long) $randfunc();
17541                 if (tmp > max) max = tmp;
17542         }
17543         for (i = 0; max; i++)
17544                 max /= 2;
17545         printf("%d\n",i);
17546 }
17547 EOCP
17548                                 set try
17549                                 if eval $compile_ok; then
17550                                         dflt=`try`
17551                                 else
17552                                         dflt='?'
17553                                         echo "(I can't seem to compile the test program...)"
17554                                 fi
17555                                 ;;
17556                         *)
17557                                 dflt="$randbits"
17558                                 ;;
17559                         esac
17560                         rp="How many bits does your $randfunc() function produce?"
17561                         . ./myread
17562                         randbits="$ans"
17563                         $rm -f try.c try
17564                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17565                         seedfunc="s$randfunc"
17566                         randseedtype=unsigned
17567                         ;;
17568                 *)
17569                         dflt="31"
17570                         rp="How many bits does your $randfunc() function produce?"
17571                         . ./myread
17572                         randbits="$ans"
17573                         seedfunc="s$randfunc"
17574                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17575                         if set $seedfunc val -f; eval $csym; $val; then
17576                                 echo "(Using $seedfunc() to seed random generator)"
17577                         else
17578                                 echo "(Warning: no $seedfunc() to seed random generator)"
17579                                 seedfunc=rand
17580                         fi
17581                         randseedtype=unsigned
17582                         ;;
17583                 esac
17584                 ;;
17585         esac
17586 done
17587
17588 echo " "
17589 echo "Determining whether or not we are on an EBCDIC system..." >&4
17590 $cat >try.c <<'EOM'
17591 int main()
17592 {
17593   if ('M'==0xd4) return 0;
17594   return 1;
17595 }
17596 EOM
17597
17598 val=$undef
17599 set try
17600 if eval $compile_ok; then
17601         if $run ./try; then
17602                 echo "You seem to speak EBCDIC." >&4
17603                 val="$define"
17604         else
17605                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17606         fi
17607 else
17608         echo "I'm unable to compile the test program." >&4
17609         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17610 fi
17611 $rm -f try try.*
17612 set ebcdic
17613 eval $setvar
17614
17615 echo " "
17616 $cat >&4 <<EOM
17617 Checking how to flush all pending stdio output...
17618 EOM
17619 # I only know how to find the first 32 possibly open files on SunOS.
17620 # See also hints/sunos_4_1.sh and util.c  --AD
17621 case "$osname" in
17622 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17623 esac
17624 $cat >>try.c <<EOCP
17625 #include <stdio.h>
17626 #$i_stdlib I_STDLIB
17627 #ifdef I_STDLIB
17628 #include <stdlib.h>
17629 #endif
17630 #$i_unistd I_UNISTD
17631 #ifdef I_UNISTD
17632 # include <unistd.h>
17633 #endif
17634 #$d_sysconf HAS_SYSCONF
17635 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17636 #ifdef HAS_STDIO_STREAM_ARRAY
17637 # define STDIO_STREAM_ARRAY $stdio_stream_array
17638 #endif
17639 int main() {
17640   FILE* p;
17641   unlink("try.out");
17642   p = fopen("try.out", "w");
17643 #ifdef TRY_FPUTC
17644   fputc('x', p);
17645 #else
17646 # ifdef TRY_FPRINTF
17647   fprintf(p, "x");
17648 # endif
17649 #endif
17650 #ifdef TRY_FFLUSH_NULL
17651   fflush(NULL);
17652 #endif
17653 #ifdef TRY_FFLUSH_ALL
17654   {
17655     long open_max = -1;
17656 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17657     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17658 # else
17659 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17660     open_max = sysconf(_SC_OPEN_MAX);
17661 #  else
17662 #   ifdef FOPEN_MAX
17663     open_max = FOPEN_MAX;
17664 #   else
17665 #    ifdef OPEN_MAX
17666     open_max = OPEN_MAX;
17667 #    else
17668 #     ifdef _NFILE
17669     open_max = _NFILE;
17670 #     endif
17671 #    endif
17672 #   endif
17673 #  endif
17674 # endif 
17675 # ifdef HAS_STDIO_STREAM_ARRAY
17676     if (open_max > 0) {
17677       long i;
17678       for (i = 0; i < open_max; i++)
17679             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17680                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17681                 STDIO_STREAM_ARRAY[i]._flag)
17682                 fflush(&STDIO_STREAM_ARRAY[i]);
17683     }   
17684   }
17685 # endif
17686 #endif
17687   _exit(42);
17688 }
17689 EOCP
17690 : first we have to find out how _not_ to flush
17691 $to try.c
17692 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17693     output=''
17694     set try -DTRY_FPUTC
17695     if eval $compile; then
17696             $run ./try 2>/dev/null
17697             code="$?"
17698             $from try.out
17699             if $test ! -s try.out -a "X$code" = X42; then
17700                 output=-DTRY_FPUTC
17701             fi
17702     fi
17703     case "$output" in
17704     '')
17705             set try -DTRY_FPRINTF
17706             if eval $compile; then
17707                     $run ./try 2>/dev/null
17708                     code="$?"
17709                     $from try.out
17710                     if $test ! -s try.out -a "X$code" = X42; then
17711                         output=-DTRY_FPRINTF
17712                     fi
17713             fi
17714         ;;
17715     esac
17716 fi
17717 : check for fflush NULL behaviour
17718 case "$fflushNULL" in
17719 '')     set try -DTRY_FFLUSH_NULL $output
17720         if eval $compile; then
17721                 $run ./try 2>/dev/null
17722                 code="$?"
17723                 $from try.out
17724                 if $test -s try.out -a "X$code" = X42; then
17725                         fflushNULL="`$cat try.out`"
17726                 else
17727                         if $test "X$code" != X42; then
17728                                 $cat >&4 <<EOM
17729 (If this test failed, don't worry, we'll try another method shortly.)
17730 EOM
17731                         fi
17732                 fi
17733         fi
17734         $rm -f core try.core core.try.*
17735         case "$fflushNULL" in
17736         x)      $cat >&4 <<EOM
17737 Your fflush(NULL) works okay for output streams.
17738 Let's see if it clobbers input pipes...
17739 EOM
17740 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17741 # bug that improperly flushes the input end of pipes.  So we avoid the
17742 # autoflush on fork/system/exec support for now. :-(
17743 $cat >tryp.c <<EOCP
17744 #include <stdio.h>
17745 int
17746 main(int argc, char **argv)
17747 {
17748     char buf[1024];
17749     int i;
17750     char *bp = buf;
17751     while (1) {
17752         while ((i = getc(stdin)) != -1
17753                && (*bp++ = i) != '\n'
17754                && bp < &buf[1024])
17755         /* DO NOTHING */ ;
17756         *bp = '\0';
17757         fprintf(stdout, "%s", buf);
17758         fflush(NULL);
17759         if (i == -1)
17760             return 0;
17761         bp = buf;
17762     }
17763 }
17764 EOCP
17765                 fflushNULL="$define"
17766                 set tryp
17767                 if eval $compile; then
17768                     $rm -f tryp.out
17769                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17770                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17771                        $cat >&4 <<EOM
17772 fflush(NULL) seems to behave okay with input streams.
17773 EOM
17774                         fflushNULL="$define"
17775                     else
17776                         $cat >&4 <<EOM
17777 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17778 EOM
17779                         fflushNULL="$undef"
17780                     fi
17781                 fi
17782                 $rm -f core tryp.c tryp.core core.tryp.*
17783                 ;;
17784         '')     $cat >&4 <<EOM
17785 Your fflush(NULL) isn't working (contrary to ANSI C).
17786 EOM
17787                 fflushNULL="$undef"
17788                 ;;
17789         *)      $cat >&4 <<EOM
17790 Cannot figure out whether your fflush(NULL) works or not.
17791 I'm assuming it doesn't (contrary to ANSI C).
17792 EOM
17793                 fflushNULL="$undef"
17794                 ;;
17795         esac
17796         ;;
17797 $define|true|[yY]*)
17798         fflushNULL="$define"
17799         ;;
17800 *)
17801         fflushNULL="$undef"
17802         ;;
17803 esac
17804 : check explicit looping only if NULL did not work, and if the pipe
17805 : bug does not show up on an explicit flush too
17806 case "$fflushNULL" in
17807 "$undef")
17808         $cat >tryp.c <<EOCP
17809 #include <stdio.h>
17810 int
17811 main(int argc, char **argv)
17812 {
17813     char buf[1024];
17814     int i;
17815     char *bp = buf;
17816     while (1) {
17817         while ((i = getc(stdin)) != -1
17818                && (*bp++ = i) != '\n'
17819                && bp < &buf[1024])
17820         /* DO NOTHING */ ;
17821         *bp = '\0';
17822         fprintf(stdout, "%s", buf);
17823         fflush(stdin);
17824         if (i == -1)
17825             return 0;
17826         bp = buf;
17827     }
17828 }
17829 EOCP
17830         set tryp
17831         if eval $compile; then
17832             $rm -f tryp.out
17833             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17834             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17835                $cat >&4 <<EOM
17836 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17837 EOM
17838                 : now check for fflushall behaviour
17839                 case "$fflushall" in
17840                 '')     set try -DTRY_FFLUSH_ALL $output
17841                         if eval $compile; then
17842                                 $cat >&4 <<EOM
17843 (Now testing the other method--but note that this also may fail.)
17844 EOM
17845                                 $run ./try 2>/dev/null
17846                                 code=$?
17847                                 $from try.out
17848                                 if $test -s try.out -a "X$code" = X42; then
17849                                         fflushall="`$cat try.out`"
17850                                 fi
17851                         fi
17852                         $rm -f core try.core core.try.*
17853                         case "$fflushall" in
17854                         x)      $cat >&4 <<EOM
17855 Whew. Flushing explicitly all the stdio streams works.
17856 EOM
17857                                 fflushall="$define"
17858                                 ;;
17859                         '')     $cat >&4 <<EOM
17860 Sigh. Flushing explicitly all the stdio streams doesn't work.
17861 EOM
17862                                 fflushall="$undef"
17863                                 ;;
17864                         *)      $cat >&4 <<EOM
17865 Cannot figure out whether flushing stdio streams explicitly works or not.
17866 I'm assuming it doesn't.
17867 EOM
17868                                 fflushall="$undef"
17869                                 ;;
17870                         esac
17871                         ;;
17872                 "$define"|true|[yY]*)
17873                         fflushall="$define"
17874                         ;;
17875                 *)
17876                         fflushall="$undef"
17877                         ;;
17878                 esac
17879             else
17880                 $cat >&4 <<EOM
17881 All is futile.  Even fflush(stdin) clobbers input pipes!
17882 EOM
17883                 fflushall="$undef"
17884             fi
17885         else
17886             fflushall="$undef"
17887         fi
17888         $rm -f core tryp.c tryp.core core.tryp.*
17889         ;;
17890 *)      fflushall="$undef"
17891         ;;
17892 esac
17893
17894 case "$fflushNULL$fflushall" in
17895 undefundef)
17896         $cat <<EOM
17897 OK, I give up.  I cannot figure out how to flush pending stdio output.
17898 We won't be flushing handles at all before fork/exec/popen.
17899 EOM
17900         ;;
17901 esac
17902 $rm -f try.* try$exe_ext
17903
17904 : Store the full pathname to the ar program for use in the C program
17905 : Respect a hint or command line value for full_ar.
17906 case "$full_ar" in
17907 '') full_ar=$ar ;;
17908 esac
17909
17910 : Store the full pathname to the sed program for use in the C program
17911 full_sed=$sed
17912
17913 : see what type gids are declared as in the kernel
17914 echo " "
17915 echo "Looking for the type for group ids returned by getgid()."
17916 set gid_t gidtype xxx stdio.h sys/types.h
17917 eval $typedef
17918 case "$gidtype" in
17919 xxx)
17920         xxx=`./findhdr sys/user.h`
17921         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17922         case $1 in
17923         unsigned) dflt="$1 $2" ;;
17924         *) dflt="$1" ;;
17925         esac
17926         ;;
17927 *) dflt="$gidtype";;
17928 esac
17929 case "$gidtype" in
17930 gid_t) echo "gid_t found." ;;
17931 *)      rp="What is the type for group ids returned by getgid()?"
17932         . ./myread
17933         gidtype="$ans"
17934         ;;
17935 esac
17936
17937 echo " "
17938 case "$gidtype" in
17939 *_t) zzz="$gidtype"     ;;
17940 *)   zzz="gid"          ;;
17941 esac
17942 echo "Checking the size of $zzz..." >&4 
17943 cat > try.c <<EOCP
17944 #include <sys/types.h>
17945 #include <stdio.h>
17946 #$i_stdlib I_STDLIB
17947 #ifdef I_STDLIB
17948 #include <stdlib.h>
17949 #endif
17950 int main() {
17951     printf("%d\n", (int)sizeof($gidtype));
17952     exit(0);
17953 }
17954 EOCP
17955 set try
17956 if eval $compile_ok; then
17957         yyy=`$run ./try`
17958         case "$yyy" in
17959         '')     gidsize=4
17960                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17961                 ;;
17962         *)      gidsize=$yyy
17963                 echo "Your $zzz is $gidsize bytes long."
17964                 ;;
17965         esac
17966 else
17967         gidsize=4
17968         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17969 fi
17970
17971
17972 echo " "
17973 case "$gidtype" in
17974 *_t) zzz="$gidtype"     ;;
17975 *)   zzz="gid"          ;;
17976 esac
17977 echo "Checking the sign of $zzz..." >&4 
17978 cat > try.c <<EOCP
17979 #include <sys/types.h>
17980 #include <stdio.h>
17981 int main() {
17982         $gidtype foo = -1;
17983         if (foo < 0)
17984                 printf("-1\n");
17985         else
17986                 printf("1\n");
17987 }
17988 EOCP
17989 set try
17990 if eval $compile; then
17991         yyy=`$run ./try`
17992         case "$yyy" in
17993         '')     gidsign=1
17994                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17995                 ;;
17996         *)      gidsign=$yyy
17997                 case "$gidsign" in
17998                  1) echo "Your $zzz is unsigned." ;;
17999                 -1) echo "Your $zzz is signed."   ;;
18000                 esac
18001                 ;;
18002         esac
18003 else
18004         gidsign=1
18005         echo "(I can't compile the test program--guessing unsigned.)" >&4
18006 fi
18007
18008
18009 echo " "
18010
18011 if $test X"$quadtype" != X; then
18012
18013 echo "Checking how to print 64-bit integers..." >&4
18014
18015 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18016         $cat >try.c <<'EOCP'
18017 #include <sys/types.h>
18018 #include <stdio.h>
18019 int main() {
18020   int q = 12345678901;
18021   printf("%ld\n", q);
18022 }
18023 EOCP
18024         set try
18025         if eval $compile; then
18026                 yyy=`$run ./try`
18027                 case "$yyy" in
18028                 12345678901)
18029                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18030                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18031                         echo "We will use %d."
18032                         ;;
18033                 esac
18034         fi
18035 fi
18036
18037 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18038         $cat >try.c <<'EOCP'
18039 #include <sys/types.h>
18040 #include <stdio.h>
18041 int main() {
18042   long q = 12345678901;
18043   printf("%ld\n", q);
18044 }
18045 EOCP
18046         set try
18047         if eval $compile; then
18048                 yyy=`$run ./try`
18049                 case "$yyy" in
18050                 12345678901)
18051                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18052                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18053                         echo "We will use %ld."
18054                         ;;
18055                 esac
18056         fi
18057 fi
18058
18059 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18060         $cat >try.c <<'EOCP'
18061 #include <sys/types.h>
18062 #include <inttypes.h>
18063 #include <stdio.h>
18064 int main() {
18065   int64_t q = 12345678901;
18066   printf("%" PRId64 "\n", q);
18067 }
18068 EOCP
18069         set try
18070         if eval $compile; then
18071                 yyy=`$run ./try`
18072                 case "$yyy" in
18073                 12345678901)
18074                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18075                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18076                         echo "We will use the C9X style."
18077                         ;;
18078                 esac
18079         fi
18080 fi
18081
18082 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18083         $cat >try.c <<EOCP
18084 #include <sys/types.h>
18085 #include <stdio.h>
18086 int main() {
18087   $quadtype q = 12345678901;
18088   printf("%Ld\n", q);
18089 }
18090 EOCP
18091         set try
18092         if eval $compile; then
18093                 yyy=`$run ./try`
18094                 case "$yyy" in
18095                 12345678901)
18096                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18097                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18098                         echo "We will use %Ld."
18099                         ;;
18100                 esac
18101         fi
18102 fi
18103
18104 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18105         $cat >try.c <<'EOCP'
18106 #include <sys/types.h>
18107 #include <stdio.h>
18108 int main() {
18109   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18110   printf("%lld\n", q);
18111 }
18112 EOCP
18113         set try
18114         if eval $compile; then
18115                 yyy=`$run ./try`
18116                 case "$yyy" in
18117                 12345678901)
18118                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18119                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18120                         echo "We will use the %lld style."
18121                         ;;
18122                 esac
18123         fi
18124 fi
18125
18126 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18127         $cat >try.c <<EOCP
18128 #include <sys/types.h>
18129 #include <stdio.h>
18130 int main() {
18131   $quadtype q = 12345678901;
18132   printf("%qd\n", q);
18133 }
18134 EOCP
18135         set try
18136         if eval $compile; then
18137                 yyy=`$run ./try`
18138                 case "$yyy" in
18139                 12345678901)
18140                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18141                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18142                         echo "We will use %qd."
18143                         ;;
18144                 esac
18145         fi
18146 fi
18147
18148 if $test X"$sPRId64" = X; then
18149         echo "Cannot figure out how to print 64-bit integers." >&4
18150 fi
18151
18152 $rm -f try try.*
18153
18154 fi
18155
18156 case "$sPRId64" in
18157 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18158         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18159         ;;
18160 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18161         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18162         ;;
18163 esac
18164
18165
18166 echo " "
18167 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18168
18169 if $test X"$ivsize" = X8; then
18170         ivdformat="$sPRId64"
18171         uvuformat="$sPRIu64"
18172         uvoformat="$sPRIo64"
18173         uvxformat="$sPRIx64"
18174         uvXUformat="$sPRIXU64"
18175 else
18176         if $test X"$ivsize" = X"$longsize"; then
18177                 ivdformat='"ld"'
18178                 uvuformat='"lu"'
18179                 uvoformat='"lo"'
18180                 uvxformat='"lx"'
18181                 uvXUformat='"lX"'
18182         else
18183                 if $test X"$ivsize" = X"$intsize"; then
18184                         ivdformat='"d"'
18185                         uvuformat='"u"'
18186                         uvoformat='"o"'
18187                         uvxformat='"x"'
18188                         uvXUformat='"X"'
18189                 else
18190                         : far out
18191                         if $test X"$ivsize" = X"$shortsize"; then
18192                                 ivdformat='"hd"'
18193                                 uvuformat='"hu"'
18194                                 uvoformat='"ho"'
18195                                 uvxformat='"hx"'
18196                                 uvXUformat='"hX"'
18197                         fi
18198                 fi
18199         fi
18200 fi
18201
18202 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18203         nveformat="$sPRIeldbl"
18204         nvfformat="$sPRIfldbl"
18205         nvgformat="$sPRIgldbl"
18206         nvEUformat="$sPRIEUldbl"
18207         nvFUformat="$sPRIFUldbl"
18208         nvGUformat="$sPRIGUldbl"
18209 else
18210         nveformat='"e"'
18211         nvfformat='"f"'
18212         nvgformat='"g"'
18213         nvEUformat='"E"'
18214         nvFUformat='"F"'
18215         nvGUformat='"G"'
18216 fi
18217
18218 case "$ivdformat" in
18219 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18220     exit 1
18221     ;;
18222 esac
18223
18224
18225 echo " "
18226 $echo "Checking the format string to be used for gids..." >&4
18227
18228 case "$gidsign" in
18229 -1)     if $test X"$gidsize" = X"$ivsize"; then
18230                 gidformat="$ivdformat"
18231         else
18232                 if $test X"$gidsize" = X"$longsize"; then
18233                         gidformat='"ld"'
18234                 else
18235                         if $test X"$gidsize" = X"$intsize"; then
18236                                 gidformat='"d"'
18237                         else
18238                                 if $test X"$gidsize" = X"$shortsize"; then
18239                                         gidformat='"hd"'
18240                                 fi
18241                         fi
18242                 fi
18243         fi
18244         ;;
18245 *)      if $test X"$gidsize" = X"$uvsize"; then
18246                 gidformat="$uvuformat"
18247         else
18248                 if $test X"$gidsize" = X"$longsize"; then
18249                         gidformat='"lu"'
18250                 else
18251                         if $test X"$gidsize" = X"$intsize"; then
18252                                 gidformat='"u"'
18253                         else
18254                                 if $test X"$gidsize" = X"$shortsize"; then
18255                                         gidformat='"hu"'
18256                                 fi
18257                         fi
18258                 fi
18259         fi
18260         ;;
18261 esac
18262
18263 : see if getgroups exists
18264 set getgroups d_getgrps
18265 eval $inlibc
18266
18267 : see if setgroups exists
18268 set setgroups d_setgrps
18269 eval $inlibc
18270
18271
18272 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18273 echo " "
18274 case "$d_getgrps$d_setgrps" in
18275 *define*)
18276         case "$groupstype" in
18277         '') dflt="$gidtype" ;;
18278         *)  dflt="$groupstype" ;;
18279         esac
18280         $cat <<EOM
18281 What type of pointer is the second argument to getgroups() and setgroups()?
18282 Usually this is the same as group ids, $gidtype, but not always.
18283
18284 EOM
18285         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18286         . ./myread
18287         groupstype="$ans"
18288         ;;
18289 *)  groupstype="$gidtype";;
18290 esac
18291
18292 echo " "
18293 echo "Checking if your $make program sets \$(MAKE)..." >&4
18294 case "$make_set_make" in
18295 '')
18296         $sed 's/^X //' > testmake.mak << 'EOF'
18297 Xall:
18298 X       @echo 'maketemp="$(MAKE)"'
18299 EOF
18300         case "`$make -f testmake.mak 2>/dev/null`" in
18301         *maketemp=*) make_set_make='#' ;;
18302         *)      make_set_make="MAKE=$make" ;;
18303         esac
18304         $rm -f testmake.mak
18305         ;;
18306 esac
18307 case "$make_set_make" in
18308 '#') echo "Yup, it does.";;
18309 *) echo "Nope, it doesn't.";;
18310 esac
18311
18312 : see what type is used for mode_t
18313 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18314 set mode_t modetype int stdio.h sys/types.h
18315 eval $typedef_ask
18316
18317 : see if stdarg is available
18318 echo " "
18319 if $test `./findhdr stdarg.h`; then
18320         echo "<stdarg.h> found." >&4
18321         valstd="$define"
18322 else
18323         echo "<stdarg.h> NOT found." >&4
18324         valstd="$undef"
18325 fi
18326
18327 : see if varags is available
18328 echo " "
18329 if $test `./findhdr varargs.h`; then
18330         echo "<varargs.h> found." >&4
18331 else
18332         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18333 fi
18334
18335 : set up the varargs testing programs
18336 $cat > varargs.c <<EOP
18337 #ifdef I_STDARG
18338 #include <stdarg.h>
18339 #endif
18340 #ifdef I_VARARGS
18341 #include <varargs.h>
18342 #endif
18343
18344 #ifdef I_STDARG
18345 int f(char *p, ...)
18346 #else
18347 int f(va_alist)
18348 va_dcl
18349 #endif
18350 {
18351         va_list ap;
18352 #ifndef I_STDARG
18353         char *p;
18354 #endif
18355 #ifdef I_STDARG
18356         va_start(ap,p);
18357 #else
18358         va_start(ap);
18359         p = va_arg(ap, char *);
18360 #endif
18361         va_end(ap);
18362 }
18363 EOP
18364 $cat > varargs <<EOP
18365 $startsh
18366 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18367         echo "true"
18368 else
18369         echo "false"
18370 fi
18371 $rm -f varargs$_o
18372 EOP
18373 chmod +x varargs
18374
18375 : now check which varargs header should be included
18376 echo " "
18377 i_varhdr=''
18378 case "$valstd" in
18379 "$define")
18380         if `./varargs I_STDARG`; then
18381                 val='stdarg.h'
18382         elif `./varargs I_VARARGS`; then
18383                 val='varargs.h'
18384         fi
18385         ;;
18386 *)
18387         if `./varargs I_VARARGS`; then
18388                 val='varargs.h'
18389         fi
18390         ;;
18391 esac
18392 case "$val" in
18393 '')
18394 echo "I could not find the definition for va_dcl... You have problems..." >&4
18395         val="$undef"; set i_stdarg; eval $setvar
18396         val="$undef"; set i_varargs; eval $setvar
18397         ;;
18398 *) 
18399         set i_varhdr
18400         eval $setvar
18401         case "$i_varhdr" in
18402         stdarg.h)
18403                 val="$define"; set i_stdarg; eval $setvar
18404                 val="$undef"; set i_varargs; eval $setvar
18405                 ;;
18406         varargs.h)
18407                 val="$undef"; set i_stdarg; eval $setvar
18408                 val="$define"; set i_varargs; eval $setvar
18409                 ;;
18410         esac
18411         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18412 esac
18413 $rm -f varargs*
18414
18415 : see if we need va_copy
18416 echo " "
18417 case "$i_stdarg" in
18418 "$define")
18419         $cat >try.c <<EOCP
18420 #include <stdarg.h>
18421 #include <stdio.h>
18422 #$i_stdlib I_STDLIB
18423 #ifdef I_STDLIB
18424 #include <stdlib.h>
18425 #endif
18426 #include <signal.h>
18427
18428 int
18429 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18430 {
18431   return vfprintf(f, fmt, *valp);
18432 }
18433  
18434 int    
18435 myvfprintf(FILE *f, const  char *fmt, va_list val)
18436 {
18437   return ivfprintf(f, fmt, &val);
18438 }
18439       
18440 int
18441 myprintf(char *fmt, ...) 
18442 {
18443   va_list val;
18444   va_start(val, fmt);
18445   return myvfprintf(stdout, fmt, val); 
18446 }         
18447
18448 int
18449 main(int ac, char **av)
18450 {
18451   signal(SIGSEGV, exit);
18452
18453   myprintf("%s%cs all right, then\n", "that", '\'');                            
18454   exit(0);      
18455 }
18456 EOCP
18457         set try
18458         if eval $compile && $run ./try 2>&1 >/dev/null; then
18459                 case "`$run ./try`" in
18460                 "that's all right, then")
18461                         okay=yes
18462                         ;;
18463                 esac
18464         fi
18465         case "$okay" in
18466         yes)    echo "It seems that you don't need va_copy()." >&4
18467                 need_va_copy="$undef"
18468                 ;;
18469         *)      echo "It seems that va_copy() or similar will be needed." >&4
18470                 need_va_copy="$define"
18471                 ;;
18472         esac
18473         $rm -f try.* core core.* *.core *.core.*
18474         ;;
18475 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18476         ;;
18477 esac
18478
18479 : see what type is used for size_t
18480 rp="What is the type used for the length parameter for string functions?"
18481 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18482 eval $typedef_ask
18483
18484 : check for type of arguments to gethostbyaddr. 
18485 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18486         case "$d_gethbyaddr" in
18487         $define)
18488                 $cat <<EOM
18489
18490 Checking to see what type of arguments are accepted by gethostbyaddr().
18491 EOM
18492                 hdrs="$define sys/types.h
18493                         $d_socket sys/socket.h 
18494                         $i_niin netinet/in.h 
18495                         $i_netdb netdb.h
18496                         $i_unistd unistd.h"
18497                 : The first arg can 'char *' or 'void *'
18498                 : The second arg is some of integral type
18499                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18500                         for yyy in size_t long int; do
18501                                 case "$netdb_host_type" in
18502                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18503                                         if ./protochk "$try" $hdrs; then
18504                                                 echo "Your system accepts $xxx for the first arg."
18505                                                 echo "...and $yyy for the second arg."
18506                                                 netdb_host_type="$xxx"
18507                                                 netdb_hlen_type="$yyy"
18508                                         fi
18509                                         ;;
18510                                 esac
18511                         done
18512                 done
18513                 : In case none of those worked, prompt the user.
18514                 case "$netdb_host_type" in
18515                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18516                         dflt='char *'
18517                         . ./myread
18518                         netdb_host_type=$ans
18519                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18520                         dflt="$sizetype"
18521                         . ./myread
18522                         netdb_hlen_type=$ans
18523                         ;;
18524                 esac
18525                 ;;
18526         *)      : no gethostbyaddr, so pick harmless defaults
18527                 netdb_host_type='char *'
18528                 netdb_hlen_type="$sizetype"
18529                 ;;
18530         esac
18531         # Remove the "const" if needed. -- but then we'll have a 
18532         # prototype clash!
18533         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18534 fi
18535
18536 : check for type of argument to gethostbyname. 
18537 if test "X$netdb_name_type" = X ; then
18538         case "$d_gethbyname" in
18539         $define)
18540                 $cat <<EOM
18541
18542 Checking to see what type of argument is accepted by gethostbyname().
18543 EOM
18544                 hdrs="$define sys/types.h
18545                         $d_socket sys/socket.h 
18546                         $i_niin netinet/in.h 
18547                         $i_netdb netdb.h
18548                         $i_unistd unistd.h"
18549                 for xxx in "const char *" "char *"; do
18550                         case "$netdb_name_type" in
18551                         '')     try="extern struct hostent *gethostbyname($xxx);"
18552                                 if ./protochk "$try" $hdrs; then
18553                                         echo "Your system accepts $xxx."
18554                                         netdb_name_type="$xxx"
18555                                 fi
18556                                 ;;
18557                         esac
18558                 done
18559                 : In case none of those worked, prompt the user.
18560                 case "$netdb_name_type" in
18561                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18562                         dflt='char *'
18563                         . ./myread
18564                         netdb_name_type=$ans
18565                         ;;
18566                 esac
18567                 ;;
18568         *)      : no gethostbyname, so pick harmless default
18569                 netdb_name_type='char *'
18570                 ;;
18571         esac
18572 fi
18573
18574 : check for type of 1st argument to getnetbyaddr. 
18575 if test "X$netdb_net_type" = X ; then
18576         case "$d_getnbyaddr" in
18577         $define)
18578                 $cat <<EOM
18579
18580 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18581 EOM
18582                 hdrs="$define sys/types.h
18583                         $d_socket sys/socket.h 
18584                         $i_niin netinet/in.h 
18585                         $i_netdb netdb.h
18586                         $i_unistd unistd.h"
18587                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18588                         case "$netdb_net_type" in
18589                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18590                                 if ./protochk "$try" $hdrs; then
18591                                         echo "Your system accepts $xxx."
18592                                         netdb_net_type="$xxx"
18593                                 fi
18594                                 ;;
18595                         esac
18596                 done
18597                 : In case none of those worked, prompt the user.
18598                 case "$netdb_net_type" in
18599                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18600                         dflt='long'
18601                         . ./myread
18602                         netdb_net_type=$ans
18603                         ;;
18604                 esac
18605                 ;;
18606         *)      : no getnetbyaddr, so pick harmless default
18607                 netdb_net_type='long'
18608                 ;;
18609         esac
18610 fi
18611 : locate the preferred pager for this system
18612 fn=f/
18613 case "$pager" in
18614 '')
18615         dflt=''
18616         case "$pg" in
18617         /*) dflt=$pg;;
18618         [a-zA-Z]:/*) dflt=$pg;;
18619         esac
18620         case "$more" in
18621         /*) dflt=$more;;
18622         [a-zA-Z]:/*) dflt=$more;;
18623         esac
18624         case "$less" in
18625         /*) dflt=$less;;
18626         [a-zA-Z]:/*) dflt=$less;;
18627         esac
18628         case "$dflt" in
18629         '') dflt=/usr/ucb/more;;
18630         esac
18631         ;;
18632 *)      dflt="$pager"
18633         : Instruct ./getfile to trust the hinted or previous pager value,
18634         : even if it does not begin with a slash.  For example, on os2,
18635         : pager might be cmd /c more.  See comments in UU/getfile.
18636         fn="f/($pager)"
18637         ;;
18638 esac
18639 echo " "
18640 rp='What pager is used on your system?'
18641 . ./getfile
18642 pager="$ans"
18643
18644 : see what type pids are declared as in the kernel
18645 rp="What is the type of process ids on this system?"
18646 set pid_t pidtype int stdio.h sys/types.h
18647 eval $typedef_ask
18648
18649 : see if ar generates random libraries by itself
18650 echo " "
18651 echo "Checking how to generate random libraries on your machine..." >&4
18652 echo 'int bar1() { return bar2(); }' > bar1.c
18653 echo 'int bar2() { return 2; }' > bar2.c
18654 $cat > foo.c <<EOP
18655 #$i_stdlib I_STDLIB
18656 #ifdef I_STDLIB
18657 #include <stdlib.h>
18658 #endif
18659 int main() { printf("%d\n", bar1()); exit(0); }
18660 EOP
18661 $cc $ccflags -c bar1.c >/dev/null 2>&1
18662 $cc $ccflags -c bar2.c >/dev/null 2>&1
18663 $cc $ccflags -c foo.c >/dev/null 2>&1
18664 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18665 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18666         $run ./foobar >/dev/null 2>&1; then
18667         echo "$ar appears to generate random libraries itself."
18668         orderlib=false
18669         ranlib=":"
18670 elif $ar ts bar$_a >/dev/null 2>&1 &&
18671         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18672         $run ./foobar >/dev/null 2>&1; then
18673                 echo "a table of contents needs to be added with '$ar ts'."
18674                 orderlib=false
18675                 ranlib="$ar ts"
18676 else
18677         case "$ranlib" in
18678         :) ranlib='';;
18679         '')
18680                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18681                 $test -f $ranlib || ranlib=''
18682                 ;;
18683         esac
18684         if $test -n "$ranlib"; then
18685                 echo "your system has '$ranlib'; we'll use that."
18686                 orderlib=false
18687         else
18688                 echo "your system doesn't seem to support random libraries"
18689                 echo "so we'll use lorder and tsort to order the libraries."
18690                 orderlib=true
18691                 ranlib=":"
18692         fi
18693 fi
18694 $rm -f foo* bar* 
18695
18696 : check for type of arguments to select. 
18697 case "$selecttype" in
18698 '') case "$d_select" in
18699         $define)
18700                 echo " "
18701                 $cat <<EOM
18702 Checking to see what type of arguments are accepted by select().
18703 EOM
18704                 hdrs="$define sys/types.h
18705                         $i_systime sys/time.h 
18706                         $i_sysselct sys/select.h
18707                         $d_socket sys/socket.h"
18708                 : The first arg can be int, unsigned, or size_t
18709                 : The last arg may or may not be 'const'
18710                 val=''
18711                 : void pointer has been seen but using that
18712                 : breaks the selectminbits test
18713                 for xxx in 'fd_set *' 'int *'; do
18714                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18715                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18716                                         case "$val" in
18717                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18718                                                 if ./protochk "$try" $hdrs; then
18719                                                         echo "Your system accepts $xxx."
18720                                                         val="$xxx"
18721                                                 fi
18722                                                 ;;
18723                                         esac
18724                                 done
18725                         done
18726                 done
18727                 case "$val" in
18728                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18729                         case "$d_fd_set" in
18730                                 $define) dflt="fd_set *" ;;
18731                                 *)              dflt="int *" ;;
18732                         esac
18733                         . ./myread
18734                         val=$ans
18735                         ;;
18736                 esac
18737                 selecttype="$val"
18738                 ;;
18739         *)      : no select, so pick a harmless default
18740                 selecttype='int *'
18741                 ;;
18742         esac
18743         ;;
18744 esac
18745
18746 : check for the select 'width'
18747 case "$selectminbits" in
18748 '') safebits=`expr $ptrsize \* 8`
18749     case "$d_select" in
18750         $define)
18751                 $cat <<EOM
18752
18753 Checking to see on how many bits at a time your select() operates...
18754 EOM
18755                 $cat >try.c <<EOCP
18756 #include <sys/types.h>
18757 #$i_time I_TIME
18758 #$i_systime I_SYS_TIME
18759 #$i_systimek I_SYS_TIME_KERNEL
18760 #ifdef I_TIME
18761 #   include <time.h>
18762 #endif
18763 #ifdef I_SYS_TIME
18764 #   ifdef I_SYS_TIME_KERNEL
18765 #       define KERNEL
18766 #   endif
18767 #   include <sys/time.h>
18768 #   ifdef I_SYS_TIME_KERNEL
18769 #       undef KERNEL
18770 #   endif
18771 #endif
18772 #$i_sysselct I_SYS_SELECT
18773 #ifdef I_SYS_SELECT
18774 #include <sys/select.h>
18775 #endif
18776 #$d_socket HAS_SOCKET
18777 #ifdef HAS_SOCKET
18778 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18779 #endif
18780 #include <stdio.h>
18781 #$i_stdlib I_STDLIB
18782 #ifdef I_STDLIB
18783 #include <stdlib.h>
18784 #endif
18785 $selecttype b;
18786 #define S sizeof(*(b))
18787 #define MINBITS 64
18788 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18789 #define NBITS  (NBYTES * 8)
18790 int main() {
18791     char *s = malloc(NBYTES);
18792     struct timeval t;
18793     int i;
18794     FILE* fp;
18795     int fd;
18796
18797     if (!s)
18798         exit(1);
18799     fclose(stdin);
18800     fp = fopen("try.c", "r");
18801     if (fp == 0)
18802       exit(2);
18803     fd = fileno(fp);
18804     if (fd < 0)
18805       exit(3);
18806     b = ($selecttype)s;
18807     for (i = 0; i < NBITS; i++)
18808         FD_SET(i, b);
18809     t.tv_sec  = 0;
18810     t.tv_usec = 0;
18811     select(fd + 1, b, 0, 0, &t);
18812     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18813     free(s);
18814     printf("%d\n", i + 1);
18815     return 0;
18816 }
18817 EOCP
18818                 set try
18819                 if eval $compile_ok; then
18820                         selectminbits=`$run ./try`
18821                         case "$selectminbits" in
18822                         '')     cat >&4 <<EOM
18823 Cannot figure out on how many bits at a time your select() operates.
18824 I'll play safe and guess it is $safebits bits.
18825 EOM
18826                                 selectminbits=$safebits
18827                                 bits="$safebits bits"
18828                                 ;;
18829                         1)      bits="1 bit" ;;
18830                         *)      bits="$selectminbits bits" ;;
18831                         esac
18832                         echo "Your select() operates on $bits at a time." >&4
18833                 else
18834                         rp='What is the minimum number of bits your select() operates on?'
18835                         case "$byteorder" in
18836                         12345678)       dflt=64 ;;
18837                         1234)           dflt=32 ;;
18838                         *)              dflt=1  ;;
18839                         esac
18840                         . ./myread
18841                         val=$ans
18842                         selectminbits="$val"
18843                 fi
18844                 $rm -f try.* try
18845                 ;;
18846         *)      : no select, so pick a harmless default
18847                 selectminbits=$safebits
18848                 ;;
18849         esac
18850         ;;
18851 esac
18852
18853 : Trace out the files included by signal.h, then look for SIGxxx names.
18854 : Remove SIGARRAYSIZE used by HPUX.
18855 : Remove SIGSTKSIZE used by Linux.
18856 : Remove SIGSTKSZ used by Posix.
18857 : Remove SIGTYP void lines used by OS2.
18858 : Some cpps, like os390, dont give the file name anywhere
18859 if [ "X$fieldn" = X ]; then
18860         : Just make some guesses.  We check them later.
18861         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18862 else
18863         xxx=`echo '#include <signal.h>' |
18864         $cppstdin $cppminus $cppflags 2>/dev/null |
18865         $grep '^[       ]*#.*include' | 
18866         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18867 fi
18868 : Check this list of files to be sure we have parsed the cpp output ok.
18869 : This will also avoid potentially non-existent files, such 
18870 : as ../foo/bar.h
18871 xxxfiles=''
18872 for xx in $xxx /dev/null ; do
18873         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18874 done
18875 : If we have found no files, at least try signal.h
18876 case "$xxxfiles" in
18877 '')     xxxfiles=`./findhdr signal.h` ;;
18878 esac
18879 xxx=`awk '
18880 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18881         print substr($2, 4, 20)
18882 }
18883 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18884         print substr($3, 4, 20)
18885 }' $xxxfiles`
18886 : Append some common names just in case the awk scan failed.
18887 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18888 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18889 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18890 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18891 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18892
18893 : generate a few handy files for later
18894 $cat > signal.c <<EOCP
18895 #include <sys/types.h>
18896 #include <signal.h>
18897 #$i_stdlib I_STDLIB
18898 #ifdef I_STDLIB
18899 #include <stdlib.h>
18900 #endif
18901 #include <stdio.h>
18902 int main() {
18903
18904 /* Strange style to avoid deeply-nested #if/#else/#endif */
18905 #ifndef NSIG
18906 #  ifdef _NSIG
18907 #    define NSIG (_NSIG)
18908 #  endif
18909 #endif
18910
18911 #ifndef NSIG
18912 #  ifdef SIGMAX
18913 #    define NSIG (SIGMAX+1)
18914 #  endif
18915 #endif
18916
18917 #ifndef NSIG
18918 #  ifdef SIG_MAX
18919 #    define NSIG (SIG_MAX+1)
18920 #  endif
18921 #endif
18922
18923 #ifndef NSIG
18924 #  ifdef MAXSIG
18925 #    define NSIG (MAXSIG+1)
18926 #  endif
18927 #endif
18928
18929 #ifndef NSIG
18930 #  ifdef MAX_SIG
18931 #    define NSIG (MAX_SIG+1)
18932 #  endif
18933 #endif
18934
18935 #ifndef NSIG
18936 #  ifdef SIGARRAYSIZE
18937 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18938 #  endif
18939 #endif
18940
18941 #ifndef NSIG
18942 #  ifdef _sys_nsig
18943 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18944 #  endif
18945 #endif
18946
18947 /* Default to some arbitrary number that's big enough to get most
18948    of the common signals.
18949 */
18950 #ifndef NSIG
18951 #    define NSIG 50
18952 #endif
18953
18954 printf("NSIG %d\n", NSIG);
18955
18956 #ifndef JUST_NSIG
18957
18958 EOCP
18959
18960 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18961 {
18962         printf "#ifdef SIG"; printf $1; printf "\n"
18963         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18964         printf $1; printf ");\n"
18965         printf "#endif\n"
18966 }
18967 END {
18968         printf "#endif /* JUST_NSIG */\n";
18969         printf "exit(0);\n}\n";
18970 }
18971 ' >>signal.c
18972 $cat >signal.awk <<'EOP'
18973 BEGIN { ndups = 0 }
18974 $1 ~ /^NSIG$/ { nsig = $2 }
18975 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18976     if ($2 > maxsig) { maxsig = $2 }
18977     if (sig_name[$2]) {
18978         dup_name[ndups] = $1
18979         dup_num[ndups] = $2
18980         ndups++ 
18981     }
18982     else {
18983         sig_name[$2] = $1
18984         sig_num[$2] = $2
18985     }
18986 }
18987 END { 
18988     if (nsig == 0) {
18989         nsig = maxsig + 1
18990     }
18991     printf("NSIG %d\n", nsig);
18992     for (n = 1; n < nsig; n++) {
18993         if (sig_name[n]) {
18994             printf("%s %d\n", sig_name[n], sig_num[n])
18995         }
18996         else {
18997             printf("NUM%d %d\n", n, n) 
18998         }
18999     }
19000     for (n = 0; n < ndups; n++) {
19001         printf("%s %d\n", dup_name[n], dup_num[n])
19002     }
19003 }
19004 EOP
19005 $cat >signal_cmd <<EOS
19006 $startsh
19007 if $test -s signal.lst; then
19008     echo "Using your existing signal.lst file"
19009         exit 0
19010 fi
19011 xxx="$xxx"
19012 EOS
19013 $cat >>signal_cmd <<'EOS'
19014
19015 set signal
19016 if eval $compile_ok; then
19017         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19018 else
19019         echo "(I can't seem be able to compile the whole test program)" >&4
19020         echo "(I'll try it in little pieces.)" >&4
19021         set signal -DJUST_NSIG
19022         if eval $compile_ok; then
19023                 $run ./signal$_exe > signal.nsg
19024                 $cat signal.nsg
19025         else
19026                 echo "I can't seem to figure out how many signals you have." >&4
19027                 echo "Guessing 50." >&4
19028                 echo 'NSIG 50' > signal.nsg
19029         fi
19030         : Now look at all the signal names, one at a time.
19031         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19032                 $cat > signal.c <<EOCP
19033 #include <sys/types.h>
19034 #include <signal.h>
19035 #include <stdio.h>
19036 int main() {
19037 printf("$xx %d\n", SIG${xx});
19038 return 0;
19039 }
19040 EOCP
19041                 set signal
19042                 if eval $compile; then
19043                         echo "SIG${xx} found."
19044                         $run ./signal$_exe  >> signal.ls1
19045                 else
19046                         echo "SIG${xx} NOT found."
19047                 fi
19048         done
19049         if $test -s signal.ls1; then
19050                 $cat signal.nsg signal.ls1 |
19051                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19052         fi
19053
19054 fi
19055 if $test -s signal.lst; then
19056         :
19057 else
19058         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19059         echo 'kill -l' >signal
19060         set X `csh -f <signal`
19061         $rm -f signal
19062         shift
19063         case $# in
19064         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19065         esac
19066         echo $@ | $tr ' ' $trnl | \
19067             $awk '{ printf "%s %d\n", $1, ++s; }
19068                   END { printf "NSIG %d\n", ++s }' >signal.lst
19069 fi
19070 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19071 EOS
19072 chmod a+x signal_cmd
19073 $eunicefix signal_cmd
19074
19075 : generate list of signal names
19076 echo " "
19077 case "$sig_name_init" in
19078 '') doinit=yes ;;
19079 *)  case "$sig_num_init" in
19080     ''|*,*) doinit=yes ;;
19081     esac ;;
19082 esac
19083 case "$doinit" in
19084 yes)
19085         echo "Generating a list of signal names and numbers..." >&4
19086         . ./signal_cmd
19087         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19088         sig_name=`$awk 'BEGIN { printf "ZERO " }
19089                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19090         sig_num=`$awk  'BEGIN { printf "0 " }
19091                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19092         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19093                              !/^NSIG/   { printf "\"%s\", ", $1 }
19094                              END        { printf "0\n" }' signal.lst`
19095         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19096                              !/^NSIG/   { printf "%d, ", $2}
19097                              END        { printf "0\n"}' signal.lst`
19098         ;;
19099 esac
19100 echo "The following $sig_count signals are available:"
19101 echo " "
19102 echo $sig_name | $awk \
19103 'BEGIN { linelen = 0 }
19104 {
19105         for (i = 1; i <= NF; i++) {
19106                 name = "SIG" $i " "
19107                 linelen = linelen + length(name)
19108                 if (linelen > 70) {
19109                         printf "\n"
19110                         linelen = length(name)
19111                 }
19112                 printf "%s", name
19113         }
19114         printf "\n"
19115 }'
19116 sig_size=`echo $sig_name | awk '{print NF}'`
19117 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19118
19119 echo " "
19120 case "$sizetype" in
19121 *_t) zzz="$sizetype"    ;;
19122 *)   zzz="filesize"     ;;
19123 esac
19124 echo "Checking the size of $zzz..." >&4 
19125 cat > try.c <<EOCP
19126 #include <sys/types.h>
19127 #include <stdio.h>
19128 #$i_stdlib I_STDLIB
19129 #ifdef I_STDLIB
19130 #include <stdlib.h>
19131 #endif
19132 int main() {
19133     printf("%d\n", (int)sizeof($sizetype));
19134     exit(0);
19135 }
19136 EOCP
19137 set try
19138 if eval $compile_ok; then
19139         yyy=`$run ./try`
19140         case "$yyy" in
19141         '')     sizesize=4
19142                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19143                 ;;
19144         *)      sizesize=$yyy
19145                 echo "Your $zzz size is $sizesize bytes."
19146                 ;;
19147         esac
19148 else
19149         sizesize=4
19150         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19151 fi
19152
19153
19154 : check for socklen_t
19155 echo " "
19156 echo "Checking to see if you have socklen_t..." >&4
19157 $cat >try.c <<EOCP
19158 #include <sys/types.h>
19159 #$d_socket HAS_SOCKET
19160 #ifdef HAS_SOCKET
19161 #include <sys/socket.h>
19162 #endif
19163 int main() { socklen_t x = 16; }
19164 EOCP
19165 set try
19166 if eval $compile; then
19167         val="$define"
19168         echo "You have socklen_t."
19169 else
19170         val="$undef"
19171         echo "You do not have socklen_t."
19172         case "$sizetype" in
19173         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19174         esac
19175 fi
19176 $rm -f try try.*
19177 set d_socklen_t
19178 eval $setvar
19179
19180 : see if this is a socks.h system
19181 set socks.h i_socks
19182 eval $inhdr
19183
19184 : check for type of the size argument to socket calls
19185 case "$d_socket" in
19186 "$define")
19187         $cat <<EOM
19188
19189 Checking to see what type is the last argument of accept().
19190 EOM
19191         yyy=''
19192         case "$d_socklen_t" in
19193         "$define") yyy="$yyy socklen_t"
19194         esac
19195         yyy="$yyy $sizetype int long unsigned"
19196         for xxx in $yyy; do
19197                 case "$socksizetype" in
19198                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19199                         case "$usesocks" in
19200                         "$define")
19201                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19202                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19203                                         socksizetype="$xxx"
19204                                 fi
19205                                 ;;
19206                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19207                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19208                                         socksizetype="$xxx"
19209                                 fi
19210                                 ;;
19211                         esac
19212                         ;;
19213                 esac
19214         done
19215 : In case none of those worked, prompt the user.
19216         case "$socksizetype" in
19217         '')     rp='What is the type for socket address structure sizes?'
19218                 dflt='int'
19219                 . ./myread
19220                 socksizetype=$ans
19221                 ;;
19222         esac
19223         ;;
19224 *)      : no sockets, so pick relatively harmless default
19225         socksizetype='int'
19226         ;;
19227 esac
19228
19229 : see what type is used for signed size_t
19230 set ssize_t ssizetype int stdio.h sys/types.h
19231 eval $typedef
19232 dflt="$ssizetype"
19233 $cat > try.c <<EOM
19234 #include <stdio.h>
19235 #$i_stdlib I_STDLIB
19236 #ifdef I_STDLIB
19237 #include <stdlib.h>
19238 #endif
19239 #include <sys/types.h>
19240 #define Size_t $sizetype
19241 #define SSize_t $dflt
19242 int main()
19243 {
19244         if (sizeof(Size_t) == sizeof(SSize_t))
19245                 printf("$dflt\n");
19246         else if (sizeof(Size_t) == sizeof(int))
19247                 printf("int\n");
19248         else 
19249                 printf("long\n");
19250         exit(0);
19251 }
19252 EOM
19253 echo " "
19254 set try
19255 if eval $compile_ok && $run ./try > /dev/null; then
19256         ssizetype=`$run ./try`
19257         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19258 else
19259         $cat >&4 <<EOM
19260 Help! I can't compile and run the ssize_t test program: please enlighten me!
19261 (This is probably a misconfiguration in your system or libraries, and
19262 you really ought to fix it.  Still, I'll try anyway.)
19263
19264 I need a type that is the same size as $sizetype, but is guaranteed to
19265 be signed.  Common values are ssize_t, int and long.
19266
19267 EOM
19268         rp="What signed type is the same size as $sizetype?"
19269         . ./myread
19270         ssizetype="$ans"
19271 fi
19272 $rm -f try try.*
19273
19274 : see what type of char stdio uses.
19275 echo " "
19276 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19277 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19278         echo "Your stdio uses unsigned chars." >&4
19279         stdchar="unsigned char"
19280 else
19281         echo "Your stdio uses signed chars." >&4
19282         stdchar="char"
19283 fi
19284 $rm -f stdioh
19285
19286
19287
19288 : see what type uids are declared as in the kernel
19289 echo " "
19290 echo "Looking for the type for user ids returned by getuid()."
19291 set uid_t uidtype xxx stdio.h sys/types.h
19292 eval $typedef
19293 case "$uidtype" in
19294 xxx)
19295         xxx=`./findhdr sys/user.h`
19296         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19297         case $1 in
19298         unsigned) dflt="$1 $2" ;;
19299         *) dflt="$1" ;;
19300         esac
19301         ;;
19302 *) dflt="$uidtype";;
19303 esac
19304 case "$uidtype" in
19305 uid_t)  echo "uid_t found." ;;
19306 *)      rp="What is the type for user ids returned by getuid()?"
19307         . ./myread
19308         uidtype="$ans"
19309         ;;
19310 esac
19311
19312 echo " "
19313 case "$uidtype" in
19314 *_t) zzz="$uidtype"     ;;
19315 *)   zzz="uid"          ;;
19316 esac
19317 echo "Checking the size of $zzz..." >&4 
19318 cat > try.c <<EOCP
19319 #include <sys/types.h>
19320 #include <stdio.h>
19321 #$i_stdlib I_STDLIB
19322 #ifdef I_STDLIB
19323 #include <stdlib.h>
19324 #endif
19325 int main() {
19326     printf("%d\n", (int)sizeof($uidtype));
19327     exit(0);
19328 }
19329 EOCP
19330 set try
19331 if eval $compile_ok; then
19332         yyy=`$run ./try`
19333         case "$yyy" in
19334         '')     uidsize=4
19335                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19336                 ;;
19337         *)      uidsize=$yyy
19338                 echo "Your $zzz is $uidsize bytes long."
19339                 ;;
19340         esac
19341 else
19342         uidsize=4
19343         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19344 fi
19345
19346 echo " "
19347 case "$uidtype" in
19348 *_t) zzz="$uidtype"     ;;
19349 *)   zzz="uid"          ;;
19350 esac
19351 echo "Checking the sign of $zzz..." >&4
19352 cat > try.c <<EOCP
19353 #include <sys/types.h>
19354 #include <stdio.h>
19355 int main() {
19356         $uidtype foo = -1;
19357         if (foo < 0)
19358                 printf("-1\n");
19359         else
19360                 printf("1\n");
19361 }
19362 EOCP
19363 set try
19364 if eval $compile; then
19365         yyy=`$run ./try`
19366         case "$yyy" in
19367         '')     uidsign=1
19368                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19369                 ;;
19370         *)      uidsign=$yyy
19371                 case "$uidsign" in
19372                  1) echo "Your $zzz is unsigned." ;;
19373                 -1) echo "Your $zzz is signed."   ;;
19374                 esac
19375                 ;;
19376         esac
19377 else
19378         uidsign=1
19379         echo "(I can't compile the test program--guessing unsigned.)" >&4
19380 fi
19381
19382
19383
19384 echo " "
19385 $echo "Checking the format string to be used for uids..." >&4
19386
19387 case "$uidsign" in
19388 -1)     if $test X"$uidsize" = X"$ivsize"; then
19389                 uidformat="$ivdformat"
19390         else
19391                 if $test X"$uidsize" = X"$longsize"; then
19392                         uidformat='"ld"'
19393                 else
19394                         if $test X"$uidsize" = X"$intsize"; then
19395                                 uidformat='"d"'
19396                         else
19397                                 if $test X"$uidsize" = X"$shortsize"; then
19398                                         uidformat='"hd"'
19399                                 fi
19400                         fi
19401                 fi
19402         fi
19403         ;;
19404 *)      if $test X"$uidsize" = X"$uvsize"; then
19405                 uidformat="$uvuformat"
19406         else
19407                 if $test X"$uidsize" = X"$longsize"; then
19408                         uidformat='"lu"'
19409                 else
19410                         if $test X"$uidsize" = X"$intsize"; then
19411                                 uidformat='"u"'
19412                         else
19413                                 if $test X"$uidsize" = X"$shortsize"; then
19414                                         uidformat='"hu"'
19415                                 fi
19416                         fi
19417                 fi
19418         fi
19419         ;;
19420 esac
19421
19422 : determine compiler compiler
19423 case "$yacc" in
19424 '')
19425         dflt=yacc;;
19426 *)
19427         dflt="$yacc";;
19428 esac
19429 echo " "
19430 comp='yacc'
19431 if $test -f "$byacc$_exe"; then
19432         dflt="$byacc"
19433         comp="byacc or $comp"
19434 fi
19435 if $test -f "$bison$_exe"; then
19436         comp="$comp or bison -y"
19437 fi
19438 rp="Which compiler compiler ($comp) shall I use?"
19439 . ./myread
19440 yacc="$ans"
19441 case "$yacc" in
19442 *bis*)
19443         case "$yacc" in
19444         *-y*) ;;
19445         *)
19446                 yacc="$yacc -y"
19447                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19448                 ;;
19449         esac
19450         ;;
19451 esac
19452
19453 : see if this is a fp.h system
19454 set fp.h i_fp
19455 eval $inhdr
19456
19457 : see if this is a fp_class.h system
19458 set fp_class.h i_fp_class
19459 eval $inhdr
19460
19461 : see if this is a ieeefp.h system
19462 case "$i_ieeefp" in
19463 '' ) set ieeefp.h i_ieeefp
19464      eval $inhdr
19465      ;;
19466 esac
19467
19468 : see if this is a libutil.h system
19469 set libutil.h i_libutil
19470 eval $inhdr
19471
19472 : see if mach cthreads are available
19473 if test "X$usethreads" = "X$define"; then
19474         set mach/cthreads.h i_machcthr
19475         eval $inhdr
19476 else
19477         i_machcthr="$undef"
19478 fi
19479
19480
19481
19482 : see if this is a math.h system
19483 set math.h i_math
19484 eval $inhdr
19485
19486 : see if this is a mntent.h system
19487 set mntent.h i_mntent
19488 eval $inhdr
19489
19490 : see if ndbm.h is available
19491 set ndbm.h t_ndbm
19492 eval $inhdr
19493
19494 case "$t_ndbm" in
19495 $undef)
19496     # Some Linux distributions such as RedHat 7.1 put the
19497     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19498     if $test -f /usr/include/gdbm/ndbm.h; then
19499         echo '<gdbm/ndbm.h> found.'
19500         ccflags="$ccflags -I/usr/include/gdbm"
19501         cppflags="$cppflags -I/usr/include/gdbm"
19502         t_ndbm=$define
19503     fi
19504     ;;
19505 esac
19506
19507 case "$t_ndbm" in
19508 $define)
19509         : see if dbm_open exists
19510         set dbm_open d_dbm_open
19511         eval $inlibc
19512         case "$d_dbm_open" in
19513         $undef)
19514                 t_ndbm="$undef"
19515                 echo "We won't be including <ndbm.h>"
19516                 ;;
19517         esac
19518         ;;
19519 esac
19520 val="$t_ndbm"
19521 set i_ndbm
19522 eval $setvar
19523
19524 : see if net/errno.h is available
19525 val=''
19526 set net/errno.h val
19527 eval $inhdr
19528
19529 : Unfortunately, it causes problems on some systems.  Arrgh.
19530 case "$val" in
19531 $define)
19532         cat > try.c <<'EOM'
19533 #include <stdio.h>
19534 #include <errno.h>
19535 #include <net/errno.h>
19536 int func()
19537 {
19538         return ENOTSOCK;
19539 }
19540 EOM
19541         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19542                 echo "We'll be including <net/errno.h>." >&4
19543         else
19544                 echo "We won't be including <net/errno.h>." >&4
19545                 val="$undef"
19546         fi
19547         $rm -f try.* try
19548         ;;
19549 esac
19550 set i_neterrno
19551 eval $setvar
19552
19553 : see if netinet/tcp.h is available
19554 set netinet/tcp.h i_netinettcp
19555 eval $inhdr
19556
19557 : see if this is a poll.h system
19558 set poll.h i_poll
19559 eval $inhdr
19560
19561 : see if this is a prot.h system
19562 set prot.h i_prot
19563 eval $inhdr
19564
19565 echo " "
19566 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19567 $cat <<'EOSH' > Cppsym.know
19568 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19569 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19570 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19571 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19572 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19573 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19574 bull c cadmus clipper CMU COFF COMPILER_VERSION
19575 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19576 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19577 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19578 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19579 GLIBC GLIBC_MINOR
19580 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19581 H3050R H3050RX hbullx20 hcx host_mips
19582 hp200 hp300 hp700 HP700 hp800 hp9000
19583 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19584 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19585 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19586 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19587 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19588 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19589 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19590 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19591 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19592 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19593 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19594 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19595 MATH_HAS_NO_SIDE_EFFECTS
19596 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19597 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19598 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19599 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19600 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19601 NetBSD news1500 news1700 news1800 news1900 news3700
19602 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19603 ns32016 ns32332 ns32k nsc32000
19604 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19605 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19606 pc532 pdp11 PGC PIC plexus PORTAR posix
19607 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19608 POSIX_C_SOURCE POSIX_SOURCE POWER
19609 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19610 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19611 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19612 sony sony_news sonyrisc sparc sparclite spectrum
19613 stardent stdc STDC_EXT stratos sun sun3 sun386
19614 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19615 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19616 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19617 sysV68 sysV88 Tek4132 Tek4300 titan
19618 TM3200 TM5400 TM5600
19619 tower tower32 tower32_200 tower32_600 tower32_700
19620 tower32_800 tower32_850 tss
19621 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19622 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19623 unix UNIX95 UNIX99 unixpc unos
19624 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19625 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19626 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19627 USGr4 USGr4_2
19628 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19629 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19630 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19631 z8000
19632 EOSH
19633 # Maybe put other stuff here too.
19634 cat <<EOSH >>Cppsym.know
19635 $osname
19636 EOSH
19637 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19638 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19639 $cat Cppsym.know > Cppsym.c
19640 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19641 $rm -f Cppsym.a Cppsym.b Cppsym.c
19642 cat <<EOSH > Cppsym
19643 $startsh
19644 if $test \$# -gt 0; then
19645     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19646     if $test -s Cppsym.got; then
19647         $rm -f Cppsym.got
19648         exit 0
19649     fi
19650     $rm -f Cppsym.got
19651     exit 1
19652 else
19653     $tr " " "$trnl" | ./Cppsym.try
19654     exit 0
19655 fi
19656 EOSH
19657 chmod +x Cppsym
19658 $eunicefix Cppsym
19659 cat <<EOSH > Cppsym.try
19660 $startsh
19661 cat <<'EOCP' > try.c
19662 #include <stdio.h>
19663 int main() {
19664 EOCP
19665 $awk \\
19666 EOSH
19667 cat <<'EOSH' >> Cppsym.try
19668 'length($1) > 0 {
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     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
19673 }'       >> try.c
19674 echo 'return 0;}' >> try.c
19675 EOSH
19676 cat <<EOSH >> Cppsym.try
19677 ccflags="$ccflags"
19678 case "$osname-$gccversion" in
19679 irix-) ccflags="\$ccflags -woff 1178" ;;
19680 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19681 esac
19682 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19683 EOSH
19684 chmod +x Cppsym.try
19685 $eunicefix Cppsym.try
19686 ./Cppsym < Cppsym.know > Cppsym.true
19687 : now check the C compiler for additional symbols
19688 postprocess_cc_v=''
19689 case "$osname" in
19690 aix) postprocess_cc_v="|$tr , ' '" ;;
19691 esac
19692 $cat >ccsym <<EOS
19693 $startsh
19694 $cat >tmp.c <<EOF
19695 extern int foo;
19696 EOF
19697 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19698 do
19699         case "\$i" in
19700         -D*) echo "\$i" | $sed 's/^-D//';;
19701         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19702         esac
19703 done
19704 $rm -f try.c
19705 EOS
19706 postprocess_cc_v=''
19707 chmod +x ccsym
19708 $eunicefix ccsym
19709 ./ccsym > ccsym1.raw
19710 if $test -s ccsym1.raw; then
19711        $sort ccsym1.raw | $uniq >ccsym.raw
19712 else
19713        mv ccsym1.raw ccsym.raw
19714 fi
19715
19716 $awk '/\=/ { print $0; next }
19717         { print $0"=1" }' ccsym.raw >ccsym.list
19718 $awk '/\=/ { print $0; next }
19719         { print $0"=1" }' Cppsym.true >ccsym.true
19720 $comm -13 ccsym.true ccsym.list >ccsym.own
19721 $comm -12 ccsym.true ccsym.list >ccsym.com
19722 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19723 also=''
19724 if $test -z ccsym.raw; then
19725         echo "Your C compiler doesn't seem to define any symbols!" >&4
19726         echo " "
19727         echo "However, your C preprocessor defines the following symbols:"
19728         $cat Cppsym.true
19729         ccsymbols=''
19730         cppsymbols=`$cat Cppsym.true`
19731         cppsymbols=`echo $cppsymbols`
19732         cppccsymbols="$cppsymbols"
19733 else
19734         if $test -s ccsym.com; then
19735                 echo "Your C compiler and pre-processor define these symbols:"
19736                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19737                 also='also '
19738                 symbols='ones'
19739                 cppccsymbols=`$cat ccsym.com`
19740                 cppccsymbols=`echo $cppccsymbols`
19741                 $test "$silent" || sleep 1
19742         fi
19743         if $test -s ccsym.cpp; then
19744                 $test "$also" && echo " "
19745                 echo "Your C pre-processor ${also}defines the following symbols:"
19746                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19747                 also='further '
19748                 cppsymbols=`$cat ccsym.cpp`
19749                 cppsymbols=`echo $cppsymbols`
19750                 $test "$silent" || sleep 1
19751         fi
19752         if $test -s ccsym.own; then
19753                 $test "$also" && echo " "
19754                 echo "Your C compiler ${also}defines the following cpp symbols:"
19755                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19756                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19757                 ccsymbols=`$cat ccsym.own`
19758                 ccsymbols=`echo $ccsymbols`
19759                 $test "$silent" || sleep 1
19760         fi
19761 fi
19762
19763 : see if this is a termio system
19764 val="$undef"
19765 val2="$undef"
19766 val3="$undef"
19767 if $test `./findhdr termios.h`; then
19768         set tcsetattr i_termios
19769         eval $inlibc
19770         val3="$i_termios"
19771 fi
19772 echo " "
19773 case "$val3" in
19774 "$define") echo "You have POSIX termios.h... good!" >&4;;
19775 *) if ./Cppsym pyr; then
19776                 case "`/bin/universe`" in
19777                 ucb) if $test `./findhdr sgtty.h`; then
19778                                 val2="$define"
19779                                 echo "<sgtty.h> found." >&4
19780                         else
19781                                 echo "System is pyramid with BSD universe."
19782                                 echo "<sgtty.h> not found--you could have problems." >&4
19783                         fi;;
19784                 *) if $test `./findhdr termio.h`; then
19785                                 val="$define"
19786                                 echo "<termio.h> found." >&4
19787                         else
19788                                 echo "System is pyramid with USG universe."
19789                                 echo "<termio.h> not found--you could have problems." >&4
19790                         fi;;
19791                 esac
19792         elif ./usg; then
19793                 if $test `./findhdr termio.h`; then
19794                         echo "<termio.h> found." >&4
19795                         val="$define"
19796                 elif $test `./findhdr sgtty.h`; then
19797                         echo "<sgtty.h> found." >&4
19798                         val2="$define"
19799                 else
19800 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19801                 fi
19802         else
19803                 if $test `./findhdr sgtty.h`; then
19804                         echo "<sgtty.h> found." >&4
19805                         val2="$define"
19806                 elif $test `./findhdr termio.h`; then
19807                         echo "<termio.h> found." >&4
19808                         val="$define"
19809                 else
19810 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19811                 fi
19812         fi;;
19813 esac
19814 set i_termio; eval $setvar
19815 val=$val2; set i_sgtty; eval $setvar
19816 val=$val3; set i_termios; eval $setvar
19817
19818 : see if stddef is available
19819 set stddef.h i_stddef
19820 eval $inhdr
19821
19822 : see if this is a sunmath.h system
19823 set sunmath.h i_sunmath
19824 eval $inhdr
19825
19826 : see if sys/access.h is available
19827 set sys/access.h i_sysaccess
19828 eval $inhdr
19829
19830 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19831 set sys/filio.h i_sysfilio
19832 eval $inhdr
19833 echo " "
19834 if $test `./findhdr sys/ioctl.h`; then
19835         val="$define"
19836         echo '<sys/ioctl.h> found.' >&4
19837 else
19838         val="$undef"
19839         if $test $i_sysfilio = "$define"; then
19840             echo '<sys/ioctl.h> NOT found.' >&4
19841         else
19842                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19843                 $test $i_termio = "$define" && xxx="termio.h"
19844                 $test $i_termios = "$define" && xxx="termios.h"
19845 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19846         fi
19847 fi
19848 set i_sysioctl
19849 eval $setvar
19850
19851 : see if socket ioctl defs are in sys/sockio.h
19852 echo " "
19853 xxx=`./findhdr sys/sockio.h`
19854 if $test "$xxx"; then
19855         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19856                 val="$define"
19857                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19858         else
19859                 val="$undef"
19860                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19861         fi
19862 else
19863         val="$undef"
19864         $cat <<EOM
19865 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19866 EOM
19867 fi
19868 set i_syssockio
19869 eval $setvar
19870
19871
19872 : see if this is a syslog.h system
19873 set syslog.h i_syslog
19874 eval $inhdr
19875
19876
19877 : see if this is a sys/mode.h system
19878 set sys/mode.h i_sysmode
19879 eval $inhdr
19880
19881 : see if sys/resource.h has to be included
19882 set sys/resource.h i_sysresrc
19883 eval $inhdr
19884
19885 : see if sys/security.h is available
19886 set sys/security.h i_syssecrt
19887 eval $inhdr
19888
19889 : see if this is a sys/statvfs.h system
19890 set sys/statvfs.h i_sysstatvfs
19891 eval $inhdr
19892
19893 : see if this is a sys/un.h system
19894 set sys/un.h i_sysun
19895 eval $inhdr
19896
19897
19898 : see if this is a sys/utsname.h system
19899 set sys/utsname.h i_sysutsname
19900 eval $inhdr
19901
19902 : see if this is a syswait system
19903 set sys/wait.h i_syswait
19904 eval $inhdr
19905
19906 : see if this is a ustat.h system
19907 set ustat.h i_ustat
19908 eval $inhdr
19909
19910 : see if this is an utime system
19911 set utime.h i_utime
19912 eval $inhdr
19913
19914 : see if this is a values.h system
19915 set values.h i_values
19916 eval $inhdr
19917
19918 : see if this is a vfork system
19919 case "$d_vfork" in
19920 "$define")
19921         set vfork.h i_vfork
19922         eval $inhdr
19923         ;;
19924 *)
19925         i_vfork="$undef"
19926         ;;
19927 esac
19928
19929 : see if gdbm.h is available
19930 set gdbm.h t_gdbm
19931 eval $inhdr
19932 case "$t_gdbm" in
19933 $define)
19934         : see if gdbm_open exists
19935         set gdbm_open d_gdbm_open
19936         eval $inlibc
19937         case "$d_gdbm_open" in
19938         $undef)
19939                 t_gdbm="$undef"
19940                 echo "We won't be including <gdbm.h>"
19941                 ;;
19942         esac
19943         ;;
19944 esac
19945 val="$t_gdbm"
19946 set i_gdbm
19947 eval $setvar
19948
19949 echo " "
19950 echo "Looking for extensions..." >&4
19951 : If we are using the old config.sh, known_extensions may contain
19952 : old or inaccurate or duplicate values.
19953 known_extensions=''
19954 nonxs_extensions=''
19955 : We do not use find because it might not be available.
19956 : We do not just use MANIFEST because the user may have dropped
19957 : some additional extensions into the source tree and expect them
19958 : to be built.
19959
19960 : Function to recursively find available extensions, ignoring DynaLoader
19961 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19962 find_extensions='
19963     for xxx in *; do
19964        case "$xxx" in
19965            DynaLoader|dynaload) ;;
19966            *)
19967            if $test -f $xxx/$xxx.xs; then
19968                known_extensions="$known_extensions $1$xxx";
19969            elif $test -f $xxx/Makefile.PL; then
19970                nonxs_extensions="$nonxs_extensions $1$xxx";
19971            else
19972                if $test -d $xxx -a $# -lt 10; then
19973                    set $1$xxx/ $*;
19974                    cd "$xxx";
19975                    eval $find_extensions;
19976                    cd ..;
19977                    shift;
19978                fi;
19979            fi
19980            ;;
19981        esac;
19982     done'
19983 tdir=`pwd`
19984 cd "$rsrc/ext"
19985 set X
19986 shift
19987 eval $find_extensions
19988 # Special case:  Add in threads/shared since it is not picked up by the
19989 # recursive find above (and adding in general recursive finding breaks
19990 # SDBM_File/sdbm).  A.D.  10/25/2001.
19991 known_extensions="$known_extensions threads/shared"
19992 set X $nonxs_extensions
19993 shift
19994 nonxs_extensions="$*"
19995 set X $known_extensions
19996 shift
19997 known_extensions="$*"
19998 cd "$tdir"
19999
20000 : Now see which are supported on this system.
20001 avail_ext=''
20002 for xxx in $known_extensions ; do
20003         case "$xxx" in
20004         DB_File|db_file)
20005                 case "$i_db" in
20006                 $define) avail_ext="$avail_ext $xxx" ;;
20007                 esac
20008                 ;;
20009         GDBM_File|gdbm_fil)
20010                 case "$i_gdbm" in 
20011                 $define) avail_ext="$avail_ext $xxx" ;;
20012                 esac
20013                 ;;
20014         I18N/Langinfo|i18n_lan)
20015                 case "$i_langinfo$d_nl_langinfo" in 
20016                 $define$define) avail_ext="$avail_ext $xxx" ;;
20017                 esac
20018                 ;;
20019         NDBM_File|ndbm_fil)
20020                 case "$i_ndbm" in
20021                 $define)
20022                     case "$osname-$use64bitint" in
20023                     hpux-define)
20024                         case "$libs" in
20025                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20026                         esac
20027                         ;;
20028                     *) avail_ext="$avail_ext $xxx" ;;
20029                     esac
20030                     ;;
20031                 esac
20032                 ;;
20033         ODBM_File|odbm_fil) 
20034                 case "${i_dbm}${i_rpcsvcdbm}" in
20035                 *"${define}"*)
20036                     case "$osname-$use64bitint" in
20037                     hpux-define)
20038                         case "$libs" in
20039                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20040                         esac
20041                         ;;
20042                     *) avail_ext="$avail_ext $xxx" ;;
20043                     esac
20044                     ;;
20045                 esac
20046                 ;;
20047         POSIX|posix)
20048                 case "$useposix" in
20049                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20050                 esac
20051                 ;;
20052         Opcode|opcode)
20053                 case "$useopcode" in
20054                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20055                 esac
20056                 ;;
20057         Socket|socket)
20058                 case "$d_socket" in 
20059                 true|$define|y)
20060                     case "$osname" in
20061                     beos) ;; # not unless BONE
20062                     *) avail_ext="$avail_ext $xxx" ;;
20063                     esac
20064                     ;;
20065                 esac
20066                 ;;
20067         Sys/Syslog|sys/syslog)
20068                 : XXX syslog requires socket
20069                 case "$d_socket" in 
20070                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20071                 esac
20072                 ;;
20073         Thread|thread)
20074                 case "$usethreads" in
20075                 true|$define|y)
20076                         case "$useithreads" in
20077                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20078                         esac
20079                 esac
20080                 ;;
20081         XS/APItest|xs/apitest)
20082                 # This is just for testing.  Skip it unless we have dynamic loading.
20083
20084                 case "$usedl" in
20085                 $define) avail_ext="$avail_ext $xxx" ;;
20086                 esac
20087                 ;;
20088         XS/Typemap|xs/typemap)
20089                 # This is just for testing.  Skip it unless we have dynamic loading.
20090                 case "$usedl" in
20091                 $define) avail_ext="$avail_ext $xxx" ;;
20092                 esac
20093                 ;;
20094         threads|threads/shared)
20095                 # threads and threads::shared are special cases.
20096                 # To stop people from asking "Perl 5.8.0 was supposed
20097                 # to have this new fancy threads implementation but my
20098                 # perl doesn't have it" and from people trying to
20099                 # (re)install the threads module using CPAN.pm and
20100                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20101                 # the threads.pm and threads/shared.pm will always be
20102                 # there, croaking informatively ("you need to rebuild
20103                 # all of Perl with threads, sorry") when threads haven't
20104                 # been compiled in.
20105                 # --jhi
20106                 avail_ext="$avail_ext $xxx"
20107                 ;;
20108         IPC/SysV|ipc/sysv)
20109                 : XXX Do we need a useipcsysv variable here
20110                 case "${d_msg}${d_sem}${d_shm}" in 
20111                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20112                 esac
20113                 ;;
20114         *)      avail_ext="$avail_ext $xxx"
20115                 ;;
20116         esac
20117 done
20118
20119 set X $avail_ext
20120 shift
20121 avail_ext="$*"
20122
20123 case "$onlyextensions" in
20124 '') ;;
20125 *)  keepextensions=''
20126     echo "You have requested that only certains extensions be included..." >&4
20127     for i in $onlyextensions; do
20128         case " $avail_ext " in
20129         *" $i "*)
20130             echo "Keeping extension $i."
20131             keepextensions="$keepextensions $i"
20132             ;;
20133         *) echo "Ignoring extension $i." ;;
20134         esac
20135     done
20136     avail_ext="$keepextensions"
20137     ;;
20138 esac
20139
20140 case "$noextensions" in
20141 '') ;;
20142 *)  keepextensions=''
20143     echo "You have requested that certain extensions be ignored..." >&4
20144     for i in $avail_ext; do
20145         case " $noextensions " in
20146         *" $i "*) echo "Ignoring extension $i." ;;
20147         *) echo "Keeping extension $i.";
20148            keepextensions="$keepextensions $i"
20149            ;;
20150         esac
20151     done
20152     avail_ext="$keepextensions"
20153     ;;
20154 esac
20155
20156 : Now see which nonxs extensions are supported on this system.
20157 : For now assume all are.
20158 nonxs_ext=''
20159 for xxx in $nonxs_extensions ; do
20160         case "$xxx" in
20161         *)      nonxs_ext="$nonxs_ext $xxx"
20162                 ;;
20163         esac
20164 done
20165
20166 set X $nonxs_ext
20167 shift
20168 nonxs_ext="$*"
20169
20170 case $usedl in
20171 $define)
20172         $cat <<EOM
20173 A number of extensions are supplied with $package.  You may choose to
20174 compile these extensions for dynamic loading (the default), compile
20175 them into the $package executable (static loading), or not include
20176 them at all.  Answer "none" to include no extensions.
20177 Note that DynaLoader is always built and need not be mentioned here.
20178
20179 EOM
20180         case "$dynamic_ext" in
20181         '')
20182                 : Exclude those listed in static_ext
20183                 dflt=''
20184                 for xxx in $avail_ext; do
20185                         case " $static_ext " in
20186                         *" $xxx "*) ;;
20187                         *) dflt="$dflt $xxx" ;;
20188                         esac
20189                 done
20190                 set X $dflt
20191                 shift
20192                 dflt="$*"
20193                 ;;
20194         *)      dflt="$dynamic_ext"
20195                 # Perhaps we are reusing an old out-of-date config.sh.
20196                 case "$hint" in
20197                 previous)
20198                         if test X"$dynamic_ext" != X"$avail_ext"; then
20199                                 $cat <<EOM
20200 NOTICE:  Your previous config.sh list may be incorrect. 
20201 The extensions now available to you are 
20202         ${avail_ext}
20203 but the default list from your previous config.sh is
20204         ${dynamic_ext} 
20205
20206 EOM
20207                         fi
20208                         ;;
20209                 esac
20210                 ;;
20211         esac
20212         case "$dflt" in
20213         '')     dflt=none;;
20214         esac
20215         rp="What extensions do you wish to load dynamically?"
20216         . ./myread
20217         case "$ans" in
20218         none) dynamic_ext=' ' ;;
20219         *) dynamic_ext="$ans" ;;
20220         esac
20221
20222         case "$static_ext" in
20223         '')
20224                 : Exclude those already listed in dynamic linking
20225                 dflt=''
20226                 for xxx in $avail_ext; do
20227                         case " $dynamic_ext " in
20228                         *" $xxx "*) ;;
20229                         *) dflt="$dflt $xxx" ;;
20230                         esac
20231                 done
20232                 set X $dflt
20233                 shift
20234                 dflt="$*"
20235                 ;;
20236         *)  dflt="$static_ext" 
20237                 ;;
20238         esac
20239
20240         case "$dflt" in
20241         '')     dflt=none;;
20242         esac
20243         rp="What extensions do you wish to load statically?"
20244         . ./myread
20245         case "$ans" in
20246         none) static_ext=' ' ;;
20247         *) static_ext="$ans" ;;
20248         esac
20249         ;;
20250 *)
20251         $cat <<EOM
20252 A number of extensions are supplied with $package.  Answer "none" 
20253 to include no extensions. 
20254 Note that DynaLoader is always built and need not be mentioned here.
20255
20256 EOM
20257         case "$static_ext" in
20258         '') dflt="$avail_ext" ;;
20259         *)      dflt="$static_ext"
20260                 # Perhaps we are reusing an old out-of-date config.sh.
20261                 case "$hint" in
20262                 previous)
20263                         if test X"$static_ext" != X"$avail_ext"; then
20264                                 $cat <<EOM
20265 NOTICE:  Your previous config.sh list may be incorrect. 
20266 The extensions now available to you are 
20267         ${avail_ext}
20268 but the default list from your previous config.sh is
20269         ${static_ext} 
20270
20271 EOM
20272                         fi
20273                         ;;
20274                 esac
20275                 ;;
20276         esac
20277         : Exclude those that are not xs extensions
20278         case "$dflt" in
20279         '')     dflt=none;;
20280         esac
20281         rp="What extensions do you wish to include?"
20282         . ./myread
20283         case "$ans" in
20284         none) static_ext=' ' ;;
20285         *) static_ext="$ans" ;;
20286         esac
20287         ;;
20288 esac
20289 #        
20290 # Encode is a special case.  If we are building Encode as a static
20291 # extension, we need to explicitly list its subextensions as well.
20292 # For other nested extensions, this is handled automatically by
20293 # the appropriate Makefile.PL.
20294 case " $static_ext " in
20295         *" Encode "*) # Add the subextensions of Encode
20296         cd "$rsrc/ext"
20297         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20298                 static_ext="$static_ext Encode/$xxx"
20299         done
20300         cd "$tdir"
20301         ;;
20302 esac
20303
20304 set X $dynamic_ext $static_ext $nonxs_ext
20305 shift
20306 extensions="$*"
20307
20308 # Sanity check:  We require an extension suitable for use with
20309 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20310 # should show up as failures in the test suite, but it's helpful to
20311 # catch them now.) The 'extensions' list is normally sorted
20312 # alphabetically, so we need to accept either
20313 #    DB_File ... Fcntl ... IO  ....
20314 # or something like
20315 #    Fcntl ... NDBM_File ... IO  ....
20316 case " $extensions"  in
20317 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20318 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20319 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20320 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20321    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20322    ;;
20323 esac
20324
20325 : Remove libraries needed only for extensions
20326 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20327 : The exception is SunOS 4.x, which needs them.
20328 case "${osname}X${osvers}" in
20329 sunos*X4*)
20330     perllibs="$libs"
20331     ;;
20332 *) case "$usedl" in
20333     $define|true|[yY]*)
20334             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20335             shift
20336             perllibs="$*"
20337             ;;
20338     *)  perllibs="$libs"
20339             ;;
20340     esac
20341     ;;
20342 esac
20343
20344 : Remove build directory name from cppstdin so it can be used from
20345 : either the present location or the final installed location.
20346 echo " "
20347 : Get out of the UU directory to get correct path name.
20348 cd ..
20349 case "$cppstdin" in
20350 `pwd`/cppstdin)
20351         echo "Stripping down cppstdin path name"
20352         cppstdin=cppstdin
20353         ;;
20354 esac
20355 cd UU
20356
20357 : end of configuration questions
20358 echo " "
20359 echo "End of configuration questions."
20360 echo " "
20361
20362 : back to where it started
20363 if test -d ../UU; then
20364         cd ..
20365 fi
20366
20367 : configuration may be patched via a 'config.arch' file
20368 if $test -f config.arch; then
20369         echo "I see a config.arch file, loading it."
20370         . ./config.arch
20371 fi
20372
20373 : configuration may be patched via a 'config.over' file
20374 if $test -f config.over; then
20375         echo " "
20376         dflt=y
20377         rp='I see a config.over file.  Do you wish to load it?'
20378         . UU/myread
20379         case "$ans" in
20380         n*) echo "OK, I'll ignore it.";;
20381         *)      . ./config.over
20382                 echo "Configuration override changes have been loaded."
20383                 ;;
20384         esac
20385 fi
20386
20387 : in case they want portability, strip down executable paths
20388 case "$d_portable" in
20389 "$define")
20390         echo " "
20391         echo "Stripping down executable paths..." >&4
20392         for file in $loclist $trylist; do
20393                 eval temp=\$$file
20394                 eval $file=`basename $temp`
20395         done
20396         ;;
20397 esac
20398
20399 : create config.sh file
20400 echo " "
20401 echo "Creating config.sh..." >&4
20402 $spitshell <<EOT >config.sh
20403 $startsh
20404 #
20405 # This file was produced by running the Configure script. It holds all the
20406 # definitions figured out by Configure. Should you modify one of these values,
20407 # do not forget to propagate your changes by running "Configure -der". You may
20408 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20409 #
20410
20411 # Package name      : $package
20412 # Source directory  : $src
20413 # Configuration time: $cf_time
20414 # Configured by     : $cf_by
20415 # Target system     : $myuname
20416
20417 Author='$Author'
20418 Date='$Date'
20419 Header='$Header'
20420 Id='$Id'
20421 Locker='$Locker'
20422 Log='$Log'
20423 Mcc='$Mcc'
20424 RCSfile='$RCSfile'
20425 Revision='$Revision'
20426 Source='$Source'
20427 State='$State'
20428 _a='$_a'
20429 _exe='$_exe'
20430 _o='$_o'
20431 afs='$afs'
20432 afsroot='$afsroot'
20433 alignbytes='$alignbytes'
20434 ansi2knr='$ansi2knr'
20435 aphostname='$aphostname'
20436 api_revision='$api_revision'
20437 api_subversion='$api_subversion'
20438 api_version='$api_version'
20439 api_versionstring='$api_versionstring'
20440 ar='$ar'
20441 archlib='$archlib'
20442 archlibexp='$archlibexp'
20443 archname64='$archname64'
20444 archname='$archname'
20445 archobjs='$archobjs'
20446 asctime_r_proto='$asctime_r_proto'
20447 awk='$awk'
20448 baserev='$baserev'
20449 bash='$bash'
20450 bin='$bin'
20451 binexp='$binexp'
20452 bison='$bison'
20453 byacc='$byacc'
20454 byteorder='$byteorder'
20455 c='$c'
20456 castflags='$castflags'
20457 cat='$cat'
20458 cc='$cc'
20459 cccdlflags='$cccdlflags'
20460 ccdlflags='$ccdlflags'
20461 ccflags='$ccflags'
20462 ccflags_uselargefiles='$ccflags_uselargefiles'
20463 ccname='$ccname'
20464 ccsymbols='$ccsymbols'
20465 ccversion='$ccversion'
20466 cf_by='$cf_by'
20467 cf_email='$cf_email'
20468 cf_time='$cf_time'
20469 charsize='$charsize'
20470 chgrp='$chgrp'
20471 chmod='$chmod'
20472 chown='$chown'
20473 clocktype='$clocktype'
20474 comm='$comm'
20475 compress='$compress'
20476 contains='$contains'
20477 cp='$cp'
20478 cpio='$cpio'
20479 cpp='$cpp'
20480 cpp_stuff='$cpp_stuff'
20481 cppccsymbols='$cppccsymbols'
20482 cppflags='$cppflags'
20483 cpplast='$cpplast'
20484 cppminus='$cppminus'
20485 cpprun='$cpprun'
20486 cppstdin='$cppstdin'
20487 cppsymbols='$cppsymbols'
20488 crypt_r_proto='$crypt_r_proto'
20489 cryptlib='$cryptlib'
20490 csh='$csh'
20491 ctermid_r_proto='$ctermid_r_proto'
20492 ctime_r_proto='$ctime_r_proto'
20493 d_Gconvert='$d_Gconvert'
20494 d_PRIEUldbl='$d_PRIEUldbl'
20495 d_PRIFUldbl='$d_PRIFUldbl'
20496 d_PRIGUldbl='$d_PRIGUldbl'
20497 d_PRIXU64='$d_PRIXU64'
20498 d_PRId64='$d_PRId64'
20499 d_PRIeldbl='$d_PRIeldbl'
20500 d_PRIfldbl='$d_PRIfldbl'
20501 d_PRIgldbl='$d_PRIgldbl'
20502 d_PRIi64='$d_PRIi64'
20503 d_PRIo64='$d_PRIo64'
20504 d_PRIu64='$d_PRIu64'
20505 d_PRIx64='$d_PRIx64'
20506 d_SCNfldbl='$d_SCNfldbl'
20507 d__fwalk='$d__fwalk'
20508 d_access='$d_access'
20509 d_accessx='$d_accessx'
20510 d_aintl='$d_aintl'
20511 d_alarm='$d_alarm'
20512 d_archlib='$d_archlib'
20513 d_asctime_r='$d_asctime_r'
20514 d_atolf='$d_atolf'
20515 d_atoll='$d_atoll'
20516 d_attribut='$d_attribut'
20517 d_bcmp='$d_bcmp'
20518 d_bcopy='$d_bcopy'
20519 d_bsd='$d_bsd'
20520 d_bsdgetpgrp='$d_bsdgetpgrp'
20521 d_bsdsetpgrp='$d_bsdsetpgrp'
20522 d_bzero='$d_bzero'
20523 d_casti32='$d_casti32'
20524 d_castneg='$d_castneg'
20525 d_charvspr='$d_charvspr'
20526 d_chown='$d_chown'
20527 d_chroot='$d_chroot'
20528 d_chsize='$d_chsize'
20529 d_class='$d_class'
20530 d_closedir='$d_closedir'
20531 d_cmsghdr_s='$d_cmsghdr_s'
20532 d_const='$d_const'
20533 d_copysignl='$d_copysignl'
20534 d_crypt='$d_crypt'
20535 d_crypt_r='$d_crypt_r'
20536 d_csh='$d_csh'
20537 d_ctermid_r='$d_ctermid_r'
20538 d_ctime_r='$d_ctime_r'
20539 d_cuserid='$d_cuserid'
20540 d_dbl_dig='$d_dbl_dig'
20541 d_dbminitproto='$d_dbminitproto'
20542 d_difftime='$d_difftime'
20543 d_dirfd='$d_dirfd'
20544 d_dirnamlen='$d_dirnamlen'
20545 d_dlerror='$d_dlerror'
20546 d_dlopen='$d_dlopen'
20547 d_dlsymun='$d_dlsymun'
20548 d_dosuid='$d_dosuid'
20549 d_drand48_r='$d_drand48_r'
20550 d_drand48proto='$d_drand48proto'
20551 d_dup2='$d_dup2'
20552 d_eaccess='$d_eaccess'
20553 d_endgrent='$d_endgrent'
20554 d_endgrent_r='$d_endgrent_r'
20555 d_endhent='$d_endhent'
20556 d_endhostent_r='$d_endhostent_r'
20557 d_endnent='$d_endnent'
20558 d_endnetent_r='$d_endnetent_r'
20559 d_endpent='$d_endpent'
20560 d_endprotoent_r='$d_endprotoent_r'
20561 d_endpwent='$d_endpwent'
20562 d_endpwent_r='$d_endpwent_r'
20563 d_endsent='$d_endsent'
20564 d_endservent_r='$d_endservent_r'
20565 d_eofnblk='$d_eofnblk'
20566 d_eunice='$d_eunice'
20567 d_faststdio='$d_faststdio'
20568 d_fchdir='$d_fchdir'
20569 d_fchmod='$d_fchmod'
20570 d_fchown='$d_fchown'
20571 d_fcntl='$d_fcntl'
20572 d_fcntl_can_lock='$d_fcntl_can_lock'
20573 d_fd_macros='$d_fd_macros'
20574 d_fd_set='$d_fd_set'
20575 d_fds_bits='$d_fds_bits'
20576 d_fgetpos='$d_fgetpos'
20577 d_finite='$d_finite'
20578 d_finitel='$d_finitel'
20579 d_flexfnam='$d_flexfnam'
20580 d_flock='$d_flock'
20581 d_flockproto='$d_flockproto'
20582 d_fork='$d_fork'
20583 d_fp_class='$d_fp_class'
20584 d_fpathconf='$d_fpathconf'
20585 d_fpclass='$d_fpclass'
20586 d_fpclassify='$d_fpclassify'
20587 d_fpclassl='$d_fpclassl'
20588 d_fpos64_t='$d_fpos64_t'
20589 d_frexpl='$d_frexpl'
20590 d_fs_data_s='$d_fs_data_s'
20591 d_fseeko='$d_fseeko'
20592 d_fsetpos='$d_fsetpos'
20593 d_fstatfs='$d_fstatfs'
20594 d_fstatvfs='$d_fstatvfs'
20595 d_fsync='$d_fsync'
20596 d_ftello='$d_ftello'
20597 d_ftime='$d_ftime'
20598 d_getcwd='$d_getcwd'
20599 d_getespwnam='$d_getespwnam'
20600 d_getfsstat='$d_getfsstat'
20601 d_getgrent='$d_getgrent'
20602 d_getgrent_r='$d_getgrent_r'
20603 d_getgrgid_r='$d_getgrgid_r'
20604 d_getgrnam_r='$d_getgrnam_r'
20605 d_getgrps='$d_getgrps'
20606 d_gethbyaddr='$d_gethbyaddr'
20607 d_gethbyname='$d_gethbyname'
20608 d_gethent='$d_gethent'
20609 d_gethname='$d_gethname'
20610 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20611 d_gethostbyname_r='$d_gethostbyname_r'
20612 d_gethostent_r='$d_gethostent_r'
20613 d_gethostprotos='$d_gethostprotos'
20614 d_getitimer='$d_getitimer'
20615 d_getlogin='$d_getlogin'
20616 d_getlogin_r='$d_getlogin_r'
20617 d_getmnt='$d_getmnt'
20618 d_getmntent='$d_getmntent'
20619 d_getnbyaddr='$d_getnbyaddr'
20620 d_getnbyname='$d_getnbyname'
20621 d_getnent='$d_getnent'
20622 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20623 d_getnetbyname_r='$d_getnetbyname_r'
20624 d_getnetent_r='$d_getnetent_r'
20625 d_getnetprotos='$d_getnetprotos'
20626 d_getpagsz='$d_getpagsz'
20627 d_getpbyname='$d_getpbyname'
20628 d_getpbynumber='$d_getpbynumber'
20629 d_getpent='$d_getpent'
20630 d_getpgid='$d_getpgid'
20631 d_getpgrp2='$d_getpgrp2'
20632 d_getpgrp='$d_getpgrp'
20633 d_getppid='$d_getppid'
20634 d_getprior='$d_getprior'
20635 d_getprotobyname_r='$d_getprotobyname_r'
20636 d_getprotobynumber_r='$d_getprotobynumber_r'
20637 d_getprotoent_r='$d_getprotoent_r'
20638 d_getprotoprotos='$d_getprotoprotos'
20639 d_getprpwnam='$d_getprpwnam'
20640 d_getpwent='$d_getpwent'
20641 d_getpwent_r='$d_getpwent_r'
20642 d_getpwnam_r='$d_getpwnam_r'
20643 d_getpwuid_r='$d_getpwuid_r'
20644 d_getsbyname='$d_getsbyname'
20645 d_getsbyport='$d_getsbyport'
20646 d_getsent='$d_getsent'
20647 d_getservbyname_r='$d_getservbyname_r'
20648 d_getservbyport_r='$d_getservbyport_r'
20649 d_getservent_r='$d_getservent_r'
20650 d_getservprotos='$d_getservprotos'
20651 d_getspnam='$d_getspnam'
20652 d_getspnam_r='$d_getspnam_r'
20653 d_gettimeod='$d_gettimeod'
20654 d_gmtime_r='$d_gmtime_r'
20655 d_gnulibc='$d_gnulibc'
20656 d_grpasswd='$d_grpasswd'
20657 d_hasmntopt='$d_hasmntopt'
20658 d_htonl='$d_htonl'
20659 d_ilogbl='$d_ilogbl'
20660 d_index='$d_index'
20661 d_inetaton='$d_inetaton'
20662 d_int64_t='$d_int64_t'
20663 d_isascii='$d_isascii'
20664 d_isfinite='$d_isfinite'
20665 d_isinf='$d_isinf'
20666 d_isnan='$d_isnan'
20667 d_isnanl='$d_isnanl'
20668 d_killpg='$d_killpg'
20669 d_lchown='$d_lchown'
20670 d_ldbl_dig='$d_ldbl_dig'
20671 d_link='$d_link'
20672 d_localtime_r='$d_localtime_r'
20673 d_locconv='$d_locconv'
20674 d_lockf='$d_lockf'
20675 d_longdbl='$d_longdbl'
20676 d_longlong='$d_longlong'
20677 d_lseekproto='$d_lseekproto'
20678 d_lstat='$d_lstat'
20679 d_madvise='$d_madvise'
20680 d_mblen='$d_mblen'
20681 d_mbstowcs='$d_mbstowcs'
20682 d_mbtowc='$d_mbtowc'
20683 d_memchr='$d_memchr'
20684 d_memcmp='$d_memcmp'
20685 d_memcpy='$d_memcpy'
20686 d_memmove='$d_memmove'
20687 d_memset='$d_memset'
20688 d_mkdir='$d_mkdir'
20689 d_mkdtemp='$d_mkdtemp'
20690 d_mkfifo='$d_mkfifo'
20691 d_mkstemp='$d_mkstemp'
20692 d_mkstemps='$d_mkstemps'
20693 d_mktime='$d_mktime'
20694 d_mmap='$d_mmap'
20695 d_modfl='$d_modfl'
20696 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20697 d_modflproto='$d_modflproto'
20698 d_mprotect='$d_mprotect'
20699 d_msg='$d_msg'
20700 d_msg_ctrunc='$d_msg_ctrunc'
20701 d_msg_dontroute='$d_msg_dontroute'
20702 d_msg_oob='$d_msg_oob'
20703 d_msg_peek='$d_msg_peek'
20704 d_msg_proxy='$d_msg_proxy'
20705 d_msgctl='$d_msgctl'
20706 d_msgget='$d_msgget'
20707 d_msghdr_s='$d_msghdr_s'
20708 d_msgrcv='$d_msgrcv'
20709 d_msgsnd='$d_msgsnd'
20710 d_msync='$d_msync'
20711 d_munmap='$d_munmap'
20712 d_mymalloc='$d_mymalloc'
20713 d_nice='$d_nice'
20714 d_nl_langinfo='$d_nl_langinfo'
20715 d_nv_preserves_uv='$d_nv_preserves_uv'
20716 d_off64_t='$d_off64_t'
20717 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20718 d_oldpthreads='$d_oldpthreads'
20719 d_oldsock='$d_oldsock'
20720 d_open3='$d_open3'
20721 d_pathconf='$d_pathconf'
20722 d_pause='$d_pause'
20723 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20724 d_phostname='$d_phostname'
20725 d_pipe='$d_pipe'
20726 d_poll='$d_poll'
20727 d_portable='$d_portable'
20728 d_procselfexe='$d_procselfexe'
20729 d_pthread_atfork='$d_pthread_atfork'
20730 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20731 d_pthread_yield='$d_pthread_yield'
20732 d_pwage='$d_pwage'
20733 d_pwchange='$d_pwchange'
20734 d_pwclass='$d_pwclass'
20735 d_pwcomment='$d_pwcomment'
20736 d_pwexpire='$d_pwexpire'
20737 d_pwgecos='$d_pwgecos'
20738 d_pwpasswd='$d_pwpasswd'
20739 d_pwquota='$d_pwquota'
20740 d_qgcvt='$d_qgcvt'
20741 d_quad='$d_quad'
20742 d_random_r='$d_random_r'
20743 d_readdir64_r='$d_readdir64_r'
20744 d_readdir='$d_readdir'
20745 d_readdir_r='$d_readdir_r'
20746 d_readlink='$d_readlink'
20747 d_readv='$d_readv'
20748 d_recvmsg='$d_recvmsg'
20749 d_rename='$d_rename'
20750 d_rewinddir='$d_rewinddir'
20751 d_rmdir='$d_rmdir'
20752 d_safebcpy='$d_safebcpy'
20753 d_safemcpy='$d_safemcpy'
20754 d_sanemcmp='$d_sanemcmp'
20755 d_sbrkproto='$d_sbrkproto'
20756 d_scalbnl='$d_scalbnl'
20757 d_sched_yield='$d_sched_yield'
20758 d_scm_rights='$d_scm_rights'
20759 d_seekdir='$d_seekdir'
20760 d_select='$d_select'
20761 d_sem='$d_sem'
20762 d_semctl='$d_semctl'
20763 d_semctl_semid_ds='$d_semctl_semid_ds'
20764 d_semctl_semun='$d_semctl_semun'
20765 d_semget='$d_semget'
20766 d_semop='$d_semop'
20767 d_sendmsg='$d_sendmsg'
20768 d_setegid='$d_setegid'
20769 d_seteuid='$d_seteuid'
20770 d_setgrent='$d_setgrent'
20771 d_setgrent_r='$d_setgrent_r'
20772 d_setgrps='$d_setgrps'
20773 d_sethent='$d_sethent'
20774 d_sethostent_r='$d_sethostent_r'
20775 d_setitimer='$d_setitimer'
20776 d_setlinebuf='$d_setlinebuf'
20777 d_setlocale='$d_setlocale'
20778 d_setlocale_r='$d_setlocale_r'
20779 d_setnent='$d_setnent'
20780 d_setnetent_r='$d_setnetent_r'
20781 d_setpent='$d_setpent'
20782 d_setpgid='$d_setpgid'
20783 d_setpgrp2='$d_setpgrp2'
20784 d_setpgrp='$d_setpgrp'
20785 d_setprior='$d_setprior'
20786 d_setproctitle='$d_setproctitle'
20787 d_setprotoent_r='$d_setprotoent_r'
20788 d_setpwent='$d_setpwent'
20789 d_setpwent_r='$d_setpwent_r'
20790 d_setregid='$d_setregid'
20791 d_setresgid='$d_setresgid'
20792 d_setresuid='$d_setresuid'
20793 d_setreuid='$d_setreuid'
20794 d_setrgid='$d_setrgid'
20795 d_setruid='$d_setruid'
20796 d_setsent='$d_setsent'
20797 d_setservent_r='$d_setservent_r'
20798 d_setsid='$d_setsid'
20799 d_setvbuf='$d_setvbuf'
20800 d_sfio='$d_sfio'
20801 d_shm='$d_shm'
20802 d_shmat='$d_shmat'
20803 d_shmatprototype='$d_shmatprototype'
20804 d_shmctl='$d_shmctl'
20805 d_shmdt='$d_shmdt'
20806 d_shmget='$d_shmget'
20807 d_sigaction='$d_sigaction'
20808 d_sigprocmask='$d_sigprocmask'
20809 d_sigsetjmp='$d_sigsetjmp'
20810 d_sockatmark='$d_sockatmark'
20811 d_sockatmarkproto='$d_sockatmarkproto'
20812 d_socket='$d_socket'
20813 d_socklen_t='$d_socklen_t'
20814 d_sockpair='$d_sockpair'
20815 d_socks5_init='$d_socks5_init'
20816 d_sqrtl='$d_sqrtl'
20817 d_srand48_r='$d_srand48_r'
20818 d_srandom_r='$d_srandom_r'
20819 d_sresgproto='$d_sresgproto'
20820 d_sresuproto='$d_sresuproto'
20821 d_statblks='$d_statblks'
20822 d_statfs_f_flags='$d_statfs_f_flags'
20823 d_statfs_s='$d_statfs_s'
20824 d_statvfs='$d_statvfs'
20825 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20826 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20827 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20828 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20829 d_stdio_stream_array='$d_stdio_stream_array'
20830 d_stdiobase='$d_stdiobase'
20831 d_stdstdio='$d_stdstdio'
20832 d_strchr='$d_strchr'
20833 d_strcoll='$d_strcoll'
20834 d_strctcpy='$d_strctcpy'
20835 d_strerrm='$d_strerrm'
20836 d_strerror='$d_strerror'
20837 d_strerror_r='$d_strerror_r'
20838 d_strftime='$d_strftime'
20839 d_strtod='$d_strtod'
20840 d_strtol='$d_strtol'
20841 d_strtold='$d_strtold'
20842 d_strtoll='$d_strtoll'
20843 d_strtoq='$d_strtoq'
20844 d_strtoul='$d_strtoul'
20845 d_strtoull='$d_strtoull'
20846 d_strtouq='$d_strtouq'
20847 d_strxfrm='$d_strxfrm'
20848 d_suidsafe='$d_suidsafe'
20849 d_symlink='$d_symlink'
20850 d_syscall='$d_syscall'
20851 d_syscallproto='$d_syscallproto'
20852 d_sysconf='$d_sysconf'
20853 d_sysernlst='$d_sysernlst'
20854 d_syserrlst='$d_syserrlst'
20855 d_system='$d_system'
20856 d_tcgetpgrp='$d_tcgetpgrp'
20857 d_tcsetpgrp='$d_tcsetpgrp'
20858 d_telldir='$d_telldir'
20859 d_telldirproto='$d_telldirproto'
20860 d_time='$d_time'
20861 d_times='$d_times'
20862 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20863 d_tm_tm_zone='$d_tm_tm_zone'
20864 d_tmpnam_r='$d_tmpnam_r'
20865 d_truncate='$d_truncate'
20866 d_ttyname_r='$d_ttyname_r'
20867 d_tzname='$d_tzname'
20868 d_u32align='$d_u32align'
20869 d_ualarm='$d_ualarm'
20870 d_umask='$d_umask'
20871 d_uname='$d_uname'
20872 d_union_semun='$d_union_semun'
20873 d_unordered='$d_unordered'
20874 d_usleep='$d_usleep'
20875 d_usleepproto='$d_usleepproto'
20876 d_ustat='$d_ustat'
20877 d_vendorarch='$d_vendorarch'
20878 d_vendorbin='$d_vendorbin'
20879 d_vendorlib='$d_vendorlib'
20880 d_vendorscript='$d_vendorscript'
20881 d_vfork='$d_vfork'
20882 d_void_closedir='$d_void_closedir'
20883 d_voidsig='$d_voidsig'
20884 d_voidtty='$d_voidtty'
20885 d_volatile='$d_volatile'
20886 d_vprintf='$d_vprintf'
20887 d_wait4='$d_wait4'
20888 d_waitpid='$d_waitpid'
20889 d_wcstombs='$d_wcstombs'
20890 d_wctomb='$d_wctomb'
20891 d_writev='$d_writev'
20892 d_xenix='$d_xenix'
20893 date='$date'
20894 db_hashtype='$db_hashtype'
20895 db_prefixtype='$db_prefixtype'
20896 db_version_major='$db_version_major'
20897 db_version_minor='$db_version_minor'
20898 db_version_patch='$db_version_patch'
20899 defvoidused='$defvoidused'
20900 direntrytype='$direntrytype'
20901 dlext='$dlext'
20902 dlsrc='$dlsrc'
20903 doublesize='$doublesize'
20904 drand01='$drand01'
20905 drand48_r_proto='$drand48_r_proto'
20906 dynamic_ext='$dynamic_ext'
20907 eagain='$eagain'
20908 ebcdic='$ebcdic'
20909 echo='$echo'
20910 egrep='$egrep'
20911 emacs='$emacs'
20912 endgrent_r_proto='$endgrent_r_proto'
20913 endhostent_r_proto='$endhostent_r_proto'
20914 endnetent_r_proto='$endnetent_r_proto'
20915 endprotoent_r_proto='$endprotoent_r_proto'
20916 endpwent_r_proto='$endpwent_r_proto'
20917 endservent_r_proto='$endservent_r_proto'
20918 eunicefix='$eunicefix'
20919 exe_ext='$exe_ext'
20920 expr='$expr'
20921 extensions='$extensions'
20922 extras='$extras'
20923 fflushNULL='$fflushNULL'
20924 fflushall='$fflushall'
20925 find='$find'
20926 firstmakefile='$firstmakefile'
20927 flex='$flex'
20928 fpossize='$fpossize'
20929 fpostype='$fpostype'
20930 freetype='$freetype'
20931 from='$from'
20932 full_ar='$full_ar'
20933 full_csh='$full_csh'
20934 full_sed='$full_sed'
20935 gccansipedantic='$gccansipedantic'
20936 gccosandvers='$gccosandvers'
20937 gccversion='$gccversion'
20938 getgrent_r_proto='$getgrent_r_proto'
20939 getgrgid_r_proto='$getgrgid_r_proto'
20940 getgrnam_r_proto='$getgrnam_r_proto'
20941 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20942 gethostbyname_r_proto='$gethostbyname_r_proto'
20943 gethostent_r_proto='$gethostent_r_proto'
20944 getlogin_r_proto='$getlogin_r_proto'
20945 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20946 getnetbyname_r_proto='$getnetbyname_r_proto'
20947 getnetent_r_proto='$getnetent_r_proto'
20948 getprotobyname_r_proto='$getprotobyname_r_proto'
20949 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20950 getprotoent_r_proto='$getprotoent_r_proto'
20951 getpwent_r_proto='$getpwent_r_proto'
20952 getpwnam_r_proto='$getpwnam_r_proto'
20953 getpwuid_r_proto='$getpwuid_r_proto'
20954 getservbyname_r_proto='$getservbyname_r_proto'
20955 getservbyport_r_proto='$getservbyport_r_proto'
20956 getservent_r_proto='$getservent_r_proto'
20957 getspnam_r_proto='$getspnam_r_proto'
20958 gidformat='$gidformat'
20959 gidsign='$gidsign'
20960 gidsize='$gidsize'
20961 gidtype='$gidtype'
20962 glibpth='$glibpth'
20963 gmake='$gmake'
20964 gmtime_r_proto='$gmtime_r_proto'
20965 gnulibc_version='$gnulibc_version'
20966 grep='$grep'
20967 groupcat='$groupcat'
20968 groupstype='$groupstype'
20969 gzip='$gzip'
20970 h_fcntl='$h_fcntl'
20971 h_sysfile='$h_sysfile'
20972 hint='$hint'
20973 hostcat='$hostcat'
20974 html1dir='$html1dir'
20975 html1direxp='$html1direxp'
20976 html3dir='$html3dir'
20977 html3direxp='$html3direxp'
20978 i16size='$i16size'
20979 i16type='$i16type'
20980 i32size='$i32size'
20981 i32type='$i32type'
20982 i64size='$i64size'
20983 i64type='$i64type'
20984 i8size='$i8size'
20985 i8type='$i8type'
20986 i_arpainet='$i_arpainet'
20987 i_bsdioctl='$i_bsdioctl'
20988 i_crypt='$i_crypt'
20989 i_db='$i_db'
20990 i_dbm='$i_dbm'
20991 i_dirent='$i_dirent'
20992 i_dld='$i_dld'
20993 i_dlfcn='$i_dlfcn'
20994 i_fcntl='$i_fcntl'
20995 i_float='$i_float'
20996 i_fp='$i_fp'
20997 i_fp_class='$i_fp_class'
20998 i_gdbm='$i_gdbm'
20999 i_grp='$i_grp'
21000 i_ieeefp='$i_ieeefp'
21001 i_inttypes='$i_inttypes'
21002 i_langinfo='$i_langinfo'
21003 i_libutil='$i_libutil'
21004 i_limits='$i_limits'
21005 i_locale='$i_locale'
21006 i_machcthr='$i_machcthr'
21007 i_malloc='$i_malloc'
21008 i_math='$i_math'
21009 i_memory='$i_memory'
21010 i_mntent='$i_mntent'
21011 i_ndbm='$i_ndbm'
21012 i_netdb='$i_netdb'
21013 i_neterrno='$i_neterrno'
21014 i_netinettcp='$i_netinettcp'
21015 i_niin='$i_niin'
21016 i_poll='$i_poll'
21017 i_prot='$i_prot'
21018 i_pthread='$i_pthread'
21019 i_pwd='$i_pwd'
21020 i_rpcsvcdbm='$i_rpcsvcdbm'
21021 i_sfio='$i_sfio'
21022 i_sgtty='$i_sgtty'
21023 i_shadow='$i_shadow'
21024 i_socks='$i_socks'
21025 i_stdarg='$i_stdarg'
21026 i_stddef='$i_stddef'
21027 i_stdlib='$i_stdlib'
21028 i_string='$i_string'
21029 i_sunmath='$i_sunmath'
21030 i_sysaccess='$i_sysaccess'
21031 i_sysdir='$i_sysdir'
21032 i_sysfile='$i_sysfile'
21033 i_sysfilio='$i_sysfilio'
21034 i_sysin='$i_sysin'
21035 i_sysioctl='$i_sysioctl'
21036 i_syslog='$i_syslog'
21037 i_sysmman='$i_sysmman'
21038 i_sysmode='$i_sysmode'
21039 i_sysmount='$i_sysmount'
21040 i_sysndir='$i_sysndir'
21041 i_sysparam='$i_sysparam'
21042 i_sysresrc='$i_sysresrc'
21043 i_syssecrt='$i_syssecrt'
21044 i_sysselct='$i_sysselct'
21045 i_syssockio='$i_syssockio'
21046 i_sysstat='$i_sysstat'
21047 i_sysstatfs='$i_sysstatfs'
21048 i_sysstatvfs='$i_sysstatvfs'
21049 i_systime='$i_systime'
21050 i_systimek='$i_systimek'
21051 i_systimes='$i_systimes'
21052 i_systypes='$i_systypes'
21053 i_sysuio='$i_sysuio'
21054 i_sysun='$i_sysun'
21055 i_sysutsname='$i_sysutsname'
21056 i_sysvfs='$i_sysvfs'
21057 i_syswait='$i_syswait'
21058 i_termio='$i_termio'
21059 i_termios='$i_termios'
21060 i_time='$i_time'
21061 i_unistd='$i_unistd'
21062 i_ustat='$i_ustat'
21063 i_utime='$i_utime'
21064 i_values='$i_values'
21065 i_varargs='$i_varargs'
21066 i_varhdr='$i_varhdr'
21067 i_vfork='$i_vfork'
21068 ignore_versioned_solibs='$ignore_versioned_solibs'
21069 inc_version_list='$inc_version_list'
21070 inc_version_list_init='$inc_version_list_init'
21071 incpath='$incpath'
21072 inews='$inews'
21073 installarchlib='$installarchlib'
21074 installbin='$installbin'
21075 installhtml1dir='$installhtml1dir'
21076 installhtml3dir='$installhtml3dir'
21077 installman1dir='$installman1dir'
21078 installman3dir='$installman3dir'
21079 installprefix='$installprefix'
21080 installprefixexp='$installprefixexp'
21081 installprivlib='$installprivlib'
21082 installscript='$installscript'
21083 installsitearch='$installsitearch'
21084 installsitebin='$installsitebin'
21085 installsitehtml1dir='$installsitehtml1dir'
21086 installsitehtml3dir='$installsitehtml3dir'
21087 installsitelib='$installsitelib'
21088 installsiteman1dir='$installsiteman1dir'
21089 installsiteman3dir='$installsiteman3dir'
21090 installsitescript='$installsitescript'
21091 installstyle='$installstyle'
21092 installusrbinperl='$installusrbinperl'
21093 installvendorarch='$installvendorarch'
21094 installvendorbin='$installvendorbin'
21095 installvendorhtml1dir='$installvendorhtml1dir'
21096 installvendorhtml3dir='$installvendorhtml3dir'
21097 installvendorlib='$installvendorlib'
21098 installvendorman1dir='$installvendorman1dir'
21099 installvendorman3dir='$installvendorman3dir'
21100 installvendorscript='$installvendorscript'
21101 intsize='$intsize'
21102 issymlink='$issymlink'
21103 ivdformat='$ivdformat'
21104 ivsize='$ivsize'
21105 ivtype='$ivtype'
21106 known_extensions='$known_extensions'
21107 ksh='$ksh'
21108 ld='$ld'
21109 lddlflags='$lddlflags'
21110 ldflags='$ldflags'
21111 ldflags_uselargefiles='$ldflags_uselargefiles'
21112 ldlibpthname='$ldlibpthname'
21113 less='$less'
21114 lib_ext='$lib_ext'
21115 libc='$libc'
21116 libperl='$libperl'
21117 libpth='$libpth'
21118 libs='$libs'
21119 libsdirs='$libsdirs'
21120 libsfiles='$libsfiles'
21121 libsfound='$libsfound'
21122 libspath='$libspath'
21123 libswanted='$libswanted'
21124 libswanted_uselargefiles='$libswanted_uselargefiles'
21125 line='$line'
21126 lint='$lint'
21127 lkflags='$lkflags'
21128 ln='$ln'
21129 lns='$lns'
21130 localtime_r_proto='$localtime_r_proto'
21131 locincpth='$locincpth'
21132 loclibpth='$loclibpth'
21133 longdblsize='$longdblsize'
21134 longlongsize='$longlongsize'
21135 longsize='$longsize'
21136 lp='$lp'
21137 lpr='$lpr'
21138 ls='$ls'
21139 lseeksize='$lseeksize'
21140 lseektype='$lseektype'
21141 mail='$mail'
21142 mailx='$mailx'
21143 make='$make'
21144 make_set_make='$make_set_make'
21145 mallocobj='$mallocobj'
21146 mallocsrc='$mallocsrc'
21147 malloctype='$malloctype'
21148 man1dir='$man1dir'
21149 man1direxp='$man1direxp'
21150 man1ext='$man1ext'
21151 man3dir='$man3dir'
21152 man3direxp='$man3direxp'
21153 man3ext='$man3ext'
21154 mips_type='$mips_type'
21155 mistrustnm='$mistrustnm'
21156 mkdir='$mkdir'
21157 mmaptype='$mmaptype'
21158 modetype='$modetype'
21159 more='$more'
21160 multiarch='$multiarch'
21161 mv='$mv'
21162 myarchname='$myarchname'
21163 mydomain='$mydomain'
21164 myhostname='$myhostname'
21165 myuname='$myuname'
21166 n='$n'
21167 need_va_copy='$need_va_copy'
21168 netdb_hlen_type='$netdb_hlen_type'
21169 netdb_host_type='$netdb_host_type'
21170 netdb_name_type='$netdb_name_type'
21171 netdb_net_type='$netdb_net_type'
21172 nm='$nm'
21173 nm_opt='$nm_opt'
21174 nm_so_opt='$nm_so_opt'
21175 nonxs_ext='$nonxs_ext'
21176 nroff='$nroff'
21177 nvEUformat='$nvEUformat'
21178 nvFUformat='$nvFUformat'
21179 nvGUformat='$nvGUformat'
21180 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21181 nveformat='$nveformat'
21182 nvfformat='$nvfformat'
21183 nvgformat='$nvgformat'
21184 nvsize='$nvsize'
21185 nvtype='$nvtype'
21186 o_nonblock='$o_nonblock'
21187 obj_ext='$obj_ext'
21188 old_pthread_create_joinable='$old_pthread_create_joinable'
21189 optimize='$optimize'
21190 orderlib='$orderlib'
21191 osname='$osname'
21192 osvers='$osvers'
21193 otherlibdirs='$otherlibdirs'
21194 package='$package'
21195 pager='$pager'
21196 passcat='$passcat'
21197 patchlevel='$patchlevel'
21198 path_sep='$path_sep'
21199 perl5='$perl5'
21200 perl='$perl'
21201 perl_patchlevel='$perl_patchlevel'
21202 perladmin='$perladmin'
21203 perllibs='$perllibs'
21204 perlpath='$perlpath'
21205 pg='$pg'
21206 phostname='$phostname'
21207 pidtype='$pidtype'
21208 plibpth='$plibpth'
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 yacc='$yacc'
21411 yaccflags='$yaccflags'
21412 zcat='$zcat'
21413 zip='$zip'
21414 EOT
21415
21416 : Add in command line options if available
21417 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21418
21419 : add special variables
21420 $test -f $src/patchlevel.h && \
21421 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21422 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21423 echo "PERL_CONFIG_SH=true" >>config.sh
21424
21425 : propagate old symbols
21426 if $test -f UU/config.sh; then
21427         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21428         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21429         $sort | $uniq -u >UU/oldsyms
21430         set X `cat UU/oldsyms`
21431         shift
21432         case $# in
21433         0) ;;
21434         *)
21435                 cat <<EOM
21436 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21437 EOM
21438                 echo "# Variables propagated from previous config.sh file." >>config.sh
21439                 for sym in `cat UU/oldsyms`; do
21440                         echo "    Propagating $hint variable "'$'"$sym..."
21441                         eval 'tmp="$'"${sym}"'"'
21442                         echo "$tmp" | \
21443                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21444                 done
21445                 ;;
21446         esac
21447 fi
21448
21449 : Finish up by extracting the .SH files
21450 case "$alldone" in
21451 exit)
21452         $rm -rf UU
21453         echo "Extraction done."
21454         exit 0
21455         ;;
21456 cont)
21457         ;;
21458 '')
21459         dflt=''
21460         nostick=true
21461         $cat <<EOM
21462
21463 If you'd like to make any changes to the config.sh file before I begin
21464 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21465
21466 EOM
21467         rp="Press return or use a shell escape to edit config.sh:"
21468         . UU/myread
21469         nostick=''
21470         case "$ans" in
21471         '') ;;
21472         *) : in case they cannot read
21473                 sh 1>&4 -c "$ans";;
21474         esac
21475         ;;
21476 esac
21477
21478 : if this fails, just run all the .SH files by hand
21479 . ./config.sh
21480
21481 echo " "
21482 exec 1>&4
21483 pwd=`pwd`
21484 . ./UU/extract
21485 cd "$pwd"
21486
21487 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21488         dflt=y
21489         case "$silent" in
21490         true) ;;
21491         *)
21492                 $cat <<EOM
21493
21494 Now you need to generate make dependencies by running "$make depend".
21495 You might prefer to run it in background: "$make depend > makedepend.out &"
21496 It can take a while, so you might not want to run it right now.
21497
21498 EOM
21499                 ;;
21500         esac
21501         rp="Run $make depend now?"
21502         . UU/myread
21503         case "$ans" in
21504         y*)
21505                 $make depend && echo "Now you must run '$make'."
21506                 ;;
21507         *)
21508                 echo "You must run '$make depend' then '$make'."
21509                 ;;
21510         esac
21511 elif test -f [Mm]akefile; then
21512         echo " "
21513         echo "Now you must run a $make."
21514 else
21515         echo "Configure done."
21516 fi
21517
21518 if $test -f Policy.sh; then
21519     $cat <<EOM
21520
21521 If you compile $package on a different machine or from a different object
21522 directory, copy the Policy.sh file from this object directory to the
21523 new one before you run Configure -- this will help you with most of
21524 the policy defaults.
21525
21526 EOM
21527 fi
21528 if $test -f config.msg; then
21529     echo "Hmm.  I also noted the following information while running:"
21530     echo " "
21531     $cat config.msg >&4
21532     $rm -f config.msg
21533 fi
21534 $rm -f kit*isdone ark*isdone
21535 $rm -rf UU
21536
21537 : End of Configure
21538