False alarm: no cyclic dependency.
[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 Tue Apr 15 20:24:36 EET DST 2003 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 perllibs=''
192 dynamic_ext=''
193 extensions=''
194 known_extensions=''
195 nonxs_ext=''
196 static_ext=''
197 useopcode=''
198 useposix=''
199 extras=''
200 d_bsd=''
201 d_eunice=''
202 d_xenix=''
203 eunicefix=''
204 Mcc=''
205 ar=''
206 awk=''
207 bash=''
208 bison=''
209 byacc=''
210 cat=''
211 chgrp=''
212 chmod=''
213 chown=''
214 comm=''
215 compress=''
216 cp=''
217 cpio=''
218 cpp=''
219 csh=''
220 date=''
221 echo=''
222 egrep=''
223 emacs=''
224 expr=''
225 find=''
226 flex=''
227 gmake=''
228 grep=''
229 gzip=''
230 inews=''
231 ksh=''
232 less=''
233 line=''
234 lint=''
235 ln=''
236 lp=''
237 lpr=''
238 ls=''
239 mail=''
240 mailx=''
241 make=''
242 mkdir=''
243 more=''
244 mv=''
245 nm=''
246 nroff=''
247 perl=''
248 pg=''
249 pmake=''
250 pr=''
251 rm=''
252 rmail=''
253 sed=''
254 sendmail=''
255 shar=''
256 sleep=''
257 smail=''
258 sort=''
259 submit=''
260 tail=''
261 tar=''
262 tbl=''
263 tee=''
264 test=''
265 touch=''
266 tr=''
267 troff=''
268 uname=''
269 uniq=''
270 uuname=''
271 vi=''
272 zcat=''
273 zip=''
274 full_ar=''
275 full_sed=''
276 libswanted=''
277 hint=''
278 myuname=''
279 osname=''
280 osvers=''
281 Author=''
282 Date=''
283 Header=''
284 Id=''
285 Locker=''
286 Log=''
287 RCSfile=''
288 Revision=''
289 Source=''
290 State=''
291 _a=''
292 _exe=''
293 _o=''
294 archobjs=''
295 exe_ext=''
296 firstmakefile=''
297 lib_ext=''
298 obj_ext=''
299 path_sep=''
300 afs=''
301 afsroot=''
302 alignbytes=''
303 ansi2knr=''
304 archlib=''
305 archlibexp=''
306 d_archlib=''
307 installarchlib=''
308 archname=''
309 myarchname=''
310 d_atolf=''
311 d_atoll=''
312 baserev=''
313 bin=''
314 binexp=''
315 installbin=''
316 byteorder=''
317 cc=''
318 ccflags=''
319 cppflags=''
320 ldflags=''
321 lkflags=''
322 locincpth=''
323 optimize=''
324 cf_email=''
325 cf_by=''
326 cf_time=''
327 charsize=''
328 contains=''
329 cpp_stuff=''
330 cpplast=''
331 cppminus=''
332 cpprun=''
333 cppstdin=''
334 d__fwalk=''
335 d_access=''
336 d_accessx=''
337 d_aintl=''
338 d_alarm=''
339 asctime_r_proto=''
340 d_asctime_r=''
341 d_attribut=''
342 d_bcmp=''
343 d_bcopy=''
344 d_bzero=''
345 d_casti32=''
346 castflags=''
347 d_castneg=''
348 d_chown=''
349 d_chroot=''
350 d_chsize=''
351 d_class=''
352 d_closedir=''
353 d_void_closedir=''
354 d_cmsghdr_s=''
355 d_const=''
356 d_copysignl=''
357 cryptlib=''
358 d_crypt=''
359 crypt_r_proto=''
360 d_crypt_r=''
361 d_csh=''
362 full_csh=''
363 ctermid_r_proto=''
364 d_ctermid_r=''
365 ctime_r_proto=''
366 d_ctime_r=''
367 d_cuserid=''
368 d_dbl_dig=''
369 d_dbminitproto=''
370 d_difftime=''
371 d_dirfd=''
372 d_dlerror=''
373 d_dlopen=''
374 d_dlsymun=''
375 d_dosuid=''
376 d_suidsafe=''
377 d_drand48_r=''
378 drand48_r_proto=''
379 d_drand48proto=''
380 d_dup2=''
381 d_eaccess=''
382 d_endgrent=''
383 d_endgrent_r=''
384 endgrent_r_proto=''
385 d_endhent=''
386 d_endhostent_r=''
387 endhostent_r_proto=''
388 d_endnent=''
389 d_endnetent_r=''
390 endnetent_r_proto=''
391 d_endpent=''
392 d_endprotoent_r=''
393 endprotoent_r_proto=''
394 d_endpwent=''
395 d_endpwent_r=''
396 endpwent_r_proto=''
397 d_endsent=''
398 d_endservent_r=''
399 endservent_r_proto=''
400 d_fchdir=''
401 d_fchmod=''
402 d_fchown=''
403 d_fcntl=''
404 d_fcntl_can_lock=''
405 d_fd_macros=''
406 d_fd_set=''
407 d_fds_bits=''
408 d_fgetpos=''
409 d_finite=''
410 d_finitel=''
411 d_flexfnam=''
412 d_flock=''
413 d_flockproto=''
414 d_fork=''
415 d_fp_class=''
416 d_fpclass=''
417 d_fpclassify=''
418 d_fpclassl=''
419 d_fpos64_t=''
420 d_frexpl=''
421 d_fs_data_s=''
422 d_fseeko=''
423 d_fsetpos=''
424 d_fstatfs=''
425 d_fsync=''
426 d_ftello=''
427 d_ftime=''
428 d_gettimeod=''
429 d_Gconvert=''
430 d_getcwd=''
431 d_getespwnam=''
432 d_getfsstat=''
433 d_getgrent=''
434 d_getgrent_r=''
435 getgrent_r_proto=''
436 d_getgrgid_r=''
437 getgrgid_r_proto=''
438 d_getgrnam_r=''
439 getgrnam_r_proto=''
440 d_getgrps=''
441 d_gethbyaddr=''
442 d_gethbyname=''
443 d_gethent=''
444 aphostname=''
445 d_gethname=''
446 d_phostname=''
447 d_uname=''
448 d_gethostbyaddr_r=''
449 gethostbyaddr_r_proto=''
450 d_gethostbyname_r=''
451 gethostbyname_r_proto=''
452 d_gethostent_r=''
453 gethostent_r_proto=''
454 d_gethostprotos=''
455 d_getitimer=''
456 d_getlogin=''
457 d_getlogin_r=''
458 getlogin_r_proto=''
459 d_getmnt=''
460 d_getmntent=''
461 d_getnbyaddr=''
462 d_getnbyname=''
463 d_getnent=''
464 d_getnetbyaddr_r=''
465 getnetbyaddr_r_proto=''
466 d_getnetbyname_r=''
467 getnetbyname_r_proto=''
468 d_getnetent_r=''
469 getnetent_r_proto=''
470 d_getnetprotos=''
471 d_getpagsz=''
472 d_getpent=''
473 d_getpgid=''
474 d_getpgrp2=''
475 d_bsdgetpgrp=''
476 d_getpgrp=''
477 d_getppid=''
478 d_getprior=''
479 d_getpbyname=''
480 d_getpbynumber=''
481 d_getprotobyname_r=''
482 getprotobyname_r_proto=''
483 d_getprotobynumber_r=''
484 getprotobynumber_r_proto=''
485 d_getprotoent_r=''
486 getprotoent_r_proto=''
487 d_getprotoprotos=''
488 d_getprpwnam=''
489 d_getpwent=''
490 d_getpwent_r=''
491 getpwent_r_proto=''
492 d_getpwnam_r=''
493 getpwnam_r_proto=''
494 d_getpwuid_r=''
495 getpwuid_r_proto=''
496 d_getsent=''
497 d_getservbyname_r=''
498 getservbyname_r_proto=''
499 d_getservbyport_r=''
500 getservbyport_r_proto=''
501 d_getservent_r=''
502 getservent_r_proto=''
503 d_getservprotos=''
504 d_getspnam=''
505 d_getspnam_r=''
506 getspnam_r_proto=''
507 d_getsbyname=''
508 d_getsbyport=''
509 d_gmtime_r=''
510 gmtime_r_proto=''
511 d_gnulibc=''
512 gnulibc_version=''
513 d_hasmntopt=''
514 d_htonl=''
515 d_ilogbl=''
516 d_inetaton=''
517 d_int64_t=''
518 d_isascii=''
519 d_isfinite=''
520 d_isinf=''
521 d_isnan=''
522 d_isnanl=''
523 d_killpg=''
524 d_lchown=''
525 d_ldbl_dig=''
526 d_link=''
527 d_localtime_r=''
528 localtime_r_proto=''
529 d_locconv=''
530 d_lockf=''
531 d_longdbl=''
532 longdblsize=''
533 d_longlong=''
534 longlongsize=''
535 d_lseekproto=''
536 d_lstat=''
537 d_madvise=''
538 d_mblen=''
539 d_mbstowcs=''
540 d_mbtowc=''
541 d_memchr=''
542 d_memcmp=''
543 d_memcpy=''
544 d_memmove=''
545 d_memset=''
546 d_mkdir=''
547 d_mkdtemp=''
548 d_mkfifo=''
549 d_mkstemp=''
550 d_mkstemps=''
551 d_mktime=''
552 d_mmap=''
553 mmaptype=''
554 d_modfl=''
555 d_modfl_pow32_bug=''
556 d_modflproto=''
557 d_mprotect=''
558 d_msg=''
559 d_msgctl=''
560 d_msgget=''
561 d_msghdr_s=''
562 d_msgrcv=''
563 d_msgsnd=''
564 d_msync=''
565 d_munmap=''
566 d_nanosleep=''
567 d_nice=''
568 d_nl_langinfo=''
569 d_off64_t=''
570 d_open3=''
571 d_fpathconf=''
572 d_pathconf=''
573 d_pause=''
574 d_pipe=''
575 d_poll=''
576 d_portable=''
577 d_procselfexe=''
578 procselfexe=''
579 d_old_pthread_create_joinable=''
580 old_pthread_create_joinable=''
581 d_pthread_atfork=''
582 d_pthread_yield=''
583 d_sched_yield=''
584 sched_yield=''
585 d_qgcvt=''
586 d_random_r=''
587 random_r_proto=''
588 d_readdir64_r=''
589 readdir64_r_proto=''
590 d_readdir=''
591 d_rewinddir=''
592 d_seekdir=''
593 d_telldir=''
594 d_readdir_r=''
595 readdir_r_proto=''
596 d_readlink=''
597 d_readv=''
598 d_recvmsg=''
599 d_rename=''
600 d_rmdir=''
601 d_safebcpy=''
602 d_safemcpy=''
603 d_sanemcmp=''
604 d_sbrkproto=''
605 d_scalbnl=''
606 d_select=''
607 d_sem=''
608 d_semctl=''
609 d_semget=''
610 d_semop=''
611 d_sendmsg=''
612 d_setegid=''
613 d_seteuid=''
614 d_setgrent=''
615 d_setgrent_r=''
616 setgrent_r_proto=''
617 d_setgrps=''
618 d_sethent=''
619 d_sethostent_r=''
620 sethostent_r_proto=''
621 d_setitimer=''
622 d_setlinebuf=''
623 d_setlocale=''
624 d_setlocale_r=''
625 setlocale_r_proto=''
626 d_setnent=''
627 d_setnetent_r=''
628 setnetent_r_proto=''
629 d_setpent=''
630 d_setpgid=''
631 d_setpgrp2=''
632 d_bsdsetpgrp=''
633 d_setpgrp=''
634 d_setprior=''
635 d_setproctitle=''
636 d_setprotoent_r=''
637 setprotoent_r_proto=''
638 d_setpwent=''
639 d_setpwent_r=''
640 setpwent_r_proto=''
641 d_setregid=''
642 d_setresgid=''
643 d_setresuid=''
644 d_setreuid=''
645 d_setrgid=''
646 d_setruid=''
647 d_setsent=''
648 d_setservent_r=''
649 setservent_r_proto=''
650 d_setsid=''
651 d_setvbuf=''
652 d_sfio=''
653 usesfio=''
654 d_shm=''
655 d_shmat=''
656 d_shmatprototype=''
657 shmattype=''
658 d_shmctl=''
659 d_shmdt=''
660 d_shmget=''
661 d_sigaction=''
662 d_sigprocmask=''
663 d_sigsetjmp=''
664 d_sockatmark=''
665 d_sockatmarkproto=''
666 d_msg_ctrunc=''
667 d_msg_dontroute=''
668 d_msg_oob=''
669 d_msg_peek=''
670 d_msg_proxy=''
671 d_oldsock=''
672 d_scm_rights=''
673 d_socket=''
674 d_sockpair=''
675 sockethdr=''
676 socketlib=''
677 d_socklen_t=''
678 d_socks5_init=''
679 d_sqrtl=''
680 d_srand48_r=''
681 srand48_r_proto=''
682 d_srandom_r=''
683 srandom_r_proto=''
684 d_sresgproto=''
685 d_sresuproto=''
686 d_statblks=''
687 d_statfs_f_flags=''
688 d_statfs_s=''
689 d_fstatvfs=''
690 d_statvfs=''
691 d_stdio_cnt_lval=''
692 d_stdio_ptr_lval=''
693 d_stdio_ptr_lval_nochange_cnt=''
694 d_stdio_ptr_lval_sets_cnt=''
695 d_stdiobase=''
696 d_stdstdio=''
697 stdio_base=''
698 stdio_bufsiz=''
699 stdio_cnt=''
700 stdio_filbuf=''
701 stdio_ptr=''
702 d_index=''
703 d_strchr=''
704 d_strcoll=''
705 d_strctcpy=''
706 d_strerrm=''
707 d_strerror=''
708 d_sysernlst=''
709 d_syserrlst=''
710 d_strerror_r=''
711 strerror_r_proto=''
712 d_strftime=''
713 d_strtod=''
714 d_strtol=''
715 d_strtold=''
716 d_strtoll=''
717 d_strtoq=''
718 d_strtoul=''
719 d_strtoull=''
720 d_strtouq=''
721 d_strxfrm=''
722 d_symlink=''
723 d_syscall=''
724 d_syscallproto=''
725 d_sysconf=''
726 d_system=''
727 d_tcgetpgrp=''
728 d_tcsetpgrp=''
729 d_telldirproto=''
730 d_time=''
731 timetype=''
732 clocktype=''
733 d_times=''
734 d_tmpnam_r=''
735 tmpnam_r_proto=''
736 d_truncate=''
737 d_ttyname_r=''
738 ttyname_r_proto=''
739 d_tzname=''
740 d_u32align=''
741 d_ualarm=''
742 d_umask=''
743 d_semctl_semid_ds=''
744 d_semctl_semun=''
745 d_union_semun=''
746 d_unordered=''
747 d_usleep=''
748 d_usleepproto=''
749 d_ustat=''
750 d_vfork=''
751 usevfork=''
752 d_voidsig=''
753 signal_t=''
754 d_volatile=''
755 d_charvspr=''
756 d_vprintf=''
757 d_wait4=''
758 d_waitpid=''
759 d_wcstombs=''
760 d_wctomb=''
761 d_writev=''
762 dlext=''
763 cccdlflags=''
764 ccdlflags=''
765 dlsrc=''
766 ld=''
767 lddlflags=''
768 usedl=''
769 doublesize=''
770 ebcdic=''
771 fflushNULL=''
772 fflushall=''
773 fpossize=''
774 fpostype=''
775 gccansipedantic=''
776 gccosandvers=''
777 gccversion=''
778 gidformat=''
779 gidsign=''
780 gidsize=''
781 gidtype=''
782 groupstype=''
783 h_fcntl=''
784 h_sysfile=''
785 html1dir=''
786 html1direxp=''
787 installhtml1dir=''
788 html3dir=''
789 html3direxp=''
790 installhtml3dir=''
791 i_arpainet=''
792 i_crypt=''
793 db_hashtype=''
794 db_prefixtype=''
795 db_version_major=''
796 db_version_minor=''
797 db_version_patch=''
798 i_db=''
799 i_dbm=''
800 i_rpcsvcdbm=''
801 d_dirnamlen=''
802 direntrytype=''
803 i_dirent=''
804 i_dld=''
805 i_dlfcn=''
806 i_fcntl=''
807 i_float=''
808 i_fp=''
809 i_fp_class=''
810 i_gdbm=''
811 d_grpasswd=''
812 i_grp=''
813 i_ieeefp=''
814 i_inttypes=''
815 i_langinfo=''
816 i_libutil=''
817 i_limits=''
818 i_locale=''
819 i_machcthr=''
820 i_malloc=''
821 i_math=''
822 i_memory=''
823 i_mntent=''
824 i_ndbm=''
825 i_netdb=''
826 i_neterrno=''
827 i_netinettcp=''
828 i_niin=''
829 i_sysin=''
830 i_poll=''
831 i_prot=''
832 i_pthread=''
833 d_pwage=''
834 d_pwchange=''
835 d_pwclass=''
836 d_pwcomment=''
837 d_pwexpire=''
838 d_pwgecos=''
839 d_pwpasswd=''
840 d_pwquota=''
841 i_pwd=''
842 i_sfio=''
843 i_shadow=''
844 i_socks=''
845 i_stddef=''
846 i_stdlib=''
847 i_string=''
848 strings=''
849 i_sunmath=''
850 i_sysaccess=''
851 i_sysdir=''
852 i_sysfile=''
853 d_voidtty=''
854 i_bsdioctl=''
855 i_sysfilio=''
856 i_sysioctl=''
857 i_syssockio=''
858 i_syslog=''
859 i_sysmman=''
860 i_sysmode=''
861 i_sysmount=''
862 i_sysndir=''
863 i_sysparam=''
864 i_sysresrc=''
865 i_syssecrt=''
866 i_sysselct=''
867 i_sysstat=''
868 i_sysstatfs=''
869 i_sysstatvfs=''
870 i_systimes=''
871 i_systypes=''
872 i_sysuio=''
873 i_sysun=''
874 i_sysutsname=''
875 i_sysvfs=''
876 i_syswait=''
877 i_sgtty=''
878 i_termio=''
879 i_termios=''
880 d_tm_tm_gmtoff=''
881 d_tm_tm_zone=''
882 i_systime=''
883 i_systimek=''
884 i_time=''
885 timeincl=''
886 i_unistd=''
887 i_ustat=''
888 i_utime=''
889 i_values=''
890 i_stdarg=''
891 i_varargs=''
892 i_varhdr=''
893 i_vfork=''
894 inc_version_list=''
895 inc_version_list_init=''
896 installprefix=''
897 installprefixexp=''
898 installstyle=''
899 installusrbinperl=''
900 intsize=''
901 longsize=''
902 shortsize=''
903 issymlink=''
904 libc=''
905 ldlibpthname=''
906 libperl=''
907 shrpenv=''
908 useshrplib=''
909 glibpth=''
910 libpth=''
911 loclibpth=''
912 plibpth=''
913 xlibpth=''
914 ignore_versioned_solibs=''
915 libs=''
916 libsdirs=''
917 libsfiles=''
918 libsfound=''
919 libspath=''
920 lns=''
921 d_PRIEUldbl=''
922 d_PRIFUldbl=''
923 d_PRIGUldbl=''
924 d_PRIeldbl=''
925 d_PRIfldbl=''
926 d_PRIgldbl=''
927 d_SCNfldbl=''
928 sPRIEUldbl=''
929 sPRIFUldbl=''
930 sPRIGUldbl=''
931 sPRIeldbl=''
932 sPRIfldbl=''
933 sPRIgldbl=''
934 sSCNfldbl=''
935 lseeksize=''
936 lseektype=''
937 make_set_make=''
938 d_mymalloc=''
939 freetype=''
940 mallocobj=''
941 mallocsrc=''
942 malloctype=''
943 usemymalloc=''
944 installman1dir=''
945 man1dir=''
946 man1direxp=''
947 man1ext=''
948 installman3dir=''
949 man3dir=''
950 man3direxp=''
951 man3ext=''
952 modetype=''
953 multiarch=''
954 mydomain=''
955 myhostname=''
956 phostname=''
957 c=''
958 n=''
959 d_eofnblk=''
960 eagain=''
961 o_nonblock=''
962 rd_nodata=''
963 need_va_copy=''
964 netdb_hlen_type=''
965 netdb_host_type=''
966 netdb_name_type=''
967 netdb_net_type=''
968 groupcat=''
969 hostcat=''
970 passcat=''
971 orderlib=''
972 ranlib=''
973 d_perl_otherlibdirs=''
974 otherlibdirs=''
975 package=''
976 spackage=''
977 pager=''
978 api_revision=''
979 api_subversion=''
980 api_version=''
981 api_versionstring=''
982 patchlevel=''
983 perl_patchlevel=''
984 revision=''
985 subversion=''
986 version=''
987 version_patchlevel_string=''
988 perl5=''
989 perladmin=''
990 perlpath=''
991 d_nv_preserves_uv=''
992 i16size=''
993 i16type=''
994 i32size=''
995 i32type=''
996 i64size=''
997 i64type=''
998 i8size=''
999 i8type=''
1000 ivsize=''
1001 ivtype=''
1002 nv_preserves_uv_bits=''
1003 nvsize=''
1004 nvtype=''
1005 u16size=''
1006 u16type=''
1007 u32size=''
1008 u32type=''
1009 u64size=''
1010 u64type=''
1011 u8size=''
1012 u8type=''
1013 uvsize=''
1014 uvtype=''
1015 ivdformat=''
1016 nvEUformat=''
1017 nvFUformat=''
1018 nvGUformat=''
1019 nveformat=''
1020 nvfformat=''
1021 nvgformat=''
1022 uvXUformat=''
1023 uvoformat=''
1024 uvuformat=''
1025 uvxformat=''
1026 pidtype=''
1027 prefix=''
1028 prefixexp=''
1029 installprivlib=''
1030 privlib=''
1031 privlibexp=''
1032 prototype=''
1033 ptrsize=''
1034 d_PRIXU64=''
1035 d_PRId64=''
1036 d_PRIi64=''
1037 d_PRIo64=''
1038 d_PRIu64=''
1039 d_PRIx64=''
1040 sPRIXU64=''
1041 sPRId64=''
1042 sPRIi64=''
1043 sPRIo64=''
1044 sPRIu64=''
1045 sPRIx64=''
1046 d_quad=''
1047 quadkind=''
1048 quadtype=''
1049 uquadtype=''
1050 drand01=''
1051 randbits=''
1052 randfunc=''
1053 randseedtype=''
1054 seedfunc=''
1055 installscript=''
1056 scriptdir=''
1057 scriptdirexp=''
1058 selectminbits=''
1059 selecttype=''
1060 sh=''
1061 sig_count=''
1062 sig_name=''
1063 sig_name_init=''
1064 sig_num=''
1065 sig_num_init=''
1066 sig_size=''
1067 installsitearch=''
1068 sitearch=''
1069 sitearchexp=''
1070 installsitebin=''
1071 sitebin=''
1072 sitebinexp=''
1073 installsitehtml1=''
1074 sitehtml1=''
1075 sitehtml1exp=''
1076 installsitehtml3=''
1077 sitehtml3=''
1078 sitehtml3exp=''
1079 installsitelib=''
1080 sitelib=''
1081 sitelib_stem=''
1082 sitelibexp=''
1083 installsiteman1=''
1084 siteman1=''
1085 siteman1exp=''
1086 installsiteman3=''
1087 siteman3=''
1088 siteman3exp=''
1089 siteprefix=''
1090 siteprefixexp=''
1091 installsitescript=''
1092 sitescript=''
1093 sitescriptexp=''
1094 sizesize=''
1095 sizetype=''
1096 so=''
1097 socksizetype=''
1098 sharpbang=''
1099 shsharp=''
1100 spitshell=''
1101 src=''
1102 ssizetype=''
1103 startperl=''
1104 startsh=''
1105 stdchar=''
1106 d_stdio_stream_array=''
1107 stdio_stream_array=''
1108 sysman=''
1109 trnl=''
1110 uidformat=''
1111 uidsign=''
1112 uidsize=''
1113 uidtype=''
1114 archname64=''
1115 use64bitall=''
1116 use64bitint=''
1117 ccflags_uselargefiles=''
1118 ldflags_uselargefiles=''
1119 libswanted_uselargefiles=''
1120 uselargefiles=''
1121 uselongdouble=''
1122 usemorebits=''
1123 usemultiplicity=''
1124 nm_opt=''
1125 nm_so_opt=''
1126 runnm=''
1127 usenm=''
1128 useperlio=''
1129 usesocks=''
1130 d_oldpthreads=''
1131 use5005threads=''
1132 useithreads=''
1133 usereentrant=''
1134 usethreads=''
1135 incpath=''
1136 mips_type=''
1137 usrinc=''
1138 d_vendorarch=''
1139 installvendorarch=''
1140 vendorarch=''
1141 vendorarchexp=''
1142 d_vendorbin=''
1143 installvendorbin=''
1144 vendorbin=''
1145 vendorbinexp=''
1146 installvendorhtml1=''
1147 vendorhtml1=''
1148 vendorhtml1exp=''
1149 installvendorhtml3=''
1150 vendorhtml3=''
1151 vendorhtml3exp=''
1152 d_vendorlib=''
1153 installvendorlib=''
1154 vendorlib=''
1155 vendorlib_stem=''
1156 vendorlibexp=''
1157 installvendorman1=''
1158 vendorman1=''
1159 vendorman1exp=''
1160 installvendorman3=''
1161 vendorman3=''
1162 vendorman3exp=''
1163 usevendorprefix=''
1164 vendorprefix=''
1165 vendorprefixexp=''
1166 d_vendorscript=''
1167 installvendorscript=''
1168 vendorscript=''
1169 vendorscriptexp=''
1170 versiononly=''
1171 defvoidused=''
1172 voidflags=''
1173 pm_apiversion=''
1174 xs_apiversion=''
1175 yacc=''
1176 yaccflags=''
1177 CONFIG=''
1178
1179 define='define'
1180 undef='undef'
1181 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1182 rmlist=''
1183
1184 : We must find out about Eunice early
1185 eunicefix=':'
1186 if test -f /etc/unixtovms; then
1187         eunicefix=/etc/unixtovms
1188 fi
1189 if test -f /etc/unixtovms.exe; then
1190         eunicefix=/etc/unixtovms.exe
1191 fi
1192
1193 : Set executable suffix now -- needed before hints available
1194 if test -f "/libs/version.library"; then
1195 : Amiga OS
1196     _exe=""
1197 elif test -f "/system/gnu_library/bin/ar.pm"; then
1198 : Stratus VOS
1199     _exe=".pm"
1200 elif test -n "$DJGPP"; then
1201 : DOS DJGPP
1202     _exe=".exe"
1203 elif test -d c:/. -o -n "$is_os2" ; then
1204 : OS/2 or cygwin
1205     _exe=".exe"
1206 fi
1207
1208 i_whoami=''
1209 : Possible local include directories to search.
1210 : Set locincpth to "" in a hint file to defeat local include searches.
1211 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1212 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1213 :
1214 : no include file wanted by default
1215 inclwanted=''
1216
1217 siteman1=''
1218 siteman3=''
1219 sitescript=''
1220 : Trailing extension.  Override this in a hint file, if needed.
1221 : Extra object files, if any, needed on this platform.
1222 archobjs=''
1223 groupstype=''
1224 libnames=''
1225 : change the next line if compiling for Xenix/286 on Xenix/386
1226 xlibpth='/usr/lib/386 /lib/386'
1227 : Possible local library directories to search.
1228 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1229 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1230
1231 : general looking path for locating libraries
1232 glibpth="/lib /usr/lib $xlibpth"
1233 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1234 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1235 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1236
1237 : Private path used by Configure to find libraries.  Its value
1238 : is prepended to libpth. This variable takes care of special
1239 : machines, like the mips.  Usually, it should be empty.
1240 plibpth=''
1241
1242 : default library list
1243 libswanted=''
1244 : some systems want to use only the non-versioned libso:s
1245 ignore_versioned_solibs=''
1246 : full support for void wanted by default
1247 defvoidused=15
1248
1249 ccname=''
1250 ccversion=''
1251 perllibs=''
1252 : set useposix=false in your hint file to disable the POSIX extension.
1253 useposix=true
1254 : set useopcode=false in your hint file to disable the Opcode extension.
1255 useopcode=true
1256 archname64=''
1257 ccflags_uselargefiles=''
1258 ldflags_uselargefiles=''
1259 libswanted_uselargefiles=''
1260 : set usemultiplicity on the Configure command line to enable multiplicity.
1261 : set usesocks on the Configure command line to enable socks.
1262 archname=''
1263 : set usethreads on the Configure command line to enable threads.
1264 usereentrant='undef'
1265 : List of libraries we want.
1266 : If anyone needs -lnet, put it in a hint file.
1267 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1268 libswanted="$libswanted dld ld sun m c cposix posix"
1269 libswanted="$libswanted ndir dir crypt sec"
1270 libswanted="$libswanted ucb bsd BSD PW x util rt posix4"
1271 : We probably want to search /usr/shlib before most other libraries.
1272 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1273 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1274 glibpth="/usr/shlib $glibpth"
1275 : Do not use vfork unless overridden by a hint file.
1276 usevfork=false
1277
1278 : Find the basic shell for Bourne shell scripts
1279 case "$sh" in
1280 '')
1281         case "$SYSTYPE" in
1282         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1283         *) xxx='/bin/sh';;
1284         esac
1285         if test -f "$xxx"; then
1286                 sh="$xxx"
1287         else
1288                 : Build up a list and do a single loop so we can 'break' out.
1289                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1290                 for xxx in sh bash ksh pdksh ash; do
1291                         for p in $pth; do
1292                                 try="$try ${p}/${xxx}"
1293                         done
1294                 done
1295                 for xxx in $try; do
1296                         if test -f "$xxx"; then
1297                                 sh="$xxx";
1298                                 break
1299                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1300                                 sh="$xxx";
1301                                 break
1302                         elif test -f "$xxx.exe"; then
1303                                 sh="$xxx";
1304                                 break
1305                         fi
1306                 done
1307         fi
1308         ;;
1309 esac
1310
1311 case "$sh" in
1312 '')     cat >&2 <<EOM
1313 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1314
1315 Usually it's in /bin/sh.  How did you even get this far?
1316 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1317 we'll try to straighten this all out.
1318 EOM
1319         exit 1
1320         ;;
1321 esac
1322
1323 : see if sh knows # comments
1324 if `$sh -c '#' >/dev/null 2>&1`; then
1325         shsharp=true
1326         spitshell=cat
1327         xcat=/bin/cat
1328         test -f $xcat$_exe || xcat=/usr/bin/cat
1329         if test ! -f $xcat$_exe; then
1330                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1331                         if test -f $p/cat$_exe; then
1332                                 xcat=$p/cat
1333                                 break
1334                         fi
1335                 done
1336                 if test ! -f $xcat$_exe; then
1337                         echo "Can't find cat anywhere!"
1338                         exit 1
1339                 fi
1340         fi
1341         echo "#!$xcat" >sharp
1342         $eunicefix sharp
1343         chmod +x sharp
1344         ./sharp > today
1345         if test -s today; then
1346                 sharpbang='#!'
1347         else
1348                 echo "#! $xcat" > sharp
1349                 $eunicefix sharp
1350                 chmod +x sharp
1351                 ./sharp > today
1352                 if test -s today; then
1353                         sharpbang='#! '
1354                 else
1355                         sharpbang=': use '
1356                 fi
1357         fi
1358 else
1359         echo " "
1360         echo "Your $sh doesn't grok # comments--I will strip them later on."
1361         shsharp=false
1362         cd ..
1363         echo "exec grep -v '^[  ]*#'" >spitshell
1364         chmod +x spitshell
1365         $eunicefix spitshell
1366         spitshell=`pwd`/spitshell
1367         cd UU
1368         echo "I presume that if # doesn't work, #! won't work either!"
1369         sharpbang=': use '
1370 fi
1371 rm -f sharp today
1372
1373 : figure out how to guarantee sh startup
1374 case "$startsh" in
1375 '') startsh=${sharpbang}${sh} ;;
1376 *)
1377 esac
1378 cat >sharp <<EOSS
1379 $startsh
1380 set abc
1381 test "$?abc" != 1
1382 EOSS
1383
1384 chmod +x sharp
1385 $eunicefix sharp
1386 if ./sharp; then
1387         : echo "Yup, it does."
1388 else
1389         echo "Hmm... '$startsh' does not guarantee sh startup..."
1390         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1391 fi
1392 rm -f sharp
1393
1394
1395 : Save command line options in file UU/cmdline.opt for later use in
1396 : generating config.sh.
1397 cat > cmdline.opt <<EOSH
1398 # Configure command line arguments.
1399 config_arg0='$0'
1400 config_args='$*'
1401 config_argc=$#
1402 EOSH
1403 argn=1
1404 args_exp=''
1405 args_sep=''
1406 for arg in "$@"; do
1407         cat >>cmdline.opt <<EOSH
1408 config_arg$argn='$arg'
1409 EOSH
1410         # Extreme backslashitis: replace each ' by '"'"'
1411         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1412 $arg
1413 EOC
1414         arg_exp=`cat cmdl.opt`
1415         args_exp="$args_exp$args_sep'$arg_exp'"
1416         argn=`expr $argn + 1`
1417         args_sep=' '
1418 done
1419 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1420 # used by ./hints/os2.sh
1421 rm -f cmdl.opt
1422
1423 : produce awk script to parse command line options
1424 cat >options.awk <<'EOF'
1425 BEGIN {
1426         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1427
1428         len = length(optstr);
1429         for (i = 1; i <= len; i++) {
1430                 c = substr(optstr, i, 1);
1431                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1432                 if (a == ":") {
1433                         arg[c] = 1;
1434                         i++;
1435                 }
1436                 opt[c] = 1;
1437         }
1438 }
1439 {
1440         expect = 0;
1441         str = $0;
1442         if (substr(str, 1, 1) != "-") {
1443                 printf("'%s'\n", str);
1444                 next;
1445         }
1446         len = length($0);
1447         for (i = 2; i <= len; i++) {
1448                 c = substr(str, i, 1);
1449                 if (!opt[c]) {
1450                         printf("-%s\n", substr(str, i));
1451                         next;
1452                 }
1453                 printf("-%s\n", c);
1454                 if (arg[c]) {
1455                         if (i < len)
1456                                 printf("'%s'\n", substr(str, i + 1));
1457                         else
1458                                 expect = 1;
1459                         next;
1460                 }
1461         }
1462 }
1463 END {
1464         if (expect)
1465                 print "?";
1466 }
1467 EOF
1468
1469 : process the command line options
1470 set X `for arg in "$@"; do echo "X$arg"; done |
1471         sed -e s/X// | awk -f options.awk`
1472 eval "set $*"
1473 shift
1474 rm -f options.awk
1475
1476 : set up default values
1477 fastread=''
1478 reuseval=false
1479 config_sh=''
1480 alldone=''
1481 error=''
1482 silent=''
1483 extractsh=''
1484 override=''
1485 knowitall=''
1486 rm -f optdef.sh posthint.sh
1487 cat >optdef.sh <<EOS
1488 $startsh
1489 EOS
1490
1491
1492 : option parsing
1493 while test $# -gt 0; do
1494         case "$1" in
1495         -d) shift; fastread=yes;;
1496         -e) shift; alldone=cont;;
1497         -f)
1498                 shift
1499                 cd ..
1500                 if test -r "$1"; then
1501                         config_sh="$1"
1502                 else
1503                         echo "$me: cannot read config file $1." >&2
1504                         error=true
1505                 fi
1506                 cd UU
1507                 shift;;
1508         -h) shift; error=true;;
1509         -r) shift; reuseval=true;;
1510         -s) shift; silent=true; realsilent=true;;
1511         -E) shift; alldone=exit;;
1512         -K) shift; knowitall=true;;
1513         -O) shift; override=true;;
1514         -S) shift; silent=true; extractsh=true;;
1515         -D)
1516                 shift
1517                 case "$1" in
1518                 *=)
1519                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1520                         echo "$me: ignoring -D $1" >&2
1521                         ;;
1522                 *=*) echo "$1" | \
1523                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1524                 *) echo "$1='define'" >> optdef.sh;;
1525                 esac
1526                 shift
1527                 ;;
1528         -U)
1529                 shift
1530                 case "$1" in
1531                 *=) echo "$1" >> optdef.sh;;
1532                 *=*)
1533                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1534                         echo "$me: ignoring -U $1" >&2
1535                         ;;
1536                 *) echo "$1='undef'" >> optdef.sh;;
1537                 esac
1538                 shift
1539                 ;;
1540         -A)
1541             shift
1542             xxx=''
1543             yyy="$1"
1544             zzz=''
1545             uuu=undef
1546             case "$yyy" in
1547             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1548                  case "$zzz" in
1549                  *:*) zzz='' ;;
1550                  *)   xxx=append
1551                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1552                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1553                  esac
1554                  ;;
1555             esac
1556             case "$xxx" in
1557             '')  case "$yyy" in
1558                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1559                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1560                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1561                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1562                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1563                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1564                  esac
1565                  ;;       
1566             esac
1567             case "$xxx" in
1568             append)
1569                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1570             clear)
1571                 echo "$yyy=''"                  >> posthint.sh ;;
1572             define)
1573                 case "$zzz" in
1574                 '') zzz=define ;;
1575                 esac
1576                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1577             eval)
1578                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1579             prepend)
1580                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1581             undef)
1582                 case "$zzz" in
1583                 '') zzz="$uuu" ;;
1584                 esac
1585                 echo "$yyy=$zzz"                >> posthint.sh ;;
1586             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1587             esac
1588             shift
1589             ;;
1590         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1591             exit 0;;
1592         --) break;;
1593         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1594         *) break;;
1595         esac
1596 done
1597
1598 case "$error" in
1599 true)
1600         cat >&2 <<EOM
1601 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1602                  [-U symbol] [-U symbol=] [-A command:symbol...]
1603   -d : use defaults for all answers.
1604   -e : go on without questioning past the production of config.sh.
1605   -f : specify an alternate default configuration file.
1606   -h : print this help message and exit (with an error status).
1607   -r : reuse C symbols value if possible (skips costly nm extraction).
1608   -s : silent mode, only echoes questions and essential information.
1609   -D : define symbol to have some value:
1610          -D symbol         symbol gets the value 'define'
1611          -D symbol=value   symbol gets the value 'value'
1612   -E : stop at the end of questions, after having produced config.sh.
1613   -K : do not use unless you know what you are doing.
1614   -O : let -D and -U override definitions from loaded configuration file.
1615   -S : perform variable substitutions on all .SH files (can mix with -f)
1616   -U : undefine symbol:
1617          -U symbol    symbol gets the value 'undef'
1618          -U symbol=   symbol gets completely empty
1619   -A : manipulate symbol after the platform specific hints have been applied:
1620          -A symbol=value                append " "value to symbol
1621          -A append:symbol=value         append value to symbol
1622          -A define:symbol=value         define symbol to have value
1623          -A clear:symbol                define symbol to be ''
1624          -A define:symbol               define symbol to be 'define'
1625          -A eval:symbol=value           define symbol to be eval of value
1626          -A prepend:symbol=value        prepend value to symbol
1627          -A undef:symbol                define symbol to be 'undef'
1628          -A undef:symbol=               define symbol to be ''
1629   -V : print version number and exit (with a zero status).
1630 EOM
1631         exit 1
1632         ;;
1633 esac
1634
1635 : Sanity checks
1636 case "$fastread$alldone" in
1637 yescont|yesexit) ;;
1638 *)
1639         case "$extractsh" in
1640         true) ;;
1641         *)
1642                 if test ! -t 0; then
1643                         echo "Say 'sh Configure', not 'sh <Configure'"
1644                         exit 1
1645                 fi
1646                 ;;
1647         esac
1648         ;;
1649 esac
1650
1651 exec 4>&1
1652 case "$silent" in
1653 true) exec 1>/dev/null;;
1654 esac
1655
1656 : run the defines and the undefines, if any, but leave the file out there...
1657 touch optdef.sh
1658 . ./optdef.sh
1659 : create the posthint manipulation script and leave the file out there...
1660 touch posthint.sh
1661
1662 : set package name
1663 package=perl5
1664 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1665 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1666 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1667 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1668 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1669 esac
1670
1671 : Some greps do not return status, grrr.
1672 echo "grimblepritz" >grimble
1673 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1674         contains=contains
1675 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1676         contains=grep
1677 else
1678         contains=contains
1679 fi
1680 rm -f grimble
1681 : the following should work in any shell
1682 case "$contains" in
1683 contains*)
1684         echo " "
1685         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1686         cat >contains <<'EOSS'
1687 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1688 EOSS
1689 chmod +x contains
1690 esac
1691
1692 : Find the path to the source tree
1693 case "$src" in
1694 '') case "$0" in
1695     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1696          case "$src" in
1697          /*)    ;;
1698          .)     ;;
1699          *)     src=`cd ../$src && pwd` ;;
1700          esac
1701          ;;
1702     *)   src='.';;
1703     esac;;
1704 esac
1705 case "$src" in
1706 '')     src=/
1707         rsrc=/
1708         ;;
1709 /*) rsrc="$src";;
1710 *) rsrc="../$src";;
1711 esac
1712 if test -f $rsrc/Configure && \
1713         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1714 then
1715    : found it, so we are ok.
1716 else
1717         rsrc=''
1718         for src in . .. ../.. ../../.. ../../../..; do
1719                 if test -f ../$src/Configure && \
1720                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1721                 then
1722                         rsrc=../$src
1723                         break
1724                 fi
1725         done
1726 fi
1727 case "$rsrc" in
1728 '')
1729         cat <<EOM >&4
1730
1731 Sorry, I can't seem to locate the source dir for $package.  Please start
1732 Configure with an explicit path -- i.e. /some/path/Configure.
1733
1734 EOM
1735         exit 1
1736         ;;
1737 ../.)   rsrc='..';;
1738 *)
1739         echo " "
1740         echo "Sources for $package found in \"$src\"." >&4
1741         ;;
1742 esac
1743
1744 : script used to extract .SH files with variable substitutions
1745 cat >extract <<'EOS'
1746 PERL_CONFIG_SH=true
1747 echo "Doing variable substitutions on .SH files..."
1748 if test -f MANIFEST; then
1749         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1750 else
1751         echo "(Looking for .SH files under the source directory.)"
1752         set x `(cd "$src"; find . -name "*.SH" -print)`
1753 fi
1754 shift
1755 case $# in
1756 0) set x `(cd "$src"; echo *.SH)`; shift;;
1757 esac
1758 if test ! -f "$src/$1"; then
1759         shift
1760 fi
1761 mkdir_p='
1762 name=$1;
1763 create="";
1764 while test $name; do
1765         if test ! -d "$name"; then
1766                 create="$name $create";
1767                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1768                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1769         else
1770                 name="";
1771         fi;
1772 done;
1773 for file in $create; do
1774         mkdir $file;
1775 done
1776 '
1777 for file in $*; do
1778         case "$src" in
1779         ".")
1780                 case "$file" in
1781                 */*)
1782                         dir=`expr X$file : 'X\(.*\)/'`
1783                         file=`expr X$file : 'X.*/\(.*\)'`
1784                         (cd "$dir" && . ./$file)
1785                         ;;
1786                 *)
1787                         . ./$file
1788                         ;;
1789                 esac
1790                 ;;
1791         *)
1792                 case "$file" in
1793                 */*)
1794                         dir=`expr X$file : 'X\(.*\)/'`
1795                         file=`expr X$file : 'X.*/\(.*\)'`
1796                         (set x $dir; shift; eval $mkdir_p)
1797                         sh <"$src/$dir/$file"
1798                         ;;
1799                 *)
1800                         sh <"$src/$file"
1801                         ;;
1802                 esac
1803                 ;;
1804         esac
1805 done
1806 if test -f "$src/config_h.SH"; then
1807         if test ! -f config.h; then
1808         : oops, they left it out of MANIFEST, probably, so do it anyway.
1809         . "$src/config_h.SH"
1810         fi
1811 fi
1812 EOS
1813
1814 : extract files and exit if asked to do so
1815 case "$extractsh" in
1816 true)
1817         case "$realsilent" in
1818         true) ;;
1819         *) exec 1>&4;;
1820         esac
1821         case "$config_sh" in
1822         '') config_sh='config.sh';;
1823         esac
1824         echo " "
1825         echo "Fetching answers from $config_sh..."
1826         cd ..
1827         . $config_sh
1828         test "$override" && . ./optdef.sh
1829         echo " "
1830         . UU/extract
1831         rm -rf UU
1832         echo "Extraction done."
1833         exit 0
1834         ;;
1835 esac
1836
1837 : Eunice requires " " instead of "", can you believe it
1838 echo " "
1839 : Here we go...
1840 echo "Beginning of configuration questions for $package."
1841
1842 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1843
1844 : first determine how to suppress newline on echo command
1845 echo " "
1846 echo "Checking echo to see how to suppress newlines..."
1847 (echo "hi there\c" ; echo " ") >.echotmp
1848 if $contains c .echotmp >/dev/null 2>&1 ; then
1849         echo "...using -n."
1850         n='-n'
1851         c=''
1852 else
1853         cat <<'EOM'
1854 ...using \c
1855 EOM
1856         n=''
1857         c='\c'
1858 fi
1859 echo $n "The star should be here-->$c"
1860 echo '*'
1861 rm -f .echotmp
1862
1863 : Now test for existence of everything in MANIFEST
1864 echo " "
1865 if test -f "$rsrc/MANIFEST"; then
1866         echo "First let's make sure your kit is complete.  Checking..." >&4
1867         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1868         rm -f missing
1869         tmppwd=`pwd`
1870         for filelist in x??; do
1871                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1872         done
1873         if test -s missing; then
1874                 cat missing >&4
1875                 cat >&4 <<'EOM'
1876
1877 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1878
1879 You have the option of continuing the configuration process, despite the
1880 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1881 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1882 and contact the author (perlbug@perl.org).
1883
1884 EOM
1885                 echo $n "Continue? [n] $c" >&4
1886                 read ans
1887                 case "$ans" in
1888                 y*)
1889                         echo "Continuing..." >&4
1890                         rm -f missing
1891                         ;;
1892                 *)
1893                         echo "ABORTING..." >&4
1894                         kill $$
1895                         ;;
1896                 esac
1897         else
1898                 echo "Looks good..."
1899         fi
1900 else
1901         echo "There is no MANIFEST file.  I hope your kit is complete !"
1902 fi
1903 rm -f missing x??
1904
1905 echo " "
1906 : Find the appropriate value for a newline for tr
1907 if test -n "$DJGPP"; then
1908        trnl='\012'
1909 fi
1910 if test X"$trnl" = X; then
1911         case "`echo foo|tr '\n' x 2>/dev/null`" in
1912         foox) trnl='\n' ;;
1913         esac
1914 fi
1915 if test X"$trnl" = X; then
1916         case "`echo foo|tr '\012' x 2>/dev/null`" in
1917         foox) trnl='\012' ;;
1918         esac
1919 fi
1920 if test X"$trnl" = X; then
1921        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1922        fooxy) trnl='\n\r' ;;
1923        esac
1924 fi
1925 if test X"$trnl" = X; then
1926         cat <<EOM >&2
1927
1928 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1929
1930 EOM
1931         exit 1
1932 fi
1933
1934 : compute the number of columns on the terminal for proper question formatting
1935 case "$COLUMNS" in
1936 '') COLUMNS='80';;
1937 esac
1938
1939 : set up the echo used in my read
1940 myecho="case \"\$xxxm\" in
1941 '') echo $n \"\$rp $c\" >&4;;
1942 *) case \"\$rp\" in
1943         '') echo $n \"[\$xxxm] $c\";;
1944         *)
1945                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1946                         echo \"\$rp\" >&4
1947                         echo $n \"[\$xxxm] $c\" >&4
1948                 else
1949                         echo $n \"\$rp [\$xxxm] $c\" >&4
1950                 fi
1951                 ;;
1952         esac;;
1953 esac"
1954
1955 : now set up to do reads with possible shell escape and default assignment
1956 cat <<EOSC >myread
1957 $startsh
1958 xxxm=\$dflt
1959 $myecho
1960 ans='!'
1961 case "\$fastread" in
1962 yes) case "\$dflt" in
1963         '') ;;
1964         *) ans='';
1965                 case "\$silent-\$rp" in
1966                 true-) ;;
1967                 *) echo " " >&4;;
1968                 esac;;
1969         esac;;
1970 *) case "\$silent" in
1971         true) case "\$rp" in
1972                 '') ans='';;
1973                 esac;;
1974         esac;;
1975 esac
1976 while expr "X\$ans" : "X!" >/dev/null; do
1977         read answ
1978         set x \$xxxm
1979         shift
1980         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1981         case  "\$answ" in
1982         "!")
1983                 sh 1>&4
1984                 echo " "
1985                 $myecho
1986                 ;;
1987         !*)
1988                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1989                 shift
1990                 sh 1>&4 -c "\$*"
1991                 echo " "
1992                 $myecho
1993                 ;;
1994         "\$ans")
1995                 case "\$ans" in
1996                 \\&*)
1997                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1998                         shift
1999                         case "\$1" in
2000                         -d)
2001                                 fastread=yes
2002                                 echo "(OK, I'll run with -d after this question.)" >&4
2003                                 ;;
2004                         -*)
2005                                 echo "*** Sorry, \$1 not supported yet." >&4
2006                                 ;;
2007                         esac
2008                         $myecho
2009                         ans=!
2010                         ;;
2011                 esac;;
2012         *)
2013                 case "\$aok" in
2014                 y)
2015                         echo "*** Substitution done -- please confirm."
2016                         xxxm="\$ans"
2017                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2018                         xxxm="\$ans"
2019                         ans=!
2020                         ;;
2021                 *)
2022                         echo "*** Error -- try again."
2023                         ans=!
2024                         ;;
2025                 esac
2026                 $myecho
2027                 ;;
2028         esac
2029         case "\$ans\$xxxm\$nostick" in
2030         '')
2031                 ans=!
2032                 $myecho
2033                 ;;
2034         esac
2035 done
2036 case "\$ans" in
2037 '') ans="\$xxxm";;
2038 esac
2039 EOSC
2040
2041 : create .config dir to save info across Configure sessions
2042 test -d ../.config || mkdir ../.config
2043 cat >../.config/README <<EOF
2044 This directory created by Configure to save information that should
2045 persist across sessions for $package.
2046
2047 You may safely delete it if you wish.
2048 EOF
2049
2050 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2051 case "$usedevel" in
2052 $define|true|[yY]*) ;;
2053 *) case "$xversion" in
2054    *[13579])
2055         cat >&4 <<EOH
2056 *** WHOA THERE!!! ***
2057
2058     This is an UNSTABLE DEVELOPMENT release.
2059     The version of this $package distribution is $xversion, that is, odd,
2060     (as opposed to even) and that signifies a development release.
2061     If you want a maintenance release, you want an even-numbered version.
2062
2063     Do ***NOT*** install this into production use.
2064     Data corruption and crashes are possible.
2065
2066     It is most seriously suggested that you do not continue any further
2067     unless you want to help in developing and debugging Perl.
2068
2069     If you *still* want to build perl, you can answer 'y' now,
2070     or pass -Dusedevel to Configure.
2071
2072 EOH
2073         rp='Do you really want to continue?'
2074         dflt='n'
2075         . ./myread
2076         case "$ans" in
2077         [yY]) echo >&4 "Okay, continuing."
2078               usedevel="$define" ;;
2079         *) echo >&4 "Okay, bye."
2080            exit 1
2081            ;;
2082         esac
2083         ;;
2084     esac
2085     ;;
2086 esac
2087 case "$usedevel" in
2088 $define|true|[yY]*)
2089         case "$versiononly" in
2090         '') versiononly="$define" ;;
2091         esac
2092         case "$installusrbinperl" in
2093         '') installusrbinperl="$undef" ;;
2094         esac
2095         ;;
2096 esac
2097
2098 : general instructions
2099 needman=true
2100 firsttime=true
2101 user=`(logname) 2>/dev/null`
2102 case "$user" in
2103 '') user=`whoami 2>&1`;;
2104 esac
2105 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2106         firsttime=false
2107         echo " "
2108         rp='Would you like to see the instructions?'
2109         dflt=n
2110         . ./myread
2111         case "$ans" in
2112         [yY]*) ;;
2113         *) needman=false;;
2114         esac
2115 fi
2116 if $needman; then
2117         cat <<EOH
2118
2119 This installation shell script will examine your system and ask you questions
2120 to determine how the perl5 package should be installed. If you get
2121 stuck on a question, you may use a ! shell escape to start a subshell or
2122 execute a command.  Many of the questions will have default answers in square
2123 brackets; typing carriage return will give you the default.
2124
2125 On some of the questions which ask for file or directory names you are allowed
2126 to use the ~name construct to specify the login directory belonging to "name",
2127 even if you don't have a shell which knows about that.  Questions where this is
2128 allowed will be marked "(~name ok)".
2129
2130 EOH
2131         rp=''
2132         dflt='Type carriage return to continue'
2133         . ./myread
2134         cat <<'EOH'
2135
2136 The prompter used in this script allows you to use shell variables and
2137 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2138 in the default answer, as if the default line was a set of arguments given to a
2139 script shell.  This means you may also use $* to repeat the whole default line,
2140 so you do not have to re-type everything to add something to the default.
2141
2142 Everytime there is a substitution, you will have to confirm.  If there is an
2143 error (e.g. an unmatched backtick), the default answer will remain unchanged
2144 and you will be prompted again.
2145
2146 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2147 the questions and use the computed defaults (or the previous answers if there
2148 was already a config.sh file). Type 'Configure -h' for a list of options.
2149 You may also start interactively and then answer '& -d' at any prompt to turn
2150 on the non-interactive behaviour for the remainder of the execution.
2151
2152 EOH
2153         . ./myread
2154         cat <<EOH
2155
2156 Much effort has been expended to ensure that this shell script will run on any
2157 Unix system.  If despite that it blows up on yours, your best bet is to edit
2158 Configure and run it again.  If you can't run Configure for some reason,
2159 you'll have to generate a config.sh file by hand.  Whatever problems you
2160 have, let me (perlbug@perl.org) know how I blew it.
2161
2162 This installation script affects things in two ways:
2163
2164 1) it may do direct variable substitutions on some of the files included
2165    in this kit.
2166 2) it builds a config.h file for inclusion in C programs.  You may edit
2167    any of these files as the need arises after running this script.
2168
2169 If you make a mistake on a question, there is no easy way to back up to it
2170 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2171 files.  Configure will offer to let you do this before it runs the SH files.
2172
2173 EOH
2174         dflt='Type carriage return to continue'
2175         . ./myread
2176         case "$firsttime" in
2177         true) echo $user >>../.config/instruct;;
2178         esac
2179 fi
2180
2181 : find out where common programs are
2182 echo " "
2183 echo "Locating common programs..." >&4
2184 cat <<EOSC >loc
2185 $startsh
2186 case \$# in
2187 0) exit 1;;
2188 esac
2189 thing=\$1
2190 shift
2191 dflt=\$1
2192 shift
2193 for dir in \$*; do
2194         case "\$thing" in
2195         .)
2196         if test -d \$dir/\$thing; then
2197                 echo \$dir
2198                 exit 0
2199         fi
2200         ;;
2201         *)
2202         for thisthing in \$dir/\$thing; do
2203                 : just loop through to pick last item
2204         done
2205         if test -f \$thisthing; then
2206                 echo \$thisthing
2207                 exit 0
2208         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2209                 echo \$thisthing
2210                 exit 0
2211         elif test -f \$dir/\$thing.exe; then
2212                 if test -n "$DJGPP"; then
2213                         echo \$dir/\$thing.exe
2214                 elif test "$eunicefix" != ":"; then
2215                         : on Eunice apparently
2216                         echo \$dir/\$thing
2217                         exit 0
2218                 fi
2219                 exit 0
2220         fi
2221         ;;
2222         esac
2223 done
2224 echo \$dflt
2225 exit 1
2226 EOSC
2227 chmod +x loc
2228 $eunicefix loc
2229 loclist="
2230 awk
2231 cat
2232 chmod
2233 comm
2234 cp
2235 echo
2236 expr
2237 grep
2238 ls
2239 mkdir
2240 rm
2241 sed
2242 sort
2243 touch
2244 tr
2245 uniq
2246 "
2247 trylist="
2248 Mcc
2249 ar
2250 bison
2251 byacc
2252 cpp
2253 csh
2254 date
2255 egrep
2256 gmake
2257 gzip
2258 less
2259 ln
2260 make
2261 more
2262 nm
2263 nroff
2264 pg
2265 test
2266 uname
2267 zip
2268 "
2269 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2270 pth="$pth /lib /usr/lib"
2271 for file in $loclist; do
2272         eval xxx=\$$file
2273         case "$xxx" in
2274         /*|?:[\\/]*)
2275                 if test -f "$xxx"; then
2276                         : ok
2277                 else
2278                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2279                         xxx=`./loc $file $file $pth`
2280                 fi
2281                 ;;
2282         '') xxx=`./loc $file $file $pth`;;
2283         *) xxx=`./loc $xxx $xxx $pth`;;
2284         esac
2285         eval $file=$xxx$_exe
2286         eval _$file=$xxx
2287         case "$xxx" in
2288         /*)
2289                 echo $file is in $xxx.
2290                 ;;
2291         ?:[\\/]*)
2292                 echo $file is in $xxx.
2293                 ;;
2294         *)
2295                 echo "I don't know where '$file' is, and my life depends on it." >&4
2296                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2297                 exit 1
2298                 ;;
2299         esac
2300 done
2301 echo " "
2302 echo "Don't worry if any of the following aren't found..."
2303 say=offhand
2304 for file in $trylist; do
2305         eval xxx=\$$file
2306         case "$xxx" in
2307         /*|?:[\\/]*)
2308                 if test -f "$xxx"; then
2309                         : ok
2310                 else
2311                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2312                         xxx=`./loc $file $file $pth`
2313                 fi
2314                 ;;
2315         '') xxx=`./loc $file $file $pth`;;
2316         *) xxx=`./loc $xxx $xxx $pth`;;
2317         esac
2318         eval $file=$xxx$_exe
2319         eval _$file=$xxx
2320         case "$xxx" in
2321         /*)
2322                 echo $file is in $xxx.
2323                 ;;
2324         ?:[\\/]*)
2325                 echo $file is in $xxx.
2326                 ;;
2327         *)
2328                 echo "I don't see $file out there, $say."
2329                 say=either
2330                 ;;
2331         esac
2332 done
2333 case "$egrep" in
2334 egrep)
2335         echo "Substituting grep for egrep."
2336         egrep=$grep
2337         _egrep=$grep
2338         ;;
2339 esac
2340 case "$ln" in
2341 ln)
2342         echo "Substituting cp for ln."
2343         ln=$cp
2344         _ln=$cp
2345         ;;
2346 esac
2347 case "$make" in
2348 make)   
2349         case "$gmake" in
2350         gmake)
2351         echo "I can't find make or gmake, and my life depends on it." >&4
2352         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2353         exit 1
2354         ;;
2355         esac
2356         ;;
2357 esac    
2358 case "$gmake" in
2359 gmake)  ;;
2360 *)      # We can't have osname yet.
2361         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2362                 # Assume that gmake, if found, is definitely GNU make
2363                 # and prefer it over the system make.
2364                 echo "Substituting gmake for make."
2365                 make=$gmake
2366                 _make=$gmake
2367         fi
2368         ;;
2369 esac
2370 case "$test" in
2371 test)
2372         echo "Hopefully test is built into your sh."
2373         ;;
2374 *)
2375         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2376                 echo "Using the test built into your sh."
2377                 test=test
2378                 _test=test
2379         fi
2380         ;;
2381 esac
2382 case "$echo" in
2383 echo)
2384         echo "Hopefully echo is built into your sh."
2385         ;;
2386 '') ;;
2387 *)
2388         echo " "
2389 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2390         $echo $n "hi there$c" >foo1
2391         echo $n "hi there$c" >foo2
2392         if cmp foo1 foo2 >/dev/null 2>&1; then
2393                 echo "They are compatible.  In fact, they may be identical."
2394         else
2395                 case "$n" in
2396                 '-n') n='' c='\c';;
2397                 *) n='-n' c='';;
2398                 esac
2399                 cat <<FOO
2400 They are not compatible!  You are probably running ksh on a non-USG system.
2401 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2402 have echo built in and we may have to run some Bourne shell scripts.  That
2403 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2404
2405 FOO
2406                 $echo $n "The star should be here-->$c"
2407                 $echo "*"
2408         fi
2409         $rm -f foo1 foo2
2410         ;;
2411 esac
2412
2413 cat <<EOS >trygcc
2414 $startsh
2415 EOS
2416 cat <<'EOSC' >>trygcc
2417 case "$cc" in
2418 '') ;;
2419 *)  $rm -f try try.*
2420     $cat >try.c <<EOM
2421 int main(int argc, char *argv[]) {
2422   return 0;
2423 }
2424 EOM
2425     if $cc -o try $ccflags $ldflags try.c; then
2426        :
2427     else
2428         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2429         despair=yes
2430         trygcc=yes
2431         case "$cc" in
2432         *gcc*) trygcc=no ;;
2433         esac
2434         case "`$cc -v -c try.c 2>&1`" in
2435         *gcc*) trygcc=no ;;
2436         esac
2437         if $test X"$trygcc" = Xyes; then
2438             if gcc -o try -c try.c; then
2439                 echo " "
2440                 echo "You seem to have a working gcc, though." >&4
2441                 rp="Would you like to use it?"
2442                 dflt=y
2443                 if $test -f myread; then
2444                     . ./myread
2445                 else
2446                     if $test -f UU/myread; then
2447                         . ./UU/myread
2448                     else
2449                         echo "Cannot find myread, sorry.  Aborting." >&2
2450                         exit 1
2451                     fi
2452                 fi  
2453                 case "$ans" in
2454                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2455                        if $test -f usethreads.cbu; then
2456                            $cat >&4 <<EOM 
2457
2458 *** However, any setting of the C compiler flags (e.g. for thread support)
2459 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2460 *** (together with e.g. -Dusethreads).
2461
2462 EOM
2463                        fi;;
2464                 esac
2465             fi
2466         fi
2467     fi
2468     $rm -f try try.*
2469     ;;
2470 esac
2471 EOSC
2472
2473 cat <<EOS >checkcc
2474 $startsh
2475 EOS
2476 cat <<'EOSC' >>checkcc
2477 case "$cc" in        
2478 '') ;;
2479 *)  $rm -f try try.*              
2480     $cat >try.c <<EOM
2481 int main(int argc, char *argv[]) {
2482   return 0;
2483 }
2484 EOM
2485     if $cc -o try $ccflags $ldflags try.c; then
2486        :
2487     else
2488         if $test X"$despair" = Xyes; then
2489            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2490         fi
2491         $cat >&4 <<EOM         
2492 You need to find a working C compiler.
2493 Either (purchase and) install the C compiler supplied by your OS vendor,
2494 or for a free C compiler try http://gcc.gnu.org/
2495 I cannot continue any further, aborting.
2496 EOM
2497         exit 1
2498     fi
2499     $rm -f try try.*
2500     ;;
2501 esac
2502 EOSC
2503
2504 : determine whether symbolic links are supported
2505 echo " "
2506 $touch blurfl
2507 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2508         echo "Symbolic links are supported." >&4
2509         lns="$ln -s"
2510 else
2511         echo "Symbolic links are NOT supported." >&4
2512         lns="$ln"
2513 fi
2514 $rm -f blurfl sym
2515
2516 : determine whether symbolic links are supported
2517 echo " "
2518 case "$lns" in
2519 *"ln"*" -s")
2520         echo "Checking how to test for symbolic links..." >&4
2521         $lns blurfl sym
2522         if $test "X$issymlink" = X; then
2523                 case "$newsh" in
2524                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2526                 esac
2527                 if test $? = 0; then
2528                         issymlink="test -h"
2529                 else
2530                         echo "Your builtin 'test -h' may be broken." >&4
2531                         case "$test" in
2532                         /*)     ;;
2533                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2534                                 for p in $pth
2535                                 do
2536                                         if test -f "$p/$test"; then
2537                                                 test="$p/$test"
2538                                                 break
2539                                         fi
2540                                 done
2541                                 ;;
2542                         esac
2543                         case "$test" in
2544                         /*)
2545                                 echo "Trying external '$test -h'." >&4
2546                                 issymlink="$test -h"
2547                                 if $test ! -h sym >/dev/null 2>&1; then
2548                                         echo "External '$test -h' is broken, too." >&4
2549                                         issymlink=''
2550                                 fi
2551                                 ;;
2552                         *)      issymlink='' ;;
2553                         esac
2554                 fi              
2555         fi
2556         if $test "X$issymlink" = X; then
2557                 if $test -L sym 2>/dev/null; then
2558                         issymlink="$test -L"
2559                         echo "The builtin '$test -L' worked." >&4
2560                 fi
2561         fi
2562         if $test "X$issymlink" != X; then
2563                 echo "You can test for symbolic links with '$issymlink'." >&4
2564         else
2565                 echo "I do not know how you can test for symbolic links." >&4
2566         fi
2567         $rm -f blurfl sym
2568         ;;
2569 *)      echo "No symbolic links, so not testing for their testing..." >&4
2570         ;;
2571 esac
2572 echo " "
2573
2574
2575 case "$mksymlinks" in
2576 $define|true|[yY]*)
2577         case "$src" in
2578         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2579                 exit 1
2580                 ;;
2581         *)      case "$lns:$issymlink" in
2582                 *"ln"*" -s:"*"test -"?)
2583                         echo "Creating the symbolic links..." >&4
2584                         echo "(First creating the subdirectories...)" >&4
2585                         cd ..
2586                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2587                                 read directory
2588                                 test -z "$directory" && break
2589                                 mkdir -p $directory
2590                         done
2591                         # Sanity check 1.
2592                         if test ! -d t/base; then
2593                                 echo "Failed to create the subdirectories.  Aborting." >&4
2594                                 exit 1
2595                         fi
2596                         echo "(Then creating the symlinks...)" >&4
2597                         awk '{print $1}' $src/MANIFEST | while true; do
2598                                 read filename
2599                                 test -z "$filename" && break
2600                                 if test -f $filename; then
2601                                         if $issymlink $filename; then
2602                                                 rm -f $filename
2603                                         fi
2604                                 fi
2605                                 if test -f $filename; then
2606                                         echo "$filename already exists, not symlinking."
2607                                 else
2608                                         ln -s $src/$filename $filename
2609                                 fi
2610                         done
2611                         # Sanity check 2.
2612                         if test ! -f t/base/lex.t; then
2613                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2614                                 exit 1
2615                         fi
2616                         cd UU
2617                         ;;
2618                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2619                         ;;
2620                 esac
2621                 ;;
2622         esac
2623         ;;
2624 esac
2625
2626
2627 case "$usecrosscompile" in
2628 $define|true|[yY]*)
2629         $echo "Cross-compiling..."
2630         croak=''
2631         case "$cc" in
2632         *-*-gcc) # A cross-compiling gcc, probably.
2633             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2634             ar=$targetarch-ar
2635             # leave out ld, choosing it is more complex
2636             nm=$targetarch-nm
2637             ranlib=$targetarch-ranlib
2638             $echo 'extern int foo;' > try.c
2639             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2640             shift
2641             if $test $# -gt 0; then
2642                 incpth="$incpth $*"
2643                 incpth="`$echo $incpth|$sed 's/^ //'`"
2644                 echo "Guessing incpth '$incpth'." >&4
2645                 for i in $*; do
2646                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2647                     if $test -d $j; then
2648                         libpth="$libpth $j"
2649                     fi
2650                 done   
2651                 libpth="`$echo $libpth|$sed 's/^ //'`"
2652                 echo "Guessing libpth '$libpth'." >&4
2653             fi
2654             $rm -f try.c
2655             ;;
2656         esac
2657         case "$targetarch" in
2658         '') echo "Targetarch not defined." >&4; croak=y ;;
2659         *)  echo "Using targetarch $targetarch." >&4 ;;
2660         esac
2661         case "$incpth" in
2662         '') echo "Incpth not defined." >&4; croak=y ;;
2663         *)  echo "Using incpth '$incpth'." >&4 ;;
2664         esac
2665         case "$libpth" in
2666         '') echo "Libpth not defined." >&4; croak=y ;;
2667         *)  echo "Using libpth '$libpth'." >&4 ;;
2668         esac
2669         case "$usrinc" in
2670         '') for i in $incpth; do
2671                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2672                     usrinc=$i
2673                     echo "Guessing usrinc $usrinc." >&4
2674                     break
2675                 fi
2676             done
2677             case "$usrinc" in
2678             '') echo "Usrinc not defined." >&4; croak=y ;;
2679             esac
2680             ;;
2681         *)  echo "Using usrinc $usrinc." >&4 ;;
2682         esac
2683         case "$targethost" in
2684         '') echo "Targethost not defined." >&4; croak=y ;;
2685         *)  echo "Using targethost $targethost." >&4
2686         esac
2687         locincpth=' '
2688         loclibpth=' '
2689         case "$croak" in
2690         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2691         esac
2692         case "$src" in
2693         /*) run=$src/Cross/run
2694             targetmkdir=$src/Cross/mkdir
2695             to=$src/Cross/to
2696             from=$src/Cross/from
2697             ;;
2698         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2699             run=$pwd/Cross/run
2700             targetmkdir=$pwd/Cross/mkdir
2701             to=$pwd/Cross/to
2702             from=$pwd/Cross/from
2703             ;;
2704         esac
2705         case "$targetrun" in
2706         '') targetrun=ssh ;;
2707         esac
2708         case "$targetto" in
2709         '') targetto=scp ;;
2710         esac
2711         case "$targetfrom" in
2712         '') targetfrom=scp ;;
2713         esac
2714         run=$run-$targetrun
2715         to=$to-$targetto
2716         from=$from-$targetfrom
2717         case "$targetdir" in
2718         '')  targetdir=/tmp
2719              echo "Guessing targetdir $targetdir." >&4
2720              ;;
2721         esac
2722         case "$targetuser" in
2723         '')  targetuser=root
2724              echo "Guessing targetuser $targetuser." >&4
2725              ;;
2726         esac
2727         case "$targetfrom" in
2728         scp)    q=-q ;;
2729         *)      q='' ;;
2730         esac
2731         case "$targetrun" in
2732         ssh|rsh)
2733             cat >$run <<EOF
2734 #!/bin/sh
2735 case "\$1" in
2736 -cwd)
2737   shift
2738   cwd=\$1
2739   shift
2740   ;;
2741 esac
2742 case "\$cwd" in
2743 '') cwd=$targetdir ;;
2744 esac
2745 exe=\$1
2746 shift
2747 if $test ! -f \$exe.xok; then
2748   $to \$exe
2749   $touch \$exe.xok
2750 fi
2751 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2752 EOF
2753             ;;
2754         *)  echo "Unknown targetrun '$targetrun'" >&4
2755             exit 1
2756             ;;
2757         esac
2758         case "$targetmkdir" in
2759         */Cross/mkdir)
2760             cat >$targetmkdir <<EOF
2761 #!/bin/sh
2762 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2763 EOF
2764             $chmod a+rx $targetmkdir
2765             ;;
2766         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2767             exit 1
2768             ;;
2769         esac
2770         case "$targetto" in
2771         scp|rcp)
2772             cat >$to <<EOF
2773 #!/bin/sh
2774 for f in \$@
2775 do
2776   case "\$f" in
2777   /*)
2778     $targetmkdir \`dirname \$f\`
2779     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2780     ;;
2781   *)
2782     $targetmkdir $targetdir/\`dirname \$f\`
2783     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2784     ;;
2785   esac
2786 done
2787 exit 0
2788 EOF
2789             ;;
2790         cp) cat >$to <<EOF
2791 #!/bin/sh
2792 for f in \$@
2793 do
2794   case "\$f" in
2795   /*)
2796     $mkdir -p $targetdir/\`dirname \$f\`
2797     $cp \$f $targetdir/\$f || exit 1
2798     ;;
2799   *)
2800     $targetmkdir $targetdir/\`dirname \$f\`
2801     $cp \$f $targetdir/\$f || exit 1
2802     ;;
2803   esac
2804 done
2805 exit 0
2806 EOF
2807             ;;
2808         *)  echo "Unknown targetto '$targetto'" >&4
2809             exit 1
2810             ;;
2811         esac
2812         case "$targetfrom" in
2813         scp|rcp)
2814           cat >$from <<EOF
2815 #!/bin/sh
2816 for f in \$@
2817 do
2818   $rm -f \$f
2819   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2820 done
2821 exit 0
2822 EOF
2823             ;;
2824         cp) cat >$from <<EOF
2825 #!/bin/sh
2826 for f in \$@
2827 do
2828   $rm -f \$f
2829   cp $targetdir/\$f . || exit 1
2830 done
2831 exit 0
2832 EOF
2833             ;;
2834         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2835             exit 1
2836             ;;
2837         esac
2838         if $test ! -f $run; then
2839             echo "Target 'run' script '$run' not found." >&4
2840         else
2841             $chmod a+rx $run
2842         fi
2843         if $test ! -f $to; then
2844             echo "Target 'to' script '$to' not found." >&4
2845         else
2846             $chmod a+rx $to
2847         fi
2848         if $test ! -f $from; then
2849             echo "Target 'from' script '$from' not found." >&4
2850         else
2851             $chmod a+rx $from
2852         fi
2853         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2854             exit 1
2855         fi
2856         cat >&4 <<EOF
2857 Using '$run' for remote execution,
2858 and '$from' and '$to'
2859 for remote file transfer.
2860 EOF
2861         ;;
2862 *)      run=''
2863         to=:
2864         from=:
2865         usecrosscompile='undef'
2866         targetarch=''
2867         ;;
2868 esac
2869
2870 : see whether [:lower:] and [:upper:] are supported character classes
2871 echo " "
2872 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2873 ABYZ)
2874         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2875         up='[:upper:]'
2876         low='[:lower:]'
2877         ;;
2878 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2879         # (0xc9 and 0xd1), therefore that is a nice testing point.
2880         if test "X$up" = X -o "X$low" = X; then
2881             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2882             ij) up='[A-Z]'
2883                 low='[a-z]'
2884                 ;;
2885             esac
2886         fi
2887         if test "X$up" = X -o "X$low" = X; then
2888             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2889             ij) up='A-Z'
2890                 low='a-z'
2891                 ;;
2892             esac
2893         fi
2894         if test "X$up" = X -o "X$low" = X; then
2895             case "`echo IJ | od -x 2>/dev/null`" in
2896             *C9D1*|*c9d1*)
2897                 echo "Hey, this might be EBCDIC." >&4
2898                 if test "X$up" = X -o "X$low" = X; then
2899                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2900                     ij) up='[A-IJ-RS-Z]'
2901                         low='[a-ij-rs-z]'
2902                         ;;
2903                     esac
2904                 fi
2905                 if test "X$up" = X -o "X$low" = X; then
2906                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2907                     ij) up='A-IJ-RS-Z'
2908                         low='a-ij-rs-z'
2909                         ;;
2910                     esac
2911                 fi
2912                 ;;
2913             esac
2914         fi
2915 esac
2916 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2917 ij)
2918     echo "Using $up and $low to convert case." >&4
2919     ;;
2920 *)
2921     echo "I don't know how to translate letters from upper to lower case." >&4
2922     echo "Your tr is not acting any way I know of." >&4
2923     exit 1
2924     ;;
2925 esac
2926 : set up the translation script tr, must be called with ./tr of course
2927 cat >tr <<EOSC
2928 $startsh
2929 case "\$1\$2" in
2930 '[A-Z][a-z]') exec $tr '$up' '$low';;
2931 '[a-z][A-Z]') exec $tr '$low' '$up';;
2932 esac
2933 exec $tr "\$@"
2934 EOSC
2935 chmod +x tr
2936 $eunicefix tr
2937
2938 : Try to determine whether config.sh was made on this system
2939 case "$config_sh" in
2940 '')
2941 myuname=`$uname -a 2>/dev/null`
2942 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2943 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2944 # because the A-Z/a-z are not consecutive.
2945 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2946         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2947 newmyuname="$myuname"
2948 dflt=n
2949 case "$knowitall" in
2950 '')
2951         if test -f ../config.sh; then
2952                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2953                         eval "`grep myuname= ../config.sh`"
2954                 fi
2955                 if test "X$myuname" = "X$newmyuname"; then
2956                         dflt=y
2957                 fi
2958         fi
2959         ;;
2960 *) dflt=y;;
2961 esac
2962
2963 : Get old answers from old config file if Configure was run on the
2964 : same system, otherwise use the hints.
2965 hint=default
2966 cd ..
2967 if test -f config.sh; then
2968         echo " "
2969         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2970         . UU/myread
2971         case "$ans" in
2972         n*|N*) echo "OK, I'll ignore it."
2973                 mv config.sh config.sh.old
2974                 myuname="$newmyuname"
2975                 ;;
2976         *)  echo "Fetching default answers from your old config.sh file..." >&4
2977                 tmp_n="$n"
2978                 tmp_c="$c"
2979                 tmp_sh="$sh"
2980                 . ./config.sh
2981                 cp config.sh UU
2982                 n="$tmp_n"
2983                 c="$tmp_c"
2984                 : Older versions did not always set $sh.  Catch re-use of such
2985                 : an old config.sh.
2986                 case "$sh" in
2987                 '') sh="$tmp_sh" ;;
2988                 esac
2989                 hint=previous
2990                 ;;
2991         esac
2992 fi
2993 . ./UU/checkcc
2994 if test ! -f config.sh; then
2995         $cat <<EOM
2996
2997 First time through, eh?  I have some defaults handy for some systems
2998 that need some extra help getting the Configure answers right:
2999
3000 EOM
3001         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3002         dflt=''
3003         : Half the following guesses are probably wrong... If you have better
3004         : tests or hints, please send them to perlbug@perl.org
3005         : The metaconfig authors would also appreciate a copy...
3006         $test -f /irix && osname=irix
3007         $test -f /xenix && osname=sco_xenix
3008         $test -f /dynix && osname=dynix
3009         $test -f /dnix && osname=dnix
3010         $test -f /lynx.os && osname=lynxos
3011         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3012         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3014         $test -f /bin/mips && /bin/mips && osname=mips
3015         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3016                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3017         $test -d /usr/apollo/bin && osname=apollo
3018         $test -f /etc/saf/_sactab && osname=svr4
3019         $test -d /usr/include/minix && osname=minix
3020         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3021         if $test -d /MachTen -o -d /MachTen_Folder; then
3022                 osname=machten
3023                 if $test -x /sbin/version; then
3024                         osvers=`/sbin/version | $awk '{print $2}' |
3025                         $sed -e 's/[A-Za-z]$//'`
3026                 elif $test -x /usr/etc/version; then
3027                         osvers=`/usr/etc/version | $awk '{print $2}' |
3028                         $sed -e 's/[A-Za-z]$//'`
3029                 else
3030                         osvers="$2.$3"
3031                 fi
3032         fi
3033
3034         $test -f /sys/posix.dll &&
3035                 $test -f /usr/bin/what &&
3036                 set X `/usr/bin/what /sys/posix.dll` &&
3037                 $test "$3" = UWIN &&
3038                 osname=uwin &&
3039                 osvers="$5"
3040
3041         if $test -f $uname; then
3042                 set X $myuname
3043                 shift
3044
3045                 case "$5" in
3046                 fps*) osname=fps ;;
3047                 mips*)
3048                         case "$4" in
3049                         umips) osname=umips ;;
3050                         *) osname=mips ;;
3051                         esac;;
3052                 [23]100) osname=mips ;;
3053                 next*) osname=next ;;
3054                 i386*)
3055                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3056                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3057                                 osname='sco'
3058                                 osvers=$tmp
3059                         elif $test -f /etc/kconfig; then
3060                                 osname=isc
3061                                 if test "$lns" = "$ln -s"; then
3062                                         osvers=4
3063                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3064                                         osvers=3
3065                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3066                                         osvers=2
3067                                 fi
3068                         fi
3069                         tmp=''
3070                         ;;
3071                 pc*)
3072                         if test -n "$DJGPP"; then
3073                                 osname=dos
3074                                 osvers=djgpp
3075                         fi
3076                         ;;
3077                 esac
3078
3079                 case "$1" in
3080                 aix) osname=aix
3081                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3082                         case "$tmp" in
3083                         'not found') osvers="$4"."$3" ;;
3084                         '<3240'|'<>3240') osvers=3.2.0 ;;
3085                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3086                         '=3250'|'>3250') osvers=3.2.5 ;;
3087                         *) osvers=$tmp;;
3088                         esac
3089                         ;;
3090                 bsd386) osname=bsd386
3091                         osvers=`$uname -r`
3092                         ;;
3093                 cygwin*) osname=cygwin
3094                         osvers="$3"
3095                         ;;
3096                 *dc.osx) osname=dcosx
3097                         osvers="$3"
3098                         ;;
3099                 dnix) osname=dnix
3100                         osvers="$3"
3101                         ;;
3102                 domainos) osname=apollo
3103                         osvers="$3"
3104                         ;;
3105                 dgux) osname=dgux 
3106                         osvers="$3"
3107                         ;;
3108                 dynixptx*) osname=dynixptx
3109                         osvers=`echo "$4"|sed 's/^v//'`
3110                         ;;
3111                 freebsd) osname=freebsd 
3112                         osvers="$3" ;;
3113                 genix) osname=genix ;;
3114                 hp*) osname=hpux 
3115                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3116                         ;;
3117                 irix*) osname=irix
3118                         case "$3" in
3119                         4*) osvers=4 ;;
3120                         5*) osvers=5 ;;
3121                         *)      osvers="$3" ;;
3122                         esac
3123                         ;;
3124                 linux) osname=linux
3125                         case "$3" in
3126                         *)      osvers="$3" ;;
3127                         esac
3128                         ;;
3129                 MiNT) osname=mint
3130                         ;;
3131                 netbsd*) osname=netbsd
3132                         osvers="$3"
3133                         ;;
3134                 news-os) osvers="$3"
3135                         case "$3" in
3136                         4*) osname=newsos4 ;;
3137                         *) osname=newsos ;;
3138                         esac
3139                         ;;
3140                 next*) osname=next ;;
3141                 nonstop-ux) osname=nonstopux ;;
3142                 openbsd) osname=openbsd
3143                         osvers="$3"
3144                         ;;
3145                 os2)    osname=os2
3146                         osvers="$4"
3147                         ;;
3148                 POSIX-BC | posix-bc ) osname=posix-bc
3149                         osvers="$3"
3150                         ;;
3151                 powerux | power_ux | powermax_os | powermaxos | \
3152                 powerunix | power_unix) osname=powerux
3153                         osvers="$3"
3154                         ;;
3155                 qnx) osname=qnx
3156                         osvers="$4"
3157                         ;;
3158                 solaris) osname=solaris
3159                         case "$3" in
3160                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3161                         *)      osvers="$3" ;;
3162                         esac
3163                         ;;
3164                 sunos) osname=sunos
3165                         case "$3" in
3166                         5*) osname=solaris
3167                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3168                         *)      osvers="$3" ;;
3169                         esac
3170                         ;;
3171                 titanos) osname=titanos
3172                         case "$3" in
3173                         1*) osvers=1 ;;
3174                         2*) osvers=2 ;;
3175                         3*) osvers=3 ;;
3176                         4*) osvers=4 ;;
3177                         *)      osvers="$3" ;;
3178                         esac
3179                         ;;
3180                 ultrix) osname=ultrix
3181                         osvers="$3"
3182                         ;;
3183                 osf1|mls+)      case "$5" in
3184                                 alpha)
3185                                         osname=dec_osf
3186                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3187                                         case "$osvers" in
3188                                         [1-9].[0-9]*) ;;
3189                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3190                                         esac
3191                                         ;;
3192                         hp*)    osname=hp_osf1  ;;
3193                         mips)   osname=mips_osf1 ;;
3194                         esac
3195                         ;;
3196                 unixware) osname=svr5
3197                         osvers="$4"
3198                         ;;
3199                 uts)    osname=uts
3200                         osvers="$3"
3201                         ;;
3202                 vos) osvers="$3"
3203                         ;;
3204                 $2) case "$osname" in
3205                         *isc*) ;;
3206                         *freebsd*) ;;
3207                         svr*)
3208                                 : svr4.x or possibly later
3209                                 case "svr$3" in 
3210                                 ${osname}*)
3211                                         osname=svr$3
3212                                         osvers=$4
3213                                         ;;
3214                                 esac
3215                                 case "$osname" in
3216                                 svr4.0)
3217                                         : Check for ESIX
3218                                         if test -f /stand/boot ; then
3219                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3220                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3221                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3222                                                         if test -n "$isesix"; then
3223                                                                 osname=esix4
3224                                                         fi
3225                                                 fi
3226                                         fi
3227                                         ;;
3228                                 esac
3229                                 ;;
3230                         *)      if test -f /etc/systemid; then
3231                                         osname=sco
3232                                         set `echo $3 | $sed 's/\./ /g'` $4
3233                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3234                                                 osvers=$1.$2.$3
3235                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3236                                                 osvers=$1.$2
3237                                         elif $test -f $src/hints/sco_$1.sh; then
3238                                                 osvers=$1
3239                                         fi
3240                                 else
3241                                         case "$osname" in
3242                                         '') : Still unknown.  Probably a generic Sys V.
3243                                                 osname="sysv"
3244                                                 osvers="$3"
3245                                                 ;;
3246                                         esac
3247                                 fi
3248                                 ;;
3249                         esac
3250                         ;;
3251                 *)      case "$osname" in
3252                         '') : Still unknown.  Probably a generic BSD.
3253                                 osname="$1"
3254                                 osvers="$3"
3255                                 ;;
3256                         esac
3257                         ;;
3258                 esac
3259         else
3260                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3261                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3262                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3263                                 osname=news_os
3264                         fi
3265                         $rm -f UU/kernel.what
3266                 elif test -d c:/. -o -n "$is_os2" ; then
3267                         set X $myuname
3268                         osname=os2
3269                         osvers="$5"
3270                 fi
3271         fi
3272         
3273         case "$targetarch" in
3274         '') ;;
3275         *)  hostarch=$osname
3276             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3277             osvers=''
3278             ;;
3279         esac
3280
3281         : Now look for a hint file osname_osvers, unless one has been
3282         : specified already.
3283         case "$hintfile" in
3284         ''|' ')
3285                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3286                 : Also try without trailing minor version numbers.
3287                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3288                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3289                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3290                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3291                 case "$file" in
3292                 '') dflt=none ;;
3293                 *)  case "$osvers" in
3294                         '') dflt=$file
3295                                 ;;
3296                         *)  if $test -f $src/hints/$file.sh ; then
3297                                         dflt=$file
3298                                 elif $test -f $src/hints/$xfile.sh ; then
3299                                         dflt=$xfile
3300                                 elif $test -f $src/hints/$xxfile.sh ; then
3301                                         dflt=$xxfile
3302                                 elif $test -f $src/hints/$xxxfile.sh ; then
3303                                         dflt=$xxxfile
3304                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3305                                         dflt=$xxxxfile
3306                                 elif $test -f "$src/hints/${osname}.sh" ; then
3307                                         dflt="${osname}"
3308                                 else
3309                                         dflt=none
3310                                 fi
3311                                 ;;
3312                         esac
3313                         ;;
3314                 esac
3315                 if $test -f Policy.sh ; then
3316                         case "$dflt" in
3317                         *Policy*) ;;
3318                         none) dflt="Policy" ;;
3319                         *) dflt="Policy $dflt" ;;
3320                         esac
3321                 fi
3322                 ;;
3323         *)
3324                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3325                 ;;
3326         esac
3327
3328         if $test -f Policy.sh ; then
3329                 $cat <<EOM
3330
3331 There's also a Policy hint file available, which should make the
3332 site-specific (policy) questions easier to answer.
3333 EOM
3334
3335         fi
3336
3337         $cat <<EOM
3338
3339 You may give one or more space-separated answers, or "none" if appropriate.
3340 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3341 is a good thing.  DO NOT give a wrong version or a wrong OS.
3342
3343 EOM
3344
3345         rp="Which of these apply, if any?"
3346         . UU/myread
3347         tans=$ans
3348         for file in $tans; do
3349                 if $test X$file = XPolicy -a -f Policy.sh; then
3350                         . Policy.sh
3351                         $cat Policy.sh >> UU/config.sh
3352                 elif $test -f $src/hints/$file.sh; then
3353                         . $src/hints/$file.sh
3354                         $cat $src/hints/$file.sh >> UU/config.sh
3355                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3356                         : nothing
3357                 else
3358                         : Give one chance to correct a possible typo.
3359                         echo "$file.sh does not exist"
3360                         dflt=$file
3361                         rp="hint to use instead?"
3362                         . UU/myread
3363                         for file in $ans; do
3364                                 if $test -f "$src/hints/$file.sh"; then
3365                                         . $src/hints/$file.sh
3366                                         $cat $src/hints/$file.sh >> UU/config.sh
3367                                 elif $test X$ans = X -o X$ans = Xnone ; then
3368                                         : nothing
3369                                 else
3370                                         echo "$file.sh does not exist -- ignored."
3371                                 fi
3372                         done
3373                 fi
3374         done
3375
3376         hint=recommended
3377         : Remember our hint file for later.
3378         if $test -f "$src/hints/$file.sh" ; then
3379                 hintfile="$file"
3380         else
3381                 hintfile=''
3382         fi
3383 fi
3384 cd UU
3385 ;;
3386 *)
3387         echo " "
3388         echo "Fetching default answers from $config_sh..." >&4
3389         tmp_n="$n"
3390         tmp_c="$c"
3391         cd ..
3392         cp $config_sh config.sh 2>/dev/null
3393         chmod +w config.sh
3394         . ./config.sh
3395         cd UU
3396         cp ../config.sh .
3397         n="$tmp_n"
3398         c="$tmp_c"
3399         hint=previous
3400         ;;
3401 esac
3402 test "$override" && . ./optdef.sh
3403
3404 : Restore computed paths
3405 for file in $loclist $trylist; do
3406         eval $file="\$_$file"
3407 done
3408
3409 cat << EOM
3410
3411 Configure uses the operating system name and version to set some defaults.
3412 The default value is probably right if the name rings a bell. Otherwise,
3413 since spelling matters for me, either accept the default or answer "none"
3414 to leave it blank.
3415
3416 EOM
3417 case "$osname" in
3418         ''|' ')
3419                 case "$hintfile" in
3420                 ''|' '|none) dflt=none ;;
3421                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3422                 esac
3423                 ;;
3424         *) dflt="$osname" ;;
3425 esac
3426 rp="Operating system name?"
3427 . ./myread
3428 case "$ans" in
3429 none)  osname='' ;;
3430 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3431 esac
3432 echo " "
3433 case "$osvers" in
3434         ''|' ')
3435                 case "$hintfile" in
3436                 ''|' '|none) dflt=none ;;
3437                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3438                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3439                         case "$dflt" in
3440                         ''|' ') dflt=none ;;
3441                         esac
3442                         ;;
3443                 esac
3444                 ;;
3445         *) dflt="$osvers" ;;
3446 esac
3447 rp="Operating system version?"
3448 . ./myread
3449 case "$ans" in
3450 none)  osvers='' ;;
3451 *) osvers="$ans" ;;
3452 esac
3453
3454
3455 . ./posthint.sh
3456
3457 : who configured the system
3458 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3459 cf_by=`(logname) 2>/dev/null`
3460 case "$cf_by" in
3461 "")
3462         cf_by=`(whoami) 2>/dev/null`
3463         case "$cf_by" in
3464         "") cf_by=unknown ;;
3465         esac ;;
3466 esac
3467
3468 : set up the script used to warn in case of inconsistency
3469 cat <<EOS >whoa
3470 $startsh
3471 EOS
3472 cat <<'EOSC' >>whoa
3473 dflt=y
3474 echo " "
3475 echo "*** WHOA THERE!!! ***" >&4
3476 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3477 rp="    Keep the $hint value?"
3478 . ./myread
3479 case "$ans" in
3480 y) td=$was; tu=$was;;
3481 esac
3482 EOSC
3483
3484 : function used to set $1 to $val
3485 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3486 case "$val$was" in
3487 $define$undef) . ./whoa; eval "$var=\$td";;
3488 $undef$define) . ./whoa; eval "$var=\$tu";;
3489 *) eval "$var=$val";;
3490 esac'
3491
3492 case "$usesocks" in
3493 $define|true|[yY]*)     dflt='y';;
3494 *) dflt='n';;
3495 esac
3496 cat <<EOM
3497
3498 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3499 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3500 to use the PerlIO abstraction layer, this will be implicitly selected.
3501
3502 If this doesn't make any sense to you, just accept the default '$dflt'.
3503 EOM
3504 rp='Build Perl for SOCKS?'
3505 . ./myread
3506 case "$ans" in
3507 y|Y)    val="$define" ;;     
3508 *)      val="$undef" ;;
3509 esac
3510 set usesocks
3511 eval $setvar
3512
3513 case "$usesocks" in
3514 $define|true|[yY]*) useperlio="$define";;
3515 esac
3516
3517 case "$useperlio" in
3518 $define|true|[yY]*|'')  dflt='y';;
3519 *) dflt='n';;
3520 esac
3521 cat <<EOM
3522
3523 Previous version of $package used the standard IO mechanisms as
3524 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3525 alternate IO mechanisms via the PerlIO abstraction layer, but the
3526 stdio mechanism is still available if needed.  The abstraction layer
3527 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3528 Using PerlIO with sfio may cause problems with some extension modules.
3529
3530 If this doesn't make any sense to you, just accept the default '$dflt'.
3531 EOM
3532 rp='Use the PerlIO abstraction layer?'
3533 . ./myread
3534 case "$ans" in
3535 y|Y) 
3536         val="$define"
3537         ;;
3538 *)      
3539         echo "Ok, doing things the stdio way."
3540         val="$undef"
3541         ;;
3542 esac
3543 set useperlio
3544 eval $setvar 
3545
3546 case "$usesocks" in
3547 $define|true|[yY]*)
3548         case "$useperlio" in
3549         $define|true|[yY]*) ;;
3550         *)      cat >&4 <<EOM
3551
3552 You are using the SOCKS proxy protocol library which means that you
3553 should also use the PerlIO layer.  You may be headed for trouble.
3554
3555 EOM
3556                 ;;
3557         esac
3558         ;;
3559 esac
3560
3561         
3562 case "$usethreads" in
3563 $define|true|[yY]*)     dflt='y';;
3564 *)     # Catch case where user specified ithreads or 5005threads but
3565        # forgot -Dusethreads (A.D. 4/2002)
3566        case "$useithreads$use5005threads" in
3567        *$define*)      
3568                 case "$useperlio" in
3569                 "$define")      dflt='y' ;;
3570                 *)              dflt='n' ;;
3571                 esac
3572                 ;;
3573        *)       dflt='n';;
3574        esac
3575        ;;
3576 esac
3577 cat <<EOM
3578
3579 Perl can be built to take advantage of threads on some systems.
3580 To do so, Configure can be run with -Dusethreads.
3581
3582 Note that Perl built with threading support runs slightly slower
3583 and uses more memory than plain Perl. The current implementation
3584 is believed to be stable, but it is fairly new, and so should be
3585 treated with caution.
3586
3587 If this doesn't make any sense to you, just accept the default '$dflt'.
3588 EOM
3589 rp='Build a threading Perl?'
3590 . ./myread
3591 case "$ans" in
3592 y|Y)    val="$define" ;;
3593 *)      val="$undef" ;;
3594 esac
3595 set usethreads
3596 eval $setvar
3597
3598 case "$usethreads" in
3599 $define)
3600         $cat <<EOM
3601
3602 Since release 5.6, Perl has had two different threading implementations,
3603 the newer interpreter-based version (ithreads) with one interpreter per
3604 thread, and the older 5.005 version (5005threads).
3605 The 5005threads version is effectively unmaintained and will probably be
3606 removed in Perl 5.10, so there should be no need to build a Perl using it
3607 unless needed for backwards compatibility with some existing 5.005threads
3608 code.
3609
3610 EOM
3611         : Default to ithreads unless overridden on command line or with
3612         : old config.sh
3613         dflt='y'
3614         case "$use5005threads" in
3615                 $define|true|[yY]*) dflt='n';;
3616         esac
3617         case "$useithreads" in
3618                 $undef|false|[nN]*) dflt='n';;
3619         esac
3620         rp='Use the newer interpreter-based ithreads?'
3621         . ./myread
3622         case "$ans" in
3623         y|Y)    val="$define" ;;
3624         *)      val="$undef" ;;
3625         esac
3626         set useithreads
3627         eval $setvar
3628         : Now set use5005threads to the opposite value.
3629         case "$useithreads" in
3630         $define) val="$undef" ;;
3631         *) val="$define" ;;
3632         esac
3633         set use5005threads
3634         eval $setvar
3635         ;;
3636 *)
3637         useithreads="$undef"
3638         use5005threads="$undef"
3639         ;;
3640 esac
3641
3642 case "$useithreads$use5005threads" in
3643 "$define$define")
3644         $cat >&4 <<EOM
3645
3646 You cannot have both the ithreads and the 5.005 threads enabled
3647 at the same time.  Disabling the 5.005 threads since they are
3648 much less stable than the ithreads.
3649
3650 EOM
3651         use5005threads="$undef"
3652         ;;
3653 esac
3654
3655 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3656         cat >&4 <<EOF
3657 ***
3658 *** To build with ithreads you must also use the PerlIO layer.
3659 *** Cannot continue, aborting.
3660 ***
3661 EOF
3662         exit 1
3663 fi
3664
3665 case "$d_oldpthreads" in
3666 '')     : Configure tests would be welcome here.  For now, assume undef.
3667         val="$undef" ;;
3668 *)      val="$d_oldpthreads" ;;
3669 esac
3670 set d_oldpthreads
3671 eval $setvar
3672
3673
3674 case "$usethreads" in
3675 "$define"|true|[yY]*)
3676 : Look for a hint-file generated 'call-back-unit'.  If the
3677 : user has specified that a threading perl is to be built,
3678 : we may need to set or change some other defaults.
3679         if $test -f usethreads.cbu; then
3680                 echo "Your platform has some specific hints for threaded builds, using them..."
3681                 . ./usethreads.cbu
3682         else
3683                 $cat <<EOM
3684 (Your platform doesn't have any specific hints for threaded builds.
3685  Assuming POSIX threads, then.)
3686 EOM
3687         fi
3688         ;;
3689 esac
3690
3691 cat <<EOM
3692
3693 Perl can be built so that multiple Perl interpreters can coexist
3694 within the same Perl executable.
3695 EOM
3696
3697 case "$useithreads" in
3698 $define)
3699         cat <<EOM
3700 This multiple interpreter support is required for interpreter-based threads.
3701 EOM
3702         val="$define"
3703         ;;
3704 *)      case "$usemultiplicity" in
3705         $define|true|[yY]*)     dflt='y';;
3706         *) dflt='n';;
3707         esac
3708         echo " "
3709         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3710         rp='Build Perl for multiplicity?'
3711         . ./myread
3712         case "$ans" in
3713         y|Y)    val="$define" ;;
3714         *)      val="$undef" ;;
3715         esac
3716         ;;
3717 esac
3718 set usemultiplicity
3719 eval $setvar
3720
3721
3722 case "$usemorebits" in
3723 "$define"|true|[yY]*)
3724         use64bitint="$define"
3725         uselongdouble="$define"
3726         usemorebits="$define"
3727         ;;
3728 *)      usemorebits="$undef"
3729         ;;
3730 esac
3731
3732 : make some quick guesses about what we are up against
3733 echo " "
3734 $echo $n "Hmm...  $c"
3735 echo exit 1 >bsd
3736 echo exit 1 >usg
3737 echo exit 1 >v7
3738 echo exit 1 >osf1
3739 echo exit 1 >eunice
3740 echo exit 1 >xenix
3741 echo exit 1 >venix
3742 echo exit 1 >os2
3743 d_bsd="$undef"
3744 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3745 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3746 then
3747         echo "Looks kind of like an OSF/1 system, but we'll see..."
3748         echo exit 0 >osf1
3749 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3750         xxx=`./loc addbib blurfl $pth`
3751         if $test -f $xxx; then
3752         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3753                 echo exit 0 >bsd
3754                 echo exit 0 >usg
3755         else
3756                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3757                         echo "Looks kind of like an extended USG system, but we'll see..."
3758                 else
3759                         echo "Looks kind of like a USG system, but we'll see..."
3760                 fi
3761                 echo exit 0 >usg
3762         fi
3763 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3764         echo "Looks kind of like a BSD system, but we'll see..."
3765         d_bsd="$define"
3766         echo exit 0 >bsd
3767 else
3768         echo "Looks kind of like a Version 7 system, but we'll see..."
3769         echo exit 0 >v7
3770 fi
3771 case "$eunicefix" in
3772 *unixtovms*)
3773         $cat <<'EOI'
3774 There is, however, a strange, musty smell in the air that reminds me of
3775 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3776 EOI
3777         echo exit 0 >eunice
3778         d_eunice="$define"
3779 : it so happens the Eunice I know will not run shell scripts in Unix format
3780         ;;
3781 *)
3782         echo " "
3783         echo "Congratulations.  You aren't running Eunice."
3784         d_eunice="$undef"
3785         ;;
3786 esac
3787 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3788 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3789 : semicolon as a patch separator
3790 case "$p_" in
3791 :) ;;
3792 *)
3793         $cat <<'EOI'
3794 I have the feeling something is not exactly right, however...don't tell me...
3795 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3796 (Or you may be running DOS with DJGPP.)
3797 EOI
3798         echo exit 0 >os2
3799         ;;
3800 esac
3801 if test -f /xenix; then
3802         echo "Actually, this looks more like a XENIX system..."
3803         echo exit 0 >xenix
3804         d_xenix="$define"
3805 else
3806         echo " "
3807         echo "It's not Xenix..."
3808         d_xenix="$undef"
3809 fi
3810 chmod +x xenix
3811 $eunicefix xenix
3812 if test -f /venix; then
3813         echo "Actually, this looks more like a VENIX system..."
3814         echo exit 0 >venix
3815 else
3816         echo " "
3817         if ./xenix; then
3818                 : null
3819         else
3820                 echo "Nor is it Venix..."
3821         fi
3822 fi
3823 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3824 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3825 $rm -f foo
3826
3827 case "$cc" in
3828 '') dflt=cc;;
3829 *) dflt="$cc";;
3830 esac
3831 rp="Use which C compiler?"
3832 . ./myread
3833 cc="$ans"
3834
3835 : See if they have not cc but they do have gcc
3836 . ./trygcc
3837 : Look for a hint-file generated 'call-back-unit'.  Now that the
3838 : user has specified the compiler, we may need to set or change some
3839 : other defaults.
3840 if $test -f cc.cbu; then
3841     . ./cc.cbu
3842 fi
3843 . ./checkcc
3844
3845 echo " "
3846 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3847 $cat >try.c <<EOM
3848 #include <stdio.h>
3849 int main() {
3850 #ifdef __GNUC__
3851 #ifdef __VERSION__
3852         printf("%s\n", __VERSION__);
3853 #else
3854         printf("%s\n", "1");
3855 #endif
3856 #endif
3857         return(0);
3858 }
3859 EOM
3860 if $cc -o try $ccflags $ldflags try.c; then
3861         gccversion=`$run ./try`
3862         case "$gccversion" in
3863         '') echo "You are not using GNU cc." ;;
3864         *)  echo "You are using GNU cc $gccversion."
3865             ccname=gcc
3866             ;;
3867         esac
3868 else
3869         echo " "
3870         echo "*** WHOA THERE!!! ***" >&4
3871         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3872         case "$knowitall" in
3873         '')
3874         echo "    You'd better start hunting for one and let me know about it." >&4
3875                 exit 1
3876                 ;;
3877         esac
3878 fi
3879 $rm -f try try.*
3880 case "$gccversion" in
3881 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3882 esac
3883 case "$gccversion" in
3884 '') gccosandvers='' ;;
3885 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3886    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3887    gccshortvers=''
3888    case "$gccosandvers" in
3889    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3890    $osname$osvers) ;; # looking good
3891    $osname*) cat <<EOM >&4
3892
3893 *** WHOA THERE!!! ***
3894
3895     Your gcc has not been compiled for the exact release of
3896     your operating system ($gccosandvers versus $osname$osvers).
3897
3898     In general it is a good idea to keep gcc synchronized with
3899     the operating system because otherwise serious problems
3900     may ensue when trying to compile software, like Perl.
3901
3902     I'm trying to be optimistic here, though, and will continue.
3903     If later during the configuration and build icky compilation
3904     problems appear (headerfile conflicts being the most common
3905     manifestation), I suggest reinstalling the gcc to match
3906     your operating system release.
3907
3908 EOM
3909       ;;
3910    *) gccosandvers='' ;; # failed to parse, better be silent
3911    esac
3912    ;;
3913 esac
3914 case "$ccname" in
3915 '') ccname="$cc" ;;
3916 esac
3917
3918 # gcc 3.* complain about adding -Idirectories that they already know about,
3919 # so we will take those off from locincpth.
3920 case "$gccversion" in
3921 3*)
3922     echo "main(){}">try.c
3923     for incdir in $locincpth; do
3924        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3925              grep '^c[cp]p*[01]: warning: changing search order '`
3926        if test "X$warn" != X; then
3927            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3928        fi
3929     done
3930     $rm -f try try.*
3931 esac
3932
3933 : decide how portable to be.  Allow command line overrides.
3934 case "$d_portable" in
3935 "$undef") ;;
3936 *)      d_portable="$define" ;;
3937 esac
3938
3939 : set up shell script to do ~ expansion
3940 cat >filexp <<EOSS
3941 $startsh
3942 : expand filename
3943 case "\$1" in
3944  ~/*|~)
3945         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3946         ;;
3947  ~*)
3948         if $test -f /bin/csh; then
3949                 /bin/csh -f -c "glob \$1"
3950                 failed=\$?
3951                 echo ""
3952                 exit \$failed
3953         else
3954                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3955                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3956                 if $test ! -d "\$dir"; then
3957                         me=\`basename \$0\`
3958                         echo "\$me: can't locate home directory for: \$name" >&2
3959                         exit 1
3960                 fi
3961                 case "\$1" in
3962                 */*)
3963                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3964                         ;;
3965                 *)
3966                         echo \$dir
3967                         ;;
3968                 esac
3969         fi
3970         ;;
3971 *)
3972         echo \$1
3973         ;;
3974 esac
3975 EOSS
3976 chmod +x filexp
3977 $eunicefix filexp
3978
3979 : now set up to get a file name
3980 cat <<EOS >getfile
3981 $startsh
3982 EOS
3983 cat <<'EOSC' >>getfile
3984 tilde=''
3985 fullpath=''
3986 already=''
3987 skip=''
3988 none_ok=''
3989 exp_file=''
3990 nopath_ok=''
3991 orig_rp="$rp"
3992 orig_dflt="$dflt"
3993 case "$gfpth" in
3994 '') gfpth='.' ;;
3995 esac
3996
3997 case "$fn" in
3998 *\(*)
3999         : getfile will accept an answer from the comma-separated list
4000         : enclosed in parentheses even if it does not meet other criteria.
4001         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4002         fn=`echo $fn | sed 's/(.*)//'`
4003         ;;
4004 esac
4005
4006 case "$fn" in
4007 *:*)
4008         loc_file=`expr $fn : '.*:\(.*\)'`
4009         fn=`expr $fn : '\(.*\):.*'`
4010         ;;
4011 esac
4012
4013 case "$fn" in
4014 *~*) tilde=true;;
4015 esac
4016 case "$fn" in
4017 */*) fullpath=true;;
4018 esac
4019 case "$fn" in
4020 *+*) skip=true;;
4021 esac
4022 case "$fn" in
4023 *n*) none_ok=true;;
4024 esac
4025 case "$fn" in
4026 *e*) exp_file=true;;
4027 esac
4028 case "$fn" in
4029 *p*) nopath_ok=true;;
4030 esac
4031
4032 case "$fn" in
4033 *f*) type='File';;
4034 *d*) type='Directory';;
4035 *l*) type='Locate';;
4036 esac
4037
4038 what="$type"
4039 case "$what" in
4040 Locate) what='File';;
4041 esac
4042
4043 case "$exp_file" in
4044 '')
4045         case "$d_portable" in
4046         "$define") ;;
4047         *) exp_file=true;;
4048         esac
4049         ;;
4050 esac
4051
4052 cd ..
4053 while test "$type"; do
4054         redo=''
4055         rp="$orig_rp"
4056         dflt="$orig_dflt"
4057         case "$tilde" in
4058         true) rp="$rp (~name ok)";;
4059         esac
4060         . UU/myread
4061         if test -f UU/getfile.ok && \
4062                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4063         then
4064                 value="$ans"
4065                 ansexp="$ans"
4066                 break
4067         fi
4068         case "$ans" in
4069         none)
4070                 value=''
4071                 ansexp=''
4072                 case "$none_ok" in
4073                 true) type='';;
4074                 esac
4075                 ;;
4076         *)
4077                 case "$tilde" in
4078                 '') value="$ans"
4079                         ansexp="$ans";;
4080                 *)
4081                         value=`UU/filexp $ans`
4082                         case $? in
4083                         0)
4084                                 if test "$ans" != "$value"; then
4085                                         echo "(That expands to $value on this system.)"
4086                                 fi
4087                                 ;;
4088                         *) value="$ans";;
4089                         esac
4090                         ansexp="$value"
4091                         case "$exp_file" in
4092                         '') value="$ans";;
4093                         esac
4094                         ;;
4095                 esac
4096                 case "$fullpath" in
4097                 true)
4098                         case "$ansexp" in
4099                         /*) value="$ansexp" ;;
4100                         [a-zA-Z]:/*) value="$ansexp" ;;
4101                         *)
4102                                 redo=true
4103                                 case "$already" in
4104                                 true)
4105                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4106                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4107                                         ;;
4108                                 *)
4109                                 echo "Please give a full path name, starting with slash." >&4
4110                                         case "$tilde" in
4111                                         true)
4112                                 echo "Note that using ~name is ok provided it expands well." >&4
4113                                                 already=true
4114                                                 ;;
4115                                         esac
4116                                 esac
4117                                 ;;
4118                         esac
4119                         ;;
4120                 esac
4121                 case "$redo" in
4122                 '')
4123                         case "$type" in
4124                         File)
4125                                 for fp in $gfpth; do
4126                                         if test "X$fp" = X.; then
4127                                             pf="$ansexp"
4128                                         else    
4129                                             pf="$fp/$ansexp"
4130                                         fi
4131                                         if test -f "$pf"; then
4132                                                 type=''
4133                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4134                                         then
4135                                                 echo "($value is not a plain file, but that's ok.)"
4136                                                 type=''
4137                                         fi
4138                                         if test X"$type" = X; then
4139                                             value="$pf"
4140                                             break
4141                                         fi
4142                                 done
4143                                 ;;
4144                         Directory)
4145                                 for fp in $gfpth; do
4146                                         if test "X$fp" = X.; then
4147                                             dir="$ans"
4148                                             direxp="$ansexp"
4149                                         else    
4150                                             dir="$fp/$ansexp"
4151                                             direxp="$fp/$ansexp"
4152                                         fi
4153                                         if test -d "$direxp"; then
4154                                                 type=''
4155                                                 value="$dir"
4156                                                 break
4157                                         fi
4158                                 done
4159                                 ;;
4160                         Locate)
4161                                 if test -d "$ansexp"; then
4162                                         echo "(Looking for $loc_file in directory $value.)"
4163                                         value="$value/$loc_file"
4164                                         ansexp="$ansexp/$loc_file"
4165                                 fi
4166                                 if test -f "$ansexp"; then
4167                                         type=''
4168                                 fi
4169                                 case "$nopath_ok" in
4170                                 true)   case "$value" in
4171                                         */*) ;;
4172                                         *)      echo "Assuming $value will be in people's path."
4173                                                 type=''
4174                                                 ;;
4175                                         esac
4176                                         ;;
4177                                 esac
4178                                 ;;
4179                         esac
4180
4181                         case "$skip" in
4182                         true) type='';
4183                         esac
4184
4185                         case "$type" in
4186                         '') ;;
4187                         *)
4188                                 if test "$fastread" = yes; then
4189                                         dflt=y
4190                                 else
4191                                         dflt=n
4192                                 fi
4193                                 rp="$what $value doesn't exist.  Use that name anyway?"
4194                                 . UU/myread
4195                                 dflt=''
4196                                 case "$ans" in
4197                                 y*) type='';;
4198                                 *) echo " ";;
4199                                 esac
4200                                 ;;
4201                         esac
4202                         ;;
4203                 esac
4204                 ;;
4205         esac
4206 done
4207 cd UU
4208 ans="$value"
4209 rp="$orig_rp"
4210 dflt="$orig_dflt"
4211 rm -f getfile.ok
4212 test "X$gfpthkeep" != Xy && gfpth=""
4213 EOSC
4214
4215 : What should the include directory be ?
4216 echo " "
4217 $echo $n "Hmm...  $c"
4218 dflt='/usr/include'
4219 incpath=''
4220 mips_type=''
4221 if $test -f /bin/mips && /bin/mips; then
4222         echo "Looks like a MIPS system..."
4223         $cat >usr.c <<'EOCP'
4224 #ifdef SYSTYPE_BSD43
4225 /bsd43
4226 #endif
4227 EOCP
4228         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4229                 dflt='/bsd43/usr/include'
4230                 incpath='/bsd43'
4231                 mips_type='BSD 4.3'
4232         else
4233                 mips_type='System V'
4234         fi
4235         $rm -f usr.c usr.out
4236         echo "and you're compiling with the $mips_type compiler and libraries."
4237         xxx_prompt=y
4238         echo "exit 0" >mips
4239 else
4240         echo "Doesn't look like a MIPS system."
4241         xxx_prompt=n
4242         echo "exit 1" >mips
4243 fi
4244 chmod +x mips
4245 $eunicefix mips
4246 case "$usrinc" in
4247 '') ;;
4248 *) dflt="$usrinc";;
4249 esac
4250 case "$xxx_prompt" in
4251 y)      fn=d/
4252         echo " "
4253         rp='Where are the include files you want to use?'
4254         . ./getfile
4255         usrinc="$ans"
4256         ;;
4257 *)      usrinc="$dflt"
4258         ;;
4259 esac
4260
4261 : see how we invoke the C preprocessor
4262 echo " "
4263 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4264 cat <<'EOT' >testcpp.c
4265 #define ABC abc
4266 #define XYZ xyz
4267 ABC.XYZ
4268 EOT
4269 cd ..
4270 if test ! -f cppstdin; then
4271         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4272                 # AIX cc -E doesn't show the absolute headerfile
4273                 # locations but we'll cheat by using the -M flag.
4274                 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
4275         else
4276                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4277         fi
4278 else
4279         echo "Keeping your $hint cppstdin wrapper."
4280 fi
4281 chmod 755 cppstdin
4282 wrapper=`pwd`/cppstdin
4283 ok='false'
4284 cd UU
4285
4286 if $test "X$cppstdin" != "X" && \
4287         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4288         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4289 then
4290         echo "You used to use $cppstdin $cppminus so we'll use that again."
4291         case "$cpprun" in
4292         '') echo "But let's see if we can live without a wrapper..." ;;
4293         *)
4294                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4295                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4296                 then
4297                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4298                         ok='true'
4299                 else
4300                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4301                 fi
4302                 ;;
4303         esac
4304 else
4305         case "$cppstdin" in
4306         '') ;;
4307         *)
4308                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4309                 ;;
4310         esac
4311 fi
4312
4313 if $ok; then
4314         : nothing
4315 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4316         $cc -E <testcpp.c >testcpp.out 2>&1; \
4317         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4318         echo "Yup, it does."
4319         x_cpp="$cc -E"
4320         x_minus='';
4321 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4322         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4323         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4324         echo "Yup, it does."
4325         x_cpp="$cc -E"
4326         x_minus='-';
4327 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4328         $cc -P <testcpp.c >testcpp.out 2>&1; \
4329         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4330         echo "Yipee, that works!"
4331         x_cpp="$cc -P"
4332         x_minus='';
4333 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4334         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4335         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4336         echo "At long last!"
4337         x_cpp="$cc -P"
4338         x_minus='-';
4339 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4340         $cpp <testcpp.c >testcpp.out 2>&1; \
4341         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4342         echo "It works!"
4343         x_cpp="$cpp"
4344         x_minus='';
4345 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4346         $cpp - <testcpp.c >testcpp.out 2>&1; \
4347         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4348         echo "Hooray, it works!  I was beginning to wonder."
4349         x_cpp="$cpp"
4350         x_minus='-';
4351 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4352         $wrapper <testcpp.c >testcpp.out 2>&1; \
4353         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4354         x_cpp="$wrapper"
4355         x_minus=''
4356         echo "Eureka!"
4357 else
4358         dflt=''
4359         rp="No dice.  I can't find a C preprocessor.  Name one:"
4360         . ./myread
4361         x_cpp="$ans"
4362         x_minus=''
4363         $x_cpp <testcpp.c >testcpp.out 2>&1
4364         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4365                 echo "OK, that will do." >&4
4366         else
4367 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4368                 exit 1
4369         fi
4370 fi
4371
4372 case "$ok" in
4373 false)
4374         cppstdin="$x_cpp"
4375         cppminus="$x_minus"
4376         cpprun="$x_cpp"
4377         cpplast="$x_minus"
4378         set X $x_cpp
4379         shift
4380         case "$1" in
4381         "$cpp")
4382                 echo "Perhaps can we force $cc -E using a wrapper..."
4383                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4384                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4385                 then
4386                         echo "Yup, we can."
4387                         cppstdin="$wrapper"
4388                         cppminus='';
4389                 else
4390                         echo "Nope, we'll have to live without it..."
4391                 fi
4392                 ;;
4393         esac
4394         case "$cpprun" in
4395         "$wrapper")
4396                 cpprun=''
4397                 cpplast=''
4398                 ;;
4399         esac
4400         ;;
4401 esac
4402
4403 case "$cppstdin" in
4404 "$wrapper"|'cppstdin') ;;
4405 *) $rm -f $wrapper;;
4406 esac
4407 $rm -f testcpp.c testcpp.out
4408
4409 : Set private lib path
4410 case "$plibpth" in
4411 '') if ./mips; then
4412                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4413         fi;;
4414 esac
4415 case "$libpth" in
4416 ' ') dlist='';;
4417 '') dlist="$loclibpth $plibpth $glibpth";;
4418 *) dlist="$libpth";;
4419 esac
4420
4421 : Now check and see which directories actually exist, avoiding duplicates
4422 libpth=''
4423 for xxx in $dlist
4424 do
4425     if $test -d $xxx; then
4426                 case " $libpth " in
4427                 *" $xxx "*) ;;
4428                 *) libpth="$libpth $xxx";;
4429                 esac
4430     fi
4431 done
4432 $cat <<'EOM'
4433
4434 Some systems have incompatible or broken versions of libraries.  Among
4435 the directories listed in the question below, please remove any you
4436 know not to be holding relevant libraries, and add any that are needed.
4437 Say "none" for none.
4438
4439 EOM
4440 case "$libpth" in
4441 '') dflt='none';;
4442 *)
4443         set X $libpth
4444         shift
4445         dflt=${1+"$@"}
4446         ;;
4447 esac
4448 rp="Directories to use for library searches?"
4449 . ./myread
4450 case "$ans" in
4451 none) libpth=' ';;
4452 *) libpth="$ans";;
4453 esac
4454
4455 : compute shared library extension
4456 case "$so" in
4457 '')
4458         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4459                 dflt='sl'
4460         else
4461                 dflt='so'
4462         fi
4463         ;;
4464 *) dflt="$so";;
4465 esac
4466 $cat <<EOM
4467
4468 On some systems, shared libraries may be available.  Answer 'none' if
4469 you want to suppress searching of shared libraries for the remainder
4470 of this configuration.
4471
4472 EOM
4473 rp='What is the file extension used for shared libraries?'
4474 . ./myread
4475 so="$ans"
4476
4477 : Define several unixisms.
4478 : Hints files or command line option can be used to override them.
4479 : The convoluted testing is in case hints files set either the old
4480 : or the new name.
4481 case "$_exe" in
4482 '')     case "$exe_ext" in
4483         '')     ;;
4484         *)      _exe="$exe_ext" ;;
4485         esac
4486         ;;
4487 esac
4488 case "$_a" in
4489 '')     case "$lib_ext" in
4490     '') _a='.a';;
4491         *)      _a="$lib_ext" ;;
4492         esac
4493         ;;
4494 esac
4495 case "$_o" in
4496 '') case "$obj_ext" in
4497         '')     _o='.o';;
4498         *)      _o="$obj_ext";;
4499         esac
4500         ;;
4501 esac
4502 case "$p_" in
4503 '') case "$path_sep" in
4504         '')     p_=':';;
4505         *)      p_="$path_sep";;
4506         esac
4507         ;;
4508 esac
4509 exe_ext=$_exe
4510 lib_ext=$_a
4511 obj_ext=$_o
4512 path_sep=$p_
4513
4514 : Which makefile gets called first.  This is used by make depend.
4515 case "$firstmakefile" in
4516 '') firstmakefile='makefile';;
4517 esac
4518
4519 case "$ccflags" in
4520 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4521 esac
4522
4523 case "$uselongdouble" in
4524 $define|true|[yY]*)     dflt='y';;
4525 *) dflt='n';;
4526 esac
4527 cat <<EOM
4528
4529 Perl can be built to take advantage of long doubles which
4530 (if available) may give more accuracy and range for floating point numbers.
4531
4532 If this doesn't make any sense to you, just accept the default '$dflt'.
4533 EOM
4534 rp='Try to use long doubles if available?'
4535 . ./myread
4536 case "$ans" in
4537 y|Y)    val="$define"   ;;
4538 *)      val="$undef"    ;;
4539 esac
4540 set uselongdouble
4541 eval $setvar
4542
4543 case "$uselongdouble" in
4544 true|[yY]*) uselongdouble="$define" ;;
4545 esac
4546
4547 case "$uselongdouble" in
4548 $define)
4549 : Look for a hint-file generated 'call-back-unit'.  If the
4550 : user has specified that long doubles should be used,
4551 : we may need to set or change some other defaults.
4552         if $test -f uselongdouble.cbu; then
4553                 echo "Your platform has some specific hints for long doubles, using them..."
4554                 . ./uselongdouble.cbu
4555         else
4556                 $cat <<EOM
4557 (Your platform doesn't have any specific hints for long doubles.)
4558 EOM
4559         fi
4560         ;;
4561 esac
4562
4563 : Looking for optional libraries
4564 echo " "
4565 echo "Checking for optional libraries..." >&4
4566 case "$libs" in
4567 ' '|'') dflt='';;
4568 *) dflt="$libs";;
4569 esac
4570 case "$libswanted" in
4571 '') libswanted='c_s';;
4572 esac
4573 case "$usesocks" in
4574 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4575 esac
4576 libsfound=''
4577 libsfiles=''
4578 libsdirs=''
4579 libspath=''
4580 for thisdir in $libpth $xlibpth; do
4581   test -d $thisdir && libspath="$libspath $thisdir"
4582 done
4583 for thislib in $libswanted; do
4584         for thisdir in $libspath; do
4585             xxx=''
4586             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4587                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4588                 $test -f "$xxx" && eval $libscheck
4589                 $test -f "$xxx" && libstyle=shared
4590             fi
4591             if test ! -f "$xxx"; then
4592                 xxx=$thisdir/lib$thislib.$so
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$_a
4598                 $test -f "$xxx" && eval $libscheck
4599                 $test -f "$xxx" && libstyle=static
4600             fi
4601             if test ! -f "$xxx"; then
4602                 xxx=$thisdir/$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/lib${thislib}_s$_a
4608                 $test -f "$xxx" && eval $libscheck
4609                 $test -f "$xxx" && libstyle=static
4610                 $test -f "$xxx" && thislib=${thislib}_s
4611             fi
4612             if test ! -f "$xxx"; then
4613                 xxx=$thisdir/Slib$thislib$_a
4614                 $test -f "$xxx" && eval $libscheck
4615                 $test -f "$xxx" && libstyle=static
4616             fi
4617             if $test -f "$xxx"; then
4618                 case "$libstyle" in
4619                 shared) echo "Found -l$thislib (shared)." ;;
4620                 static) echo "Found -l$thislib." ;;
4621                 *)      echo "Found -l$thislib ($libstyle)." ;;
4622                 esac
4623                 case " $dflt " in
4624                 *"-l$thislib "*);;
4625                 *) dflt="$dflt -l$thislib"
4626                    libsfound="$libsfound $xxx"
4627                    yyy=`basename $xxx`
4628                    libsfiles="$libsfiles $yyy"
4629                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4630                    case " $libsdirs " in
4631                    *" $yyy "*) ;;
4632                    *) libsdirs="$libsdirs $yyy" ;;
4633                    esac
4634                    ;;
4635                 esac
4636                 break
4637             fi  
4638         done
4639         if $test ! -f "$xxx"; then
4640             echo "No -l$thislib."
4641         fi
4642 done
4643 set X $dflt
4644 shift
4645 dflt="$*"
4646 case "$libs" in
4647 '') dflt="$dflt";;
4648 *) dflt="$libs";;
4649 esac
4650 case "$dflt" in
4651 ' '|'') dflt='none';;
4652 esac
4653
4654 $cat <<EOM
4655
4656 In order to compile $package on your machine, a number of libraries
4657 are usually needed.  Include any other special libraries here as well.
4658 Say "none" for none.  The default list is almost always right.
4659 EOM
4660
4661 echo " "
4662 rp="What libraries to use?"
4663 . ./myread
4664 case "$ans" in
4665 none) libs=' ';;
4666 *) libs="$ans";;
4667 esac
4668
4669 : determine optimization, if desired, or use for debug flag also
4670 case "$optimize" in
4671 ' '|$undef) dflt='none';;
4672 '') dflt='-O';;
4673 *) dflt="$optimize";;
4674 esac
4675 $cat <<EOH
4676
4677 By default, $package compiles with the -O flag to use the optimizer.
4678 Alternately, you might want to use the symbolic debugger, which uses
4679 the -g flag (on traditional Unix systems).  Either flag can be
4680 specified here.  To use neither flag, specify the word "none".
4681
4682 EOH
4683 rp="What optimizer/debugger flag should be used?"
4684 . ./myread
4685 optimize="$ans"
4686 case "$optimize" in
4687 'none') optimize=" ";;
4688 esac
4689
4690 dflt=''
4691 : We will not override a previous value, but we might want to
4692 : augment a hint file
4693 case "$hint" in
4694 default|recommended)
4695         case "$gccversion" in
4696         1*) dflt='-fpcc-struct-return' ;;
4697         esac
4698         case "$optimize" in
4699         *-g*) dflt="$dflt -DDEBUGGING";;
4700         esac
4701         case "$gccversion" in
4702         2*) if test -d /etc/conf/kconfig.d &&
4703                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4704                 then
4705                         dflt="$dflt -posix"
4706                 fi
4707                 ;;
4708         esac
4709         case "$gccversion" in
4710         1*) ;;
4711         2.[0-8]*) ;;
4712         ?*)     echo " "
4713                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4714                 echo 'int main(void) { return 0; }' > gcctest.c
4715                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4716                         echo "Yes, it does." 2>&1
4717                         case "$ccflags" in
4718                         *strict-aliasing*) 
4719                                 echo "Leaving current flags $ccflags alone." 2>&1
4720                                 ;;
4721                         *) dflt="$dflt -fno-strict-aliasing" ;;
4722                         esac
4723                 else
4724                         echo "Nope, it doesn't, but that's ok." 2>&1
4725                 fi
4726                 ;;
4727         esac
4728         ;;
4729 esac
4730
4731 case "$mips_type" in
4732 *BSD*|'') inclwanted="$locincpth $usrinc";;
4733 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4734 esac
4735 for thisincl in $inclwanted; do
4736         if $test -d $thisincl; then
4737                 if $test x$thisincl != x$usrinc; then
4738                         case "$dflt" in
4739                         *" -I$thisincl "*);;
4740                         *) dflt="$dflt -I$thisincl ";;
4741                         esac
4742                 fi
4743         fi
4744 done
4745
4746 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4747         xxx=true;
4748 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4749         xxx=true;
4750 else
4751         xxx=false;
4752 fi;
4753 if $xxx; then
4754         case "$dflt" in
4755         *$2*);;
4756         *) dflt="$dflt -D$2";;
4757         esac;
4758 fi'
4759
4760 set signal.h LANGUAGE_C; eval $inctest
4761
4762 case "$usesocks" in
4763 $define)
4764         ccflags="$ccflags -DSOCKS"
4765         ;;
4766 esac
4767
4768 case "$hint" in
4769 default|recommended) dflt="$ccflags $dflt" ;;
4770 *) dflt="$ccflags";;
4771 esac
4772
4773 case "$dflt" in
4774 ''|' ') dflt=none;;
4775 esac
4776
4777 $cat <<EOH
4778
4779 Your C compiler may want other flags.  For this question you should include
4780 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4781 but you should NOT include libraries or ld flags like -lwhatever.  If you
4782 want $package to honor its debug switch, you should include -DDEBUGGING here.
4783 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4784
4785 To use no flags, specify the word "none".
4786
4787 EOH
4788 set X $dflt
4789 shift
4790 dflt=${1+"$@"}
4791 rp="Any additional cc flags?"
4792 . ./myread
4793 case "$ans" in
4794 none) ccflags='';;
4795 *) ccflags="$ans";;
4796 esac
4797
4798 : the following weeds options from ccflags that are of no interest to cpp
4799 case "$cppflags" in
4800 '') cppflags="$ccflags" ;;
4801 *)  cppflags="$cppflags $ccflags" ;;
4802 esac
4803 case "$gccversion" in
4804 1*) cppflags="$cppflags -D__GNUC__"
4805 esac
4806 case "$mips_type" in
4807 '');;
4808 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4809 esac
4810 case "$cppflags" in
4811 '');;
4812 *)
4813         echo " "
4814         echo "Let me guess what the preprocessor flags are..." >&4
4815         set X $cppflags
4816         shift
4817         cppflags=''
4818         $cat >cpp.c <<'EOM'
4819 #define BLURFL foo
4820
4821 BLURFL xx LFRULB
4822 EOM
4823         previous=''
4824         for flag in $*
4825         do
4826                 case "$flag" in
4827                 -*) ftry="$flag";;
4828                 *) ftry="$previous $flag";;
4829                 esac
4830                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4831                         >cpp1.out 2>/dev/null && \
4832                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4833                         >cpp2.out 2>/dev/null && \
4834                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4835                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4836                 then
4837                         cppflags="$cppflags $ftry"
4838                         previous=''
4839                 else
4840                         previous="$flag"
4841                 fi
4842         done
4843         set X $cppflags
4844         shift
4845         cppflags=${1+"$@"}
4846         case "$cppflags" in
4847         *-*)  echo "They appear to be: $cppflags";;
4848         esac
4849         $rm -f cpp.c cpp?.out
4850         ;;
4851 esac
4852
4853 : flags used in final linking phase
4854 case "$ldflags" in
4855 '') if ./venix; then
4856                 dflt='-i -z'
4857         else
4858                 dflt=''
4859         fi
4860         case "$ccflags" in
4861         *-posix*) dflt="$dflt -posix" ;;
4862         esac
4863         ;;
4864 *) dflt="$ldflags";;
4865 esac
4866
4867 : Try to guess additional flags to pick up local libraries.
4868 for thislibdir in $libpth; do
4869         case " $loclibpth " in
4870         *" $thislibdir "*)
4871                 case "$dflt " in 
4872                 *"-L$thislibdir "*) ;;
4873                 *)  dflt="$dflt -L$thislibdir" ;;
4874                 esac
4875                 ;;
4876         esac
4877 done
4878
4879 case "$dflt" in
4880 '') dflt='none' ;;
4881 esac
4882
4883 $cat <<EOH
4884
4885 Your C linker may need flags.  For this question you should
4886 include -L/whatever and any other flags used by the C linker, but you
4887 should NOT include libraries like -lwhatever.
4888
4889 Make sure you include the appropriate -L/path flags if your C linker
4890 does not normally search all of the directories you specified above,
4891 namely
4892         $libpth
4893 To use no flags, specify the word "none".
4894
4895 EOH
4896
4897 rp="Any additional ld flags (NOT including libraries)?"
4898 . ./myread
4899 case "$ans" in
4900 none) ldflags='';;
4901 *) ldflags="$ans";;
4902 esac
4903 rmlist="$rmlist pdp11"
4904
4905 : coherency check
4906 echo " "
4907 echo "Checking your choice of C compiler and flags for coherency..." >&4
4908 $cat > try.c <<'EOF'
4909 #include <stdio.h>
4910 int main() { printf("Ok\n"); return(0); }
4911 EOF
4912 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4913 shift
4914 $cat >try.msg <<'EOM'
4915 I've tried to compile and run the following simple program:
4916
4917 EOM
4918 $cat try.c >> try.msg
4919
4920 $cat >> try.msg <<EOM
4921
4922 I used the command:
4923
4924         $*
4925         $run ./try
4926
4927 and I got the following output:
4928
4929 EOM
4930 dflt=y
4931 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4932         if $sh -c "$run ./try" >>try.msg 2>&1; then
4933                 xxx=`$run ./try`
4934                 case "$xxx" in
4935                 "Ok") dflt=n ;;
4936                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4937                         case " $libs " in
4938                         *" -lsfio "*)
4939                                 cat >> try.msg <<'EOQS'
4940 If $libs contains -lsfio, and sfio is mis-configured, then it
4941 sometimes (apparently) runs and exits with a 0 status, but with no
4942 output!  It may have to do with sfio's use of _exit vs. exit.
4943
4944 EOQS
4945                                 rp="You have a big problem.  Shall I abort Configure"
4946                                 dflt=y
4947                                 ;;
4948                         esac
4949                         ;;
4950                 esac
4951         else
4952                 echo "The program compiled OK, but exited with status $?." >>try.msg
4953                 rp="You have a problem.  Shall I abort Configure"
4954                 dflt=y
4955         fi
4956 else
4957         echo "I can't compile the test program." >>try.msg
4958         rp="You have a BIG problem.  Shall I abort Configure"
4959         dflt=y
4960 fi
4961 case "$dflt" in
4962 y)
4963         $cat try.msg >&4
4964         case "$knowitall" in
4965         '')
4966                 echo "(The supplied flags or libraries might be incorrect.)"
4967                 ;;
4968         *) dflt=n;;
4969         esac
4970         echo " "
4971         . ./myread
4972         case "$ans" in
4973         n*|N*) ;;
4974         *)      echo "Ok.  Stopping Configure." >&4
4975                 exit 1
4976                 ;;
4977         esac
4978         ;;
4979 n) echo "OK, that should do.";;
4980 esac
4981 $rm -f try try.* core
4982
4983 : define a shorthand compile call
4984 compile='
4985 mc_file=$1;
4986 shift;
4987 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4988 : define a shorthand compile call for compilations that should be ok.
4989 compile_ok='
4990 mc_file=$1;
4991 shift;
4992 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4993
4994 : determine filename position in cpp output
4995 echo " "
4996 echo "Computing filename position in cpp output for #include directives..." >&4
4997 case "$osname" in
4998 vos) testaccess=-e ;;
4999 *)   testaccess=-r ;;
5000 esac
5001 echo '#include <stdio.h>' > foo.c
5002 $cat >fieldn <<EOF
5003 $startsh
5004 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5005 $grep '^[       ]*#.*stdio\.h' | \
5006 while read cline; do
5007         pos=1
5008         set \$cline
5009         while $test \$# -gt 0; do
5010                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5011                         echo "\$pos"
5012                         exit 0
5013                 fi
5014                 shift
5015                 pos=\`expr \$pos + 1\`
5016         done
5017 done
5018 EOF
5019 chmod +x fieldn
5020 fieldn=`./fieldn`
5021 $rm -f foo.c fieldn
5022 case $fieldn in
5023 '') pos='???';;
5024 1) pos=first;;
5025 2) pos=second;;
5026 3) pos=third;;
5027 *) pos="${fieldn}th";;
5028 esac
5029 echo "Your cpp writes the filename in the $pos field of the line."
5030
5031 case "$osname" in
5032 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5033 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5034 *)   cppfilter='' ;;
5035 esac
5036 : locate header file
5037 $cat >findhdr <<EOF
5038 $startsh
5039 wanted=\$1
5040 name=''
5041 for usrincdir in $usrinc
5042 do
5043         if test -f \$usrincdir/\$wanted; then
5044                 echo "\$usrincdir/\$wanted"
5045                 exit 0
5046         fi
5047 done
5048 awkprg='{ print \$$fieldn }'
5049 echo "#include <\$wanted>" > foo\$\$.c
5050 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5051 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5052 while read cline; do
5053         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5054         case "\$name" in
5055         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5056         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5057         *) exit 2;;
5058         esac;
5059 done;
5060 #
5061 # status = 0: grep returned 0 lines, case statement not executed
5062 # status = 1: headerfile found
5063 # status = 2: while loop executed, no headerfile found
5064 #
5065 status=\$?
5066 $rm -f foo\$\$.c;
5067 if test \$status -eq 1; then
5068         exit 0;
5069 fi
5070 exit 1
5071 EOF
5072 chmod +x findhdr
5073
5074 : define an alternate in-header-list? function
5075 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5076 cont=true; xxf="echo \"<\$1> found.\" >&4";
5077 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5078 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5079 esac;
5080 case $# in 4) instead=instead;; *) instead="at last";; esac;
5081 while $test "$cont"; do
5082         xxx=`./findhdr $1`
5083         var=$2; eval "was=\$$2";
5084         if $test "$xxx" && $test -r "$xxx";
5085         then eval $xxf;
5086         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5087                 cont="";
5088         else eval $xxnf;
5089         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5090         set $yyy; shift; shift; yyy=$@;
5091         case $# in 0) cont="";;
5092         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5093                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5094         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5095                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5096         esac;
5097 done;
5098 while $test "$yyy";
5099 do set $yyy; var=$2; eval "was=\$$2";
5100         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5101         set $yyy; shift; shift; yyy=$@;
5102 done'
5103
5104 : see if stdlib is available
5105 set stdlib.h i_stdlib
5106 eval $inhdr
5107
5108 : check for lengths of integral types
5109 echo " "
5110 case "$intsize" in
5111 '')
5112         echo "Checking to see how big your integers are..." >&4
5113         $cat >try.c <<EOCP
5114 #include <stdio.h>
5115 #$i_stdlib I_STDLIB
5116 #ifdef I_STDLIB
5117 #include <stdlib.h>
5118 #endif
5119 int main()
5120 {
5121         printf("intsize=%d;\n", (int)sizeof(int));
5122         printf("longsize=%d;\n", (int)sizeof(long));
5123         printf("shortsize=%d;\n", (int)sizeof(short));
5124         exit(0);
5125 }
5126 EOCP
5127         set try
5128         if eval $compile_ok && $run ./try > /dev/null; then
5129                 eval `$run ./try`
5130                 echo "Your integers are $intsize bytes long."
5131                 echo "Your long integers are $longsize bytes long."
5132                 echo "Your short integers are $shortsize bytes long."
5133         else
5134                 $cat >&4 <<EOM
5135 !
5136 Help! I can't compile and run the intsize test program: please enlighten me!
5137 (This is probably a misconfiguration in your system or libraries, and
5138 you really ought to fix it.  Still, I'll try anyway.)
5139 !
5140 EOM
5141                 dflt=4
5142                 rp="What is the size of an integer (in bytes)?"
5143                 . ./myread
5144                 intsize="$ans"
5145                 dflt=$intsize
5146                 rp="What is the size of a long integer (in bytes)?"
5147                 . ./myread
5148                 longsize="$ans"
5149                 dflt=2
5150                 rp="What is the size of a short integer (in bytes)?"
5151                 . ./myread
5152                 shortsize="$ans"
5153         fi
5154         ;;
5155 esac
5156 $rm -f try try.*
5157
5158 : check for long long
5159 echo " "
5160 echo "Checking to see if you have long long..." >&4
5161 echo 'int main() { long long x = 7; return 0; }' > try.c
5162 set try
5163 if eval $compile; then
5164         val="$define"
5165         echo "You have long long."
5166 else
5167         val="$undef"
5168         echo "You do not have long long."
5169 fi
5170 $rm try.*
5171 set d_longlong
5172 eval $setvar
5173
5174 : check for length of long long
5175 case "${d_longlong}${longlongsize}" in
5176 $define)
5177         echo " "
5178         echo "Checking to see how big your long longs are..." >&4
5179         $cat >try.c <<'EOCP'
5180 #include <stdio.h>
5181 int main()
5182 {
5183     printf("%d\n", (int)sizeof(long long));
5184     return(0);
5185 }
5186 EOCP
5187         set try
5188         if eval $compile_ok; then
5189                 longlongsize=`$run ./try`
5190                 echo "Your long longs are $longlongsize bytes long."
5191         else
5192                 dflt='8'
5193                 echo " "
5194                 echo "(I can't seem to compile the test program.  Guessing...)"
5195                 rp="What is the size of a long long (in bytes)?"
5196                 . ./myread
5197                 longlongsize="$ans"
5198         fi
5199         if $test "X$longsize" = "X$longlongsize"; then
5200                 echo "(That isn't any different from an ordinary long.)"
5201         fi      
5202         ;;
5203 esac
5204 $rm -f try.* try
5205
5206 : see if inttypes.h is available
5207 : we want a real compile instead of Inhdr because some systems
5208 : have an inttypes.h which includes non-existent headers
5209 echo " "
5210 $cat >try.c <<EOCP
5211 #include <inttypes.h>
5212 int main() {
5213         static int32_t foo32 = 0x12345678;
5214 }
5215 EOCP
5216 set try
5217 if eval $compile; then
5218         echo "<inttypes.h> found." >&4
5219         val="$define"
5220 else
5221         echo "<inttypes.h> NOT found." >&4
5222         val="$undef"
5223 fi
5224 $rm -f try.c try
5225 set i_inttypes
5226 eval $setvar
5227
5228 : check for int64_t
5229 echo " "
5230 echo "Checking to see if you have int64_t..." >&4
5231 $cat >try.c <<EOCP
5232 #include <sys/types.h>
5233 #$i_inttypes I_INTTYPES
5234 #ifdef I_INTTYPES
5235 #include <inttypes.h>
5236 #endif
5237 int main() { int64_t x = 7; }
5238 EOCP
5239 set try
5240 if eval $compile; then
5241         val="$define"
5242         echo "You have int64_t."
5243 else
5244         val="$undef"
5245         echo "You do not have int64_t."
5246 fi
5247 $rm -f try try.*
5248 set d_int64_t
5249 eval $setvar
5250
5251
5252 echo " "
5253 echo "Checking which 64-bit integer type we could use..." >&4
5254
5255 case "$intsize" in
5256 8) val=int
5257    set quadtype
5258    eval $setvar
5259    val='"unsigned int"'
5260    set uquadtype
5261    eval $setvar
5262    quadkind=1
5263    ;;
5264 *) case "$longsize" in
5265    8) val=long
5266       set quadtype
5267       eval $setvar
5268       val='"unsigned long"'
5269       set uquadtype
5270       eval $setvar
5271       quadkind=2
5272       ;;
5273    *) case "$d_longlong:$longlongsize" in
5274       define:8)
5275         val='"long long"'
5276         set quadtype
5277         eval $setvar
5278         val='"unsigned long long"'
5279         set uquadtype
5280         eval $setvar
5281         quadkind=3
5282         ;;
5283       *) case "$d_int64_t" in
5284          define)
5285            val=int64_t
5286            set quadtype
5287            eval $setvar
5288            val=uint64_t
5289            set uquadtype
5290            eval $setvar
5291            quadkind=4
5292            ;;
5293          esac
5294          ;;
5295       esac
5296       ;;
5297    esac
5298    ;;
5299 esac
5300
5301 case "$quadtype" in
5302 '')     echo "Alas, no 64-bit integer types in sight." >&4
5303         d_quad="$undef"
5304         ;;
5305 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5306         d_quad="$define"
5307         ;;
5308 esac
5309
5310
5311 case "$uselonglong" in
5312 "$define"|true|[yY]*)
5313         cat <<EOM >&4
5314
5315 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5316 EOM
5317         use64bitint="$define"
5318         ;;
5319 esac                          
5320 case "$use64bits" in
5321 "$define"|true|[yY]*)
5322         cat <<EOM >&4
5323
5324 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5325 EOM
5326         use64bitint="$define"
5327         ;;
5328 esac                          
5329 case "$use64bitints" in
5330 "$define"|true|[yY]*)
5331         cat <<EOM >&4
5332
5333 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5334 EOM
5335         use64bitint="$define"
5336         ;;
5337 esac                          
5338 case "$use64bitsint" in
5339 "$define"|true|[yY]*)
5340         cat <<EOM >&4
5341
5342 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5343 EOM
5344         use64bitint="$define"
5345         ;;
5346 esac                          
5347 case "$uselonglongs" in
5348 "$define"|true|[yY]*)
5349         cat <<EOM >&4
5350
5351 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5352 EOM
5353         use64bitint="$define"
5354         ;;
5355 esac                          
5356 case "$use64bitsall" in
5357 "$define"|true|[yY]*)
5358         cat <<EOM >&4
5359
5360 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5361 EOM
5362         use64bitall="$define"
5363         ;;
5364 esac                          
5365
5366 case "$ccflags" in
5367 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5368 esac
5369 case "$use64bitall" in
5370 "$define"|true|[yY]*) use64bitint="$define" ;;
5371 esac
5372
5373 case "$longsize" in
5374 8) cat <<EOM
5375
5376 You have natively 64-bit long integers.
5377 EOM
5378    val="$define"
5379    ;;
5380 *) case "$use64bitint" in
5381    "$define"|true|[yY]*) dflt='y';;
5382    *) dflt='n';;
5383    esac
5384    case "$d_quad" in
5385    "$define") ;;
5386    *) dflt='n' ;;
5387    esac
5388    cat <<EOM
5389
5390 Perl can be built to take advantage of 64-bit integer types
5391 on some systems.  To do so, Configure can be run with -Duse64bitint.
5392 Choosing this option will most probably introduce binary incompatibilities.
5393
5394 If this doesn't make any sense to you, just accept the default '$dflt'.
5395 (The default has been chosen based on your configuration.)
5396 EOM
5397    rp='Try to use 64-bit integers, if available?'
5398    . ./myread
5399    case "$ans" in
5400    [yY]*) val="$define" ;;
5401    *)     val="$undef"  ;;
5402    esac
5403    ;;
5404 esac
5405 set use64bitint
5406 eval $setvar
5407
5408 case "$use64bitall" in
5409 "$define"|true|[yY]*) dflt='y' ;;
5410 *) case "$longsize" in
5411    8) dflt='y' ;;
5412    *) dflt='n' ;;
5413    esac
5414    ;;
5415 esac    
5416 cat <<EOM
5417
5418 You may also choose to try maximal 64-bitness.  It means using as much
5419 64-bitness as possible on the platform.  This in turn means even more
5420 binary incompatibilities.  On the other hand, your platform may not
5421 have any more 64-bitness available than what you already have chosen.
5422
5423 If this doesn't make any sense to you, just accept the default '$dflt'.
5424 (The default has been chosen based on your configuration.)
5425 EOM
5426 rp='Try to use maximal 64-bit support, if available?'
5427 . ./myread
5428 case "$ans" in
5429 [yY]*) val="$define" ;;
5430 *)     val="$undef"  ;;
5431 esac
5432 set use64bitall
5433 eval $setvar
5434 case "$use64bitall" in
5435 "$define")
5436         case "$use64bitint" in
5437         "$undef")
5438                 cat <<EOM
5439
5440 Since you have chosen a maximally 64-bit build, I'm also turning on
5441 the use of 64-bit integers.
5442 EOM
5443                 use64bitint="$define" ;;
5444         esac
5445         ;;
5446 esac
5447
5448 case "$use64bitint" in
5449 "$define"|true|[yY]*)
5450 : Look for a hint-file generated 'call-back-unit'.  If the
5451 : user has specified that a 64-bit perl is to be built,
5452 : we may need to set or change some other defaults.
5453         if $test -f use64bitint.cbu; then
5454                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5455                 . ./use64bitint.cbu
5456         fi
5457         case "$longsize" in
5458         4) case "$archname64" in
5459            '') archname64=64int ;;
5460            esac
5461            ;;
5462         esac
5463         ;;
5464 esac
5465
5466 case "$use64bitall" in
5467 "$define"|true|[yY]*)
5468 : Look for a hint-file generated 'call-back-unit'.  If the
5469 : user has specified that a maximally 64-bit perl is to be built,
5470 : we may need to set or change some other defaults.
5471         if $test -f use64bitall.cbu; then
5472                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5473                 . ./use64bitall.cbu
5474         fi
5475         case "$longsize" in
5476         4) case "$archname64" in
5477            ''|64int) archname64=64all ;;
5478            esac
5479            ;;
5480         esac
5481         ;;
5482 esac
5483
5484 : check for length of double
5485 echo " "
5486 case "$doublesize" in
5487 '')
5488         echo "Checking to see how big your double precision numbers are..." >&4
5489         $cat >try.c <<EOCP
5490 #include <stdio.h>
5491 #$i_stdlib I_STDLIB
5492 #ifdef I_STDLIB
5493 #include <stdlib.h>
5494 #endif
5495 int main()
5496 {
5497     printf("%d\n", (int)sizeof(double));
5498     exit(0);
5499 }
5500 EOCP
5501         set try
5502         if eval $compile_ok; then
5503                 doublesize=`$run ./try`
5504                 echo "Your double is $doublesize bytes long."
5505         else
5506                 dflt='8'
5507                 echo "(I can't seem to compile the test program.  Guessing...)"
5508                 rp="What is the size of a double precision number (in bytes)?"
5509                 . ./myread
5510                 doublesize="$ans"
5511         fi
5512         ;;
5513 esac
5514 $rm -f try.c try
5515
5516 : check for long doubles
5517 echo " "
5518 echo "Checking to see if you have long double..." >&4
5519 echo 'int main() { long double x = 7.0; }' > try.c
5520 set try
5521 if eval $compile; then
5522         val="$define"
5523         echo "You have long double."
5524 else
5525         val="$undef"
5526         echo "You do not have long double."
5527 fi
5528 $rm try.*
5529 set d_longdbl
5530 eval $setvar
5531
5532 : check for length of long double
5533 case "${d_longdbl}${longdblsize}" in
5534 $define)
5535         echo " "
5536         echo "Checking to see how big your long doubles are..." >&4
5537         $cat >try.c <<'EOCP'
5538 #include <stdio.h>
5539 int main()
5540 {
5541         printf("%d\n", sizeof(long double));
5542 }
5543 EOCP
5544         set try
5545         set try
5546         if eval $compile; then
5547                 longdblsize=`$run ./try`
5548                 echo "Your long doubles are $longdblsize bytes long."
5549         else
5550                 dflt='8'
5551                 echo " "
5552                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5553                 rp="What is the size of a long double (in bytes)?"
5554                 . ./myread
5555                 longdblsize="$ans"
5556         fi
5557         if $test "X$doublesize" = "X$longdblsize"; then
5558                 echo "(That isn't any different from an ordinary double.)"
5559         fi      
5560         ;;
5561 esac
5562 $rm -f try.* try
5563
5564 echo " "
5565 echo "Checking for GNU C Library..." >&4
5566 cat >try.c <<'EOCP'
5567 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
5568    alone are insufficient to distinguish different versions, such as
5569    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
5570    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
5571 */
5572 #include <stdio.h>
5573 int main(void)
5574 {
5575 #ifdef __GLIBC__
5576 #   ifdef __GLIBC_MINOR__
5577 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
5578 #           include <gnu/libc-version.h>
5579             printf("%s\n",  gnu_get_libc_version());
5580 #       else
5581             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
5582 #       endif
5583 #   else
5584         printf("%d\n",  __GLIBC__);
5585 #   endif
5586     return 0;
5587 #else
5588     return 1;
5589 #endif
5590 }
5591 EOCP
5592 set try
5593 if eval $compile_ok && $run ./try > glibc.ver; then
5594         val="$define"
5595         gnulibc_version=`$cat glibc.ver`
5596         echo "You are using the GNU C Library version $gnulibc_version"
5597 else
5598         val="$undef"
5599         gnulibc_version=''
5600         echo "You are not using the GNU C Library"
5601 fi
5602 $rm -f try try.* glibc.ver
5603 set d_gnulibc
5604 eval $setvar
5605
5606 : see if nm is to be used to determine whether a symbol is defined or not
5607 case "$usenm" in
5608 '')
5609         dflt=''
5610         case "$d_gnulibc" in
5611         "$define")
5612                 echo " "
5613                 echo "nm probably won't work on the GNU C Library." >&4
5614                 dflt=n
5615                 ;;
5616         esac
5617         case "$dflt" in
5618         '') 
5619                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
5620                         echo " "
5621                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5622                         echo "'nm' won't be sufficient on this sytem." >&4
5623                         dflt=n
5624                 fi
5625                 ;;
5626         esac
5627         case "$dflt" in
5628         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5629                 if $test $dflt -gt 20; then
5630                         dflt=y
5631                 else
5632                         dflt=n
5633                 fi
5634                 ;;
5635         esac
5636         ;;
5637 *)
5638         case "$usenm" in
5639         true|$define) dflt=y;;
5640         *) dflt=n;;
5641         esac
5642         ;;
5643 esac
5644 $cat <<EOM
5645
5646 I can use $nm to extract the symbols from your C libraries. This
5647 is a time consuming task which may generate huge output on the disk (up
5648 to 3 megabytes) but that should make the symbols extraction faster. The
5649 alternative is to skip the 'nm' extraction part and to compile a small
5650 test program instead to determine whether each symbol is present. If
5651 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5652 this may be the best solution.
5653
5654 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5655
5656 EOM
5657 rp="Shall I use $nm to extract C symbols from the libraries?"
5658 . ./myread
5659 case "$ans" in
5660 [Nn]*) usenm=false;;
5661 *) usenm=true;;
5662 esac
5663
5664 runnm=$usenm
5665 case "$reuseval" in
5666 true) runnm=false;;
5667 esac
5668
5669 : nm options which may be necessary
5670 case "$nm_opt" in
5671 '') if $test -f /mach_boot; then
5672                 nm_opt=''       # Mach
5673         elif $test -d /usr/ccs/lib; then
5674                 nm_opt='-p'     # Solaris (and SunOS?)
5675         elif $test -f /dgux; then
5676                 nm_opt='-p'     # DG-UX
5677         elif $test -f /lib64/rld; then
5678                 nm_opt='-p'     # 64-bit Irix
5679         else
5680                 nm_opt=''
5681         fi;;
5682 esac
5683
5684 : nm options which may be necessary for shared libraries but illegal
5685 : for archive libraries.  Thank you, Linux.
5686 case "$nm_so_opt" in
5687 '')     case "$myuname" in
5688         *linux*)
5689                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5690                         nm_so_opt='--dynamic'
5691                 fi
5692                 ;;
5693         esac
5694         ;;
5695 esac
5696
5697 case "$runnm" in
5698 true)
5699 : get list of predefined functions in a handy place
5700 echo " "
5701 case "$libc" in
5702 '') libc=unknown
5703         case "$libs" in
5704         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5705         esac
5706         ;;
5707 esac
5708 case "$libs" in
5709 '') ;;
5710 *)  for thislib in $libs; do
5711         case "$thislib" in
5712         -lc|-lc_s)
5713                 : Handle C library specially below.
5714                 ;;
5715         -l*)
5716                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5717                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5718                         :
5719                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5720                         :
5721                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5722                         :
5723                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5724                         :
5725                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5726                         :
5727                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5728                         :
5729                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5730                         :
5731                 else
5732                         try=''
5733                 fi
5734                 libnames="$libnames $try"
5735                 ;;
5736         *) libnames="$libnames $thislib" ;;
5737         esac
5738         done
5739         ;;
5740 esac
5741 xxx=normal
5742 case "$libc" in
5743 unknown)
5744         set /lib/libc.$so
5745         for xxx in $libpth; do
5746                 $test -r $1 || set $xxx/libc.$so
5747                 : The messy sed command sorts on library version numbers.
5748                 $test -r $1 || \
5749                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5750                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5751                                 h
5752                                 s/[0-9][0-9]*/0000&/g
5753                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5754                                 G
5755                                 s/\n/ /' | \
5756                          $sort | $sed -e 's/^.* //'`
5757                 eval set \$$#
5758         done
5759         $test -r $1 || set /usr/ccs/lib/libc.$so
5760         $test -r $1 || set /lib/libsys_s$_a
5761         ;;
5762 *)
5763         set blurfl
5764         ;;
5765 esac
5766 if $test -r "$1"; then
5767         echo "Your (shared) C library seems to be in $1."
5768         libc="$1"
5769 elif $test -r /lib/libc && $test -r /lib/clib; then
5770         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5771         xxx=apollo
5772         libc='/lib/clib /lib/libc'
5773         if $test -r /lib/syslib; then
5774                 echo "(Your math library is in /lib/syslib.)"
5775                 libc="$libc /lib/syslib"
5776         fi
5777 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5778         echo "Your C library seems to be in $libc, as you said before."
5779 elif $test -r $incpath/usr/lib/libc$_a; then
5780         libc=$incpath/usr/lib/libc$_a;
5781         echo "Your C library seems to be in $libc.  That's fine."
5782 elif $test -r /lib/libc$_a; then
5783         libc=/lib/libc$_a;
5784         echo "Your C library seems to be in $libc.  You're normal."
5785 else
5786         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5787                 :
5788         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5789                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5790         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5791                 :
5792         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5793                 :
5794         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5795                 :
5796         else
5797                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5798         fi
5799         if $test -r "$tans"; then
5800                 echo "Your C library seems to be in $tans, of all places."
5801                 libc=$tans
5802         else
5803                 libc='blurfl'
5804         fi
5805 fi
5806 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5807         dflt="$libc"
5808         cat <<EOM
5809
5810 If the guess above is wrong (which it might be if you're using a strange
5811 compiler, or your machine supports multiple models), you can override it here.
5812
5813 EOM
5814 else
5815         dflt=''
5816         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5817         cat >&4 <<EOM
5818 I can't seem to find your C library.  I've looked in the following places:
5819
5820 EOM
5821         $sed 's/^/      /' libpath
5822         cat <<EOM
5823
5824 None of these seems to contain your C library. I need to get its name...
5825
5826 EOM
5827 fi
5828 fn=f
5829 rp='Where is your C library?'
5830 . ./getfile
5831 libc="$ans"
5832
5833 echo " "
5834 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5835 set X `cat libnames`
5836 shift
5837 xxx=files
5838 case $# in 1) xxx=file; esac
5839 echo "Extracting names from the following $xxx for later perusal:" >&4
5840 echo " "
5841 $sed 's/^/      /' libnames >&4
5842 echo " "
5843 $echo $n "This may take a while...$c" >&4
5844
5845 for file in $*; do
5846         case $file in
5847         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5848         *) $nm $nm_opt $file 2>/dev/null;;
5849         esac
5850 done >libc.tmp
5851
5852 $echo $n ".$c"
5853 $grep fprintf libc.tmp > libc.ptf
5854 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5855 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
5856 xxx='[ADTSIW]'
5857 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5858         eval $xscan;\
5859         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5860                 eval $xrun
5861 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5862         eval $xscan;\
5863         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5864                 eval $xrun
5865 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5866         eval $xscan;\
5867         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5868                 eval $xrun
5869 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5870         eval $xscan;\
5871         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5872                 eval $xrun
5873 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5874         eval $xscan;\
5875         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5876                 eval $xrun
5877 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5878         eval $xscan;\
5879         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5880                 eval $xrun
5881 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5882                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5883         eval $xscan;\
5884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5885                 eval $xrun
5886 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5887         eval $xscan;\
5888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5889                 eval $xrun
5890 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5891         eval $xscan;\
5892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5893                 eval $xrun
5894 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5895         eval $xscan;\
5896         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5897                 eval $xrun
5898 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5899         eval $xscan;\
5900         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5901                 eval $xrun
5902 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5903         eval $xscan;\
5904         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5905                 eval $xrun
5906 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5907         eval $xscan;\
5908         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5909                 eval $xrun
5910 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5911         eval $xscan;\
5912         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5913                 eval $xrun
5914 else
5915         $nm -p $* 2>/dev/null >libc.tmp
5916         $grep fprintf libc.tmp > libc.ptf
5917         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5918                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5919         then
5920                 nm_opt='-p'
5921                 eval $xrun
5922         else
5923                 echo " "
5924                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5925                 com=''
5926                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5927                         for thisname in $libnames $libc; do
5928                                 $ar t $thisname >>libc.tmp
5929                         done
5930                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5931                         echo "Ok." >&4
5932                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5933                         # Repeat libc to extract forwarders to DLL entries too
5934                         for thisname in $libnames $libc; do
5935                                 $ar tv $thisname >>libc.tmp
5936                                 # Revision 50 of EMX has bug in $ar.
5937                                 # it will not extract forwarders to DLL entries
5938                                 # Use emximp which will extract exactly them.
5939                                 emximp -o tmp.imp $thisname \
5940                                     2>/dev/null && \
5941                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5942                                     < tmp.imp >>libc.tmp
5943                                 $rm tmp.imp
5944                         done
5945                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5946                         echo "Ok." >&4
5947                 else
5948                         echo "$ar didn't seem to work right." >&4
5949                         echo "Maybe this is a Cray...trying bld instead..." >&4
5950                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5951                         then
5952                                 for thisname in $libnames; do
5953                                         bld t $libnames | \
5954                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5955                                         $ar t $thisname >>libc.tmp
5956                                 done
5957                                 echo "Ok." >&4
5958                         else
5959                                 echo "That didn't work either.  Giving up." >&4
5960                                 exit 1
5961                         fi
5962                 fi
5963         fi
5964 fi
5965 nm_extract="$com"
5966 case "$PASE" in
5967 define)
5968     echo " "
5969     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
5970     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
5971     ;;
5972 *)  if $test -f /lib/syscalls.exp; then
5973         echo " "
5974         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5975         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5976     fi
5977     ;;
5978 esac
5979 ;;
5980 esac
5981 $rm -f libnames libpath
5982
5983 : is a C symbol defined?
5984 csym='tlook=$1;
5985 case "$3" in
5986 -v) tf=libc.tmp; tc=""; tdc="";;
5987 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5988 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5989 esac;
5990 tx=yes;
5991 case "$reuseval-$4" in
5992 true-) ;;
5993 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5994 esac;
5995 case "$tx" in
5996 yes)
5997         case "$runnm" in
5998         true)
5999                 if $contains $tlook $tf >/dev/null 2>&1;
6000                 then tval=true;
6001                 else tval=false;
6002                 fi;;
6003         *)
6004                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6005                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
6006                 then tval=true;
6007                 else tval=false;
6008                 fi;
6009                 $rm -f t t.c;;
6010         esac;;
6011 *)
6012         case "$tval" in
6013         $define) tval=true;;
6014         *) tval=false;;
6015         esac;;
6016 esac;
6017 eval "$2=$tval"'
6018
6019 : define an is-in-libc? function
6020 inlibc='echo " "; td=$define; tu=$undef;
6021 sym=$1; var=$2; eval "was=\$$2";
6022 tx=yes;
6023 case "$reuseval$was" in
6024 true) ;;
6025 true*) tx=no;;
6026 esac;
6027 case "$tx" in
6028 yes)
6029         set $sym tres -f;
6030         eval $csym;
6031         case "$tres" in
6032         true)
6033                 echo "$sym() found." >&4;
6034                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6035         *)
6036                 echo "$sym() NOT found." >&4;
6037                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6038         esac;;
6039 *)
6040         case "$was" in
6041         $define) echo "$sym() found." >&4;;
6042         *) echo "$sym() NOT found." >&4;;
6043         esac;;
6044 esac'
6045
6046 : see if sqrtl exists
6047 set sqrtl d_sqrtl
6048 eval $inlibc
6049
6050 hasproto='varname=$1; func=$2; shift; shift;
6051 while $test $# -ge 2; do
6052         case "$1" in
6053         $define) echo "#include <$2>";;
6054         esac ;
6055     shift 2;
6056 done > try.c;
6057 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
6058 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
6059         echo "$func() prototype found.";
6060         val="$define";
6061 else
6062         echo "$func() prototype NOT found.";
6063         val="$undef";
6064 fi;
6065 set $varname;
6066 eval $setvar;
6067 $rm -f try.c tryout.c'
6068
6069 echo " "
6070
6071 if $test X"$d_longdbl" = X"$define"; then
6072
6073 echo "Checking how to print long doubles..." >&4
6074
6075 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
6076         $cat >try.c <<'EOCP'
6077 #include <sys/types.h>
6078 #include <stdio.h>
6079 int main() {
6080   double d = 123.456;
6081   printf("%.3f\n", d);
6082 }
6083 EOCP
6084         set try
6085         if eval $compile; then
6086                 yyy=`$run ./try`
6087                 case "$yyy" in
6088                 123.456)
6089                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
6090                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
6091                         echo "We will use %f."
6092                         ;;
6093                 esac
6094         fi
6095 fi
6096
6097 if $test X"$sPRIfldbl" = X; then
6098         $cat >try.c <<'EOCP'
6099 #include <sys/types.h>
6100 #include <stdio.h>
6101 int main() {
6102   long double d = 123.456;
6103   printf("%.3Lf\n", d);
6104 }
6105 EOCP
6106         set try
6107         if eval $compile; then
6108                 yyy=`$run ./try`
6109                 case "$yyy" in
6110                 123.456)
6111                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
6112                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
6113                         echo "We will use %Lf."
6114                         ;;
6115                 esac
6116         fi
6117 fi
6118
6119 if $test X"$sPRIfldbl" = X; then
6120         $cat >try.c <<'EOCP'
6121 #include <sys/types.h>
6122 #include <stdio.h>
6123 int main() {
6124   long double d = 123.456;
6125   printf("%.3llf\n", d);
6126 }
6127 EOCP
6128         set try
6129         if eval $compile; then
6130                 yyy=`$run ./try`
6131                 case "$yyy" in
6132                 123.456)
6133                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6134                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6135                         echo "We will use %llf."
6136                         ;;
6137                 esac
6138         fi
6139 fi
6140
6141 if $test X"$sPRIfldbl" = X; then
6142         $cat >try.c <<'EOCP'
6143 #include <sys/types.h>
6144 #include <stdio.h>
6145 int main() {
6146   long double d = 123.456;
6147   printf("%.3lf\n", d);
6148 }
6149 EOCP
6150         set try
6151         if eval $compile; then
6152                 yyy=`$run ./try`
6153                 case "$yyy" in
6154                 123.456)
6155                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6156                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6157                         echo "We will use %lf."
6158                         ;;
6159                 esac
6160         fi
6161 fi
6162
6163 if $test X"$sPRIfldbl" = X; then
6164         echo "Cannot figure out how to print long doubles." >&4
6165 else
6166         sSCNfldbl=$sPRIfldbl    # expect consistency
6167 fi
6168
6169 $rm -f try try.*
6170
6171 fi # d_longdbl
6172
6173 case "$sPRIfldbl" in
6174 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
6175         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
6176         d_SCNfldbl="$undef";
6177         ;;
6178 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
6179         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
6180         d_SCNfldbl="$define";
6181         ;;
6182 esac
6183
6184 : see if modfl exists
6185 set modfl d_modfl
6186 eval $inlibc
6187
6188 : see if prototype for modfl is available
6189 echo " "
6190 set d_modflproto modfl math.h
6191 eval $hasproto
6192
6193 d_modfl_pow32_bug="$undef"
6194
6195 case "$d_longdbl$d_modfl" in
6196 $define$define)
6197         $cat <<EOM
6198 Checking to see whether your modfl() is okay for large values...
6199 EOM
6200 $cat >try.c <<EOCP
6201 #include <math.h> 
6202 #include <stdio.h>
6203 EOCP
6204 if $test "X$d_modflproto" != "X$define"; then
6205         $cat >>try.c <<EOCP
6206 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
6207 long double modfl (long double, long double *);
6208 EOCP
6209 fi
6210 $cat >>try.c <<EOCP
6211 int main() {
6212     long double nv = 4294967303.15;
6213     long double v, w;
6214     v = modfl(nv, &w);         
6215 #ifdef __GLIBC__
6216     printf("glibc");
6217 #endif
6218     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6219     return 0;
6220 }
6221 EOCP
6222         case "$osname:$gccversion" in
6223         aix:)   saveccflags="$ccflags"
6224                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6225         esac
6226         set try
6227         if eval $compile; then
6228                 foo=`$run ./try`
6229                 case "$foo" in
6230                 *" 4294967303.150000 1.150000 4294967302.000000")
6231                         echo >&4 "Your modfl() is broken for large values."
6232                         d_modfl_pow32_bug="$define"
6233                         case "$foo" in
6234                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6235                         ;;
6236                         esac
6237                         ;;
6238                 *" 4294967303.150000 0.150000 4294967303.000000")
6239                         echo >&4 "Your modfl() seems okay for large values."
6240                         ;;
6241                 *)      echo >&4 "I don't understand your modfl() at all."
6242                         d_modfl="$undef"
6243                         ;;
6244                 esac
6245                 $rm -f try.* try core core.try.*
6246         else
6247                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6248                 d_modfl="$undef"
6249         fi
6250         case "$osname:$gccversion" in
6251         aix:)   ccflags="$saveccflags" ;; # restore
6252         esac
6253         ;;
6254 esac
6255
6256 : see if aintl exists
6257 set aintl d_aintl
6258 eval $inlibc
6259
6260 : see if copysignl exists
6261 set copysignl d_copysignl
6262 eval $inlibc
6263
6264 : determine the architecture name
6265 echo " "
6266 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6267         tarch=`arch`"-$osname"
6268 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6269         if uname -m > tmparch 2>&1 ; then
6270                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6271                         -e 's/$/'"-$osname/" tmparch`
6272         else
6273                 tarch="$osname"
6274         fi
6275         $rm -f tmparch
6276 else
6277         tarch="$osname"
6278 fi
6279 case "$myarchname" in
6280 ''|"$tarch") ;;
6281 *)
6282         echo "(Your architecture name used to be $myarchname.)"
6283         archname=''
6284         ;;
6285 esac
6286 case "$targetarch" in
6287 '') ;;
6288 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6289 esac
6290 myarchname="$tarch"
6291 case "$archname" in
6292 '') dflt="$tarch";;
6293 *) dflt="$archname";;
6294 esac
6295 rp='What is your architecture name'
6296 . ./myread
6297 archname="$ans"
6298 case "$usethreads" in
6299 $define)
6300         echo "Threads selected." >&4
6301         case "$archname" in
6302         *-thread*) echo "...and architecture name already has -thread." >&4
6303                 ;;
6304         *)      archname="$archname-thread"
6305                 echo "...setting architecture name to $archname." >&4
6306                 ;;
6307         esac
6308         ;;
6309 esac
6310 case "$usemultiplicity" in
6311 $define)
6312         echo "Multiplicity selected." >&4
6313         case "$archname" in
6314         *-multi*) echo "...and architecture name already has -multi." >&4
6315                 ;;
6316         *)      archname="$archname-multi"
6317                 echo "...setting architecture name to $archname." >&4
6318                 ;;
6319         esac
6320         ;;
6321 esac
6322 case "$use64bitint$use64bitall" in
6323 *"$define"*)
6324         case "$archname64" in
6325         '')
6326                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6327                 ;;
6328         *)
6329                 case "$use64bitint" in
6330                 "$define") echo "64 bit integers selected." >&4 ;;
6331                 esac
6332                 case "$use64bitall" in
6333                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6334                 esac
6335                 case "$archname" in
6336                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6337                         ;;
6338                 *)      archname="$archname-$archname64"
6339                         echo "...setting architecture name to $archname." >&4
6340                         ;;
6341                 esac
6342                 ;;
6343         esac
6344 esac
6345 case "$uselongdouble" in
6346 $define)
6347         echo "Long doubles selected." >&4
6348         case "$longdblsize" in
6349         $doublesize)
6350                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6351                 ;;
6352         *)
6353                 case "$archname" in
6354                 *-ld*) echo "...and architecture name already has -ld." >&4
6355                         ;;
6356                 *)      archname="$archname-ld"
6357                         echo "...setting architecture name to $archname." >&4
6358                         ;;
6359                 esac
6360                 ;;
6361         esac
6362         ;;
6363 esac
6364 case "$useperlio" in
6365 $define)
6366         echo "Perlio selected." >&4
6367         ;;
6368 *)
6369         echo "Perlio not selected, using stdio." >&4
6370         case "$archname" in
6371         *-stdio*) echo "...and architecture name already has -stdio." >&4
6372                 ;;
6373         *)      archname="$archname-stdio"
6374                 echo "...setting architecture name to $archname." >&4
6375                 ;;
6376         esac
6377         ;;
6378 esac
6379
6380 : determine root of directory hierarchy where package will be installed.
6381 case "$prefix" in
6382 '')
6383         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6384         ;;
6385 *?/)
6386         dflt=`echo "$prefix" | sed 's/.$//'`
6387         ;;
6388 *)
6389         dflt="$prefix"
6390         ;;
6391 esac
6392 $cat <<EOM
6393
6394 By default, $package will be installed in $dflt/bin, manual pages
6395 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6396 installation directories. Typically this is something like /usr/local.
6397 If you wish to have binaries under /usr/bin but other parts of the
6398 installation under /usr/local, that's ok: you will be prompted
6399 separately for each of the installation directories, the prefix being
6400 only used to set the defaults.
6401
6402 EOM
6403 fn=d~
6404 rp='Installation prefix to use?'
6405 . ./getfile
6406 oldprefix=''
6407 case "$prefix" in
6408 '') ;;
6409 *)
6410         case "$ans" in
6411         "$prefix") ;;
6412         *) oldprefix="$prefix";;
6413         esac
6414         ;;
6415 esac
6416 prefix="$ans"
6417 prefixexp="$ansexp"
6418
6419 case "$afsroot" in
6420 '')     afsroot=/afs ;;
6421 *)      afsroot=$afsroot ;;
6422 esac
6423
6424 : is AFS running?
6425 echo " "
6426 case "$afs" in
6427 $define|true)   afs=true ;;
6428 $undef|false)   afs=false ;;
6429 *)      if test -d $afsroot; then
6430                 afs=true
6431         else
6432                 afs=false
6433         fi
6434         ;;
6435 esac
6436 if $afs; then
6437         echo "AFS may be running... I'll be extra cautious then..." >&4
6438 else
6439         echo "AFS does not seem to be running..." >&4
6440 fi
6441
6442 : determine installation prefix for where package is to be installed.
6443 if $afs; then 
6444 $cat <<EOM
6445
6446 Since you are running AFS, I need to distinguish the directory in which
6447 files will reside from the directory in which they are installed (and from
6448 which they are presumably copied to the former directory by occult means).
6449
6450 EOM
6451         case "$installprefix" in
6452         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6453         *) dflt="$installprefix";;
6454         esac
6455 else
6456 $cat <<EOM
6457
6458 In some special cases, particularly when building $package for distribution,
6459 it is convenient to distinguish the directory in which files should be
6460 installed from the directory ($prefix) in which they will
6461 eventually reside.  For most users, these two directories are the same.
6462
6463 EOM
6464         case "$installprefix" in
6465         '') dflt=$prefix ;;
6466         *) dflt=$installprefix;;
6467         esac
6468 fi
6469 fn=d~
6470 rp='What installation prefix should I use for installing files?'
6471 . ./getfile
6472 installprefix="$ans"
6473 installprefixexp="$ansexp"
6474
6475 : set the prefixit variable, to compute a suitable default value
6476 prefixit='case "$3" in
6477 ""|none)
6478         case "$oldprefix" in
6479         "") eval "$1=\"\$$2\"";;
6480         *)
6481                 case "$3" in
6482                 "") eval "$1=";;
6483                 none)
6484                         eval "tp=\"\$$2\"";
6485                         case "$tp" in
6486                         ""|" ") eval "$1=\"\$$2\"";;
6487                         *) eval "$1=";;
6488                         esac;;
6489                 esac;;
6490         esac;;
6491 *)
6492         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6493         case "$tp" in
6494         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6495         /*-$oldprefix/*|\~*-$oldprefix/*)
6496                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6497         *) eval "$1=\"\$$2\"";;
6498         esac;;
6499 esac'
6500
6501 : get the patchlevel
6502 echo " "
6503 echo "Getting the current patchlevel..." >&4
6504 if $test -r $rsrc/patchlevel.h;then
6505         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6506         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6507         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6508         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6509         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6510         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6511        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6512 else
6513         revision=0
6514         patchlevel=0
6515         subversion=0
6516         api_revision=0
6517         api_version=0
6518         api_subversion=0
6519         perl_patchlevel=0
6520         $echo "(You do not have patchlevel.h.  Eek.)"
6521 fi
6522 if $test -r $rsrc/.patch ; then  
6523         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6524                 perl_patchlevel=`cat $rsrc/.patch`
6525         fi
6526 fi
6527 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6528 version_patchlevel_string="version $patchlevel subversion $subversion"
6529 case "$perl_patchlevel" in
6530 0|'') ;;
6531 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6532 esac
6533
6534 $echo "(You have $package $version_patchlevel_string.)"
6535
6536 case "$osname" in
6537 dos|vms)
6538         : XXX Should be a Configure test for double-dots in filenames.
6539         version=`echo $revision $patchlevel $subversion | \
6540                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6541         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6542                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6543         ;;
6544 *)
6545         version=`echo $revision $patchlevel $subversion | \
6546                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6547         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6548                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6549         ;;
6550 esac
6551 : Special case the 5.005_xx maintenance series, which used 5.005
6552 : without any subversion label as a subdirectory in $sitelib
6553 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6554         api_versionstring='5.005'
6555 fi
6556
6557 : determine installation style
6558 : For now, try to deduce it from prefix unless it is already set.
6559 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6560 case "$installstyle" in
6561 '')     case "$prefix" in
6562                 *perl*) dflt='lib';;
6563                 *) dflt='lib/perl5' ;;
6564         esac
6565         ;;
6566 *)      dflt="$installstyle" ;;
6567 esac
6568 : Probably not worth prompting for this since we prompt for all
6569 : the directories individually, and the prompt would be too long and
6570 : confusing anyway.
6571 installstyle=$dflt
6572
6573 : determine where private library files go
6574 : Usual default is /usr/local/lib/perl5/$version.
6575 : Also allow things like /opt/perl/lib/$version, since 
6576 : /opt/perl/lib/perl5... would be redundant.
6577 : The default "style" setting is made in installstyle.U
6578 case "$installstyle" in
6579 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6580 *)       set dflt privlib lib/$version ;;
6581 esac
6582 eval $prefixit
6583 $cat <<EOM
6584
6585 There are some auxiliary files for $package that need to be put into a
6586 private library directory that is accessible by everyone.
6587
6588 EOM
6589 fn=d~+
6590 rp='Pathname where the private library files will reside?'
6591 . ./getfile
6592 privlib="$ans"
6593 privlibexp="$ansexp"
6594 : Change installation prefix, if necessary.
6595 if $test X"$prefix" != X"$installprefix"; then
6596         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6597 else
6598         installprivlib="$privlibexp"
6599 fi
6600
6601 : set the prefixup variable, to restore leading tilda escape
6602 prefixup='case "$prefixexp" in
6603 "$prefix") ;;
6604 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6605 esac'
6606
6607 : determine where public architecture dependent libraries go
6608 set archlib archlib
6609 eval $prefixit
6610 : privlib default is /usr/local/lib/$package/$version
6611 : archlib default is /usr/local/lib/$package/$version/$archname
6612 : privlib may have an optional trailing /share.
6613 tdflt=`echo $privlib | $sed 's,/share$,,'`
6614 tdflt=$tdflt/$archname
6615 case "$archlib" in
6616 '')     dflt=$tdflt
6617         ;;
6618 *)      dflt="$archlib"
6619     ;;
6620 esac
6621 $cat <<EOM
6622
6623 $spackage contains architecture-dependent library files.  If you are
6624 sharing libraries in a heterogeneous environment, you might store
6625 these files in a separate location.  Otherwise, you can just include
6626 them with the rest of the public library files.
6627
6628 EOM
6629 fn=d+~
6630 rp='Where do you want to put the public architecture-dependent libraries?'
6631 . ./getfile
6632 archlib="$ans"
6633 archlibexp="$ansexp"
6634 if $test X"$archlib" = X"$privlib"; then
6635         d_archlib="$undef"
6636 else
6637         d_archlib="$define"
6638 fi
6639 : Change installation prefix, if necessary.
6640 if $test X"$prefix" != X"$installprefix"; then
6641         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6642 else
6643         installarchlib="$archlibexp"
6644 fi
6645
6646 : see if setuid scripts can be secure
6647 $cat <<EOM
6648
6649 Some kernels have a bug that prevents setuid #! scripts from being
6650 secure.  Some sites have disabled setuid #! scripts because of this.
6651
6652 First let's decide if your kernel supports secure setuid #! scripts.
6653 (If setuid #! scripts would be secure but have been disabled anyway,
6654 don't say that they are secure if asked.)
6655
6656 EOM
6657
6658 val="$undef"
6659 if $test -d /dev/fd; then
6660         echo "#!$ls" >reflect
6661         chmod +x,u+s reflect
6662         ./reflect >flect 2>&1
6663         if $contains "/dev/fd" flect >/dev/null; then
6664                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6665                 val="$define"
6666         else
6667                 $cat <<EOM
6668 If you are not sure if they are secure, I can check but I'll need a
6669 username and password different from the one you are using right now.
6670 If you don't have such a username or don't want me to test, simply
6671 enter 'none'.
6672
6673 EOM
6674                 rp='Other username to test security of setuid scripts with?'
6675                 dflt='none'
6676                 . ./myread
6677                 case "$ans" in
6678                 n|none)
6679                         case "$d_suidsafe" in
6680                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6681                                 dflt=n;;
6682                         "$undef")
6683                                 echo "Well, the $hint value is *not* secure." >&4
6684                                 dflt=n;;
6685                         *)      echo "Well, the $hint value *is* secure." >&4
6686                                 dflt=y;;
6687                         esac
6688                         ;;
6689                 *)
6690                         $rm -f reflect flect
6691                         echo "#!$ls" >reflect
6692                         chmod +x,u+s reflect
6693                         echo >flect
6694                         chmod a+w flect
6695                         echo '"su" will (probably) prompt you for '"$ans's password."
6696                         su $ans -c './reflect >flect'
6697                         if $contains "/dev/fd" flect >/dev/null; then
6698                                 echo "Okay, it looks like setuid scripts are secure." >&4
6699                                 dflt=y
6700                         else
6701                                 echo "I don't think setuid scripts are secure." >&4
6702                                 dflt=n
6703                         fi
6704                         ;;
6705                 esac
6706                 rp='Does your kernel have *secure* setuid scripts?'
6707                 . ./myread
6708                 case "$ans" in
6709                 [yY]*)  val="$define";;
6710                 *)      val="$undef";;
6711                 esac
6712         fi
6713 else
6714         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6715         echo "(That's for file descriptors, not floppy disks.)"
6716         val="$undef"
6717 fi
6718 set d_suidsafe
6719 eval $setvar
6720
6721 $rm -f reflect flect
6722
6723 : now see if they want to do setuid emulation
6724 echo " "
6725 val="$undef"
6726 case "$d_suidsafe" in
6727 "$define")
6728         val="$undef"
6729         echo "No need to emulate SUID scripts since they are secure here." >&4
6730         ;;
6731 *)
6732         $cat <<EOM
6733 Some systems have disabled setuid scripts, especially systems where
6734 setuid scripts cannot be secure.  On systems where setuid scripts have
6735 been disabled, the setuid/setgid bits on scripts are currently
6736 useless.  It is possible for $package to detect those bits and emulate
6737 setuid/setgid in a secure fashion.  This emulation will only work if
6738 setuid scripts have been disabled in your kernel.
6739
6740 EOM
6741         case "$d_dosuid" in
6742         "$define") dflt=y ;;
6743         *) dflt=n ;;
6744         esac
6745         rp="Do you want to do setuid/setgid emulation?"
6746         . ./myread
6747         case "$ans" in
6748         [yY]*)  val="$define";;
6749         *)      val="$undef";;
6750         esac
6751         ;;
6752 esac
6753 set d_dosuid
6754 eval $setvar
6755
6756 : see if this is a malloc.h system
6757 : we want a real compile instead of Inhdr because some systems have a
6758 : malloc.h that just gives a compile error saying to use stdlib.h instead
6759 echo " "
6760 $cat >try.c <<EOCP
6761 #include <stdlib.h>
6762 #include <malloc.h>
6763 int main () { return 0; }
6764 EOCP
6765 set try
6766 if eval $compile; then
6767     echo "<malloc.h> found." >&4
6768     val="$define"
6769 else
6770     echo "<malloc.h> NOT found." >&4
6771     val="$undef"
6772 fi
6773 $rm -f try.c try
6774 set i_malloc
6775 eval $setvar
6776
6777 : check for void type
6778 echo " "
6779 echo "Checking to see how well your C compiler groks the void type..." >&4
6780 case "$voidflags" in
6781 '')
6782         $cat >try.c <<EOCP
6783 #$i_stdlib I_STDLIB
6784 #ifdef I_STDLIB
6785 #include <stdlib.h>
6786 #endif
6787 #if TRY & 1
6788 void sub() {
6789 #else
6790 sub() {
6791 #endif
6792         extern void moo();      /* function returning void */
6793         void (*goo)();          /* ptr to func returning void */
6794 #if TRY & 8
6795         void *hue;              /* generic ptr */
6796 #endif
6797 #if TRY & 2
6798         void (*foo[10])();
6799 #endif
6800
6801 #if TRY & 4
6802         if(goo == moo) {
6803                 exit(0);
6804         }
6805 #endif
6806         exit(0);
6807 }
6808 int main() { sub(); }
6809 EOCP
6810         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6811                 voidflags=$defvoidused
6812         echo "Good.  It appears to support void to the level $package wants.">&4
6813                 if $contains warning .out >/dev/null 2>&1; then
6814                         echo "However, you might get some warnings that look like this:"
6815                         $cat .out
6816                 fi
6817         else
6818 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6819                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6820                         echo "It supports 1..."
6821                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6822                                 echo "It also supports 2..."
6823                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6824                                         voidflags=7
6825                                         echo "And it supports 4 but not 8 definitely."
6826                                 else
6827                                         echo "It doesn't support 4..."
6828                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6829                                                 voidflags=11
6830                                                 echo "But it supports 8."
6831                                         else
6832                                                 voidflags=3
6833                                                 echo "Neither does it support 8."
6834                                         fi
6835                                 fi
6836                         else
6837                                 echo "It does not support 2..."
6838                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6839                                         voidflags=13
6840                                         echo "But it supports 4 and 8."
6841                                 else
6842                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6843                                                 voidflags=5
6844                                                 echo "And it supports 4 but has not heard about 8."
6845                                         else
6846                                                 echo "However it supports 8 but not 4."
6847                                         fi
6848                                 fi
6849                         fi
6850                 else
6851                         echo "There is no support at all for void."
6852                         voidflags=0
6853                 fi
6854         fi
6855 esac
6856 case "$voidflags" in
6857 "$defvoidused") ;;
6858 *)      $cat >&4 <<'EOM'
6859   Support flag bits are:
6860     1: basic void declarations.
6861     2: arrays of pointers to functions returning void.
6862     4: operations between pointers to and addresses of void functions.
6863     8: generic void pointers.
6864 EOM
6865         dflt="$voidflags";
6866         rp="Your void support flags add up to what?"
6867         . ./myread
6868         voidflags="$ans"
6869         ;;
6870 esac
6871 $rm -f try.* .out
6872
6873 : check for length of pointer
6874 echo " "
6875 case "$ptrsize" in
6876 '')
6877         echo "Checking to see how big your pointers are..." >&4
6878         if test "$voidflags" -gt 7; then
6879                 echo '#define VOID_PTR char *' > try.c
6880         else
6881                 echo '#define VOID_PTR void *' > try.c
6882         fi
6883         $cat >>try.c <<EOCP
6884 #include <stdio.h>
6885 #$i_stdlib I_STDLIB
6886 #ifdef I_STDLIB
6887 #include <stdlib.h>
6888 #endif
6889 int main()
6890 {
6891     printf("%d\n", (int)sizeof(VOID_PTR));
6892     exit(0);
6893 }
6894 EOCP
6895         set try
6896         if eval $compile_ok; then
6897                 ptrsize=`$run ./try`
6898                 echo "Your pointers are $ptrsize bytes long."
6899         else
6900                 dflt='4'
6901                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6902                 rp="What is the size of a pointer (in bytes)?"
6903                 . ./myread
6904                 ptrsize="$ans"
6905         fi
6906         ;;
6907 esac
6908 $rm -f try.c try
6909 case "$use64bitall" in
6910 "$define"|true|[yY]*)
6911         case "$ptrsize" in
6912         4)      cat <<EOM >&4
6913
6914 *** You have chosen a maximally 64-bit build, but your pointers
6915 *** are only 4 bytes wide, disabling maximal 64-bitness.
6916
6917 EOM
6918                 use64bitall="$undef"
6919                 case "$use64bitint" in
6920                 "$define"|true|[yY]*) ;;
6921                 *)      cat <<EOM >&4
6922
6923 *** Downgrading from maximal 64-bitness to using 64-bit integers.
6924
6925 EOM
6926                         use64bitint="$define"
6927                         ;;
6928                 esac
6929                 ;;
6930         esac
6931         ;;
6932 esac
6933
6934
6935 : determine which malloc to compile in
6936 echo " "
6937 case "$usemymalloc" in
6938 [yY]*|true|$define)     dflt='y' ;;
6939 [nN]*|false|$undef)     dflt='n' ;;
6940 *)      case "$ptrsize" in
6941         4) dflt='y' ;;
6942         *) dflt='n' ;;
6943         esac
6944         ;;
6945 esac
6946 rp="Do you wish to attempt to use the malloc that comes with $package?"
6947 . ./myread
6948 usemymalloc="$ans"
6949 case "$ans" in
6950 y*|true)
6951         usemymalloc='y'
6952         mallocsrc='malloc.c'
6953         mallocobj="malloc$_o"
6954         d_mymalloc="$define"
6955         case "$libs" in
6956         *-lmalloc*)
6957                 : Remove malloc from list of libraries to use
6958                 echo "Removing unneeded -lmalloc from library list" >&4
6959                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6960                 shift
6961                 libs="$*"
6962                 echo "libs = $libs" >&4
6963                 ;;
6964         esac
6965         ;;
6966 *)
6967         usemymalloc='n'
6968         mallocsrc=''
6969         mallocobj=''
6970         d_mymalloc="$undef"
6971         ;;
6972 esac
6973
6974 : compute the return types of malloc and free
6975 echo " "
6976 $cat >malloc.c <<END
6977 #$i_malloc I_MALLOC
6978 #$i_stdlib I_STDLIB
6979 #include <stdio.h>
6980 #include <sys/types.h>
6981 #ifdef I_MALLOC
6982 #include <malloc.h>
6983 #endif
6984 #ifdef I_STDLIB
6985 #include <stdlib.h>
6986 #endif
6987 #ifdef TRY_MALLOC
6988 void *malloc();
6989 #endif
6990 #ifdef TRY_FREE
6991 void free();
6992 #endif
6993 END
6994 case "$malloctype" in
6995 '')
6996         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6997                 malloctype='void *'
6998         else
6999                 malloctype='char *'
7000         fi
7001         ;;
7002 esac
7003 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
7004
7005 case "$freetype" in
7006 '')
7007         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
7008                 freetype='void'
7009         else
7010                 freetype='int'
7011         fi
7012         ;;
7013 esac
7014 echo "Your system uses $freetype free(), it would seem." >&4
7015 $rm -f malloc.[co]
7016 $cat <<EOM
7017
7018 After $package is installed, you may wish to install various
7019 add-on modules and utilities.  Typically, these add-ons will
7020 be installed under $prefix with the rest
7021 of this package.  However, you may wish to install such add-ons
7022 elsewhere under a different prefix.
7023
7024 If you do not wish to put everything under a single prefix, that's
7025 ok.  You will be prompted for the individual locations; this siteprefix
7026 is only used to suggest the defaults.
7027
7028 The default should be fine for most people.
7029
7030 EOM
7031 fn=d~+
7032 rp='Installation prefix to use for add-on modules and utilities?'
7033 : XXX Here might be another good place for an installstyle setting.
7034 case "$siteprefix" in
7035 '') dflt=$prefix ;;
7036 *)  dflt=$siteprefix ;;
7037 esac
7038 . ./getfile
7039 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7040 oldsiteprefix=''
7041 case "$siteprefix" in
7042 '') ;;
7043 *)      case "$ans" in
7044         "$prefix") ;;
7045         *) oldsiteprefix="$prefix";;
7046         esac
7047         ;;
7048 esac
7049 siteprefix="$ans"
7050 siteprefixexp="$ansexp"
7051
7052 : determine where site specific libraries go.
7053 : Usual default is /usr/local/lib/perl5/site_perl/$version
7054 : The default "style" setting is made in installstyle.U
7055 : XXX No longer works with Prefixit stuff.
7056 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7057 case "$sitelib" in
7058 '') case "$installstyle" in
7059         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
7060         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
7061         esac
7062         ;;
7063 *)      dflt="$sitelib"
7064         ;;
7065 esac
7066 $cat <<EOM
7067
7068 The installation process will create a directory for
7069 site-specific extensions and modules.  Most users find it convenient
7070 to place all site-specific files in this directory rather than in the
7071 main distribution directory.
7072
7073 EOM
7074 fn=d~+
7075 rp='Pathname for the site-specific library files?'
7076 . ./getfile
7077 sitelib="$ans"
7078 sitelibexp="$ansexp"
7079 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
7080 : Change installation prefix, if necessary.
7081 if $test X"$prefix" != X"$installprefix"; then
7082         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
7083 else
7084         installsitelib="$sitelibexp"
7085 fi
7086
7087 : determine where site specific architecture-dependent libraries go.
7088 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7089 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7090 : sitelib may have an optional trailing /share.
7091 case "$sitearch" in
7092 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7093         dflt="$dflt/$archname"
7094         ;;
7095 *)      dflt="$sitearch"
7096         ;;
7097 esac
7098 set sitearch sitearch none
7099 eval $prefixit
7100 $cat <<EOM
7101
7102 The installation process will also create a directory for
7103 architecture-dependent site-specific extensions and modules.
7104
7105 EOM
7106 fn=d~+
7107 rp='Pathname for the site-specific architecture-dependent library files?'
7108 . ./getfile
7109 sitearch="$ans"
7110 sitearchexp="$ansexp"
7111 : Change installation prefix, if necessary.
7112 if $test X"$prefix" != X"$installprefix"; then
7113         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7114 else
7115         installsitearch="$sitearchexp"
7116 fi
7117
7118 $cat <<EOM
7119
7120 The installation process will also create a directory for
7121 vendor-supplied add-ons.  Vendors who supply perl with their system
7122 may find it convenient to place all vendor-supplied files in this
7123 directory rather than in the main distribution directory.  This will
7124 ease upgrades between binary-compatible maintenance versions of perl.
7125
7126 Of course you may also use these directories in whatever way you see
7127 fit.  For example, you might use them to access modules shared over a
7128 company-wide network.
7129
7130 The default answer should be fine for most people.
7131 This causes further questions about vendor add-ons to be skipped
7132 and no vendor-specific directories will be configured for perl.
7133
7134 EOM
7135 rp='Do you want to configure vendor-specific add-on directories?'
7136 case "$usevendorprefix" in
7137 define|true|[yY]*) dflt=y ;;
7138 *)      : User may have set vendorprefix directly on Configure command line.
7139         case "$vendorprefix" in
7140         ''|' ') dflt=n ;;
7141         *)      dflt=y ;;
7142         esac
7143         ;;
7144 esac
7145 . ./myread
7146 case "$ans" in
7147 [yY]*)  fn=d~+
7148         rp='Installation prefix to use for vendor-supplied add-ons?'
7149         case "$vendorprefix" in
7150         '') dflt='' ;;
7151         *)  dflt=$vendorprefix ;;
7152         esac
7153         . ./getfile
7154         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7155         oldvendorprefix=''
7156         case "$vendorprefix" in
7157         '') ;;
7158         *)      case "$ans" in
7159                 "$prefix") ;;
7160                 *) oldvendorprefix="$prefix";;
7161                 esac
7162                 ;;
7163         esac
7164         usevendorprefix="$define"
7165         vendorprefix="$ans"
7166         vendorprefixexp="$ansexp"
7167         ;;
7168 *)      usevendorprefix="$undef"
7169         vendorprefix=''
7170         vendorprefixexp=''
7171         ;;
7172 esac
7173
7174 case "$vendorprefix" in
7175 '')     d_vendorlib="$undef"
7176         vendorlib=''
7177         vendorlibexp=''
7178         ;;
7179 *)      d_vendorlib="$define"
7180         : determine where vendor-supplied modules go.
7181         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7182         case "$vendorlib" in
7183         '')
7184                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7185                 case "$installstyle" in
7186                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7187                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7188                 esac
7189                 ;;
7190         *)      dflt="$vendorlib"
7191                 ;;
7192         esac
7193         fn=d~+
7194         rp='Pathname for the vendor-supplied library files?'
7195         . ./getfile
7196         vendorlib="$ans"
7197         vendorlibexp="$ansexp"
7198         ;;
7199 esac
7200 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7201 : Change installation prefix, if necessary.
7202 if $test X"$prefix" != X"$installprefix"; then
7203         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7204 else
7205         installvendorlib="$vendorlibexp"
7206 fi
7207
7208 case "$vendorprefix" in
7209 '')     d_vendorarch="$undef"
7210         vendorarch=''
7211         vendorarchexp=''
7212         ;;
7213 *)      d_vendorarch="$define"
7214         : determine where vendor-supplied architecture-dependent libraries go.
7215         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
7216         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7217         : vendorlib may have an optional trailing /share.
7218         case "$vendorarch" in
7219         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
7220                 dflt="$dflt/$archname"
7221                 ;;
7222         *)      dflt="$vendorarch" ;;
7223         esac
7224         fn=d~+
7225         rp='Pathname for vendor-supplied architecture-dependent files?'
7226         . ./getfile
7227         vendorarch="$ans"
7228         vendorarchexp="$ansexp"
7229         ;;
7230 esac
7231 : Change installation prefix, if necessary.
7232 if $test X"$prefix" != X"$installprefix"; then
7233         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7234 else
7235         installvendorarch="$vendorarchexp"
7236 fi
7237
7238 : Final catch-all directories to search
7239 $cat <<EOM
7240
7241 Lastly, you can have perl look in other directories for extensions and
7242 modules in addition to those already specified.
7243 These directories will be searched after 
7244         $sitearch 
7245         $sitelib 
7246 EOM
7247 test X"$vendorlib" != "X" && echo '     ' $vendorlib
7248 test X"$vendorarch" != "X" && echo '    ' $vendorarch
7249 echo ' '
7250 case "$otherlibdirs" in
7251 ''|' ') dflt='none' ;;
7252 *)      dflt="$otherlibdirs" ;;
7253 esac
7254 $cat <<EOM
7255 Enter a colon-separated set of extra paths to include in perl's @INC
7256 search path, or enter 'none' for no extra paths.
7257
7258 EOM
7259
7260 rp='Colon-separated list of additional directories for perl to search?'
7261 . ./myread
7262 case "$ans" in
7263 ' '|''|none)    otherlibdirs=' ' ;;     
7264 *)      otherlibdirs="$ans" ;;
7265 esac
7266 case "$otherlibdirs" in
7267 ' ') val=$undef ;;
7268 *)      val=$define ;;
7269 esac
7270 set d_perl_otherlibdirs
7271 eval $setvar
7272
7273 : Cruising for prototypes
7274 echo " "
7275 echo "Checking out function prototypes..." >&4
7276 $cat >prototype.c <<EOCP
7277 #$i_stdlib I_STDLIB
7278 #ifdef I_STDLIB
7279 #include <stdlib.h>
7280 #endif
7281 int main(int argc, char *argv[]) {
7282         exit(0);}
7283 EOCP
7284 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7285         echo "Your C compiler appears to support function prototypes."
7286         val="$define"
7287 else
7288         echo "Your C compiler doesn't seem to understand function prototypes."
7289         val="$undef"
7290 fi
7291 set prototype
7292 eval $setvar
7293 $rm -f prototype*
7294
7295 case "$prototype" in
7296 "$define") ;;
7297 *)      ansi2knr='ansi2knr'
7298         echo " "
7299         cat <<EOM >&4
7300
7301 $me:  FATAL ERROR:
7302 This version of $package can only be compiled by a compiler that 
7303 understands function prototypes.  Unfortunately, your C compiler 
7304         $cc $ccflags
7305 doesn't seem to understand them.  Sorry about that.
7306
7307 If GNU cc is available for your system, perhaps you could try that instead.  
7308
7309 Eventually, we hope to support building Perl with pre-ANSI compilers.
7310 If you would like to help in that effort, please contact <perlbug@perl.org>.
7311
7312 Aborting Configure now.
7313 EOM
7314         exit 2
7315         ;;
7316 esac
7317
7318 : determine where public executables go
7319 echo " "
7320 set dflt bin bin
7321 eval $prefixit
7322 fn=d~
7323 rp='Pathname where the public executables will reside?'
7324 . ./getfile
7325 if $test "X$ansexp" != "X$binexp"; then
7326         installbin=''
7327 fi
7328 bin="$ans"
7329 binexp="$ansexp"
7330 : Change installation prefix, if necessary.
7331 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7332 if $test X"$prefix" != X"$installprefix"; then
7333         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7334 else
7335         installbin="$binexp"
7336 fi
7337
7338 echo " "
7339 case "$extras" in
7340 '') dflt='n';;
7341 *) dflt='y';;
7342 esac
7343 cat <<EOM
7344 Perl can be built with extra modules or bundles of modules which
7345 will be fetched from the CPAN and installed alongside Perl.
7346
7347 Notice that you will need access to the CPAN; either via the Internet,
7348 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
7349 be asked later to configure the CPAN.pm module which will in turn do
7350 the installation of the rest of the extra modules or bundles.)
7351
7352 Notice also that if the modules require any external software such as
7353 libraries and headers (the libz library and the zlib.h header for the
7354 Compress::Zlib module, for example) you MUST have any such software
7355 already installed, this configuration process will NOT install such
7356 things for you.
7357
7358 If this doesn't make any sense to you, just accept the default '$dflt'.
7359 EOM
7360 rp='Install any extra modules (y or n)?'
7361 . ./myread
7362 case "$ans" in
7363 y|Y)
7364         cat <<EOM
7365
7366 Please list any extra modules or bundles to be installed from CPAN,
7367 with spaces between the names.  The names can be in any format the
7368 'install' command of CPAN.pm will understand.  (Answer 'none',
7369 without the quotes, to install no extra modules or bundles.)
7370 EOM
7371         rp='Extras?'
7372         dflt="$extras"
7373         . ./myread
7374         extras="$ans"
7375 esac
7376 case "$extras" in
7377 ''|'none')
7378         val=''
7379         $rm -f ../extras.lst
7380         ;;
7381 *)      echo "(Saving the list of extras for later...)"
7382         echo "$extras" > ../extras.lst
7383         val="'$extras'"
7384         ;;
7385 esac
7386 set extras
7387 eval $setvar
7388 echo " "
7389
7390 : determine where html pages for programs go
7391 set html1dir html1dir none
7392 eval $prefixit
7393 $cat <<EOM
7394
7395 If you wish to install html files for programs in $spackage, indicate 
7396 the appropriate directory here.  To skip installing html files,
7397 answer "none".
7398 EOM
7399 case "$html1dir" in
7400 ''|none|$undef|' ') dflt=none ;;
7401 *) dflt=$html1dir ;;
7402 esac
7403 fn=dn+~
7404 rp="Directory for the main $spackage html pages?"
7405 . ./getfile
7406 html1dir="$ans"
7407 html1direxp="$ansexp"
7408 : Use ' ' for none so value is preserved next time through Configure
7409 $test X"$html1dir" = "X" && html1dir=' '
7410 : Change installation prefix, if necessary.
7411 if $test X"$prefix" != X"$installprefix"; then
7412         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
7413 else
7414         installhtml1dir="$html1direxp"
7415 fi
7416
7417 : determine where html pages for libraries and modules go
7418 set html3dir html3dir none
7419 eval $prefixit
7420 $cat <<EOM
7421
7422 If you wish to install html files for modules associated with $spackage,
7423 indicate the appropriate directory here.  To skip installing html files,
7424 answer "none".
7425 EOM
7426 : There is no obvious default.  If they have specified html1dir, then
7427 : try to key off that, possibly changing .../html1 into .../html3.
7428 case "$html3dir" in
7429 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7430 *) dflt=$html3dir ;;
7431 esac
7432 fn=dn+~
7433 rp="Directory for the $spackage module html pages?"
7434 . ./getfile
7435 html3dir="$ans"
7436 html3direxp="$ansexp"
7437 : Use ' ' for none so value is preserved next time through Configure
7438 $test X"$html3dir" = "X" && html3dir=' '
7439 : Change installation prefix, if necessary.
7440 if $test X"$prefix" != X"$installprefix"; then
7441         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
7442 else
7443         installhtml3dir="$html3direxp"
7444 fi
7445
7446 : Find perl5.005 or later.
7447 echo "Looking for a previously installed perl5.005 or later... "
7448 case "$perl5" in
7449 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7450                 : Check if this perl is recent and can load a simple module
7451                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7452                         perl5=$tdir/perl
7453                         break;
7454                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7455                         perl5=$tdir/perl5
7456                         break;
7457                 fi
7458         done
7459         ;;
7460 *)      perl5="$perl5"
7461         ;;
7462 esac
7463 case "$perl5" in
7464 '')     echo "None found.  That's ok.";;
7465 *)      echo "Using $perl5." ;;
7466 esac
7467
7468 : Determine list of previous versions to include in @INC
7469 $cat > getverlist <<EOPL
7470 #!$perl5 -w
7471 use File::Basename;
7472 \$api_versionstring = "$api_versionstring";
7473 \$version = "$version";
7474 \$stem = "$sitelib_stem";
7475 \$archname = "$archname";
7476 EOPL
7477         $cat >> getverlist <<'EOPL'
7478 # Can't have leading @ because metaconfig interprets it as a command!
7479 ;@inc_version_list=();
7480 # XXX Redo to do opendir/readdir? 
7481 if (-d $stem) {
7482     chdir($stem);
7483     ;@candidates = glob("5.*");
7484 }
7485 else {
7486     ;@candidates = ();
7487 }
7488
7489 # XXX ToDo:  These comparisons must be reworked when two-digit
7490 # subversions come along, so that 5.7.10 compares as greater than
7491 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
7492 # widespread that we can use the built-in version vectors rather
7493 # than reinventing them here.  For 5.6.0, however, we must
7494 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
7495 foreach $d (@candidates) {
7496     if ($d lt $version) {
7497         if ($d ge $api_versionstring) {
7498             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7499         }
7500         elsif ($d ge "5.005") {
7501             unshift(@inc_version_list, grep { -d } $d);
7502         }
7503     }
7504     else {
7505         # Skip newer version.  I.e. don't look in
7506         # 5.7.0 if we're installing 5.6.1.
7507     }
7508 }
7509
7510 if (@inc_version_list) {
7511     print join(' ', @inc_version_list);
7512 }
7513 else {
7514     # Blank space to preserve value for next Configure run.
7515     print " ";
7516 }
7517 EOPL
7518 chmod +x getverlist
7519 case "$inc_version_list" in
7520 '')     if test -x "$perl5$exe_ext"; then
7521                 dflt=`$perl5 getverlist`
7522         else
7523                 dflt='none'
7524         fi
7525         ;;
7526 $undef) dflt='none' ;;
7527 *)  eval dflt=\"$inc_version_list\" ;;
7528 esac
7529 case "$dflt" in
7530 ''|' ') dflt=none ;;
7531 esac
7532 case "$dflt" in
7533 5.005) dflt=none ;;
7534 esac
7535 $cat <<EOM
7536
7537 In order to ease the process of upgrading, this version of perl 
7538 can be configured to use modules built and installed with earlier 
7539 versions of perl that were installed under $prefix.  Specify here
7540 the list of earlier versions that this version of perl should check.
7541 If Configure detected no earlier versions of perl installed under
7542 $prefix, then the list will be empty.  Answer 'none' to tell perl
7543 to not search earlier versions.
7544
7545 The default should almost always be sensible, so if you're not sure,
7546 just accept the default.
7547 EOM
7548
7549 rp='List of earlier versions to include in @INC?'
7550 . ./myread
7551 case "$ans" in
7552 [Nn]one|''|' ') inc_version_list=' ' ;;
7553 *) inc_version_list="$ans" ;;
7554 esac
7555 case "$inc_version_list" in
7556 ''|' ') 
7557         inc_version_list_init='0';;
7558 *)      inc_version_list_init=`echo $inc_version_list |
7559                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7560         ;;
7561 esac
7562 $rm -f getverlist
7563
7564 : determine whether to install perl also as /usr/bin/perl
7565
7566 echo " "
7567 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7568         $cat <<EOM
7569 Many scripts expect perl to be installed as /usr/bin/perl.
7570
7571 If you want to, I can install the perl you are about to compile
7572 as /usr/bin/perl (in addition to $bin/perl).
7573 EOM
7574         if test -f /usr/bin/perl; then
7575             $cat <<EOM
7576
7577 However, please note that because you already have a /usr/bin/perl,
7578 overwriting that with a new Perl would very probably cause problems.
7579 Therefore I'm assuming you don't want to do that (unless you insist).
7580
7581 EOM
7582             case "$installusrbinperl" in
7583             "$define"|[yY]*)    dflt='y';;
7584             *)                  dflt='n';;
7585             esac
7586         else
7587             $cat <<EOM
7588
7589 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7590
7591 EOM
7592             case "$installusrbinperl" in
7593             "$undef"|[nN]*)     dflt='n';;
7594             *)                  dflt='y';;
7595             esac
7596         fi
7597         rp="Do you want to install perl as /usr/bin/perl?"
7598         . ./myread
7599         case "$ans" in
7600         [yY]*)  val="$define";;
7601         *)      val="$undef" ;;
7602         esac
7603 else
7604         val="$undef"
7605 fi
7606 set installusrbinperl
7607 eval $setvar
7608
7609 : see if dld is available
7610 set dld.h i_dld
7611 eval $inhdr
7612
7613 : see if dlopen exists
7614 xxx_runnm="$runnm"
7615 runnm=false
7616 set dlopen d_dlopen
7617 eval $inlibc
7618 runnm="$xxx_runnm"
7619
7620 : determine which dynamic loading, if any, to compile in
7621 echo " "
7622 dldir="ext/DynaLoader"
7623 case "$usedl" in
7624 $define|y|true)
7625         dflt='y'
7626         usedl="$define"
7627         ;;
7628 $undef|n|false)
7629         dflt='n'
7630         usedl="$undef"
7631         ;;
7632 *) 
7633         dflt='n'
7634         case "$d_dlopen" in
7635             $define) dflt='y' ;;
7636         esac
7637         case "$i_dld" in
7638             $define) dflt='y' ;;
7639         esac
7640         : Does a dl_xxx.xs file exist for this operating system
7641         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7642         ;;
7643 esac
7644 rp="Do you wish to use dynamic loading?"
7645 . ./myread
7646 usedl="$ans"
7647 case "$ans" in
7648 y*) usedl="$define"
7649         case "$dlsrc" in
7650         '')
7651                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7652                         dflt="$dldir/dl_${osname}.xs"
7653                 elif $test "$d_dlopen" = "$define" ; then
7654                         dflt="$dldir/dl_dlopen.xs"
7655                 elif $test "$i_dld" = "$define" ; then
7656                         dflt="$dldir/dl_dld.xs"
7657                 else
7658                         dflt=''
7659                 fi
7660                 ;;
7661         *)      dflt="$dldir/$dlsrc"
7662                 ;;
7663         esac
7664     echo "The following dynamic loading files are available:"
7665         : Can not go over to $dldir because getfile has path hard-coded in.
7666         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7667         rp="Source file to use for dynamic loading"
7668         fn="fne"
7669         gfpth="$src"
7670         . ./getfile
7671         usedl="$define"
7672         : emulate basename
7673         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7674
7675         $cat << EOM
7676
7677 Some systems may require passing special flags to $cc -c to
7678 compile modules that will be used to create a shared library.
7679 To use no flags, say "none".
7680
7681 EOM
7682     case "$cccdlflags" in
7683     '') case "$gccversion" in
7684                 '') case "$osname" in
7685                         hpux)   dflt='+z' ;;
7686                         next)   dflt='none' ;;
7687                         irix*)  dflt='-KPIC' ;;
7688                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7689                         sunos)  dflt='-pic' ;;
7690                         *)      dflt='none' ;;
7691                     esac
7692                         ;;
7693                 *)  case "$osname" in
7694                         darwin) dflt='none' ;;
7695                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7696                         *)      dflt='-fpic' ;;
7697                     esac ;;
7698             esac ;;
7699         ' ') dflt='none' ;;
7700     *)  dflt="$cccdlflags" ;;
7701     esac
7702     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7703     . ./myread
7704     case "$ans" in
7705     none) cccdlflags=' ' ;;
7706     *) cccdlflags="$ans" ;;
7707     esac
7708
7709     cat << EOM
7710
7711 Some systems use ld to create libraries that can be dynamically loaded,
7712 while other systems (such as those using ELF) use $cc.
7713
7714 EOM
7715         case "$ld" in
7716         '')     $cat >try.c <<EOM
7717 /* Test for whether ELF binaries are produced */
7718 #include <fcntl.h>
7719 #$i_stdlib I_STDLIB
7720 #ifdef I_STDLIB
7721 #include <stdlib.h>
7722 #endif
7723 int main() {
7724         char b[4];
7725         int i = open("a.out",O_RDONLY);
7726         if(i == -1) 
7727                 exit(1); /* fail */
7728         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7729                 exit(0); /* succeed (yes, it's ELF) */
7730         else
7731                 exit(1); /* fail */
7732 }
7733 EOM
7734                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7735                         cat <<EOM
7736 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7737 EOM
7738                         dflt="$cc"
7739                 else
7740                         echo "I'll use ld to build dynamic libraries."
7741                         dflt='ld'
7742                 fi
7743                 rm -f try.c a.out
7744                 ;;
7745         *)      dflt="$ld"
7746                 ;;
7747         esac
7748
7749     rp="What command should be used to create dynamic libraries?"
7750     . ./myread
7751         ld="$ans"
7752
7753     cat << EOM
7754
7755 Some systems may require passing special flags to $ld to create a
7756 library that can be dynamically loaded.  If your ld flags include
7757 -L/other/path options to locate libraries outside your loader's normal
7758 search path, you may need to specify those -L options here as well.  To
7759 use no flags, say "none".
7760
7761 EOM
7762     case "$lddlflags" in
7763     '') case "$osname" in
7764                         beos) dflt='-nostart' ;;
7765                         hpux) dflt='-b';
7766                               case "$gccversion" in
7767                               '') dflt="$dflt +vnocompatwarnings" ;;
7768                               esac
7769                               ;;        
7770                         linux|irix*)    dflt='-shared' ;;
7771                         next)  dflt='none' ;;
7772                         solaris) dflt='-G' ;;
7773                         sunos) dflt='-assert nodefinitions' ;;
7774                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7775                 *)     dflt='none' ;;
7776                         esac
7777                         ;;
7778     *) dflt="$lddlflags" ;;
7779     esac
7780
7781         : Try to guess additional flags to pick up local libraries.
7782         : Be careful not to append to a plain 'none'
7783         case "$dflt" in
7784         none) dflt='' ;;
7785         esac
7786         for thisflag in $ldflags; do
7787                 case "$thisflag" in
7788                 -L*|-R*|-Wl,-R*)
7789                         case " $dflt " in
7790                         *" $thisflag "*) ;;
7791                         *) dflt="$dflt $thisflag" ;;
7792                         esac
7793                         ;;
7794                 esac
7795         done
7796
7797         case "$dflt" in
7798         ''|' ') dflt='none' ;;
7799         esac
7800
7801     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7802     . ./myread
7803     case "$ans" in
7804     none) lddlflags=' ' ;;
7805     *) lddlflags="$ans" ;;
7806     esac
7807
7808         cat <<EOM
7809
7810 Some systems may require passing special flags to $cc to indicate that
7811 the resulting executable will use dynamic linking.  To use no flags,
7812 say "none".
7813
7814 EOM
7815     case "$ccdlflags" in
7816     '') case "$osname" in
7817                 hpux)   dflt='-Wl,-E' ;;
7818                 linux)  dflt='-rdynamic' ;;
7819                 next)   dflt='none' ;;
7820                 sunos)  dflt='none' ;;
7821                 *)      dflt='none' ;;
7822             esac ;;
7823     ' ')  dflt='none' ;;
7824     *)  dflt="$ccdlflags" ;;
7825     esac
7826     rp="Any special flags to pass to $cc to use dynamic linking?"
7827     . ./myread
7828     case "$ans" in
7829     none) ccdlflags=' ' ;;
7830     *) ccdlflags="$ans" ;;
7831     esac
7832     ;;
7833 *)  usedl="$undef"
7834         ld='ld'
7835     dlsrc='dl_none.xs'
7836     lddlflags=''
7837     ccdlflags=''
7838     ;;
7839 esac
7840
7841 also=''
7842 case "$usedl" in
7843 $undef)
7844         # No dynamic loading being used, so don't bother even to prompt.
7845         useshrplib='false'
7846         ;;
7847 *)      case "$useshrplib" in
7848         '')     case "$osname" in
7849                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7850                         dflt=y
7851                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7852                         ;;
7853                 next*)
7854                         case "$osvers" in
7855                         4*)     dflt=y
7856                                 also='Building a shared libperl is needed for MAB support.'
7857                                 ;;
7858                         *)      dflt=n
7859                                 ;;
7860                         esac
7861                         ;;
7862                 *)      dflt=n
7863                         ;;
7864                 esac
7865                 ;;
7866         $define|true|[Yy]*)
7867                 dflt=y
7868                 ;;
7869         *)      dflt=n
7870                 ;;
7871         esac
7872         $cat << EOM
7873
7874 The perl executable is normally obtained by linking perlmain.c with
7875 libperl${_a}, any static extensions (usually just DynaLoader), and
7876 any other libraries needed on this system (such as -lm, etc.).  Since
7877 your system supports dynamic loading, it is probably possible to build
7878 a shared libperl.$so.  If you will have more than one executable linked
7879 to libperl.$so, this will significantly reduce the size of each
7880 executable, but it may have a noticeable affect on performance.  The
7881 default is probably sensible for your system.
7882 $also
7883
7884 EOM
7885         rp="Build a shared libperl.$so (y/n)"
7886         . ./myread
7887         case "$ans" in
7888         true|$define|[Yy]*)
7889                 useshrplib='true'  ;;
7890         *)      useshrplib='false' ;;
7891         esac
7892         ;;
7893 esac
7894
7895 case "$useshrplib" in
7896 true)
7897         case "$libperl" in
7898         '')
7899                 # Figure out a good name for libperl.so.  Since it gets stored in
7900                 # a version-specific architecture-dependent library, the version
7901                 # number isn't really that important, except for making cc/ld happy.
7902                 #
7903                 # A name such as libperl.so.3.1
7904                 majmin="libperl.$so.$patchlevel.$subversion"
7905                 # A name such as libperl.so.301
7906                 majonly=`echo $patchlevel $subversion |
7907                         $awk '{printf "%d%02d", $1, $2}'`
7908                 majonly=libperl.$so.$majonly
7909                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7910                 # rely on figuring it out from the naming of libc.
7911                 case "${osname}${osvers}" in
7912                 next4*)
7913                         dflt=libperl.5.$so
7914                         # XXX How handle the --version stuff for MAB?
7915                         ;;
7916                 linux*)  # ld won't link with a bare -lperl otherwise.
7917                         dflt=libperl.$so
7918                         ;;
7919                 cygwin*) # ld links against an importlib
7920                         dflt=libperl$lib_ext
7921                         ;;
7922                 *)      # Try to guess based on whether libc has major.minor.
7923                         case "$libc" in
7924                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7925                         *libc.$so.[0-9]*) dflt=$majonly ;;
7926                         *)      dflt=libperl.$so ;;
7927                         esac
7928                         ;;
7929                 esac
7930                 ;;
7931         *)      dflt=$libperl
7932                 ;;
7933         esac
7934         cat << EOM
7935
7936 I need to select a good name for the shared libperl.  If your system uses
7937 library names with major and minor numbers, then you might want something
7938 like $majmin.  Alternatively, if your system uses a single version
7939 number for shared libraries, then you might want to use $majonly.
7940 Or, your system might be quite happy with a simple libperl.$so.
7941
7942 Since the shared libperl will get installed into a version-specific
7943 architecture-dependent directory, the version number of the shared perl
7944 library probably isn't important, so the default should be o.k.
7945
7946 EOM
7947         rp='What name do you want to give to the shared libperl?'
7948         . ./myread
7949         libperl=$ans
7950         echo "Ok, I'll use $libperl"
7951         ;;
7952 *)
7953         libperl="libperl${_a}"
7954         ;;
7955 esac
7956
7957 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7958 case "$shrpdir" in
7959 '') ;;
7960 *)      $cat >&4 <<EOM
7961 WARNING:  Use of the shrpdir variable for the installation location of
7962 the shared $libperl is not supported.  It was never documented and
7963 will not work in this version.  Let me (perlbug@perl.org)
7964 know of any problems this may cause.
7965
7966 EOM
7967         case "$shrpdir" in
7968         "$archlibexp/CORE")
7969                 $cat >&4 <<EOM
7970 But your current setting of $shrpdir is
7971 the default anyway, so it's harmless.
7972 EOM
7973                 ;;
7974         *)
7975                 $cat >&4 <<EOM
7976 Further, your current attempted setting of $shrpdir
7977 conflicts with the value of $archlibexp/CORE
7978 that installperl will use.
7979 EOM
7980                 ;;
7981         esac
7982         ;;
7983 esac
7984
7985 # How will the perl executable find the installed shared $libperl?
7986 # Add $xxx to ccdlflags.
7987 # If we can't figure out a command-line option, use $shrpenv to
7988 # set env LD_RUN_PATH.  The main perl makefile uses this.
7989 shrpdir=$archlibexp/CORE
7990 xxx=''
7991 tmp_shrpenv=''
7992 if "$useshrplib"; then
7993     case "$osname" in 
7994         aix)
7995                 # We'll set it in Makefile.SH...
7996                 ;;
7997         solaris)
7998                 xxx="-R $shrpdir"
7999                 ;;
8000         freebsd|netbsd|openbsd)
8001                 xxx="-Wl,-R$shrpdir"
8002                 ;;
8003         bsdos|linux|irix*|dec_osf)
8004                 xxx="-Wl,-rpath,$shrpdir"
8005                 ;;
8006         next)
8007                 # next doesn't like the default...
8008                 ;;
8009         beos)
8010                 # beos doesn't like the default, either.
8011                 ;;
8012         hpux*)
8013                 # hpux doesn't like the default, either.
8014                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8015                 ;;
8016         *)
8017                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8018                 ;;
8019         esac
8020         case "$xxx" in
8021         '') ;;
8022         *)      
8023                 # Only add $xxx if it isn't already in ccdlflags.
8024                 case " $ccdlflags " in
8025                 *" $xxx "*)     ;;
8026                 *)      ccdlflags="$ccdlflags $xxx"
8027                         cat <<EOM >&4
8028
8029 Adding $xxx to the flags
8030 passed to $ld so that the perl executable will find the 
8031 installed shared $libperl.
8032
8033 EOM
8034                         ;;
8035                 esac
8036                 ;;
8037         esac
8038 fi
8039 # Fix ccdlflags in AIX for building external extensions.
8040 # (For building Perl itself bare -bE:perl.exp is needed,
8041 #  Makefile.SH takes care of this.)
8042 case "$osname" in
8043 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8044 esac
8045 # Respect a hint or command-line value.
8046 case "$shrpenv" in
8047 '') shrpenv="$tmp_shrpenv" ;;
8048 esac
8049 case "$ldlibpthname" in
8050 '')     ldlibpthname=LD_LIBRARY_PATH ;;
8051 none)   ldlibpthname='' ;;
8052 esac
8053
8054 : determine where manual pages are on this system
8055 echo " "
8056 case "$sysman" in
8057 '') 
8058         syspath='/usr/share/man/man1 /usr/man/man1'
8059         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8060         syspath="$syspath /usr/man/u_man/man1"
8061         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8062         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8063         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8064         sysman=`./loc . /usr/man/man1 $syspath`
8065         ;;
8066 esac
8067 if $test -d "$sysman"; then
8068         echo "System manual is in $sysman." >&4
8069 else
8070         echo "Could not find manual pages in source form." >&4
8071 fi
8072
8073 : determine where manual pages go
8074 set man1dir man1dir none
8075 eval $prefixit
8076 $cat <<EOM
8077
8078 $spackage has manual pages available in source form.
8079 EOM
8080 case "$nroff" in
8081 nroff)
8082         echo "However, you don't have nroff, so they're probably useless to you."
8083         case "$man1dir" in
8084         '') man1dir="none";;
8085         esac;;
8086 esac
8087 echo "If you don't want the manual sources installed, answer 'none'."
8088 case "$man1dir" in
8089 ' ') dflt=none
8090         ;;
8091 '')
8092         lookpath="$prefixexp/share/man/man1"
8093         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8094         lookpath="$lookpath $prefixexp/man/p_man/man1"
8095         lookpath="$lookpath $prefixexp/man/u_man/man1"
8096         lookpath="$lookpath $prefixexp/man/man.1"
8097         case "$sysman" in
8098         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8099         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8100         esac
8101         set dflt
8102         eval $prefixup
8103         ;;
8104 *)  dflt="$man1dir"
8105         ;;
8106 esac
8107 echo " "
8108 fn=dn+~
8109 rp="Where do the main $spackage manual pages (source) go?"
8110 . ./getfile
8111 if $test "X$man1direxp" != "X$ansexp"; then
8112         installman1dir=''
8113 fi
8114 man1dir="$ans"
8115 man1direxp="$ansexp"
8116 case "$man1dir" in
8117 '')     man1dir=' '
8118         installman1dir='';;
8119 esac
8120
8121 : Change installation prefix, if necessary.
8122 if $test X"$prefix" != X"$installprefix"; then
8123         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
8124 else
8125         installman1dir="$man1direxp"
8126 fi
8127
8128 : What suffix to use on installed man pages
8129
8130 case "$man1dir" in
8131 ' ')
8132         man1ext='0'
8133         ;;
8134 *)
8135         rp="What suffix should be used for the main $spackage man pages?"
8136         case "$man1ext" in
8137         '')     case "$man1dir" in
8138                 *1)  dflt=1 ;;
8139                 *1p) dflt=1p ;;
8140                 *1pm) dflt=1pm ;;
8141                 *l) dflt=l;;
8142                 *n) dflt=n;;
8143                 *o) dflt=o;;
8144                 *p) dflt=p;;
8145                 *C) dflt=C;;
8146                 *L) dflt=L;;
8147                 *L1) dflt=L1;;
8148                 *) dflt=1;;
8149                 esac
8150                 ;;
8151         *)      dflt="$man1ext";;
8152         esac
8153         . ./myread
8154         man1ext="$ans"
8155         ;;
8156 esac
8157
8158 : see if we can have long filenames
8159 echo " "
8160 first=123456789abcdef
8161 $rm -f $first
8162 if (echo hi >$first) 2>/dev/null; then
8163         if $test -f 123456789abcde; then
8164                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
8165                 val="$undef"
8166         else
8167                 echo 'You can have filenames longer than 14 characters.'>&4
8168                 val="$define"
8169         fi
8170 else
8171         $cat <<'EOM'
8172 You can't have filenames longer than 14 chars.
8173 You can't even think about them!
8174 EOM
8175         val="$undef"
8176 fi 
8177 set d_flexfnam
8178 eval $setvar
8179 $rm -rf 123456789abcde*
8180
8181 : determine where library module manual pages go
8182 set man3dir man3dir none
8183 eval $prefixit
8184 $cat <<EOM
8185
8186 $spackage has manual pages for many of the library modules.
8187 EOM
8188
8189 case "$nroff" in
8190 nroff)
8191         $cat <<'EOM'
8192 However, you don't have nroff, so they're probably useless to you.
8193 EOM
8194         case "$man3dir" in
8195         '') man3dir="none";;
8196         esac;;
8197 esac
8198
8199 case "$d_flexfnam" in
8200 undef)
8201         $cat <<'EOM'
8202 However, your system can't handle the long file names like File::Basename.3. 
8203 EOM
8204         case "$man3dir" in
8205         '') man3dir="none";;
8206         esac;;
8207 esac
8208
8209 echo "If you don't want the manual sources installed, answer 'none'."
8210 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8211 case "$man3dir" in
8212 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8213         if $test -d "$privlib/man/man3"; then
8214                 cat <<EOM >&4
8215
8216 WARNING:  Previous versions of perl installed man3 pages into
8217 $privlib/man/man3.  This version will suggest a 
8218 new default of $dflt.  
8219 EOM
8220                 tdflt=$dflt
8221                 dflt='n'
8222                 rp='Do you wish to preserve the old behavior?(y/n)'
8223                 . ./myread
8224                 case "$ans" in
8225                 y*) dflt="$privlib/man/man3" ;;
8226                 *)  dflt=$tdflt ;;
8227                 esac
8228     fi
8229         ;;
8230 *)      dflt="$man3dir" ;;
8231 esac
8232 case "$dflt" in
8233 ' ') dflt=none ;;
8234 esac
8235 echo " "
8236 fn=dn+~
8237 rp="Where do the $package library man pages (source) go?"
8238 . ./getfile
8239 man3dir="$ans"
8240 man3direxp="$ansexp"
8241 case "$man3dir" in
8242 '')     man3dir=' '
8243         installman3dir='';;
8244 esac
8245
8246 : Change installation prefix, if necessary.
8247 if $test X"$prefix" != X"$installprefix"; then
8248         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8249 else
8250         installman3dir="$man3direxp"
8251 fi
8252
8253 : What suffix to use on installed man pages
8254 case "$man3dir" in
8255 ' ')
8256         man3ext='0'
8257         ;;
8258 *)
8259         rp="What suffix should be used for the $package library man pages?"
8260         case "$man3ext" in
8261         '')     case "$man3dir" in
8262                 *3)  dflt=3 ;;
8263                 *3p) dflt=3p ;;
8264                 *3pm) dflt=3pm ;;
8265                 *l) dflt=l;;
8266                 *n) dflt=n;;
8267                 *o) dflt=o;;
8268                 *p) dflt=p;;
8269                 *C) dflt=C;;
8270                 *L) dflt=L;;
8271                 *L3) dflt=L3;;
8272                 *) dflt=3;;
8273                 esac
8274                 ;;
8275         *)      dflt="$man3ext";;
8276         esac
8277         . ./myread
8278         man3ext="$ans"
8279         ;;
8280 esac
8281
8282 : see if we have to deal with yellow pages, now NIS.
8283 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8284         if $test -f /usr/etc/nibindd; then
8285                 echo " "
8286                 echo "I'm fairly confident you're on a NeXT."
8287                 echo " "
8288                 rp='Do you get the hosts file via NetInfo?'
8289                 dflt=y
8290                 case "$hostcat" in
8291                 nidump*) ;;
8292                 '') ;;
8293                 *) dflt=n;;
8294                 esac
8295                 . ./myread
8296                 case "$ans" in
8297                 y*) hostcat='nidump hosts .';;
8298                 *)      case "$hostcat" in
8299                         nidump*) hostcat='';;
8300                         esac
8301                         ;;
8302                 esac
8303         fi
8304         case "$hostcat" in
8305         nidump*) ;;
8306         *)
8307                 case "$hostcat" in
8308                 *ypcat*) dflt=y;;
8309                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8310                                 dflt=y
8311                         else
8312                                 dflt=n
8313                         fi;;
8314                 *) dflt=n;;
8315                 esac
8316                 echo " "
8317                 rp='Are you getting the hosts file via yellow pages?'
8318                 . ./myread
8319                 case "$ans" in
8320                 y*) hostcat='ypcat hosts';;
8321                 *) hostcat='cat /etc/hosts';;
8322                 esac
8323                 ;;
8324         esac
8325 fi
8326 case "$hostcat" in
8327 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8328 esac
8329 case "$groupcat" in
8330 '') test -f /etc/group && groupcat='cat /etc/group';;
8331 esac
8332 case "$passcat" in
8333 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8334 esac
8335
8336 : now get the host name
8337 echo " "
8338 echo "Figuring out host name..." >&4
8339 case "$myhostname" in
8340 '') cont=true
8341         echo 'Maybe "hostname" will work...'
8342         if tans=`sh -c hostname 2>&1` ; then
8343                 myhostname=$tans
8344                 phostname=hostname
8345                 cont=''
8346         fi
8347         ;;
8348 *) cont='';;
8349 esac
8350 if $test "$cont"; then
8351         if ./xenix; then
8352                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8353                 if tans=`cat /etc/systemid 2>&1` ; then
8354                         myhostname=$tans
8355                         phostname='cat /etc/systemid'
8356                         echo "Whadyaknow.  Xenix always was a bit strange..."
8357                         cont=''
8358                 fi
8359         elif $test -r /etc/systemid; then
8360                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8361         fi
8362 fi
8363 if $test "$cont"; then
8364         echo 'No, maybe "uuname -l" will work...'
8365         if tans=`sh -c 'uuname -l' 2>&1` ; then
8366                 myhostname=$tans
8367                 phostname='uuname -l'
8368         else
8369                 echo 'Strange.  Maybe "uname -n" will work...'
8370                 if tans=`sh -c 'uname -n' 2>&1` ; then
8371                         myhostname=$tans
8372                         phostname='uname -n'
8373                 else
8374                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8375                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8376                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8377                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8378                         else
8379                                 case "$myhostname" in
8380                                 '') echo "Does this machine have an identity crisis or something?"
8381                                         phostname='';;
8382                                 *)
8383                                         echo "Well, you said $myhostname before..."
8384                                         phostname='echo $myhostname';;
8385                                 esac
8386                         fi
8387                 fi
8388         fi
8389 fi
8390 case "$myhostname" in
8391 '') myhostname=noname ;;
8392 esac
8393 : you do not want to know about this
8394 set $myhostname
8395 myhostname=$1
8396
8397 : verify guess
8398 if $test "$myhostname" ; then
8399         dflt=y
8400         rp='Your host name appears to be "'$myhostname'".'" Right?"
8401         . ./myread
8402         case "$ans" in
8403         y*) ;;
8404         *) myhostname='';;
8405         esac
8406 fi
8407
8408 : bad guess or no guess
8409 while $test "X$myhostname" = X ; do
8410         dflt=''
8411         rp="Please type the (one word) name of your host:"
8412         . ./myread
8413         myhostname="$ans"
8414 done
8415
8416 : translate upper to lower if necessary
8417 case "$myhostname" in
8418 *[A-Z]*)
8419         echo "(Normalizing case in your host name)"
8420         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8421         ;;
8422 esac
8423
8424 case "$myhostname" in
8425 *.*)
8426         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8427         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8428         echo "(Trimming domain name from host name--host name is now $myhostname)"
8429         ;;
8430 *) case "$mydomain" in
8431         '')
8432                 {
8433                         test "X$hostcat" = "Xypcat hosts" &&
8434                         ypmatch "$myhostname" hosts 2>/dev/null |\
8435                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8436                         $test -s hosts
8437                 } || {
8438                         test "X$hostcat" != "X" &&
8439                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8440                                         /[       ]$myhostname[  . ]/p" > hosts
8441                 }
8442                 tmp_re="[       . ]"
8443                 if $test -f hosts; then
8444                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8445                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8446                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8447                                 hosts | $sort | $uniq | \
8448                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8449                         case `$echo X$dflt` in
8450                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8451                                 dflt=.
8452                                 ;;
8453                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8454                                 ;;
8455                         esac
8456                 else
8457                         echo "(I cannot locate a hosts database anywhere)"
8458                         dflt=.
8459                 fi
8460                 case "$dflt" in
8461                 .)
8462                         tans=`./loc resolv.conf X /etc /usr/etc`
8463                         if $test -f "$tans"; then
8464                                 echo "(Attempting domain name extraction from $tans)"
8465                                 dflt=.`$sed -n -e 's/   / /g' \
8466                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8467                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8468                                 case "$dflt" in
8469                                 .) dflt=.`$sed -n -e 's/        / /g' \
8470                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8471                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8472                                         ;;
8473                                 esac
8474                         fi
8475                         ;;
8476                 esac
8477                 case "$dflt" in
8478                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8479                         dflt=.`sh -c domainname 2>/dev/null`
8480                         case "$dflt" in
8481                         '') dflt='.';;
8482                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8483                         esac
8484                         ;;
8485                 esac
8486                 case "$dflt$osname" in
8487                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8488                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8489                         ;;
8490                 esac
8491                 case "$dflt" in
8492                 .) echo "(Lost all hope -- silly guess then)"
8493                         dflt='.nonet'
8494                         ;;
8495                 esac
8496                 $rm -f hosts
8497                 ;;
8498         *) dflt="$mydomain";;
8499         esac;;
8500 esac
8501 echo " "
8502 rp="What is your domain name?"
8503 . ./myread
8504 tans="$ans"
8505 case "$ans" in
8506 '') ;;
8507 .*) ;;
8508 *) tans=".$tans";;
8509 esac
8510 mydomain="$tans"
8511
8512 : translate upper to lower if necessary
8513 case "$mydomain" in
8514 *[A-Z]*)
8515         echo "(Normalizing case in your domain name)"
8516         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8517         ;;
8518 esac
8519
8520 : a little sanity check here
8521 case "$phostname" in
8522 '') ;;
8523 *)
8524         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8525         $myhostname$mydomain|$myhostname) ;;
8526         *)
8527                 case "$phostname" in
8528                 sed*)
8529                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8530                         ;;
8531                 *)
8532                         echo "(That doesn't agree with your $phostname command, by the way.)"
8533                         ;;
8534                 esac
8535         ;;
8536         esac
8537         ;;
8538 esac
8539
8540 $cat <<EOM
8541
8542 I need to get your e-mail address in Internet format if possible, i.e.
8543 something like user@host.domain. Please answer accurately since I have
8544 no easy means to double check it. The default value provided below
8545 is most probably close to reality but may not be valid from outside
8546 your organization...
8547
8548 EOM
8549 cont=x
8550 while test "$cont"; do
8551         case "$cf_email" in
8552         '') dflt="$cf_by@$myhostname$mydomain";;
8553         *) dflt="$cf_email";;
8554         esac
8555         rp='What is your e-mail address?'
8556         . ./myread
8557         cf_email="$ans"
8558         case "$cf_email" in
8559         *@*.*) cont='' ;;
8560         *)
8561                 rp='Address does not look like an Internet one.  Use it anyway?'
8562                 case "$fastread" in
8563                 yes) dflt=y ;;
8564                 *) dflt=n ;;
8565                 esac
8566                 . ./myread
8567                 case "$ans" in
8568                 y*) cont='' ;;
8569                 *) echo " " ;;
8570                 esac
8571                 ;;
8572         esac
8573 done
8574
8575 $cat <<EOM
8576
8577 If you or somebody else will be maintaining perl at your site, please
8578 fill in the correct e-mail address here so that they may be contacted
8579 if necessary. Currently, the "perlbug" program included with perl
8580 will send mail to this address in addition to perlbug@perl.org. You may
8581 enter "none" for no administrator.
8582
8583 EOM
8584 case "$perladmin" in
8585 '') dflt="$cf_email";;
8586 *) dflt="$perladmin";;
8587 esac
8588 rp='Perl administrator e-mail address'
8589 . ./myread
8590 perladmin="$ans"
8591
8592 : determine whether to only install version-specific parts.
8593 echo " "
8594 $cat <<EOM
8595 Do you want to install only the version-specific parts of the perl
8596 distribution?  Usually you do *not* want to do this.
8597 EOM
8598 case "$versiononly" in
8599 "$define"|[Yy]*|true) dflt='y' ;;
8600 *) dflt='n';
8601 esac
8602 rp="Do you want to install only the version-specific parts of perl?"
8603 . ./myread
8604 case "$ans" in
8605 [yY]*)  val="$define";;
8606 *)      val="$undef" ;;
8607 esac
8608 set versiononly
8609 eval $setvar
8610
8611 case "$versiononly" in
8612 "$define") inc_version_list=''
8613            inc_version_list_init=0
8614            ;;
8615 esac
8616
8617 : figure out how to guarantee perl startup
8618 case "$startperl" in
8619 '')
8620         case "$sharpbang" in
8621         *!)
8622                 $cat <<EOH
8623
8624 I can use the #! construct to start perl on your system. This will
8625 make startup of perl scripts faster, but may cause problems if you
8626 want to share those scripts and perl is not in a standard place
8627 ($binexp/perl) on all your platforms. The alternative is to force
8628 a shell by starting the script with a single ':' character.
8629
8630 EOH
8631                 case "$versiononly" in
8632                 "$define")      dflt="$binexp/perl$version";;  
8633                 *)              dflt="$binexp/perl";;
8634                 esac
8635                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8636                 . ./myread
8637                 case "$ans" in
8638                 none)   startperl=": # use perl";;
8639                 *)      startperl="#!$ans"
8640                         if $test 30 -lt `echo "$ans" | wc -c`; then
8641                                 $cat >&4 <<EOM
8642
8643 WARNING:  Some systems limit the #! command to 32 characters.
8644 If you experience difficulty running Perl scripts with #!, try
8645 installing Perl in a directory with a shorter pathname.
8646
8647 EOM
8648                         fi ;;
8649                 esac
8650                 ;;
8651         *) startperl=": # use perl"
8652                 ;;
8653         esac
8654         ;;
8655 esac
8656 echo "I'll use $startperl to start perl scripts."
8657
8658 : figure best path for perl in scripts
8659 case "$perlpath" in
8660 '')
8661         case "$versiononly" in
8662         "$define")      perlpath="$binexp/perl$version";;
8663         *)              perlpath="$binexp/perl";;
8664         esac
8665         case "$startperl" in
8666         *!*) ;;
8667         *)
8668                 $cat <<EOH
8669
8670 I will use the "eval 'exec'" idiom to start Perl on your system.
8671 I can use the full path of your Perl binary for this purpose, but
8672 doing so may cause problems if you want to share those scripts and
8673 Perl is not always in a standard place ($binexp/perl).
8674
8675 EOH
8676                 dflt="$binexp/perl"
8677                 rp="What path shall I use in \"eval 'exec'\"?"
8678                 . ./myread
8679                 perlpath="$ans"
8680                 ;;
8681         esac
8682         ;;
8683 esac
8684 case "$startperl" in
8685 *!*)    ;;
8686 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8687 esac
8688
8689 : determine where public executable scripts go
8690 set scriptdir scriptdir
8691 eval $prefixit
8692 case "$scriptdir" in
8693 '')
8694         dflt="$bin"
8695         : guess some guesses
8696         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8697         $test -d /usr/share/bin     && dflt=/usr/share/bin
8698         $test -d /usr/local/script  && dflt=/usr/local/script
8699         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8700         $test -d $prefixexp/script  && dflt=$prefixexp/script
8701         set dflt
8702         eval $prefixup
8703         ;;
8704 *)  dflt="$scriptdir"
8705         ;;
8706 esac
8707 $cat <<EOM
8708  
8709 Some installations have a separate directory just for executable scripts so
8710 that they can mount it across multiple architectures but keep the scripts in
8711 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8712 Or you might just lump your scripts in with all your other executables.
8713  
8714 EOM
8715 fn=d~
8716 rp='Where do you keep publicly executable scripts?'
8717 . ./getfile
8718 if $test "X$ansexp" != "X$scriptdirexp"; then
8719         installscript=''
8720 fi
8721 scriptdir="$ans"
8722 scriptdirexp="$ansexp"
8723 : Change installation prefix, if necessary.
8724 if $test X"$prefix" != X"$installprefix"; then
8725         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8726 else
8727         installscript="$scriptdirexp"
8728 fi
8729
8730 : determine where add-on public executables go
8731 case "$sitebin" in
8732 '')     dflt=$siteprefix/bin ;;
8733 *)      dflt=$sitebin ;;
8734 esac
8735 fn=d~
8736 rp='Pathname where the add-on public executables should be installed?'
8737 . ./getfile
8738 sitebin="$ans"
8739 sitebinexp="$ansexp"
8740 : Change installation prefix, if necessary.
8741 if $test X"$prefix" != X"$installprefix"; then
8742         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8743 else
8744         installsitebin="$sitebinexp"
8745 fi
8746
8747 : determine where add-on html pages go
8748 : There is no standard location, so try to copy the previously-selected 
8749 : directory structure for the core html pages.
8750 case "$sitehtml1" in
8751 '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8752 *)      dflt=$sitehtml1 ;;
8753 esac
8754 case "$dflt" in
8755 ''|' ') dflt=none ;;
8756 esac
8757 fn=dn+~
8758 rp='Pathname where the site-specific html pages should be installed?'
8759 . ./getfile
8760 sitehtml1="$ans"
8761 sitehtml1exp="$ansexp"
8762 : Use ' ' for none so value is preserved next time through Configure
8763 $test X"$sitehtml1" = "X" && sitehtml1=' '
8764 : Change installation prefix, if necessary.
8765 if $test X"$prefix" != X"$installprefix"; then
8766         installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
8767 else
8768         installsitehtml1="$sitehtml1exp"
8769 fi
8770
8771 : determine where add-on library html pages go
8772 : There is no standard location, so try to copy the previously-selected
8773 : directory structure for the core html pages.
8774 case "$sitehtml3" in
8775 '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8776 *)      dflt=$sitehtml3 ;;
8777 esac
8778 case "$dflt" in
8779 ''|' ') dflt=none ;;
8780 esac
8781 fn=dn+~
8782 rp='Pathname where the site-specific library html pages should be installed?'
8783 . ./getfile
8784 sitehtml3="$ans"
8785 sitehtml3exp="$ansexp"
8786 : Use ' ' for none so value is preserved next time through Configure
8787 $test X"$sitehtml3" = "X" && sitehtml3=' '
8788 : Change installation prefix, if necessary.
8789 if $test X"$prefix" != X"$installprefix"; then
8790         installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
8791 else
8792         installsitehtml3="$sitehtml3exp"
8793 fi
8794
8795 : determine where add-on manual pages go
8796 case "$siteman1" in
8797 '')     dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8798 *)      dflt=$siteman1 ;;
8799 esac
8800 case "$dflt" in
8801 ''|' ') dflt=none ;;
8802 esac
8803 fn=dn+~
8804 rp='Pathname where the site-specific manual pages should be installed?'
8805 . ./getfile
8806 siteman1="$ans"
8807 siteman1exp="$ansexp"
8808 : Use ' ' for none so value is preserved next time through Configure
8809 $test X"$siteman1" = "X" && siteman1=' '
8810 : Change installation prefix, if necessary.
8811 if $test X"$prefix" != X"$installprefix"; then
8812         installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
8813 else
8814         installsiteman1="$siteman1exp"
8815 fi
8816
8817 : determine where add-on library man pages go
8818 case "$siteman3" in
8819 '')     dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8820 *)      dflt=$siteman3 ;;
8821 esac
8822 case "$dflt" in
8823 ''|' ') dflt=none ;;
8824 esac
8825 fn=dn+~
8826 rp='Pathname where the site-specific library manual pages should be installed?'
8827 . ./getfile
8828 siteman3="$ans"
8829 siteman3exp="$ansexp"
8830 : Use ' ' for none so value is preserved next time through Configure
8831 $test X"$siteman3" = "X" && siteman3=' '
8832 : Change installation prefix, if necessary.
8833 if $test X"$prefix" != X"$installprefix"; then
8834         installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
8835 else
8836         installsiteman3="$siteman3exp"
8837 fi
8838
8839 : determine where add-on public executable scripts go
8840 case "$sitescript" in
8841 '')     dflt=$siteprefix/script
8842         $test -d $dflt || dflt=$sitebin ;;
8843 *)  dflt="$sitescript" ;;
8844 esac
8845 fn=d~+
8846 rp='Pathname where add-on public executable scripts should be installed?'
8847 . ./getfile
8848 sitescript="$ans"
8849 sitescriptexp="$ansexp"
8850 : Change installation prefix, if necessary.
8851 if $test X"$prefix" != X"$installprefix"; then
8852         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8853 else
8854         installsitescript="$sitescriptexp"
8855 fi
8856
8857 : define an is-a-typedef? function
8858 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8859 case "$inclist" in
8860 "") inclist="sys/types.h";;
8861 esac;
8862 eval "varval=\$$var";
8863 case "$varval" in
8864 "")
8865         $rm -f temp.c;
8866         for inc in $inclist; do
8867                 echo "#include <$inc>" >>temp.c;
8868         done;
8869         echo "#ifdef $type" >> temp.c;
8870         echo "printf(\"We have $type\");" >> temp.c;
8871         echo "#endif" >> temp.c;
8872         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8873         if $contains $type temp.E >/dev/null 2>&1; then
8874                 eval "$var=\$type";
8875         else
8876                 eval "$var=\$def";
8877         fi;
8878         $rm -f temp.?;;
8879 *) eval "$var=\$varval";;
8880 esac'
8881
8882 : define an is-a-typedef? function that prompts if the type is not available.
8883 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8884 case "$inclist" in
8885 "") inclist="sys/types.h";;
8886 esac;
8887 eval "varval=\$$var";
8888 case "$varval" in
8889 "")
8890         $rm -f temp.c;
8891         for inc in $inclist; do
8892                 echo "#include <$inc>" >>temp.c;
8893         done;
8894         echo "#ifdef $type" >> temp.c;
8895         echo "printf(\"We have $type\");" >> temp.c;
8896         echo "#endif" >> temp.c;
8897         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8898         echo " " ;
8899         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8900         if $contains $type temp.E >/dev/null 2>&1; then
8901                 echo "$type found." >&4;
8902                 eval "$var=\$type";
8903         else
8904                 echo "$type NOT found." >&4;
8905                 dflt="$def";
8906                 . ./myread ;
8907                 eval "$var=\$ans";
8908         fi;
8909         $rm -f temp.?;;
8910 *) eval "$var=\$varval";;
8911 esac'
8912
8913 : see what type lseek is declared as in the kernel
8914 rp="What is the type used for lseek's offset on this system?"
8915 set off_t lseektype long stdio.h sys/types.h
8916 eval $typedef_ask
8917
8918 echo " "
8919 echo "Checking to see how big your file offsets are..." >&4
8920 $cat >try.c <<EOCP
8921 #include <sys/types.h>
8922 #include <stdio.h>
8923 int main()
8924 {
8925     printf("%d\n", (int)sizeof($lseektype));
8926     return(0); 
8927 }
8928 EOCP
8929 set try
8930 if eval $compile_ok; then
8931         lseeksize=`$run ./try`
8932         echo "Your file offsets are $lseeksize bytes long."
8933 else
8934         dflt=$longsize
8935         echo " "
8936         echo "(I can't seem to compile the test program.  Guessing...)"
8937         rp="What is the size of your file offsets (in bytes)?"
8938         . ./myread
8939         lseeksize="$ans"
8940 fi
8941 $rm -f try.c try
8942
8943 : see what type file positions are declared as in the library
8944 rp="What is the type for file position used by fsetpos()?"
8945 set fpos_t fpostype long stdio.h sys/types.h
8946 eval $typedef_ask
8947
8948 echo " "
8949 case "$fpostype" in
8950 *_t) zzz="$fpostype"    ;;
8951 *)   zzz="fpos_t"       ;;
8952 esac
8953 echo "Checking the size of $zzz..." >&4 
8954 cat > try.c <<EOCP
8955 #include <sys/types.h>
8956 #include <stdio.h>
8957 #$i_stdlib I_STDLIB
8958 #ifdef I_STDLIB
8959 #include <stdlib.h>
8960 #endif
8961 int main() {
8962     printf("%d\n", (int)sizeof($fpostype));
8963     exit(0);
8964 }
8965 EOCP
8966 set try
8967 if eval $compile_ok; then
8968         yyy=`$run ./try`
8969         case "$yyy" in
8970         '')     fpossize=4
8971                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8972                 ;;
8973         *)      fpossize=$yyy
8974                 echo "Your $zzz is $fpossize bytes long."
8975                 ;;
8976         esac
8977 else
8978         dflt="$longsize"
8979         echo " " >&4
8980         echo "(I can't compile the test program.  Guessing...)" >&4
8981         rp="What is the size of your file positions (in bytes)?"
8982         . ./myread
8983         fpossize="$ans"
8984 fi
8985
8986 # Backward compatibility (uselfs is deprecated).
8987 case "$uselfs" in
8988 "$define"|true|[yY]*)
8989         cat <<EOM >&4
8990
8991 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8992 EOM
8993         uselargefiles="$define"
8994         ;;
8995 esac                          
8996
8997 case "$lseeksize:$fpossize" in
8998 8:8) cat <<EOM
8999
9000 You can have files larger than 2 gigabytes.
9001 EOM
9002    val="$define" ;;
9003 *)    case "$uselargefiles" in
9004    "$undef"|false|[nN]*) dflt='n' ;;
9005    *)   dflt='y' ;;
9006    esac
9007    cat <<EOM
9008
9009 Perl can be built to understand large files (files larger than 2 gigabytes)
9010 on some systems.  To do so, Configure can be run with -Duselargefiles.
9011
9012 If this doesn't make any sense to you, just accept the default '$dflt'.
9013 EOM
9014    rp='Try to understand large files, if available?'
9015    . ./myread
9016    case "$ans" in
9017    y|Y)         val="$define" ;;
9018    *)           val="$undef"  ;;
9019    esac
9020    ;;
9021 esac
9022 set uselargefiles
9023 eval $setvar
9024 case "$uselargefiles" in
9025 "$define")
9026 : Look for a hint-file generated 'call-back-unit'.  If the
9027 : user has specified that a large files perl is to be built,
9028 : we may need to set or change some other defaults.
9029         if $test -f uselargefiles.cbu; then
9030                 echo "Your platform has some specific hints for large file builds, using them..."
9031                 . ./uselargefiles.cbu
9032                 echo " "
9033                 echo "Rechecking to see how big your file offsets are..." >&4
9034                 $cat >try.c <<EOCP
9035 #include <sys/types.h>
9036 #include <stdio.h>
9037 int main()
9038 {
9039     printf("%d\n", (int)sizeof($lseektype));
9040     return(0); 
9041 }
9042 EOCP
9043                 set try
9044                 if eval $compile_ok; then
9045                         lseeksize=`$run ./try`
9046                         $echo "Your file offsets are now $lseeksize bytes long."
9047                 else
9048                         dflt="$lseeksize"
9049                         echo " "
9050                         echo "(I can't seem to compile the test program.  Guessing...)"
9051                         rp="What is the size of your file offsets (in bytes)?"
9052                         . ./myread
9053                         lseeksize="$ans"
9054                 fi
9055                 case "$fpostype" in
9056                 *_t) zzz="$fpostype"    ;;
9057                 *)   zzz="fpos_t"       ;;
9058                 esac
9059                 $echo $n "Rechecking the size of $zzz...$c" >&4 
9060                 $cat > try.c <<EOCP
9061 #include <sys/types.h>
9062 #include <stdio.h>
9063 #$i_stdlib I_STDLIB
9064 #ifdef I_STDLIB
9065 #include <stdlib.h>
9066 #endif
9067 int main() {
9068     printf("%d\n", (int)sizeof($fpostype));
9069     return(0);
9070 }
9071 EOCP
9072                 set try
9073                 if eval $compile_ok; then
9074                         yyy=`$run ./try`
9075                         dflt="$lseeksize"
9076                         case "$yyy" in
9077                         '')     echo " "
9078                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9079                                 ;;
9080                         *)      fpossize=$yyy
9081                                 echo " $fpossize bytes." >&4
9082                                 ;;
9083                         esac
9084                 else
9085                         dflt="$fpossize"
9086                         echo " "
9087                         echo "(I can't compile the test program.  Guessing...)" >&4
9088                         rp="What is the size of your file positions (in bytes)?"
9089                         . ./myread
9090                         fpossize="$ans"
9091                 fi
9092                 $rm -f try.c try
9093         fi
9094         ;;
9095 esac
9096
9097 case "$vendorprefix" in
9098 '')     d_vendorbin="$undef"
9099         vendorbin=''
9100         vendorbinexp=''
9101         ;;
9102 *)      d_vendorbin="$define"
9103         : determine where vendor-supplied executables go.
9104         case "$vendorbin" in
9105         '') dflt=$vendorprefix/bin ;;
9106         *)      dflt="$vendorbin" ;;
9107         esac
9108         fn=d~+
9109         rp='Pathname for the vendor-supplied executables directory?'
9110         . ./getfile
9111         vendorbin="$ans"
9112         vendorbinexp="$ansexp"
9113         ;;
9114 esac
9115 : Change installation prefix, if necessary.
9116 if $test X"$prefix" != X"$installprefix"; then
9117         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9118 else
9119         installvendorbin="$vendorbinexp"
9120 fi
9121
9122 case "$vendorprefix" in
9123 '')     vendorhtml1=''
9124         vendorhtml1exp=''
9125         ;;
9126 *)      : determine where vendor-supplied html pages go.
9127         : There is no standard location, so try to copy the previously-selected
9128         : directory structure for the core html pages.
9129         : XXX Better default suggestions would be welcome.
9130         case "$vendorhtml1" in
9131         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9132         *)      dflt=$vendorhtml1 ;;
9133         esac
9134         case "$dflt" in
9135         ''|' ') dflt=none ;;
9136         esac
9137         fn=dn+~
9138         rp='Pathname for the vendor-supplied html pages?'
9139         . ./getfile
9140         vendorhtml1="$ans"
9141         vendorhtml1exp="$ansexp"
9142         ;;
9143 esac
9144 : Use ' ' for none so value is preserved next time through Configure
9145 $test X"$vendorhtml1" = "X" && vendorhtml1=' '
9146 : Change installation prefix, if necessary.
9147 if $test X"$prefix" != X"$installprefix"; then
9148         installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
9149 else
9150         installvendorhtml1="$vendorhtml1exp"
9151 fi
9152
9153 case "$vendorprefix" in
9154 '')     vendorhtml3=''
9155         vendorhtml3exp=''
9156         ;;
9157 *)      : determine where vendor-supplied module html pages go.
9158         : There is no standard location, so try to copy the previously-selected
9159         : directory structure for the core html pages.
9160         : XXX Better default suggestions would be welcome.
9161         case "$vendorhtml3" in
9162         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9163         *)      dflt=$vendorhtml3 ;;
9164         esac
9165         case "$dflt" in
9166         ''|' ') dflt=none ;;
9167         esac
9168         fn=dn+~
9169         rp='Pathname for the vendor-supplied html pages?'
9170         . ./getfile
9171         vendorhtml3="$ans"
9172         vendorhtml3exp="$ansexp"
9173         ;;
9174 esac
9175 : Use ' ' for none so value is preserved next time through Configure
9176 $test X"$vendorhtml3" = "X" && vendorhtml3=' '
9177 : Change installation prefix, if necessary.
9178 if $test X"$prefix" != X"$installprefix"; then
9179         installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
9180 else
9181         installvendorhtml3="$vendorhtml3exp"
9182 fi
9183
9184 case "$vendorprefix" in
9185 '')     vendorman1=''
9186         vendorman1exp=''
9187         ;;
9188 *)      : determine where vendor-supplied manual pages go.
9189         case "$vendorman1" in
9190         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9191         *)      dflt=$vendorman1 ;;
9192         esac
9193         case "$dflt" in
9194         ''|' ') dflt=none ;;
9195         esac
9196         fn=nd~+
9197         rp='Pathname for the vendor-supplied manual section 1 pages?'
9198         . ./getfile
9199         vendorman1="$ans"
9200         vendorman1exp="$ansexp"
9201         ;;
9202 esac
9203 : Use ' ' for none so value is preserved next time through Configure
9204 $test X"$vendorman1" = "X" && vendorman1=' '
9205 : Change installation prefix, if necessary.
9206 if $test X"$prefix" != X"$installprefix"; then
9207         installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
9208 else
9209         installvendorman1="$vendorman1exp"
9210 fi
9211
9212 case "$vendorprefix" in
9213 '')     vendorman3=''
9214         vendorman3exp=''
9215         ;;
9216 *)      : determine where vendor-supplied module manual pages go.
9217         case "$vendorman3" in
9218         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9219         *)      dflt=$vendorman3 ;;
9220         esac
9221         case "$dflt" in
9222         ''|' ') dflt=none ;;
9223         esac
9224         fn=nd~+
9225         rp='Pathname for the vendor-supplied manual section 3 pages?'
9226         . ./getfile
9227         vendorman3="$ans"
9228         vendorman3exp="$ansexp"
9229         ;;
9230 esac
9231 : Use ' ' for none so value is preserved next time through Configure
9232 $test X"$vendorman3" = "X" && vendorman3=' '
9233 : Change installation prefix, if necessary.
9234 if $test X"$prefix" != X"$installprefix"; then
9235         installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
9236 else
9237         installvendorman3="$vendorman3exp"
9238 fi
9239
9240 case "$vendorprefix" in
9241 '')     d_vendorscript="$undef"
9242         vendorscript=''
9243         vendorscriptexp=''
9244         ;;
9245 *)      d_vendorscript="$define"
9246         : determine where vendor-supplied scripts go.
9247         case "$vendorscript" in
9248         '')     dflt=$vendorprefix/script
9249                 $test -d $dflt || dflt=$vendorbin ;;
9250         *)  dflt="$vendorscript" ;;
9251         esac
9252         $cat <<EOM
9253
9254 The installation process will create a directory for 
9255 vendor-supplied scripts.
9256
9257 EOM
9258         fn=d~+
9259         rp='Pathname for the vendor-supplied scripts directory?'
9260         . ./getfile
9261         vendorscript="$ans"
9262         vendorscriptexp="$ansexp"
9263         ;;
9264 esac
9265 : Change installation prefix, if necessary.
9266 if $test X"$prefix" != X"$installprefix"; then
9267         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9268 else
9269         installvendorscript="$vendorscriptexp"
9270 fi
9271
9272 : see if qgcvt exists
9273 set qgcvt d_qgcvt
9274 eval $inlibc
9275
9276 : Check how to convert floats to strings.
9277
9278 if test "X$d_Gconvert" = X; then
9279
9280 echo " "
9281 echo "Checking for an efficient way to convert floats to strings."
9282 echo " " > try.c
9283 case "$uselongdouble" in
9284 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9285 esac
9286 case "$d_longdbl" in
9287 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9288 esac
9289 case "$d_PRIgldbl" in
9290 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9291 esac
9292 $cat >>try.c <<EOP
9293 #ifdef TRY_gconvert
9294 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9295 char *myname = "gconvert";
9296 #endif
9297 #ifdef TRY_gcvt
9298 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9299 char *myname = "gcvt";
9300 #endif
9301 #ifdef TRY_qgcvt
9302 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9303 char *myname = "qgcvt";
9304 #define DOUBLETYPE long double
9305 #endif
9306 #ifdef TRY_sprintf
9307 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9308 #ifdef HAS_PRIgldbl
9309 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9310 #else
9311 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9312 #endif
9313 #else
9314 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9315 #endif
9316 char *myname = "sprintf";
9317 #endif
9318
9319 #ifndef DOUBLETYPE
9320 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9321 #define DOUBLETYPE long double
9322 #else
9323 #define DOUBLETYPE double
9324 #endif
9325 #endif
9326
9327 #include <stdio.h>
9328
9329 #define I_STDLIB $i_stdlib
9330 #ifdef I_STDLIB
9331 #include <stdlib.h>
9332 #endif
9333
9334 int
9335 checkit(expect, got)
9336 char *expect;
9337 char *got;
9338 {
9339     if (strcmp(expect, got)) {
9340                 printf("%s oddity:  Expected %s, got %s\n",
9341                         myname, expect, got);
9342                 exit(1);
9343         }
9344 }
9345
9346 int main()
9347
9348         char buf[64]; 
9349         buf[63] = '\0';
9350
9351         /* This must be 1st test on (which?) platform */
9352         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9353         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9354         checkit("0.1", buf);
9355
9356         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9357         checkit("0.01", buf);
9358
9359         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9360         checkit("0.001", buf);
9361
9362         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9363         checkit("0.0001", buf);
9364
9365         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9366         if (strlen(buf) > 5)
9367             checkit("9e-005", buf); /* for Microsoft ?? */
9368         else
9369             checkit("9e-05", buf);
9370
9371         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9372         checkit("1", buf);
9373
9374         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9375         checkit("1.1", buf);
9376
9377         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9378         checkit("1.01", buf);
9379
9380         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9381         checkit("1.001", buf);
9382
9383         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9384         checkit("1.0001", buf);
9385
9386         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9387         checkit("1.00001", buf);
9388
9389         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9390         checkit("1.000001", buf);
9391
9392         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9393         checkit("0", buf);
9394
9395         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9396         checkit("-1", buf);
9397
9398         /* Some Linux gcvt's give 1.e+5 here. */
9399         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9400         checkit("100000", buf);
9401         
9402         /* Some Linux gcvt's give -1.e+5 here. */
9403         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9404         checkit("-100000", buf);
9405
9406         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9407         checkit("123.456", buf);
9408
9409         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9410         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9411         /* 34 should be enough to scare even long double
9412          * places into using the e notation. */
9413         if (strlen(buf) > 5)
9414             checkit("1e+034", buf); /* for Microsoft */
9415         else
9416             checkit("1e+34", buf);
9417
9418         /* For Perl, if you add additional tests here, also add them to
9419          * t/base/num.t for benefit of platforms not using Configure or
9420          * overriding d_Gconvert */
9421
9422         exit(0);
9423 }
9424 EOP
9425 : first add preferred functions to our list
9426 xxx_list=""
9427 for xxx_convert in $gconvert_preference; do
9428     case $xxx_convert in
9429     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9430     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9431     esac 
9432 done
9433 : then add any others
9434 for xxx_convert in gconvert gcvt sprintf; do
9435     case "$xxx_list" in
9436     *$xxx_convert*) ;;
9437     *) xxx_list="$xxx_list $xxx_convert" ;;
9438     esac 
9439 done
9440
9441 case "$d_longdbl$uselongdouble" in
9442 "$define$define")
9443     : again, add prefered functions to our list first
9444     xxx_ld_list=""
9445     for xxx_convert in $gconvert_ld_preference; do
9446         case $xxx_convert in
9447         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9448         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9449         esac
9450     done
9451     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9452     for xxx_convert in qgcvt sprintf $xxx_list; do
9453         case "$xxx_ld_list" in
9454         $xxx_convert*|*" $xxx_convert"*) ;;
9455         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9456         esac
9457     done
9458     : if sprintf cannot do long doubles, move it to the end
9459     if test "$d_PRIgldbl" != "$define"; then
9460         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9461     fi
9462     : if no qgcvt, remove it
9463     if test "$d_qgcvt" != "$define"; then
9464         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9465     fi
9466     : use the ld_list
9467     xxx_list="$xxx_ld_list"
9468     ;;
9469 esac
9470
9471 for xxx_convert in $xxx_list; do
9472         echo "Trying $xxx_convert..."
9473         $rm -f try try$_o
9474         set try -DTRY_$xxx_convert
9475         if eval $compile; then
9476                 echo "$xxx_convert() found." >&4
9477                 if $run ./try; then
9478                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9479                         break;
9480                 else
9481                         echo "...But $xxx_convert didn't work as I expected."
9482                         xxx_convert=''
9483                 fi
9484         else
9485                 echo "$xxx_convert NOT found." >&4
9486         fi
9487 done
9488
9489 if test X$xxx_convert = X; then
9490     echo "*** WHOA THERE!!! ***" >&4
9491     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9492     xxx_convert=sprintf
9493 fi
9494
9495 case "$xxx_convert" in
9496 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9497 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9498 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9499 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9500    "$define$define$define")
9501       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9502    "$define$define$undef")
9503       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9504    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9505    esac
9506    ;;  
9507 esac
9508
9509 fi
9510
9511 : see if _fwalk exists
9512 set fwalk d__fwalk
9513 eval $inlibc
9514
9515 : Initialize h_fcntl
9516 h_fcntl=false
9517
9518 : Initialize h_sysfile
9519 h_sysfile=false
9520
9521 : access call always available on UNIX
9522 set access d_access
9523 eval $inlibc
9524
9525 : locate the flags for 'access()'
9526 case "$d_access" in
9527 "$define")
9528         echo " "
9529         $cat >access.c <<EOCP
9530 #include <sys/types.h>
9531 #ifdef I_FCNTL
9532 #include <fcntl.h>
9533 #endif
9534 #ifdef I_SYS_FILE
9535 #include <sys/file.h>
9536 #endif
9537 #ifdef I_UNISTD
9538 #include <unistd.h>
9539 #endif
9540 #$i_stdlib I_STDLIB
9541 #ifdef I_STDLIB
9542 #include <stdlib.h>
9543 #endif
9544 int main() {
9545         exit(R_OK);
9546 }
9547 EOCP
9548         : check sys/file.h first, no particular reason here
9549         if $test `./findhdr sys/file.h` && \
9550                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9551                 h_sysfile=true;
9552                 echo "<sys/file.h> defines the *_OK access constants." >&4
9553         elif $test `./findhdr fcntl.h` && \
9554                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9555                 h_fcntl=true;
9556                 echo "<fcntl.h> defines the *_OK access constants." >&4
9557         elif $test `./findhdr unistd.h` && \
9558                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9559                 echo "<unistd.h> defines the *_OK access constants." >&4
9560         else
9561                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9562         fi
9563         ;;
9564 esac
9565 $rm -f access*
9566
9567 : see if accessx exists
9568 set accessx d_accessx
9569 eval $inlibc
9570
9571 : see if alarm exists
9572 set alarm d_alarm
9573 eval $inlibc
9574
9575 : see if POSIX threads are available
9576 set pthread.h i_pthread
9577 eval $inhdr
9578
9579 : define a fucntion to check prototypes
9580 $cat > protochk <<EOSH
9581 $startsh
9582 cc="$cc"
9583 optimize="$optimize"
9584 ccflags="$ccflags"
9585 prototype="$prototype"
9586 define="$define"
9587 rm=$rm
9588 usethreads=$usethreads
9589 i_pthread=$i_pthread
9590 pthread_h_first=$pthread_h_first
9591 EOSH
9592
9593 $cat >> protochk <<'EOSH'
9594
9595 $rm -f try.c
9596 foo="$1"
9597 shift
9598 while test $# -ge 2; do
9599         case "$1" in
9600                 $define) echo "#include <$2>" >> try.c ;;
9601                 literal) echo "$2" >> try.c ;;
9602         esac
9603     # Extra magic for the benefit of systems that need pthread.h
9604     # to be included early to correctly detect threadsafe functions.
9605     # Such functions must guarantee themselves, though, that the usethreads
9606     # and i_pthread have been defined, before calling protochk.
9607     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9608         echo "#include <pthread.h>" >> try.c
9609         pthread_h_done=yes
9610     fi
9611     shift 2
9612 done
9613 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9614 cat >> try.c <<'EOCP'
9615 #ifdef CAN_PROTOTYPE
9616 #define _(args) args
9617 #else
9618 #define _(args) ()
9619 #endif
9620 EOCP
9621 echo "$foo" >> try.c
9622 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9623 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9624 status=$?
9625 $rm -f try.[co]
9626 exit $status
9627 EOSH
9628 chmod +x protochk
9629 $eunicefix protochk
9630
9631 : see if sys/types.h has to be included
9632 set sys/types.h i_systypes
9633 eval $inhdr
9634
9635 : see if sys/select.h has to be included
9636 set sys/select.h i_sysselct
9637 eval $inhdr
9638
9639 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9640 while $test $# -ge 2; do
9641         case "$1" in
9642         $define) echo "#include <$2>";;
9643         esac ;
9644     shift 2;
9645 done > try.c;
9646 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9647 set try;
9648 if eval $compile; then
9649         val="$define";
9650 else
9651         val="$undef";
9652 fi;
9653 set $varname;
9654 eval $setvar;
9655 $rm -f try.c try.o'
9656
9657 : see if we should include time.h, sys/time.h, or both
9658 echo " "
9659 if test "X$timeincl" = X; then
9660         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9661         $echo $n "I'm now running the test program...$c"
9662         $cat >try.c <<EOCP
9663 #include <sys/types.h>
9664 #ifdef I_TIME
9665 #include <time.h>
9666 #endif
9667 #ifdef I_SYSTIME
9668 #ifdef SYSTIMEKERNEL
9669 #define KERNEL
9670 #endif
9671 #include <sys/time.h>
9672 #endif
9673 #ifdef I_SYSSELECT
9674 #include <sys/select.h>
9675 #endif
9676 #$i_stdlib I_STDLIB
9677 #ifdef I_STDLIB
9678 #include <stdlib.h>
9679 #endif
9680 int main()
9681 {
9682         struct tm foo;
9683 #ifdef S_TIMEVAL
9684         struct timeval bar;
9685 #endif
9686 #ifdef S_TIMEZONE
9687         struct timezone tzp;
9688 #endif
9689         if (foo.tm_sec == foo.tm_sec)
9690                 exit(0);
9691 #ifdef S_TIMEVAL
9692         if (bar.tv_sec == bar.tv_sec)
9693                 exit(0);
9694 #endif
9695         exit(1);
9696 }
9697 EOCP
9698         flags=''
9699         for s_timezone in '-DS_TIMEZONE' ''; do
9700         sysselect=''
9701         for s_timeval in '-DS_TIMEVAL' ''; do
9702         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9703         for i_time in '' '-DI_TIME'; do
9704         for i_systime in '-DI_SYSTIME' ''; do
9705                 case "$flags" in
9706                 '') $echo $n ".$c"
9707                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9708                         if eval $compile; then
9709                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9710                                 shift
9711                                 flags="$*"
9712                                 echo " "
9713                                 $echo $n "Succeeded with $flags$c"
9714                         fi
9715                         ;;
9716                 esac
9717         done
9718         done
9719         done
9720         done
9721         done
9722         timeincl=''
9723         echo " "
9724         case "$flags" in
9725         *SYSTIMEKERNEL*) i_systimek="$define"
9726                 timeincl=`./findhdr sys/time.h`
9727                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9728         *) i_systimek="$undef";;
9729         esac
9730         case "$flags" in
9731         *I_TIME*) i_time="$define"
9732                 timeincl=`./findhdr time.h`" $timeincl"
9733                 echo "We'll include <time.h>." >&4;;
9734         *) i_time="$undef";;
9735         esac
9736         case "$flags" in
9737         *I_SYSTIME*) i_systime="$define"
9738                 timeincl=`./findhdr sys/time.h`" $timeincl"
9739                 echo "We'll include <sys/time.h>." >&4;;
9740         *) i_systime="$undef";;
9741         esac
9742         $rm -f try.c try
9743 fi
9744 : see if struct tm knows about tm_zone
9745 case "$i_systime$i_time" in
9746 *$define*) 
9747         echo " "
9748         echo "Checking to see if your struct tm has tm_zone field..." >&4
9749         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9750         eval $hasfield
9751         ;;
9752 *)      val="$undef"
9753         set d_tm_tm_zone
9754         eval $setvar
9755         ;;
9756 esac
9757 case "$d_tm_tm_zone" in
9758 "$define")      echo "Yes, it does."   ;;
9759 *)              echo "No, it doesn't." ;;
9760 esac
9761 : see if struct tm knows about tm_gmtoff
9762 case "$i_systime$i_time" in
9763 *$define*) 
9764         echo " "
9765         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9766         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9767         eval $hasfield
9768         ;;
9769 *)      val="$undef"
9770         set d_tm_tm_gmtoff
9771         eval $setvar
9772         ;;
9773 esac
9774 case "$d_tm_tm_gmtoff" in
9775 "$define")      echo "Yes, it does."   ;;
9776 *)              echo "No, it doesn't." ;;
9777 esac
9778
9779 : see if asctime_r exists
9780 set asctime_r d_asctime_r
9781 eval $inlibc
9782 case "$d_asctime_r" in
9783 "$define")
9784         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9785         case "$d_asctime_r_proto:$usethreads" in
9786         ":define")      d_asctime_r_proto=define
9787                 set d_asctime_r_proto asctime_r $hdrs
9788                 eval $hasproto ;;
9789         *)      ;;
9790         esac
9791         case "$d_asctime_r_proto" in
9792         define)
9793         case "$asctime_r_proto" in
9794         ''|0) try='char* asctime_r(const struct tm*, char*);'
9795         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9796         esac
9797         case "$asctime_r_proto" in
9798         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9799         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9800         esac
9801         case "$asctime_r_proto" in
9802         ''|0) try='int asctime_r(const struct tm*, char*);'
9803         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9804         esac
9805         case "$asctime_r_proto" in
9806         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9807         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9808         esac
9809         case "$asctime_r_proto" in
9810         ''|0)   d_asctime_r=undef
9811                 asctime_r_proto=0
9812                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9813         * )     case "$asctime_r_proto" in
9814                 REENTRANT_PROTO*) ;;
9815                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9816                 esac
9817                 echo "Prototype: $try" ;;
9818         esac
9819         ;;
9820         *)      case "$usethreads" in
9821                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9822                 esac
9823                 d_asctime_r=undef
9824                 asctime_r_proto=0
9825                 ;;
9826         esac
9827         ;;
9828 *)      asctime_r_proto=0
9829         ;;
9830 esac
9831
9832 : see if atolf exists
9833 set atolf d_atolf
9834 eval $inlibc
9835
9836 : see if atoll exists
9837 set atoll d_atoll
9838 eval $inlibc
9839
9840 : Look for GNU-cc style attribute checking
9841 echo " "
9842 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9843 $cat >attrib.c <<'EOCP'
9844 #include <stdio.h>
9845 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9846 EOCP
9847 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9848         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9849                 echo "Your C compiler doesn't fully support __attribute__."
9850                 val="$undef"
9851         else
9852                 echo "Your C compiler supports __attribute__."
9853                 val="$define"
9854         fi
9855 else
9856         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9857         val="$undef"
9858 fi
9859 set d_attribut
9860 eval $setvar
9861 $rm -f attrib*
9862
9863 : see if bcmp exists
9864 set bcmp d_bcmp
9865 eval $inlibc
9866
9867 : see if bcopy exists
9868 set bcopy d_bcopy
9869 eval $inlibc
9870
9871 : see if this is a unistd.h system
9872 set unistd.h i_unistd
9873 eval $inhdr
9874
9875 : see if getpgrp exists
9876 set getpgrp d_getpgrp
9877 eval $inlibc
9878
9879 case "$d_getpgrp" in
9880 "$define")
9881         echo " "
9882         echo "Checking to see which flavor of getpgrp is in use..."
9883         $cat >try.c <<EOP
9884 #$i_unistd I_UNISTD
9885 #include <sys/types.h>
9886 #ifdef I_UNISTD
9887 #  include <unistd.h>
9888 #endif
9889 #$i_stdlib I_STDLIB
9890 #ifdef I_STDLIB
9891 #include <stdlib.h>
9892 #endif
9893 int main()
9894 {
9895         if (getuid() == 0) {
9896                 printf("(I see you are running Configure as super-user...)\n");
9897                 setuid(1);
9898         }
9899 #ifdef TRY_BSD_PGRP
9900         if (getpgrp(1) == 0)
9901                 exit(0);
9902 #else
9903         if (getpgrp() > 0)
9904                 exit(0);
9905 #endif
9906         exit(1);
9907 }
9908 EOP
9909         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9910                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9911                 val="$define"
9912         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9913                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9914                 val="$undef"
9915         else
9916                 echo "I can't seem to compile and run the test program."
9917                 if ./usg; then
9918                         xxx="a USG one, i.e. you use getpgrp()."
9919                 else
9920                         # SVR4 systems can appear rather BSD-ish.
9921                         case "$i_unistd" in
9922                         $undef)
9923                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9924                                 val="$define"
9925                                 ;;
9926                         $define)
9927                                 xxx="probably a USG one, i.e. you use getpgrp()."
9928                                 val="$undef"
9929                                 ;;
9930                         esac
9931                 fi
9932                 echo "Assuming your getpgrp is $xxx" >&4
9933         fi
9934         ;;
9935 *) val="$undef";;
9936 esac
9937 set d_bsdgetpgrp
9938 eval $setvar
9939 $rm -f try try.*
9940
9941 : see if setpgrp exists
9942 set setpgrp d_setpgrp
9943 eval $inlibc
9944
9945 case "$d_setpgrp" in
9946 "$define")
9947         echo " "
9948         echo "Checking to see which flavor of setpgrp is in use..."
9949         $cat >try.c <<EOP
9950 #$i_unistd I_UNISTD
9951 #include <sys/types.h>
9952 #ifdef I_UNISTD
9953 #  include <unistd.h>
9954 #endif
9955 #$i_stdlib I_STDLIB
9956 #ifdef I_STDLIB
9957 #include <stdlib.h>
9958 #endif
9959 int main()
9960 {
9961         if (getuid() == 0) {
9962                 printf("(I see you are running Configure as super-user...)\n");
9963                 setuid(1);
9964         }
9965 #ifdef TRY_BSD_PGRP
9966         if (-1 == setpgrp(1, 1))
9967                 exit(0);
9968 #else
9969         if (setpgrp() != -1)
9970                 exit(0);
9971 #endif
9972         exit(1);
9973 }
9974 EOP
9975         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9976                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9977                 val="$define"
9978         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9979                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9980                 val="$undef"
9981         else
9982                 echo "(I can't seem to compile and run the test program.)"
9983                 if ./usg; then
9984                         xxx="a USG one, i.e. you use setpgrp()."
9985                 else
9986                         # SVR4 systems can appear rather BSD-ish.
9987                         case "$i_unistd" in
9988                         $undef)
9989                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9990                                 val="$define"
9991                                 ;;
9992                         $define)
9993                                 xxx="probably a USG one, i.e. you use setpgrp()."
9994                                 val="$undef"
9995                                 ;;
9996                         esac
9997                 fi
9998                 echo "Assuming your setpgrp is $xxx" >&4
9999         fi
10000         ;;
10001 *) val="$undef";;
10002 esac
10003 set d_bsdsetpgrp
10004 eval $setvar
10005 $rm -f try try.*
10006 : see if bzero exists
10007 set bzero d_bzero
10008 eval $inlibc
10009
10010 : see if signal is declared as pointer to function returning int or void
10011 echo " "
10012 xxx=`./findhdr signal.h`
10013 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10014 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
10015         echo "You have int (*signal())() instead of void." >&4
10016         val="$undef"
10017 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
10018         echo "You have void (*signal())()." >&4
10019         val="$define"
10020 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10021         echo "You have int (*signal())() instead of void." >&4
10022         val="$undef"
10023 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10024         echo "You have void (*signal())()." >&4
10025         val="$define"
10026 else
10027         case "$d_voidsig" in
10028         '')
10029         echo "I can't determine whether signal handler returns void or int..." >&4
10030                 dflt=void
10031                 rp="What type does your signal handler return?"
10032                 . ./myread
10033                 case "$ans" in
10034                 v*) val="$define";;
10035                 *) val="$undef";;
10036                 esac;;
10037         "$define")
10038                 echo "As you already told me, signal handler returns void." >&4
10039                 val="$define"
10040                 ;;
10041         *)      echo "As you already told me, signal handler returns int." >&4
10042                 val="$undef"
10043                 ;;
10044         esac
10045 fi
10046 set d_voidsig
10047 eval $setvar
10048 case "$d_voidsig" in
10049 "$define") signal_t="void";;
10050 *) signal_t="int";;
10051 esac
10052 $rm -f $$.tmp
10053
10054 : check for ability to cast large floats to 32-bit ints.
10055 echo " "
10056 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10057 if $test "$intsize" -ge 4; then
10058         xxx=int
10059 else
10060         xxx=long
10061 fi
10062 $cat >try.c <<EOCP
10063 #include <stdio.h>
10064 #$i_stdlib I_STDLIB
10065 #ifdef I_STDLIB
10066 #include <stdlib.h>
10067 #endif
10068 #include <sys/types.h>
10069 #include <signal.h>
10070 $signal_t blech(s) int s; { exit(3); }
10071 int main()
10072 {
10073         $xxx i32;
10074         double f, g;
10075         int result = 0;
10076         char str[16];
10077         signal(SIGFPE, blech);
10078
10079         /* Don't let compiler optimize the test away.  Store the number 
10080            in a writable string for gcc to pass to sscanf under HP/UX.
10081         */
10082         sprintf(str, "2147483647");
10083         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10084         g = 10 * f;
10085         i32  = ($xxx) g;
10086
10087         /* x86 processors will probably give 0x8000 0000, which is a
10088        sign change.  We don't want that.  We want to mimic SPARC
10089            behavior here, which is to preserve the sign and give
10090            back 0x7fff ffff.
10091         */
10092         if (i32 != ($xxx) f)
10093                 result |= 1;
10094         exit(result);
10095 }
10096 EOCP
10097 set try
10098 if eval $compile_ok; then
10099         $run ./try
10100         yyy=$?
10101 else
10102         echo "(I can't seem to compile the test program--assuming it can't)"
10103         yyy=1
10104 fi
10105 case "$yyy" in
10106 0)      val="$define"
10107         echo "Yup, it can."
10108         ;;
10109 *)      val="$undef"
10110         echo "Nope, it can't."
10111         ;;
10112 esac
10113 set d_casti32
10114 eval $setvar
10115 $rm -f try try.*
10116
10117 : check for ability to cast negative floats to unsigned
10118 echo " "
10119 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10120 $cat >try.c <<EOCP
10121 #include <stdio.h>
10122 #$i_stdlib I_STDLIB
10123 #ifdef I_STDLIB
10124 #include <stdlib.h>
10125 #endif
10126 #include <sys/types.h>
10127 #include <signal.h>
10128 $signal_t blech(s) int s; { exit(7); }
10129 $signal_t blech_in_list(s) int s; { exit(4); }
10130 unsigned long dummy_long(p) unsigned long p; { return p; }
10131 unsigned int dummy_int(p) unsigned int p; { return p; }
10132 unsigned short dummy_short(p) unsigned short p; { return p; }
10133 int main()
10134 {
10135         double f;
10136         unsigned long along;
10137         unsigned int aint;
10138         unsigned short ashort;
10139         int result = 0;
10140         char str[16];
10141         
10142         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10143            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10144            optimized the whole file away
10145         */
10146         /* Store the number in a writable string for gcc to pass to 
10147            sscanf under HP/UX.
10148         */
10149         sprintf(str, "-123");
10150         sscanf(str, "%lf", &f);  /* f = -123.; */
10151
10152         signal(SIGFPE, blech);
10153         along = (unsigned long)f;
10154         aint = (unsigned int)f;
10155         ashort = (unsigned short)f;
10156         if (along != (unsigned long)-123)
10157                 result |= 1;
10158         if (aint != (unsigned int)-123)
10159                 result |= 1;
10160         if (ashort != (unsigned short)-123)
10161                 result |= 1;
10162         sprintf(str, "1073741824.");
10163         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10164         f = f + f;
10165         along = 0;
10166         along = (unsigned long)f;
10167         if (along != 0x80000000)
10168                 result |= 2;
10169         f -= 1.;
10170         along = 0;
10171         along = (unsigned long)f;
10172         if (along != 0x7fffffff)
10173                 result |= 1;
10174         f += 2.;
10175         along = 0;
10176         along = (unsigned long)f;
10177         if (along != 0x80000001)
10178                 result |= 2;
10179         if (result)
10180                 exit(result);
10181         signal(SIGFPE, blech_in_list);
10182         sprintf(str, "123.");
10183         sscanf(str, "%lf", &f);  /* f = 123.; */
10184         along = dummy_long((unsigned long)f);
10185         aint = dummy_int((unsigned int)f);
10186         ashort = dummy_short((unsigned short)f);
10187         if (along != (unsigned long)123)
10188                 result |= 4;
10189         if (aint != (unsigned int)123)
10190                 result |= 4;
10191         if (ashort != (unsigned short)123)
10192                 result |= 4;
10193         exit(result);
10194
10195 }
10196 EOCP
10197 set try
10198 if eval $compile_ok; then
10199         $run ./try
10200         castflags=$?
10201 else
10202         echo "(I can't seem to compile the test program--assuming it can't)"
10203         castflags=7
10204 fi
10205 case "$castflags" in
10206 0)      val="$define"
10207         echo "Yup, it can."
10208         ;;
10209 *)      val="$undef"
10210         echo "Nope, it can't."
10211         ;;
10212 esac
10213 set d_castneg
10214 eval $setvar
10215 $rm -f try.*
10216
10217 : see if vprintf exists
10218 echo " "
10219 if set vprintf val -f d_vprintf; eval $csym; $val; then
10220         echo 'vprintf() found.' >&4
10221         val="$define"
10222         $cat >try.c <<EOF
10223 #include <varargs.h>
10224 #$i_stdlib I_STDLIB
10225 #ifdef I_STDLIB
10226 #include <stdlib.h>
10227 #endif
10228
10229 int main() { xxx("foo"); }
10230
10231 xxx(va_alist)
10232 va_dcl
10233 {
10234         va_list args;
10235         char buf[10];
10236
10237         va_start(args);
10238         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10239 }
10240 EOF
10241         set try
10242         if eval $compile && $run ./try; then
10243                 echo "Your vsprintf() returns (int)." >&4
10244                 val2="$undef"
10245         else
10246                 echo "Your vsprintf() returns (char*)." >&4
10247                 val2="$define"
10248         fi
10249 else
10250         echo 'vprintf() NOT found.' >&4
10251                 val="$undef"
10252                 val2="$undef"
10253 fi
10254 $rm -f try try.*
10255 set d_vprintf
10256 eval $setvar
10257 val=$val2
10258 set d_charvspr
10259 eval $setvar
10260
10261 : see if chown exists
10262 set chown d_chown
10263 eval $inlibc
10264
10265 : see if chroot exists
10266 set chroot d_chroot
10267 eval $inlibc
10268
10269 : see if chsize exists
10270 set chsize d_chsize
10271 eval $inlibc
10272
10273 : see if class exists
10274 set class d_class
10275 eval $inlibc
10276
10277 hasstruct='varname=$1; struct=$2; shift; shift;
10278 while $test $# -ge 2; do
10279         case "$1" in
10280         $define) echo "#include <$2>";;
10281         esac ;
10282     shift 2;
10283 done > try.c;
10284 echo "int main () { struct $struct foo; }" >> try.c;
10285 set try;
10286 if eval $compile; then
10287         val="$define";
10288 else
10289         val="$undef";
10290 fi;
10291 set $varname;
10292 eval $setvar;
10293 $rm -f try.c try.o'
10294
10295 socketlib=''
10296 sockethdr=''
10297 : see whether socket exists
10298 echo " "
10299 $echo $n "Hmm... $c" >&4
10300 if set socket val -f d_socket; eval $csym; $val; then
10301         echo "Looks like you have Berkeley networking support." >&4
10302         d_socket="$define"
10303         if set setsockopt val -f; eval $csym; $val; then
10304                 d_oldsock="$undef"
10305         else
10306                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10307                 d_oldsock="$define"
10308         fi
10309 else
10310         if $contains socklib libc.list >/dev/null 2>&1; then
10311                 echo "Looks like you have Berkeley networking support." >&4
10312                 d_socket="$define"
10313                 : we will have to assume that it supports the 4.2 BSD interface
10314                 d_oldsock="$undef"
10315         else
10316                 echo "You don't have Berkeley networking in libc$_a..." >&4
10317                 if test "X$d_socket" = "X$define"; then
10318                    echo "...but you seem to believe that you have sockets." >&4
10319                 else
10320                         for net in net socket
10321                         do
10322                                 if test -f /usr/lib/lib$net$_a; then
10323                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10324                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10325                                         if $contains socket libc.list >/dev/null 2>&1; then
10326                                                 d_socket="$define"
10327                                                 socketlib="-l$net"
10328                                                 case "$net" in
10329                                                 net)
10330                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10331                                                         sockethdr="-I/usr/netinclude"
10332                                                         ;;
10333                                                 esac
10334                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10335                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10336                                                         d_oldsock="$undef"
10337                                                 else
10338                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10339                                                         d_oldsock="$define"
10340                                                 fi
10341                                                 break
10342                                         fi
10343                                 fi
10344                         done
10345                         if test "X$d_socket" != "X$define"; then
10346                            echo "or anywhere else I see." >&4
10347                            d_socket="$undef"
10348                            d_oldsock="$undef"
10349                         fi
10350                 fi
10351         fi
10352 fi
10353
10354 : see if socketpair exists
10355 set socketpair d_sockpair
10356 eval $inlibc
10357
10358
10359 echo " "
10360 echo "Checking the availability of certain socket constants..." >&4
10361 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10362         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10363         $cat >try.c <<EOF
10364 #include <sys/types.h>
10365 #include <sys/socket.h>
10366 int main() {
10367     int i = $ENUM;
10368 }
10369 EOF
10370         val="$undef"
10371         set try; if eval $compile; then
10372                 val="$define"
10373         fi
10374         set d_${enum}; eval $setvar
10375         $rm -f try.c try
10376 done
10377
10378 : see if this is a sys/uio.h system
10379 set sys/uio.h i_sysuio
10380 eval $inhdr
10381
10382
10383 echo " "
10384 echo "Checking to see if your system supports struct cmsghdr..." >&4
10385 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10386 eval $hasstruct
10387 case "$d_cmsghdr_s" in
10388 "$define")      echo "Yes, it does."   ;;
10389 *)              echo "No, it doesn't." ;;
10390 esac
10391
10392
10393 : check for const keyword
10394 echo " "
10395 echo 'Checking to see if your C compiler knows about "const"...' >&4
10396 $cat >const.c <<'EOCP'
10397 typedef struct spug { int drokk; } spug;
10398 int main()
10399 {
10400         const char *foo;
10401         const spug y;
10402 }
10403 EOCP
10404 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10405         val="$define"
10406         echo "Yup, it does."
10407 else
10408         val="$undef"
10409         echo "Nope, it doesn't."
10410 fi
10411 set d_const
10412 eval $setvar
10413
10414 : see if crypt exists
10415 echo " "
10416 set crypt d_crypt
10417 eval $inlibc
10418 case "$d_crypt" in
10419 $define) cryptlib='' ;;
10420 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10421                 echo 'crypt() found.' >&4
10422                 val="$define"
10423                 cryptlib=''
10424         else
10425                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10426                 if $test -z "$cryptlib"; then
10427                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10428                 else
10429                         cryptlib=-lcrypt
10430                 fi
10431                 if $test -z "$cryptlib"; then
10432                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10433                 else
10434                         cryptlib=-lcrypt
10435                 fi
10436                 if $test -z "$cryptlib"; then
10437                         cryptlib=`./loc libcrypt$_a "" $libpth`
10438                 else
10439                         cryptlib=-lcrypt
10440                 fi
10441                 if $test -z "$cryptlib"; then
10442                         echo 'crypt() NOT found.' >&4
10443                         val="$undef"
10444                 else
10445                         val="$define"
10446                 fi
10447         fi
10448         set d_crypt
10449         eval $setvar
10450         ;;
10451 esac
10452
10453 : see if this is a crypt.h system
10454 set crypt.h i_crypt
10455 eval $inhdr
10456
10457 : see if crypt_r exists
10458 set crypt_r d_crypt_r
10459 eval $inlibc
10460 case "$d_crypt_r" in
10461 "$define")
10462         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10463         case "$d_crypt_r_proto:$usethreads" in
10464         ":define")      d_crypt_r_proto=define
10465                 set d_crypt_r_proto crypt_r $hdrs
10466                 eval $hasproto ;;
10467         *)      ;;
10468         esac
10469         case "$d_crypt_r_proto" in
10470         define)
10471         case "$crypt_r_proto" in
10472         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10473         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10474         esac
10475         case "$crypt_r_proto" in
10476         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10477         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10478         esac
10479         case "$crypt_r_proto" in
10480         ''|0)   d_crypt_r=undef
10481                 crypt_r_proto=0
10482                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10483         * )     case "$crypt_r_proto" in
10484                 REENTRANT_PROTO*) ;;
10485                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10486                 esac
10487                 echo "Prototype: $try" ;;
10488         esac
10489         ;;
10490         *)      case "$usethreads" in
10491                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10492                 esac
10493                 d_crypt_r=undef
10494                 crypt_r_proto=0
10495                 ;;
10496         esac
10497         ;;
10498 *)      crypt_r_proto=0
10499         ;;
10500 esac
10501
10502 : get csh whereabouts
10503 case "$csh" in
10504 'csh') val="$undef" ;;
10505 *) val="$define" ;;
10506 esac
10507 set d_csh
10508 eval $setvar
10509 : Respect a hint or command line value for full_csh.
10510 case "$full_csh" in
10511 '') full_csh=$csh ;;
10512 esac
10513
10514 : see if ctermid_r exists
10515 set ctermid_r d_ctermid_r
10516 eval $inlibc
10517 case "$d_ctermid_r" in
10518 "$define")
10519         hdrs="$i_systypes sys/types.h define stdio.h "
10520         case "$d_ctermid_r_proto:$usethreads" in
10521         ":define")      d_ctermid_r_proto=define
10522                 set d_ctermid_r_proto ctermid_r $hdrs
10523                 eval $hasproto ;;
10524         *)      ;;
10525         esac
10526         case "$d_ctermid_r_proto" in
10527         define)
10528         case "$ctermid_r_proto" in
10529         ''|0) try='char* ctermid_r(char*);'
10530         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10531         esac
10532         case "$ctermid_r_proto" in
10533         ''|0)   d_ctermid_r=undef
10534                 ctermid_r_proto=0
10535                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10536         * )     case "$ctermid_r_proto" in
10537                 REENTRANT_PROTO*) ;;
10538                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10539                 esac
10540                 echo "Prototype: $try" ;;
10541         esac
10542         ;;
10543         *)      case "$usethreads" in
10544                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10545                 esac
10546                 d_ctermid_r=undef
10547                 ctermid_r_proto=0
10548                 ;;
10549         esac
10550         ;;
10551 *)      ctermid_r_proto=0
10552         ;;
10553 esac
10554
10555 : see if ctime_r exists
10556 set ctime_r d_ctime_r
10557 eval $inlibc
10558 case "$d_ctime_r" in
10559 "$define")
10560         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10561         case "$d_ctime_r_proto:$usethreads" in
10562         ":define")      d_ctime_r_proto=define
10563                 set d_ctime_r_proto ctime_r $hdrs
10564                 eval $hasproto ;;
10565         *)      ;;
10566         esac
10567         case "$d_ctime_r_proto" in
10568         define)
10569         case "$ctime_r_proto" in
10570         ''|0) try='char* ctime_r(const time_t*, char*);'
10571         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10572         esac
10573         case "$ctime_r_proto" in
10574         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10575         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10576         esac
10577         case "$ctime_r_proto" in
10578         ''|0) try='int ctime_r(const time_t*, char*);'
10579         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10580         esac
10581         case "$ctime_r_proto" in
10582         ''|0) try='int ctime_r(const time_t*, char*, int);'
10583         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10584         esac
10585         case "$ctime_r_proto" in
10586         ''|0)   d_ctime_r=undef
10587                 ctime_r_proto=0
10588                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10589         * )     case "$ctime_r_proto" in
10590                 REENTRANT_PROTO*) ;;
10591                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10592                 esac
10593                 echo "Prototype: $try" ;;
10594         esac
10595         ;;
10596         *)      case "$usethreads" in
10597                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10598                 esac
10599                 d_ctime_r=undef
10600                 ctime_r_proto=0
10601                 ;;
10602         esac
10603         ;;
10604 *)      ctime_r_proto=0
10605         ;;
10606 esac
10607
10608 : see if cuserid exists
10609 set cuserid d_cuserid
10610 eval $inlibc
10611
10612 : see if this is a limits.h system
10613 set limits.h i_limits
10614 eval $inhdr
10615
10616 : see if this is a float.h system
10617 set float.h i_float
10618 eval $inhdr
10619
10620 : See if number of significant digits in a double precision number is known
10621 echo " "
10622 $cat >dbl_dig.c <<EOM
10623 #$i_limits I_LIMITS
10624 #$i_float I_FLOAT
10625 #ifdef I_LIMITS
10626 #include <limits.h>
10627 #endif
10628 #ifdef I_FLOAT
10629 #include <float.h>
10630 #endif
10631 #ifdef DBL_DIG
10632 printf("Contains DBL_DIG");
10633 #endif
10634 EOM
10635 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10636 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10637         echo "DBL_DIG found." >&4
10638         val="$define"
10639 else
10640         echo "DBL_DIG NOT found." >&4
10641         val="$undef"
10642 fi
10643 $rm -f dbl_dig.?
10644 set d_dbl_dig
10645 eval $setvar
10646
10647 : see if dbm.h is available
10648 : see if dbmclose exists
10649 set dbmclose d_dbmclose
10650 eval $inlibc
10651
10652 case "$d_dbmclose" in
10653 $define)
10654         set dbm.h i_dbm
10655         eval $inhdr
10656         case "$i_dbm" in
10657         $define)
10658                 val="$undef"
10659                 set i_rpcsvcdbm
10660                 eval $setvar
10661                 ;;
10662         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10663                 eval $inhdr
10664                 ;;
10665         esac
10666         ;;
10667 *)      echo "We won't be including <dbm.h>"
10668         val="$undef"
10669         set i_dbm
10670         eval $setvar
10671         val="$undef"
10672         set i_rpcsvcdbm
10673         eval $setvar
10674         ;;
10675 esac
10676
10677 : see if prototype for dbminit is available
10678 echo " "
10679 set d_dbminitproto dbminit $i_dbm dbm.h
10680 eval $hasproto
10681
10682 : see if difftime exists
10683 set difftime d_difftime
10684 eval $inlibc
10685
10686 : see if this is a dirent system
10687 echo " "
10688 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10689         val="$define"
10690         echo "<dirent.h> found." >&4
10691 else
10692         val="$undef"
10693         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10694                 echo "<sys/dir.h> found." >&4
10695                 echo " "
10696         else
10697                 xinc=`./findhdr sys/ndir.h`
10698         fi
10699         echo "<dirent.h> NOT found." >&4
10700 fi
10701 set i_dirent
10702 eval $setvar
10703
10704 : Look for type of directory structure.
10705 echo " "
10706 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10707
10708 case "$direntrytype" in
10709 ''|' ')
10710         case "$i_dirent" in
10711         $define) guess1='struct dirent' ;;
10712         *) guess1='struct direct'  ;;
10713         esac
10714         ;;
10715 *)      guess1="$direntrytype"
10716         ;;
10717 esac
10718
10719 case "$guess1" in
10720 'struct dirent') guess2='struct direct' ;;
10721 *) guess2='struct dirent' ;;
10722 esac
10723                 
10724 if $contains "$guess1" try.c >/dev/null 2>&1; then
10725         direntrytype="$guess1"
10726         echo "Your directory entries are $direntrytype." >&4
10727 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10728         direntrytype="$guess2"
10729         echo "Your directory entries seem to be $direntrytype." >&4
10730 else
10731         echo "I don't recognize your system's directory entries." >&4
10732         rp="What type is used for directory entries on this system?"
10733         dflt="$guess1"
10734         . ./myread
10735         direntrytype="$ans"
10736 fi
10737 $rm -f try.c
10738
10739
10740 : see if the directory entry stores field length
10741 echo " "
10742 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10743 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10744         echo "Good, your directory entry keeps length information in d_namlen." >&4
10745         val="$define"
10746 else
10747         echo "Your directory entry does not know about the d_namlen field." >&4
10748         val="$undef"
10749 fi
10750 set d_dirnamlen
10751 eval $setvar
10752 $rm -f try.c
10753
10754 : see if this is an sysdir system
10755 set sys/dir.h i_sysdir
10756 eval $inhdr
10757
10758 : see if this is an sysndir system
10759 set sys/ndir.h i_sysndir
10760 eval $inhdr
10761
10762 : Look for dirfd
10763 echo " "
10764 $cat >dirfd.c <<EOM
10765 #include <stdio.h>
10766 #$i_stdlib I_STDLIB
10767 #ifdef I_STDLIB
10768 #include <stdlib.h>
10769 #endif
10770 #$i_dirent I_DIRENT             /**/
10771 #$i_sysdir I_SYS_DIR            /**/
10772 #$i_sysndir I_SYS_NDIR          /**/
10773 #$i_systypes I_SYS_TYPES        /**/
10774 #if defined(I_SYS_TYPES)
10775 #include <sys/types.h>
10776 #endif
10777 #if defined(I_DIRENT)
10778 #include <dirent.h>
10779 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10780 #include <sys/dir.h>
10781 #endif
10782 #else
10783 #ifdef I_SYS_NDIR
10784 #include <sys/ndir.h>
10785 #else
10786 #ifdef I_SYS_DIR
10787 #ifdef hp9000s500
10788 #include <ndir.h>       /* may be wrong in the future */
10789 #else
10790 #include <sys/dir.h>
10791 #endif
10792 #endif
10793 #endif
10794 #endif 
10795 int main() {
10796         DIR *dirp = opendir(".");
10797         if (dirfd(dirp) >= 0)
10798                 exit(0);
10799         else
10800                 exit(1);
10801 }
10802 EOM
10803 set dirfd
10804 if eval $compile; then
10805         val="$define"
10806 fi
10807 case "$val" in
10808 $define)        echo "dirfd() found." >&4       ;;
10809 *)              echo "dirfd() NOT found." >&4   ;;
10810 esac
10811 set d_dirfd
10812 eval $setvar
10813 $rm -f dirfd*
10814
10815 : see if dlerror exists
10816 xxx_runnm="$runnm"
10817 runnm=false
10818 set dlerror d_dlerror
10819 eval $inlibc
10820 runnm="$xxx_runnm"
10821
10822 : see if dlfcn is available
10823 set dlfcn.h i_dlfcn
10824 eval $inhdr
10825
10826 case "$usedl" in
10827 $define|y|true)
10828         $cat << EOM
10829
10830 On a few systems, the dynamically loaded modules that perl generates and uses
10831 will need a different extension than shared libs. The default will probably
10832 be appropriate.
10833
10834 EOM
10835         case "$dlext" in
10836         '')     dflt="$so" ;;
10837         *)      dflt="$dlext" ;;
10838         esac
10839         rp='What is the extension of dynamically loaded modules'
10840         . ./myread
10841         dlext="$ans"
10842         ;;
10843 *)
10844         dlext="none"
10845         ;;
10846 esac
10847
10848 : Check if dlsym need a leading underscore
10849 echo " "
10850 val="$undef"
10851
10852 case "$dlsrc" in
10853 dl_dlopen.xs)
10854         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10855         $cat >dyna.c <<'EOM'
10856 fred () { }
10857 EOM
10858
10859 $cat >fred.c<<EOM
10860
10861 #include <stdio.h>
10862 #$i_stdlib I_STDLIB
10863 #ifdef I_STDLIB
10864 #include <stdlib.h>
10865 #endif
10866 #$i_dlfcn I_DLFCN
10867 #ifdef I_DLFCN
10868 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10869 #else
10870 #include <sys/types.h>
10871 #include <nlist.h>
10872 #include <link.h>
10873 #endif
10874
10875 extern int fred() ;
10876
10877 int main()
10878 {
10879     void * handle ;
10880     void * symbol ;
10881 #ifndef RTLD_LAZY
10882     int mode = 1 ;
10883 #else
10884     int mode = RTLD_LAZY ;
10885 #endif
10886     handle = dlopen("./dyna.$dlext", mode) ;
10887     if (handle == NULL) {
10888         printf ("1\n") ;
10889         fflush (stdout) ;
10890         exit(0);
10891     }
10892     symbol = dlsym(handle, "fred") ;
10893     if (symbol == NULL) {
10894         /* try putting a leading underscore */
10895         symbol = dlsym(handle, "_fred") ;
10896         if (symbol == NULL) {
10897             printf ("2\n") ;
10898             fflush (stdout) ;
10899             exit(0);
10900         }
10901         printf ("3\n") ;
10902     }
10903     else
10904         printf ("4\n") ;
10905     fflush (stdout) ;
10906     exit(0);
10907 }
10908 EOM
10909         : Call the object file tmp-dyna.o in case dlext=o.
10910         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10911                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10912                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10913                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10914                 xxx=`$run ./fred`
10915                 case $xxx in
10916                 1)      echo "Test program failed using dlopen." >&4
10917                         echo "Perhaps you should not use dynamic loading." >&4;;
10918                 2)      echo "Test program failed using dlsym." >&4
10919                         echo "Perhaps you should not use dynamic loading." >&4;;
10920                 3)      echo "dlsym needs a leading underscore" >&4
10921                         val="$define" ;;
10922                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10923                 esac
10924         else
10925                 echo "I can't compile and run the test program." >&4
10926                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10927         fi
10928         ;;
10929 esac
10930                 
10931 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10932
10933 set d_dlsymun
10934 eval $setvar
10935
10936 : see if drand48_r exists
10937 set drand48_r d_drand48_r
10938 eval $inlibc
10939 case "$d_drand48_r" in
10940 "$define")
10941         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10942         case "$d_drand48_r_proto:$usethreads" in
10943         ":define")      d_drand48_r_proto=define
10944                 set d_drand48_r_proto drand48_r $hdrs
10945                 eval $hasproto ;;
10946         *)      ;;
10947         esac
10948         case "$d_drand48_r_proto" in
10949         define)
10950         case "$drand48_r_proto" in
10951         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10952         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10953         esac
10954         case "$drand48_r_proto" in
10955         ''|0)   d_drand48_r=undef
10956                 drand48_r_proto=0
10957                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10958         * )     case "$drand48_r_proto" in
10959                 REENTRANT_PROTO*) ;;
10960                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10961                 esac
10962                 echo "Prototype: $try" ;;
10963         esac
10964         ;;
10965         *)      case "$usethreads" in
10966                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10967                 esac
10968                 d_drand48_r=undef
10969                 drand48_r_proto=0
10970                 ;;
10971         esac
10972         ;;
10973 *)      drand48_r_proto=0
10974         ;;
10975 esac
10976
10977 : see if prototype for drand48 is available
10978 echo " "
10979 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10980 eval $hasproto
10981
10982 : see if dup2 exists
10983 set dup2 d_dup2
10984 eval $inlibc
10985
10986 : see if eaccess exists
10987 set eaccess d_eaccess
10988 eval $inlibc
10989
10990 : see if endgrent exists
10991 set endgrent d_endgrent
10992 eval $inlibc
10993
10994 : see if this is an grp system
10995 set grp.h i_grp
10996 eval $inhdr
10997
10998 case "$i_grp" in
10999 $define)
11000         xxx=`./findhdr grp.h`
11001         $cppstdin $cppflags $cppminus < $xxx >$$.h
11002
11003         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11004                 val="$define"
11005         else
11006                 val="$undef"
11007         fi
11008         set d_grpasswd
11009         eval $setvar
11010
11011         $rm -f $$.h
11012         ;;
11013 *)
11014         val="$undef";
11015         set d_grpasswd; eval $setvar
11016         ;;
11017 esac
11018
11019 : see if endgrent_r exists
11020 set endgrent_r d_endgrent_r
11021 eval $inlibc
11022 case "$d_endgrent_r" in
11023 "$define")
11024         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11025         case "$d_endgrent_r_proto:$usethreads" in
11026         ":define")      d_endgrent_r_proto=define
11027                 set d_endgrent_r_proto endgrent_r $hdrs
11028                 eval $hasproto ;;
11029         *)      ;;
11030         esac
11031         case "$d_endgrent_r_proto" in
11032         define)
11033         case "$endgrent_r_proto" in
11034         ''|0) try='int endgrent_r(FILE**);'
11035         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11036         esac
11037         case "$endgrent_r_proto" in
11038         ''|0) try='void endgrent_r(FILE**);'
11039         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11040         esac
11041         case "$endgrent_r_proto" in
11042         ''|0)   d_endgrent_r=undef
11043                 endgrent_r_proto=0
11044                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11045         * )     case "$endgrent_r_proto" in
11046                 REENTRANT_PROTO*) ;;
11047                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11048                 esac
11049                 echo "Prototype: $try" ;;
11050         esac
11051         ;;
11052         *)      case "$usethreads" in
11053                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11054                 esac
11055                 d_endgrent_r=undef
11056                 endgrent_r_proto=0
11057                 ;;
11058         esac
11059         ;;
11060 *)      endgrent_r_proto=0
11061         ;;
11062 esac
11063
11064 : see if endhostent exists
11065 set endhostent d_endhent
11066 eval $inlibc
11067
11068 : see if this is a netdb.h system
11069 set netdb.h i_netdb
11070 eval $inhdr
11071
11072 : see if endhostent_r exists
11073 set endhostent_r d_endhostent_r
11074 eval $inlibc
11075 case "$d_endhostent_r" in
11076 "$define")
11077         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11078         case "$d_endhostent_r_proto:$usethreads" in
11079         ":define")      d_endhostent_r_proto=define
11080                 set d_endhostent_r_proto endhostent_r $hdrs
11081                 eval $hasproto ;;
11082         *)      ;;
11083         esac
11084         case "$d_endhostent_r_proto" in
11085         define)
11086         case "$endhostent_r_proto" in
11087         ''|0) try='int endhostent_r(struct hostent_data*);'
11088         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11089         esac
11090         case "$endhostent_r_proto" in
11091         ''|0) try='void endhostent_r(struct hostent_data*);'
11092         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11093         esac
11094         case "$endhostent_r_proto" in
11095         ''|0)   d_endhostent_r=undef
11096                 endhostent_r_proto=0
11097                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11098         * )     case "$endhostent_r_proto" in
11099                 REENTRANT_PROTO*) ;;
11100                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11101                 esac
11102                 echo "Prototype: $try" ;;
11103         esac
11104         ;;
11105         *)      case "$usethreads" in
11106                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11107                 esac
11108                 d_endhostent_r=undef
11109                 endhostent_r_proto=0
11110                 ;;
11111         esac
11112         ;;
11113 *)      endhostent_r_proto=0
11114         ;;
11115 esac
11116
11117 : see if endnetent exists
11118 set endnetent d_endnent
11119 eval $inlibc
11120
11121 : see if endnetent_r exists
11122 set endnetent_r d_endnetent_r
11123 eval $inlibc
11124 case "$d_endnetent_r" in
11125 "$define")
11126         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11127         case "$d_endnetent_r_proto:$usethreads" in
11128         ":define")      d_endnetent_r_proto=define
11129                 set d_endnetent_r_proto endnetent_r $hdrs
11130                 eval $hasproto ;;
11131         *)      ;;
11132         esac
11133         case "$d_endnetent_r_proto" in
11134         define)
11135         case "$endnetent_r_proto" in
11136         ''|0) try='int endnetent_r(struct netent_data*);'
11137         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11138         esac
11139         case "$endnetent_r_proto" in
11140         ''|0) try='void endnetent_r(struct netent_data*);'
11141         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11142         esac
11143         case "$endnetent_r_proto" in
11144         ''|0)   d_endnetent_r=undef
11145                 endnetent_r_proto=0
11146                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11147         * )     case "$endnetent_r_proto" in
11148                 REENTRANT_PROTO*) ;;
11149                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11150                 esac
11151                 echo "Prototype: $try" ;;
11152         esac
11153         ;;
11154         *)      case "$usethreads" in
11155                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11156                 esac
11157                 d_endnetent_r=undef
11158                 endnetent_r_proto=0
11159                 ;;
11160         esac
11161         ;;
11162 *)      endnetent_r_proto=0
11163         ;;
11164 esac
11165
11166 : see if endprotoent exists
11167 set endprotoent d_endpent
11168 eval $inlibc
11169
11170 : see if endprotoent_r exists
11171 set endprotoent_r d_endprotoent_r
11172 eval $inlibc
11173 case "$d_endprotoent_r" in
11174 "$define")
11175         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11176         case "$d_endprotoent_r_proto:$usethreads" in
11177         ":define")      d_endprotoent_r_proto=define
11178                 set d_endprotoent_r_proto endprotoent_r $hdrs
11179                 eval $hasproto ;;
11180         *)      ;;
11181         esac
11182         case "$d_endprotoent_r_proto" in
11183         define)
11184         case "$endprotoent_r_proto" in
11185         ''|0) try='int endprotoent_r(struct protoent_data*);'
11186         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11187         esac
11188         case "$endprotoent_r_proto" in
11189         ''|0) try='void endprotoent_r(struct protoent_data*);'
11190         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11191         esac
11192         case "$endprotoent_r_proto" in
11193         ''|0)   d_endprotoent_r=undef
11194                 endprotoent_r_proto=0
11195                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11196         * )     case "$endprotoent_r_proto" in
11197                 REENTRANT_PROTO*) ;;
11198                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11199                 esac
11200                 echo "Prototype: $try" ;;
11201         esac
11202         ;;
11203         *)      case "$usethreads" in
11204                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11205                 esac
11206                 d_endprotoent_r=undef
11207                 endprotoent_r_proto=0
11208                 ;;
11209         esac
11210         ;;
11211 *)      endprotoent_r_proto=0
11212         ;;
11213 esac
11214
11215 : see if endpwent exists
11216 set endpwent d_endpwent
11217 eval $inlibc
11218
11219 : see if this is a pwd.h system
11220 set pwd.h i_pwd
11221 eval $inhdr
11222
11223 case "$i_pwd" in
11224 $define)
11225         xxx=`./findhdr pwd.h`
11226         $cppstdin $cppflags $cppminus < $xxx >$$.h
11227
11228         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11229                 val="$define"
11230         else
11231                 val="$undef"
11232         fi
11233         set d_pwquota
11234         eval $setvar
11235
11236         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11237                 val="$define"
11238         else
11239                 val="$undef"
11240         fi
11241         set d_pwage
11242         eval $setvar
11243
11244         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11245                 val="$define"
11246         else
11247                 val="$undef"
11248         fi
11249         set d_pwchange
11250         eval $setvar
11251
11252         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11253                 val="$define"
11254         else
11255                 val="$undef"
11256         fi
11257         set d_pwclass
11258         eval $setvar
11259
11260         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11261                 val="$define"
11262         else
11263                 val="$undef"
11264         fi
11265         set d_pwexpire
11266         eval $setvar
11267
11268         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11269                 val="$define"
11270         else
11271                 val="$undef"
11272         fi
11273         set d_pwcomment
11274         eval $setvar
11275
11276         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11277                 val="$define"
11278         else
11279                 val="$undef"
11280         fi
11281         set d_pwgecos
11282         eval $setvar
11283
11284         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11285                 val="$define"
11286         else
11287                 val="$undef"
11288         fi
11289         set d_pwpasswd
11290         eval $setvar
11291
11292         $rm -f $$.h
11293         ;;
11294 *)
11295         val="$undef"; 
11296         set d_pwquota; eval $setvar
11297         set d_pwage; eval $setvar
11298         set d_pwchange; eval $setvar
11299         set d_pwclass; eval $setvar
11300         set d_pwexpire; eval $setvar
11301         set d_pwcomment; eval $setvar
11302         set d_pwgecos; eval $setvar
11303         set d_pwpasswd; eval $setvar
11304         ;;
11305 esac
11306
11307 : see if endpwent_r exists
11308 set endpwent_r d_endpwent_r
11309 eval $inlibc
11310 case "$d_endpwent_r" in
11311 "$define")
11312         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11313         case "$d_endpwent_r_proto:$usethreads" in
11314         ":define")      d_endpwent_r_proto=define
11315                 set d_endpwent_r_proto endpwent_r $hdrs
11316                 eval $hasproto ;;
11317         *)      ;;
11318         esac
11319         case "$d_endpwent_r_proto" in
11320         define)
11321         case "$endpwent_r_proto" in
11322         ''|0) try='int endpwent_r(FILE**);'
11323         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11324         esac
11325         case "$endpwent_r_proto" in
11326         ''|0) try='void endpwent_r(FILE**);'
11327         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11328         esac
11329         case "$endpwent_r_proto" in
11330         ''|0)   d_endpwent_r=undef
11331                 endpwent_r_proto=0
11332                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11333         * )     case "$endpwent_r_proto" in
11334                 REENTRANT_PROTO*) ;;
11335                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11336                 esac
11337                 echo "Prototype: $try" ;;
11338         esac
11339         ;;
11340         *)      case "$usethreads" in
11341                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11342                 esac
11343                 d_endpwent_r=undef
11344                 endpwent_r_proto=0
11345                 ;;
11346         esac
11347         ;;
11348 *)      endpwent_r_proto=0
11349         ;;
11350 esac
11351
11352 : see if endservent exists
11353 set endservent d_endsent
11354 eval $inlibc
11355
11356 : see if endservent_r exists
11357 set endservent_r d_endservent_r
11358 eval $inlibc
11359 case "$d_endservent_r" in
11360 "$define")
11361         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11362         case "$d_endservent_r_proto:$usethreads" in
11363         ":define")      d_endservent_r_proto=define
11364                 set d_endservent_r_proto endservent_r $hdrs
11365                 eval $hasproto ;;
11366         *)      ;;
11367         esac
11368         case "$d_endservent_r_proto" in
11369         define)
11370         case "$endservent_r_proto" in
11371         ''|0) try='int endservent_r(struct servent_data*);'
11372         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11373         esac
11374         case "$endservent_r_proto" in
11375         ''|0) try='void endservent_r(struct servent_data*);'
11376         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11377         esac
11378         case "$endservent_r_proto" in
11379         ''|0)   d_endservent_r=undef
11380                 endservent_r_proto=0
11381                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11382         * )     case "$endservent_r_proto" in
11383                 REENTRANT_PROTO*) ;;
11384                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11385                 esac
11386                 echo "Prototype: $try" ;;
11387         esac
11388         ;;
11389         *)      case "$usethreads" in
11390                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11391                 esac
11392                 d_endservent_r=undef
11393                 endservent_r_proto=0
11394                 ;;
11395         esac
11396         ;;
11397 *)      endservent_r_proto=0
11398         ;;
11399 esac
11400
11401 : Locate the flags for 'open()'
11402 echo " "
11403 $cat >try.c <<EOCP
11404 #include <sys/types.h>
11405 #ifdef I_FCNTL
11406 #include <fcntl.h>
11407 #endif
11408 #ifdef I_SYS_FILE
11409 #include <sys/file.h>
11410 #endif
11411 #$i_stdlib I_STDLIB
11412 #ifdef I_STDLIB
11413 #include <stdlib.h>
11414 #endif
11415 int main() {
11416         if(O_RDONLY);
11417 #ifdef O_TRUNC
11418         exit(0);
11419 #else
11420         exit(1);
11421 #endif
11422 }
11423 EOCP
11424 : check sys/file.h first to get FREAD on Sun
11425 if $test `./findhdr sys/file.h` && \
11426                 set try -DI_SYS_FILE && eval $compile; then
11427         h_sysfile=true;
11428         echo "<sys/file.h> defines the O_* constants..." >&4
11429         if $run ./try; then
11430                 echo "and you have the 3 argument form of open()." >&4
11431                 val="$define"
11432         else
11433                 echo "but not the 3 argument form of open().  Oh, well." >&4
11434                 val="$undef"
11435         fi
11436 elif $test `./findhdr fcntl.h` && \
11437                 set try -DI_FCNTL && eval $compile; then
11438         h_fcntl=true;
11439         echo "<fcntl.h> defines the O_* constants..." >&4
11440         if $run ./try; then
11441                 echo "and you have the 3 argument form of open()." >&4
11442                 val="$define"
11443         else
11444                 echo "but not the 3 argument form of open().  Oh, well." >&4
11445                 val="$undef"
11446         fi
11447 else
11448         val="$undef"
11449         echo "I can't find the O_* constant definitions!  You got problems." >&4
11450 fi
11451 set d_open3
11452 eval $setvar
11453 $rm -f try try.*
11454
11455 : see which of string.h or strings.h is needed
11456 echo " "
11457 strings=`./findhdr string.h`
11458 if $test "$strings" && $test -r "$strings"; then
11459         echo "Using <string.h> instead of <strings.h>." >&4
11460         val="$define"
11461 else
11462         val="$undef"
11463         strings=`./findhdr strings.h`
11464         if $test "$strings" && $test -r "$strings"; then
11465                 echo "Using <strings.h> instead of <string.h>." >&4
11466         else
11467                 echo "No string header found -- You'll surely have problems." >&4
11468         fi
11469 fi
11470 set i_string
11471 eval $setvar
11472 case "$i_string" in
11473 "$undef") strings=`./findhdr strings.h`;;
11474 *)        strings=`./findhdr string.h`;;
11475 esac
11476
11477 : see if this is a sys/file.h system
11478 val=''
11479 set sys/file.h val
11480 eval $inhdr
11481
11482 : do we need to include sys/file.h ?
11483 case "$val" in
11484 "$define")
11485         echo " "
11486         if $h_sysfile; then
11487                 val="$define"
11488                 echo "We'll be including <sys/file.h>." >&4
11489         else
11490                 val="$undef"
11491                 echo "We won't be including <sys/file.h>." >&4
11492         fi
11493         ;;
11494 *)
11495         h_sysfile=false
11496         ;;
11497 esac
11498 set i_sysfile
11499 eval $setvar
11500
11501 : see if fcntl.h is there
11502 val=''
11503 set fcntl.h val
11504 eval $inhdr
11505
11506 : see if we can include fcntl.h
11507 case "$val" in
11508 "$define")
11509         echo " "
11510         if $h_fcntl; then
11511                 val="$define"
11512                 echo "We'll be including <fcntl.h>." >&4
11513         else
11514                 val="$undef"
11515                 if $h_sysfile; then
11516         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11517                 else
11518                         echo "We won't be including <fcntl.h>." >&4
11519                 fi
11520         fi
11521         ;;
11522 *)
11523         h_fcntl=false
11524         val="$undef"
11525         ;;
11526 esac
11527 set i_fcntl
11528 eval $setvar
11529
11530 : check for non-blocking I/O stuff
11531 case "$h_sysfile" in
11532 true) echo "#include <sys/file.h>" > head.c;;
11533 *)
11534        case "$h_fcntl" in
11535        true) echo "#include <fcntl.h>" > head.c;;
11536        *) echo "#include <sys/fcntl.h>" > head.c;;
11537        esac
11538        ;;
11539 esac
11540 echo " "
11541 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11542 case "$o_nonblock" in
11543 '')
11544         $cat head.c > try.c
11545         $cat >>try.c <<EOCP
11546 #include <stdio.h>
11547 #$i_stdlib I_STDLIB
11548 #ifdef I_STDLIB
11549 #include <stdlib.h>
11550 #endif
11551 #$i_fcntl I_FCNTL
11552 #ifdef I_FCNTL
11553 #include <fcntl.h>
11554 #endif
11555 int main() {
11556 #ifdef O_NONBLOCK
11557         printf("O_NONBLOCK\n");
11558         exit(0);
11559 #endif
11560 #ifdef O_NDELAY
11561         printf("O_NDELAY\n");
11562         exit(0);
11563 #endif
11564 #ifdef FNDELAY
11565         printf("FNDELAY\n");
11566         exit(0);
11567 #endif
11568         exit(0);
11569 }
11570 EOCP
11571         set try
11572         if eval $compile_ok; then
11573                 o_nonblock=`$run ./try`
11574                 case "$o_nonblock" in
11575                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11576                 *) echo "Seems like we can use $o_nonblock.";;
11577                 esac
11578         else
11579                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11580         fi
11581         ;;
11582 *) echo "Using $hint value $o_nonblock.";;
11583 esac
11584 $rm -f try try.* .out core
11585
11586 echo " "
11587 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11588 case "$eagain" in
11589 '')
11590         $cat head.c > try.c
11591         $cat >>try.c <<EOCP
11592 #include <errno.h>
11593 #include <sys/types.h>
11594 #include <signal.h>
11595 #include <stdio.h> 
11596 #$i_stdlib I_STDLIB
11597 #ifdef I_STDLIB
11598 #include <stdlib.h>
11599 #endif
11600 #$i_fcntl I_FCNTL
11601 #ifdef I_FCNTL
11602 #include <fcntl.h>
11603 #endif
11604 #define MY_O_NONBLOCK $o_nonblock
11605 #ifndef errno  /* XXX need better Configure test */
11606 extern int errno;
11607 #endif
11608 #$i_unistd I_UNISTD
11609 #ifdef I_UNISTD
11610 #include <unistd.h>
11611 #endif
11612 #$i_string I_STRING
11613 #ifdef I_STRING
11614 #include <string.h>
11615 #else
11616 #include <strings.h>
11617 #endif
11618 $signal_t blech(x) int x; { exit(3); }
11619 EOCP
11620         $cat >> try.c <<'EOCP'
11621 int main()
11622 {
11623         int pd[2];
11624         int pu[2];
11625         char buf[1];
11626         char string[100];
11627
11628         pipe(pd);       /* Down: child -> parent */
11629         pipe(pu);       /* Up: parent -> child */
11630         if (0 != fork()) {
11631                 int ret;
11632                 close(pd[1]);   /* Parent reads from pd[0] */
11633                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11634 #ifdef F_SETFL
11635                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11636                         exit(1);
11637 #else
11638                 exit(4);
11639 #endif
11640                 signal(SIGALRM, blech);
11641                 alarm(5);
11642                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11643                         exit(2);
11644                 sprintf(string, "%d\n", ret);
11645                 write(2, string, strlen(string));
11646                 alarm(0);
11647 #ifdef EAGAIN
11648                 if (errno == EAGAIN) {
11649                         printf("EAGAIN\n");
11650                         goto ok;
11651                 }
11652 #endif
11653 #ifdef EWOULDBLOCK
11654                 if (errno == EWOULDBLOCK)
11655                         printf("EWOULDBLOCK\n");
11656 #endif
11657         ok:
11658                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11659                 sleep(2);                               /* Give it time to close our pipe */
11660                 alarm(5);
11661                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11662                 alarm(0);
11663                 sprintf(string, "%d\n", ret);
11664                 write(4, string, strlen(string));
11665                 exit(0);
11666         }
11667
11668         close(pd[0]);                   /* We write to pd[1] */
11669         close(pu[1]);                   /* We read from pu[0] */
11670         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11671         close(pd[1]);                   /* Pipe pd is now fully closed! */
11672         exit(0);                                /* Bye bye, thank you for playing! */
11673 }
11674 EOCP
11675         set try
11676         if eval $compile_ok; then
11677                 echo "$startsh" >mtry
11678                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11679                 chmod +x mtry
11680                 ./mtry >/dev/null 2>&1
11681                 case $? in
11682                 0) eagain=`$cat try.out`;;
11683                 1) echo "Could not perform non-blocking setting!";;
11684                 2) echo "I did a successful read() for something that was not there!";;
11685                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11686                 4) echo "Could not find F_SETFL!";;
11687                 *) echo "Something terribly wrong happened during testing.";;
11688                 esac
11689                 rd_nodata=`$cat try.ret`
11690                 echo "A read() system call with no data present returns $rd_nodata."
11691                 case "$rd_nodata" in
11692                 0|-1) ;;
11693                 *)
11694                         echo "(That's peculiar, fixing that to be -1.)"
11695                         rd_nodata=-1
11696                         ;;
11697                 esac
11698                 case "$eagain" in
11699                 '')
11700                         echo "Forcing errno EAGAIN on read() with no data available."
11701                         eagain=EAGAIN
11702                         ;;
11703                 *)
11704                         echo "Your read() sets errno to $eagain when no data is available."
11705                         ;;
11706                 esac
11707                 status=`$cat try.err`
11708                 case "$status" in
11709                 0) echo "And it correctly returns 0 to signal EOF.";;
11710                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11711                 *) echo "However, your read() returns '$status' on EOF??";;
11712                 esac
11713                 val="$define"
11714                 if test "$status" = "$rd_nodata"; then
11715                         echo "WARNING: you can't distinguish between EOF and no data!"
11716                         val="$undef"
11717                 fi
11718         else
11719                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11720                 eagain=EAGAIN
11721         fi
11722         set d_eofnblk
11723         eval $setvar
11724         ;;
11725 *)
11726         echo "Using $hint value $eagain."
11727         echo "Your read() returns $rd_nodata when no data is present."
11728         case "$d_eofnblk" in
11729         "$define") echo "And you can see EOF because read() returns 0.";;
11730         "$undef") echo "But you can't see EOF status from read() returned value.";;
11731         *)
11732                 echo "(Assuming you can't see EOF status from read anyway.)"
11733                 d_eofnblk=$undef
11734                 ;;
11735         esac
11736         ;;
11737 esac
11738 $rm -f try try.* .out core head.c mtry
11739
11740 : see if fchdir exists
11741 set fchdir d_fchdir
11742 eval $inlibc
11743
11744 : see if fchmod exists
11745 set fchmod d_fchmod
11746 eval $inlibc
11747
11748 : see if fchown exists
11749 set fchown d_fchown
11750 eval $inlibc
11751
11752 : see if this is an fcntl system
11753 set fcntl d_fcntl
11754 eval $inlibc
11755
11756 echo " "
11757 : See if fcntl-based locking works.
11758 $cat >try.c <<EOCP
11759 #$i_stdlib I_STDLIB
11760 #ifdef I_STDLIB
11761 #include <stdlib.h>
11762 #endif
11763 #include <unistd.h>
11764 #include <fcntl.h>
11765 #include <signal.h>
11766 $signal_t blech(x) int x; { exit(3); }
11767 int main() {
11768 #if defined(F_SETLK) && defined(F_SETLKW)
11769      struct flock flock;
11770      int retval, fd;
11771      fd = open("try.c", O_RDONLY);
11772      flock.l_type = F_RDLCK;
11773      flock.l_whence = SEEK_SET;
11774      flock.l_start = flock.l_len = 0;
11775      signal(SIGALRM, blech);
11776      alarm(10);
11777      retval = fcntl(fd, F_SETLK, &flock);
11778      close(fd);
11779      (retval < 0 ? exit(2) : exit(0));
11780 #else
11781      exit(2);
11782 #endif
11783 }
11784 EOCP
11785 echo "Checking if fcntl-based file locking works... "
11786 case "$d_fcntl" in
11787 "$define")
11788         set try
11789         if eval $compile_ok; then
11790                 if $run ./try; then
11791                         echo "Yes, it seems to work."
11792                         val="$define"
11793                 else
11794                         echo "Nope, it didn't work."
11795                         val="$undef"
11796                         case "$?" in
11797                         3) $cat >&4 <<EOM
11798 ***
11799 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11800 *** This is (almost) impossible.
11801 *** If your NFS lock daemons are not feeling well, something like
11802 *** this may happen, please investigate.  Cannot continue, aborting.
11803 ***
11804 EOM
11805                                 exit 1
11806                                 ;;
11807                         esac
11808                 fi
11809         else
11810                 echo "I'm unable to compile the test program, so I'll assume not."
11811                 val="$undef"
11812         fi
11813         ;;
11814 *) val="$undef";
11815         echo "Nope, since you don't even have fcntl()."
11816         ;;
11817 esac
11818 set d_fcntl_can_lock
11819 eval $setvar
11820 $rm -f try*
11821
11822
11823 : check for fd_set items
11824 $cat <<EOM
11825
11826 Checking to see how well your C compiler handles fd_set and friends ...
11827 EOM
11828 $cat >try.c <<EOCP
11829 #$i_stdlib I_STDLIB
11830 #ifdef I_STDLIB
11831 #include <stdlib.h>
11832 #endif
11833 #$i_systime I_SYS_TIME
11834 #$i_sysselct I_SYS_SELECT
11835 #$d_socket HAS_SOCKET
11836 #include <sys/types.h>
11837 #ifdef HAS_SOCKET
11838 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11839 #endif
11840 #ifdef I_SYS_TIME
11841 #include <sys/time.h>
11842 #endif
11843 #ifdef I_SYS_SELECT
11844 #include <sys/select.h>
11845 #endif
11846 int main() {
11847         fd_set fds;
11848
11849 #ifdef TRYBITS
11850         if(fds.fds_bits);
11851 #endif
11852
11853 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11854         exit(0);
11855 #else
11856         exit(1);
11857 #endif
11858 }
11859 EOCP
11860 set try -DTRYBITS
11861 if eval $compile; then
11862         d_fds_bits="$define"
11863         d_fd_set="$define"
11864         echo "Well, your system knows about the normal fd_set typedef..." >&4
11865         if $run ./try; then
11866                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11867                 d_fd_macros="$define"
11868         else
11869                 $cat >&4 <<'EOM'
11870 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
11871 EOM
11872                 d_fd_macros="$undef"
11873         fi
11874 else
11875         $cat <<'EOM'
11876 Hmm, your compiler has some difficulty with fd_set.  Checking further...
11877 EOM
11878         set try
11879         if eval $compile; then
11880                 d_fds_bits="$undef"
11881                 d_fd_set="$define"
11882                 echo "Well, your system has some sort of fd_set available..." >&4
11883                 if $run ./try; then
11884                         echo "and you have the normal fd_set macros." >&4
11885                         d_fd_macros="$define"
11886                 else
11887                         $cat <<'EOM'
11888 but not the normal fd_set macros!  Gross!  More work for me...
11889 EOM
11890                         d_fd_macros="$undef"
11891                 fi
11892         else
11893         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
11894                 d_fd_set="$undef"
11895                 d_fds_bits="$undef"
11896                 d_fd_macros="$undef"
11897         fi
11898 fi
11899 $rm -f try try.*
11900
11901 : see if fgetpos exists
11902 set fgetpos d_fgetpos
11903 eval $inlibc
11904
11905 : see if finite exists
11906 set finite d_finite
11907 eval $inlibc
11908
11909 : see if finitel exists
11910 set finitel d_finitel
11911 eval $inlibc
11912
11913 : see if flock exists
11914 set flock d_flock
11915 eval $inlibc
11916
11917 : see if prototype for flock is available
11918 echo " "
11919 set d_flockproto flock $i_sysfile sys/file.h
11920 eval $hasproto
11921
11922 : see if fork exists
11923 set fork d_fork
11924 eval $inlibc
11925
11926 : see if fp_class exists
11927 set fp_class d_fp_class
11928 eval $inlibc
11929
11930 : see if pathconf exists
11931 set pathconf d_pathconf
11932 eval $inlibc
11933
11934 : see if fpathconf exists
11935 set fpathconf d_fpathconf
11936 eval $inlibc
11937
11938 : see if fpclass exists
11939 set fpclass d_fpclass
11940 eval $inlibc
11941
11942 : see if fpclassify exists
11943 set fpclassify d_fpclassify
11944 eval $inlibc
11945
11946 : see if fpclassl exists
11947 set fpclassl d_fpclassl
11948 eval $inlibc
11949
11950
11951 : check for fpos64_t
11952 echo " "
11953 echo "Checking to see if you have fpos64_t..." >&4
11954 $cat >try.c <<EOCP
11955 #include <stdio.h>
11956 int main() { fpos64_t x = 7; }
11957 EOCP
11958 set try
11959 if eval $compile; then
11960         val="$define"
11961         echo "You have fpos64_t."
11962 else
11963         val="$undef"
11964         echo "You do not have fpos64_t."
11965         case "$fpossize" in
11966         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11967         esac
11968 fi
11969 $rm -f try.* try
11970 set d_fpos64_t
11971 eval $setvar
11972
11973 : see if frexpl exists
11974 set frexpl d_frexpl
11975 eval $inlibc
11976
11977 : see if this is a sys/param system
11978 set sys/param.h i_sysparam
11979 eval $inhdr
11980
11981 : see if this is a sys/mount.h system
11982 set sys/mount.h i_sysmount
11983 eval $inhdr
11984
11985
11986 echo " "
11987 echo "Checking to see if your system supports struct fs_data..." >&4
11988 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11989 eval $hasstruct
11990 case "$d_fs_data_s" in
11991 "$define")      echo "Yes, it does."   ;;
11992 *)              echo "No, it doesn't." ;;
11993 esac
11994
11995 : see if fseeko exists
11996 set fseeko d_fseeko
11997 eval $inlibc
11998 case "$longsize" in
11999 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12000 esac
12001
12002 : see if fsetpos exists
12003 set fsetpos d_fsetpos
12004 eval $inlibc
12005
12006
12007 : see if fstatfs exists
12008 set fstatfs d_fstatfs
12009 eval $inlibc
12010
12011
12012 : see if statvfs exists
12013 set statvfs d_statvfs
12014 eval $inlibc
12015
12016 : see if fstatvfs exists
12017 set fstatvfs d_fstatvfs
12018 eval $inlibc
12019
12020
12021 : see if fsync exists
12022 set fsync d_fsync
12023 eval $inlibc
12024
12025 : see if ftello exists
12026 set ftello d_ftello
12027 eval $inlibc
12028 case "$longsize" in
12029 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12030 esac
12031
12032 : see if getcwd exists
12033 set getcwd d_getcwd
12034 eval $inlibc
12035
12036 : see if getespwnam exists
12037 set getespwnam d_getespwnam
12038 eval $inlibc
12039
12040
12041 : see if getfsstat exists
12042 set getfsstat d_getfsstat
12043 eval $inlibc
12044
12045 : see if getgrent exists
12046 set getgrent d_getgrent
12047 eval $inlibc
12048
12049 : see if getgrent_r exists
12050 set getgrent_r d_getgrent_r
12051 eval $inlibc
12052 case "$d_getgrent_r" in
12053 "$define")
12054         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12055         case "$d_getgrent_r_proto:$usethreads" in
12056         ":define")      d_getgrent_r_proto=define
12057                 set d_getgrent_r_proto getgrent_r $hdrs
12058                 eval $hasproto ;;
12059         *)      ;;
12060         esac
12061         case "$d_getgrent_r_proto" in
12062         define)
12063         case "$getgrent_r_proto" in
12064         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12065         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12066         esac
12067         case "$getgrent_r_proto" in
12068         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12069         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12070         esac
12071         case "$getgrent_r_proto" in
12072         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12073         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12074         esac
12075         case "$getgrent_r_proto" in
12076         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12077         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12078         esac
12079         case "$getgrent_r_proto" in
12080         ''|0) try='int getgrent_r(struct group*, char*, int);'
12081         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12082         esac
12083         case "$getgrent_r_proto" in
12084         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12085         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12086         esac
12087         case "$getgrent_r_proto" in
12088         ''|0)   d_getgrent_r=undef
12089                 getgrent_r_proto=0
12090                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12091         * )     case "$getgrent_r_proto" in
12092                 REENTRANT_PROTO*) ;;
12093                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12094                 esac
12095                 echo "Prototype: $try" ;;
12096         esac
12097         ;;
12098         *)      case "$usethreads" in
12099                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12100                 esac
12101                 d_getgrent_r=undef
12102                 getgrent_r_proto=0
12103                 ;;
12104         esac
12105         ;;
12106 *)      getgrent_r_proto=0
12107         ;;
12108 esac
12109
12110 : see if getgrgid_r exists
12111 set getgrgid_r d_getgrgid_r
12112 eval $inlibc
12113 case "$d_getgrgid_r" in
12114 "$define")
12115         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12116         case "$d_getgrgid_r_proto:$usethreads" in
12117         ":define")      d_getgrgid_r_proto=define
12118                 set d_getgrgid_r_proto getgrgid_r $hdrs
12119                 eval $hasproto ;;
12120         *)      ;;
12121         esac
12122         case "$d_getgrgid_r_proto" in
12123         define)
12124         case "$getgrgid_r_proto" in
12125         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12126         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12127         esac
12128         case "$getgrgid_r_proto" in
12129         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12130         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12131         esac
12132         case "$getgrgid_r_proto" in
12133         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12134         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12135         esac
12136         case "$getgrgid_r_proto" in
12137         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12138         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12139         esac
12140         case "$getgrgid_r_proto" in
12141         ''|0)   d_getgrgid_r=undef
12142                 getgrgid_r_proto=0
12143                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12144         * )     case "$getgrgid_r_proto" in
12145                 REENTRANT_PROTO*) ;;
12146                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12147                 esac
12148                 echo "Prototype: $try" ;;
12149         esac
12150         ;;
12151         *)      case "$usethreads" in
12152                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12153                 esac
12154                 d_getgrgid_r=undef
12155                 getgrgid_r_proto=0
12156                 ;;
12157         esac
12158         ;;
12159 *)      getgrgid_r_proto=0
12160         ;;
12161 esac
12162
12163 : see if getgrnam_r exists
12164 set getgrnam_r d_getgrnam_r
12165 eval $inlibc
12166 case "$d_getgrnam_r" in
12167 "$define")
12168         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12169         case "$d_getgrnam_r_proto:$usethreads" in
12170         ":define")      d_getgrnam_r_proto=define
12171                 set d_getgrnam_r_proto getgrnam_r $hdrs
12172                 eval $hasproto ;;
12173         *)      ;;
12174         esac
12175         case "$d_getgrnam_r_proto" in
12176         define)
12177         case "$getgrnam_r_proto" in
12178         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12179         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12180         esac
12181         case "$getgrnam_r_proto" in
12182         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12183         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12184         esac
12185         case "$getgrnam_r_proto" in
12186         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12187         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12188         esac
12189         case "$getgrnam_r_proto" in
12190         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12191         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12192         esac
12193         case "$getgrnam_r_proto" in
12194         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12195         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12196         esac
12197         case "$getgrnam_r_proto" in
12198         ''|0)   d_getgrnam_r=undef
12199                 getgrnam_r_proto=0
12200                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12201         * )     case "$getgrnam_r_proto" in
12202                 REENTRANT_PROTO*) ;;
12203                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12204                 esac
12205                 echo "Prototype: $try" ;;
12206         esac
12207         ;;
12208         *)      case "$usethreads" in
12209                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12210                 esac
12211                 d_getgrnam_r=undef
12212                 getgrnam_r_proto=0
12213                 ;;
12214         esac
12215         ;;
12216 *)      getgrnam_r_proto=0
12217         ;;
12218 esac
12219
12220 : see if gethostbyaddr exists
12221 set gethostbyaddr d_gethbyaddr
12222 eval $inlibc
12223
12224 : see if gethostbyname exists
12225 set gethostbyname d_gethbyname
12226 eval $inlibc
12227
12228 : see if gethostent exists
12229 set gethostent d_gethent
12230 eval $inlibc
12231
12232 : see how we will look up host name
12233 echo " "
12234 call=''
12235 if set gethostname val -f d_gethname; eval $csym; $val; then
12236         echo 'gethostname() found.' >&4
12237         d_gethname="$define"
12238         call=gethostname
12239 fi
12240 if set uname val -f d_uname; eval $csym; $val; then
12241         if ./xenix; then
12242                 $cat <<'EOM'
12243 uname() was found, but you're running xenix, and older versions of xenix
12244 have a broken uname(). If you don't really know whether your xenix is old
12245 enough to have a broken system call, use the default answer.
12246
12247 EOM
12248                 dflt=y
12249                 case "$d_uname" in
12250                 "$define") dflt=n;;
12251                 esac
12252                 rp='Is your uname() broken?'
12253                 . ./myread
12254                 case "$ans" in
12255                 n*) d_uname="$define"; call=uname;;
12256                 esac
12257         else
12258                 echo 'uname() found.' >&4
12259                 d_uname="$define"
12260                 case "$call" in
12261                 '') call=uname ;;
12262                 esac
12263         fi
12264 fi
12265 case "$d_gethname" in
12266 '') d_gethname="$undef";;
12267 esac
12268 case "$d_uname" in
12269 '') d_uname="$undef";;
12270 esac
12271 case "$d_uname$d_gethname" in
12272 *define*)
12273         dflt=n
12274         cat <<EOM
12275  
12276 Every now and then someone has a $call() that lies about the hostname
12277 but can't be fixed for political or economic reasons.  If you wish, I can
12278 pretend $call() isn't there and maybe compute hostname at run-time
12279 thanks to the '$phostname' command.
12280
12281 EOM
12282         rp="Shall I ignore $call() from now on?"
12283         . ./myread
12284         case "$ans" in
12285         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12286         esac;;
12287 esac
12288 case "$phostname" in
12289 '') aphostname='';;
12290 *) case "$aphostname" in
12291         /*) ;;
12292         *) set X $phostname
12293                 shift
12294                 file=$1
12295                 shift
12296                 file=`./loc $file $file $pth`
12297                 aphostname=`echo $file $*`
12298                 ;;
12299         esac
12300         ;;
12301 esac
12302 case "$d_uname$d_gethname" in
12303 *define*) ;;
12304 *)
12305         case "$phostname" in
12306         '')
12307                 echo "There will be no way for $package to get your hostname." >&4;;
12308         *)
12309         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12310                 ;;
12311         esac;;
12312 esac
12313 case "$d_phostname" in
12314 '') d_phostname="$undef";;
12315 esac
12316
12317 : see if gethostbyaddr_r exists
12318 set gethostbyaddr_r d_gethostbyaddr_r
12319 eval $inlibc
12320 case "$d_gethostbyaddr_r" in
12321 "$define")
12322         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12323         case "$d_gethostbyaddr_r_proto:$usethreads" in
12324         ":define")      d_gethostbyaddr_r_proto=define
12325                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12326                 eval $hasproto ;;
12327         *)      ;;
12328         esac
12329         case "$d_gethostbyaddr_r_proto" in
12330         define)
12331         case "$gethostbyaddr_r_proto" in
12332         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12333         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12334         esac
12335         case "$gethostbyaddr_r_proto" in
12336         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12337         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12338         esac
12339         case "$gethostbyaddr_r_proto" in
12340         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12341         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12342         esac
12343         case "$gethostbyaddr_r_proto" in
12344         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12345         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12346         esac
12347         case "$gethostbyaddr_r_proto" in
12348         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12349         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12350         esac
12351         case "$gethostbyaddr_r_proto" in
12352         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12353         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12354         esac
12355         case "$gethostbyaddr_r_proto" in
12356         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12357         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12358         esac
12359         case "$gethostbyaddr_r_proto" in
12360         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12361         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12362         esac
12363         case "$gethostbyaddr_r_proto" in
12364         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12365         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12366         esac
12367         case "$gethostbyaddr_r_proto" in
12368         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12369         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12370         esac
12371         case "$gethostbyaddr_r_proto" in
12372         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12373         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12374         esac
12375         case "$gethostbyaddr_r_proto" in
12376         ''|0)   d_gethostbyaddr_r=undef
12377                 gethostbyaddr_r_proto=0
12378                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12379         * )     case "$gethostbyaddr_r_proto" in
12380                 REENTRANT_PROTO*) ;;
12381                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12382                 esac
12383                 echo "Prototype: $try" ;;
12384         esac
12385         ;;
12386         *)      case "$usethreads" in
12387                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12388                 esac
12389                 d_gethostbyaddr_r=undef
12390                 gethostbyaddr_r_proto=0
12391                 ;;
12392         esac
12393         ;;
12394 *)      gethostbyaddr_r_proto=0
12395         ;;
12396 esac
12397
12398 : see if gethostbyname_r exists
12399 set gethostbyname_r d_gethostbyname_r
12400 eval $inlibc
12401 case "$d_gethostbyname_r" in
12402 "$define")
12403         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12404         case "$d_gethostbyname_r_proto:$usethreads" in
12405         ":define")      d_gethostbyname_r_proto=define
12406                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12407                 eval $hasproto ;;
12408         *)      ;;
12409         esac
12410         case "$d_gethostbyname_r_proto" in
12411         define)
12412         case "$gethostbyname_r_proto" in
12413         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12414         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12415         esac
12416         case "$gethostbyname_r_proto" in
12417         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12418         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12419         esac
12420         case "$gethostbyname_r_proto" in
12421         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12422         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12423         esac
12424         case "$gethostbyname_r_proto" in
12425         ''|0)   d_gethostbyname_r=undef
12426                 gethostbyname_r_proto=0
12427                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12428         * )     case "$gethostbyname_r_proto" in
12429                 REENTRANT_PROTO*) ;;
12430                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12431                 esac
12432                 echo "Prototype: $try" ;;
12433         esac
12434         ;;
12435         *)      case "$usethreads" in
12436                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12437                 esac
12438                 d_gethostbyname_r=undef
12439                 gethostbyname_r_proto=0
12440                 ;;
12441         esac
12442         ;;
12443 *)      gethostbyname_r_proto=0
12444         ;;
12445 esac
12446
12447 : see if gethostent_r exists
12448 set gethostent_r d_gethostent_r
12449 eval $inlibc
12450 case "$d_gethostent_r" in
12451 "$define")
12452         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12453         case "$d_gethostent_r_proto:$usethreads" in
12454         ":define")      d_gethostent_r_proto=define
12455                 set d_gethostent_r_proto gethostent_r $hdrs
12456                 eval $hasproto ;;
12457         *)      ;;
12458         esac
12459         case "$d_gethostent_r_proto" in
12460         define)
12461         case "$gethostent_r_proto" in
12462         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12463         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12464         esac
12465         case "$gethostent_r_proto" in
12466         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12467         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12468         esac
12469         case "$gethostent_r_proto" in
12470         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12471         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12472         esac
12473         case "$gethostent_r_proto" in
12474         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12475         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12476         esac
12477         case "$gethostent_r_proto" in
12478         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12479         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12480         esac
12481         case "$gethostent_r_proto" in
12482         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12483         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12484         esac
12485         case "$gethostent_r_proto" in
12486         ''|0)   d_gethostent_r=undef
12487                 gethostent_r_proto=0
12488                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12489         * )     case "$gethostent_r_proto" in
12490                 REENTRANT_PROTO*) ;;
12491                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12492                 esac
12493                 echo "Prototype: $try" ;;
12494         esac
12495         ;;
12496         *)      case "$usethreads" in
12497                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12498                 esac
12499                 d_gethostent_r=undef
12500                 gethostent_r_proto=0
12501                 ;;
12502         esac
12503         ;;
12504 *)      gethostent_r_proto=0
12505         ;;
12506 esac
12507
12508 : see if prototypes for various gethostxxx netdb.h functions are available
12509 echo " "
12510 set d_gethostprotos gethostent $i_netdb netdb.h
12511 eval $hasproto
12512
12513 : see if getitimer exists
12514 set getitimer d_getitimer
12515 eval $inlibc
12516
12517 : see if getlogin exists
12518 set getlogin d_getlogin
12519 eval $inlibc
12520
12521 : see if getlogin_r exists
12522 set getlogin_r d_getlogin_r
12523 eval $inlibc
12524 case "$d_getlogin_r" in
12525 "$define")
12526         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12527         case "$d_getlogin_r_proto:$usethreads" in
12528         ":define")      d_getlogin_r_proto=define
12529                 set d_getlogin_r_proto getlogin_r $hdrs
12530                 eval $hasproto ;;
12531         *)      ;;
12532         esac
12533         case "$d_getlogin_r_proto" in
12534         define)
12535         case "$getlogin_r_proto" in
12536         ''|0) try='int getlogin_r(char*, size_t);'
12537         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12538         esac
12539         case "$getlogin_r_proto" in
12540         ''|0) try='int getlogin_r(char*, int);'
12541         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12542         esac
12543         case "$getlogin_r_proto" in
12544         ''|0) try='char* getlogin_r(char*, size_t);'
12545         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12546         esac
12547         case "$getlogin_r_proto" in
12548         ''|0) try='char* getlogin_r(char*, int);'
12549         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12550         esac
12551         case "$getlogin_r_proto" in
12552         ''|0)   d_getlogin_r=undef
12553                 getlogin_r_proto=0
12554                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12555         * )     case "$getlogin_r_proto" in
12556                 REENTRANT_PROTO*) ;;
12557                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12558                 esac
12559                 echo "Prototype: $try" ;;
12560         esac
12561         ;;
12562         *)      case "$usethreads" in
12563                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12564                 esac
12565                 d_getlogin_r=undef
12566                 getlogin_r_proto=0
12567                 ;;
12568         esac
12569         ;;
12570 *)      getlogin_r_proto=0
12571         ;;
12572 esac
12573
12574 : see if getmnt exists
12575 set getmnt d_getmnt
12576 eval $inlibc
12577
12578 : see if getmntent exists
12579 set getmntent d_getmntent
12580 eval $inlibc
12581
12582 : see if getnetbyaddr exists
12583 set getnetbyaddr d_getnbyaddr
12584 eval $inlibc
12585
12586 : see if getnetbyname exists
12587 set getnetbyname d_getnbyname
12588 eval $inlibc
12589
12590 : see if getnetent exists
12591 set getnetent d_getnent
12592 eval $inlibc
12593
12594 : see if getnetbyaddr_r exists
12595 set getnetbyaddr_r d_getnetbyaddr_r
12596 eval $inlibc
12597 case "$d_getnetbyaddr_r" in
12598 "$define")
12599         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12600         case "$d_getnetbyaddr_r_proto:$usethreads" in
12601         ":define")      d_getnetbyaddr_r_proto=define
12602                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12603                 eval $hasproto ;;
12604         *)      ;;
12605         esac
12606         case "$d_getnetbyaddr_r_proto" in
12607         define)
12608         case "$getnetbyaddr_r_proto" in
12609         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12610         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12611         esac
12612         case "$getnetbyaddr_r_proto" in
12613         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12614         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12615         esac
12616         case "$getnetbyaddr_r_proto" in
12617         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12618         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12619         esac
12620         case "$getnetbyaddr_r_proto" in
12621         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12622         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12623         esac
12624         case "$getnetbyaddr_r_proto" in
12625         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12626         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12627         esac
12628         case "$getnetbyaddr_r_proto" in
12629         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12630         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12631         esac
12632         case "$getnetbyaddr_r_proto" in
12633         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12634         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12635         esac
12636         case "$getnetbyaddr_r_proto" in
12637         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12638         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12639         esac
12640         case "$getnetbyaddr_r_proto" in
12641         ''|0)   d_getnetbyaddr_r=undef
12642                 getnetbyaddr_r_proto=0
12643                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12644         * )     case "$getnetbyaddr_r_proto" in
12645                 REENTRANT_PROTO*) ;;
12646                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12647                 esac
12648                 echo "Prototype: $try" ;;
12649         esac
12650         ;;
12651         *)      case "$usethreads" in
12652                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12653                 esac
12654                 d_getnetbyaddr_r=undef
12655                 getnetbyaddr_r_proto=0
12656                 ;;
12657         esac
12658         ;;
12659 *)      getnetbyaddr_r_proto=0
12660         ;;
12661 esac
12662
12663 : see if getnetbyname_r exists
12664 set getnetbyname_r d_getnetbyname_r
12665 eval $inlibc
12666 case "$d_getnetbyname_r" in
12667 "$define")
12668         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12669         case "$d_getnetbyname_r_proto:$usethreads" in
12670         ":define")      d_getnetbyname_r_proto=define
12671                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12672                 eval $hasproto ;;
12673         *)      ;;
12674         esac
12675         case "$d_getnetbyname_r_proto" in
12676         define)
12677         case "$getnetbyname_r_proto" in
12678         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12679         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12680         esac
12681         case "$getnetbyname_r_proto" in
12682         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12683         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12684         esac
12685         case "$getnetbyname_r_proto" in
12686         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12687         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12688         esac
12689         case "$getnetbyname_r_proto" in
12690         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12691         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12692         esac
12693         case "$getnetbyname_r_proto" in
12694         ''|0)   d_getnetbyname_r=undef
12695                 getnetbyname_r_proto=0
12696                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12697         * )     case "$getnetbyname_r_proto" in
12698                 REENTRANT_PROTO*) ;;
12699                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12700                 esac
12701                 echo "Prototype: $try" ;;
12702         esac
12703         ;;
12704         *)      case "$usethreads" in
12705                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12706                 esac
12707                 d_getnetbyname_r=undef
12708                 getnetbyname_r_proto=0
12709                 ;;
12710         esac
12711         ;;
12712 *)      getnetbyname_r_proto=0
12713         ;;
12714 esac
12715
12716 : see if getnetent_r exists
12717 set getnetent_r d_getnetent_r
12718 eval $inlibc
12719 case "$d_getnetent_r" in
12720 "$define")
12721         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12722         case "$d_getnetent_r_proto:$usethreads" in
12723         ":define")      d_getnetent_r_proto=define
12724                 set d_getnetent_r_proto getnetent_r $hdrs
12725                 eval $hasproto ;;
12726         *)      ;;
12727         esac
12728         case "$d_getnetent_r_proto" in
12729         define)
12730         case "$getnetent_r_proto" in
12731         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12732         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12733         esac
12734         case "$getnetent_r_proto" in
12735         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12736         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12737         esac
12738         case "$getnetent_r_proto" in
12739         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12740         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12741         esac
12742         case "$getnetent_r_proto" in
12743         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12744         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12745         esac
12746         case "$getnetent_r_proto" in
12747         ''|0) try='int getnetent_r(struct netent*, char*, int);'
12748         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12749         esac
12750         case "$getnetent_r_proto" in
12751         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12752         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12753         esac
12754         case "$getnetent_r_proto" in
12755         ''|0)   d_getnetent_r=undef
12756                 getnetent_r_proto=0
12757                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12758         * )     case "$getnetent_r_proto" in
12759                 REENTRANT_PROTO*) ;;
12760                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12761                 esac
12762                 echo "Prototype: $try" ;;
12763         esac
12764         ;;
12765         *)      case "$usethreads" in
12766                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12767                 esac
12768                 d_getnetent_r=undef
12769                 getnetent_r_proto=0
12770                 ;;
12771         esac
12772         ;;
12773 *)      getnetent_r_proto=0
12774         ;;
12775 esac
12776
12777 : see if prototypes for various getnetxxx netdb.h functions are available
12778 echo " "
12779 set d_getnetprotos getnetent $i_netdb netdb.h
12780 eval $hasproto
12781
12782 : see if getpagesize exists
12783 set getpagesize d_getpagsz
12784 eval $inlibc
12785
12786
12787 : see if getprotobyname exists
12788 set getprotobyname d_getpbyname
12789 eval $inlibc
12790
12791 : see if getprotobynumber exists
12792 set getprotobynumber d_getpbynumber
12793 eval $inlibc
12794
12795 : see if getprotoent exists
12796 set getprotoent d_getpent
12797 eval $inlibc
12798
12799 : see if getpgid exists
12800 set getpgid d_getpgid
12801 eval $inlibc
12802
12803 : see if getpgrp2 exists
12804 set getpgrp2 d_getpgrp2
12805 eval $inlibc
12806
12807 : see if getppid exists
12808 set getppid d_getppid
12809 eval $inlibc
12810
12811 : see if getpriority exists
12812 set getpriority d_getprior
12813 eval $inlibc
12814
12815 : see if getprotobyname_r exists
12816 set getprotobyname_r d_getprotobyname_r
12817 eval $inlibc
12818 case "$d_getprotobyname_r" in
12819 "$define")
12820         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12821         case "$d_getprotobyname_r_proto:$usethreads" in
12822         ":define")      d_getprotobyname_r_proto=define
12823                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12824                 eval $hasproto ;;
12825         *)      ;;
12826         esac
12827         case "$d_getprotobyname_r_proto" in
12828         define)
12829         case "$getprotobyname_r_proto" in
12830         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12831         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12832         esac
12833         case "$getprotobyname_r_proto" in
12834         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12835         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12836         esac
12837         case "$getprotobyname_r_proto" in
12838         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12839         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12840         esac
12841         case "$getprotobyname_r_proto" in
12842         ''|0)   d_getprotobyname_r=undef
12843                 getprotobyname_r_proto=0
12844                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12845         * )     case "$getprotobyname_r_proto" in
12846                 REENTRANT_PROTO*) ;;
12847                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12848                 esac
12849                 echo "Prototype: $try" ;;
12850         esac
12851         ;;
12852         *)      case "$usethreads" in
12853                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12854                 esac
12855                 d_getprotobyname_r=undef
12856                 getprotobyname_r_proto=0
12857                 ;;
12858         esac
12859         ;;
12860 *)      getprotobyname_r_proto=0
12861         ;;
12862 esac
12863
12864 : see if getprotobynumber_r exists
12865 set getprotobynumber_r d_getprotobynumber_r
12866 eval $inlibc
12867 case "$d_getprotobynumber_r" in
12868 "$define")
12869         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12870         case "$d_getprotobynumber_r_proto:$usethreads" in
12871         ":define")      d_getprotobynumber_r_proto=define
12872                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12873                 eval $hasproto ;;
12874         *)      ;;
12875         esac
12876         case "$d_getprotobynumber_r_proto" in
12877         define)
12878         case "$getprotobynumber_r_proto" in
12879         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12880         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12881         esac
12882         case "$getprotobynumber_r_proto" in
12883         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12884         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12885         esac
12886         case "$getprotobynumber_r_proto" in
12887         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12888         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12889         esac
12890         case "$getprotobynumber_r_proto" in
12891         ''|0)   d_getprotobynumber_r=undef
12892                 getprotobynumber_r_proto=0
12893                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12894         * )     case "$getprotobynumber_r_proto" in
12895                 REENTRANT_PROTO*) ;;
12896                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12897                 esac
12898                 echo "Prototype: $try" ;;
12899         esac
12900         ;;
12901         *)      case "$usethreads" in
12902                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12903                 esac
12904                 d_getprotobynumber_r=undef
12905                 getprotobynumber_r_proto=0
12906                 ;;
12907         esac
12908         ;;
12909 *)      getprotobynumber_r_proto=0
12910         ;;
12911 esac
12912
12913 : see if getprotoent_r exists
12914 set getprotoent_r d_getprotoent_r
12915 eval $inlibc
12916 case "$d_getprotoent_r" in
12917 "$define")
12918         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12919         case "$d_getprotoent_r_proto:$usethreads" in
12920         ":define")      d_getprotoent_r_proto=define
12921                 set d_getprotoent_r_proto getprotoent_r $hdrs
12922                 eval $hasproto ;;
12923         *)      ;;
12924         esac
12925         case "$d_getprotoent_r_proto" in
12926         define)
12927         case "$getprotoent_r_proto" in
12928         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12929         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12930         esac
12931         case "$getprotoent_r_proto" in
12932         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12933         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12934         esac
12935         case "$getprotoent_r_proto" in
12936         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12937         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12938         esac
12939         case "$getprotoent_r_proto" in
12940         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12941         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12942         esac
12943         case "$getprotoent_r_proto" in
12944         ''|0)   d_getprotoent_r=undef
12945                 getprotoent_r_proto=0
12946                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12947         * )     case "$getprotoent_r_proto" in
12948                 REENTRANT_PROTO*) ;;
12949                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12950                 esac
12951                 echo "Prototype: $try" ;;
12952         esac
12953         ;;
12954         *)      case "$usethreads" in
12955                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12956                 esac
12957                 d_getprotoent_r=undef
12958                 getprotoent_r_proto=0
12959                 ;;
12960         esac
12961         ;;
12962 *)      getprotoent_r_proto=0
12963         ;;
12964 esac
12965
12966 : see if prototypes for various getprotoxxx netdb.h functions are available
12967 echo " "
12968 set d_getprotoprotos getprotoent $i_netdb netdb.h
12969 eval $hasproto
12970
12971 : see if getprpwnam exists
12972 set getprpwnam d_getprpwnam
12973 eval $inlibc
12974
12975 : see if getpwent exists
12976 set getpwent d_getpwent
12977 eval $inlibc
12978
12979 : see if getpwent_r exists
12980 set getpwent_r d_getpwent_r
12981 eval $inlibc
12982 case "$d_getpwent_r" in
12983 "$define")
12984         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12985         case "$d_getpwent_r_proto:$usethreads" in
12986         ":define")      d_getpwent_r_proto=define
12987                 set d_getpwent_r_proto getpwent_r $hdrs
12988                 eval $hasproto ;;
12989         *)      ;;
12990         esac
12991         case "$d_getpwent_r_proto" in
12992         define)
12993         case "$getpwent_r_proto" in
12994         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12995         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12996         esac
12997         case "$getpwent_r_proto" in
12998         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12999         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13000         esac
13001         case "$getpwent_r_proto" in
13002         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13003         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13004         esac
13005         case "$getpwent_r_proto" in
13006         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13007         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13008         esac
13009         case "$getpwent_r_proto" in
13010         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13011         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13012         esac
13013         case "$getpwent_r_proto" in
13014         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13015         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13016         esac
13017         case "$getpwent_r_proto" in
13018         ''|0)   d_getpwent_r=undef
13019                 getpwent_r_proto=0
13020                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13021         * )     case "$getpwent_r_proto" in
13022                 REENTRANT_PROTO*) ;;
13023                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13024                 esac
13025                 echo "Prototype: $try" ;;
13026         esac
13027         ;;
13028         *)      case "$usethreads" in
13029                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13030                 esac
13031                 d_getpwent_r=undef
13032                 getpwent_r_proto=0
13033                 ;;
13034         esac
13035         ;;
13036 *)      getpwent_r_proto=0
13037         ;;
13038 esac
13039
13040 : see if getpwnam_r exists
13041 set getpwnam_r d_getpwnam_r
13042 eval $inlibc
13043 case "$d_getpwnam_r" in
13044 "$define")
13045         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13046         case "$d_getpwnam_r_proto:$usethreads" in
13047         ":define")      d_getpwnam_r_proto=define
13048                 set d_getpwnam_r_proto getpwnam_r $hdrs
13049                 eval $hasproto ;;
13050         *)      ;;
13051         esac
13052         case "$d_getpwnam_r_proto" in
13053         define)
13054         case "$getpwnam_r_proto" in
13055         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13056         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13057         esac
13058         case "$getpwnam_r_proto" in
13059         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13060         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13061         esac
13062         case "$getpwnam_r_proto" in
13063         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13064         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13065         esac
13066         case "$getpwnam_r_proto" in
13067         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13068         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13069         esac
13070         case "$getpwnam_r_proto" in
13071         ''|0)   d_getpwnam_r=undef
13072                 getpwnam_r_proto=0
13073                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13074         * )     case "$getpwnam_r_proto" in
13075                 REENTRANT_PROTO*) ;;
13076                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13077                 esac
13078                 echo "Prototype: $try" ;;
13079         esac
13080         ;;
13081         *)      case "$usethreads" in
13082                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13083                 esac
13084                 d_getpwnam_r=undef
13085                 getpwnam_r_proto=0
13086                 ;;
13087         esac
13088         ;;
13089 *)      getpwnam_r_proto=0
13090         ;;
13091 esac
13092
13093 : see if getpwuid_r exists
13094 set getpwuid_r d_getpwuid_r
13095 eval $inlibc
13096 case "$d_getpwuid_r" in
13097 "$define")
13098         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13099         case "$d_getpwuid_r_proto:$usethreads" in
13100         ":define")      d_getpwuid_r_proto=define
13101                 set d_getpwuid_r_proto getpwuid_r $hdrs
13102                 eval $hasproto ;;
13103         *)      ;;
13104         esac
13105         case "$d_getpwuid_r_proto" in
13106         define)
13107         case "$getpwuid_r_proto" in
13108         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13109         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13110         esac
13111         case "$getpwuid_r_proto" in
13112         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13113         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13114         esac
13115         case "$getpwuid_r_proto" in
13116         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13117         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13118         esac
13119         case "$getpwuid_r_proto" in
13120         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13121         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13122         esac
13123         case "$getpwuid_r_proto" in
13124         ''|0)   d_getpwuid_r=undef
13125                 getpwuid_r_proto=0
13126                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13127         * )     case "$getpwuid_r_proto" in
13128                 REENTRANT_PROTO*) ;;
13129                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13130                 esac
13131                 echo "Prototype: $try" ;;
13132         esac
13133         ;;
13134         *)      case "$usethreads" in
13135                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13136                 esac
13137                 d_getpwuid_r=undef
13138                 getpwuid_r_proto=0
13139                 ;;
13140         esac
13141         ;;
13142 *)      getpwuid_r_proto=0
13143         ;;
13144 esac
13145
13146
13147 : see if getservbyname exists
13148 set getservbyname d_getsbyname
13149 eval $inlibc
13150
13151 : see if getservbyport exists
13152 set getservbyport d_getsbyport
13153 eval $inlibc
13154
13155 : see if getservent exists
13156 set getservent d_getsent
13157 eval $inlibc
13158
13159 : see if getservbyname_r exists
13160 set getservbyname_r d_getservbyname_r
13161 eval $inlibc
13162 case "$d_getservbyname_r" in
13163 "$define")
13164         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13165         case "$d_getservbyname_r_proto:$usethreads" in
13166         ":define")      d_getservbyname_r_proto=define
13167                 set d_getservbyname_r_proto getservbyname_r $hdrs
13168                 eval $hasproto ;;
13169         *)      ;;
13170         esac
13171         case "$d_getservbyname_r_proto" in
13172         define)
13173         case "$getservbyname_r_proto" in
13174         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13175         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13176         esac
13177         case "$getservbyname_r_proto" in
13178         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13179         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13180         esac
13181         case "$getservbyname_r_proto" in
13182         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13183         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13184         esac
13185         case "$getservbyname_r_proto" in
13186         ''|0)   d_getservbyname_r=undef
13187                 getservbyname_r_proto=0
13188                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13189         * )     case "$getservbyname_r_proto" in
13190                 REENTRANT_PROTO*) ;;
13191                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13192                 esac
13193                 echo "Prototype: $try" ;;
13194         esac
13195         ;;
13196         *)      case "$usethreads" in
13197                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13198                 esac
13199                 d_getservbyname_r=undef
13200                 getservbyname_r_proto=0
13201                 ;;
13202         esac
13203         ;;
13204 *)      getservbyname_r_proto=0
13205         ;;
13206 esac
13207
13208 : see if getservbyport_r exists
13209 set getservbyport_r d_getservbyport_r
13210 eval $inlibc
13211 case "$d_getservbyport_r" in
13212 "$define")
13213         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13214         case "$d_getservbyport_r_proto:$usethreads" in
13215         ":define")      d_getservbyport_r_proto=define
13216                 set d_getservbyport_r_proto getservbyport_r $hdrs
13217                 eval $hasproto ;;
13218         *)      ;;
13219         esac
13220         case "$d_getservbyport_r_proto" in
13221         define)
13222         case "$getservbyport_r_proto" in
13223         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13224         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13225         esac
13226         case "$getservbyport_r_proto" in
13227         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13228         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13229         esac
13230         case "$getservbyport_r_proto" in
13231         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13232         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13233         esac
13234         case "$getservbyport_r_proto" in
13235         ''|0)   d_getservbyport_r=undef
13236                 getservbyport_r_proto=0
13237                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13238         * )     case "$getservbyport_r_proto" in
13239                 REENTRANT_PROTO*) ;;
13240                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13241                 esac
13242                 echo "Prototype: $try" ;;
13243         esac
13244         ;;
13245         *)      case "$usethreads" in
13246                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13247                 esac
13248                 d_getservbyport_r=undef
13249                 getservbyport_r_proto=0
13250                 ;;
13251         esac
13252         ;;
13253 *)      getservbyport_r_proto=0
13254         ;;
13255 esac
13256
13257 : see if getservent_r exists
13258 set getservent_r d_getservent_r
13259 eval $inlibc
13260 case "$d_getservent_r" in
13261 "$define")
13262         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13263         case "$d_getservent_r_proto:$usethreads" in
13264         ":define")      d_getservent_r_proto=define
13265                 set d_getservent_r_proto getservent_r $hdrs
13266                 eval $hasproto ;;
13267         *)      ;;
13268         esac
13269         case "$d_getservent_r_proto" in
13270         define)
13271         case "$getservent_r_proto" in
13272         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13273         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13274         esac
13275         case "$getservent_r_proto" in
13276         ''|0) try='int getservent_r(struct servent*, char*, int);'
13277         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13278         esac
13279         case "$getservent_r_proto" in
13280         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13281         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13282         esac
13283         case "$getservent_r_proto" in
13284         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13285         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13286         esac
13287         case "$getservent_r_proto" in
13288         ''|0)   d_getservent_r=undef
13289                 getservent_r_proto=0
13290                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13291         * )     case "$getservent_r_proto" in
13292                 REENTRANT_PROTO*) ;;
13293                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13294                 esac
13295                 echo "Prototype: $try" ;;
13296         esac
13297         ;;
13298         *)      case "$usethreads" in
13299                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13300                 esac
13301                 d_getservent_r=undef
13302                 getservent_r_proto=0
13303                 ;;
13304         esac
13305         ;;
13306 *)      getservent_r_proto=0
13307         ;;
13308 esac
13309
13310 : see if prototypes for various getservxxx netdb.h functions are available
13311 echo " "
13312 set d_getservprotos getservent $i_netdb netdb.h
13313 eval $hasproto
13314
13315 : see if getspnam exists
13316 set getspnam d_getspnam
13317 eval $inlibc
13318
13319 : see if this is a shadow.h system
13320 set shadow.h i_shadow
13321 eval $inhdr
13322
13323 : see if getspnam_r exists
13324 set getspnam_r d_getspnam_r
13325 eval $inlibc
13326 case "$d_getspnam_r" in
13327 "$define")
13328         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13329         case "$d_getspnam_r_proto:$usethreads" in
13330         ":define")      d_getspnam_r_proto=define
13331                 set d_getspnam_r_proto getspnam_r $hdrs
13332                 eval $hasproto ;;
13333         *)      ;;
13334         esac
13335         case "$d_getspnam_r_proto" in
13336         define)
13337         case "$getspnam_r_proto" in
13338         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13339         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13340         esac
13341         case "$getspnam_r_proto" in
13342         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13343         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13344         esac
13345         case "$getspnam_r_proto" in
13346         ''|0)   d_getspnam_r=undef
13347                 getspnam_r_proto=0
13348                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13349         * )     case "$getspnam_r_proto" in
13350                 REENTRANT_PROTO*) ;;
13351                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13352                 esac
13353                 echo "Prototype: $try" ;;
13354         esac
13355         ;;
13356         *)      case "$usethreads" in
13357                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13358                 esac
13359                 d_getspnam_r=undef
13360                 getspnam_r_proto=0
13361                 ;;
13362         esac
13363         ;;
13364 *)      getspnam_r_proto=0
13365         ;;
13366 esac
13367
13368 : see if gettimeofday or ftime exists
13369 set gettimeofday d_gettimeod
13370 eval $inlibc
13371 case "$d_gettimeod" in
13372 "$undef")
13373         set ftime d_ftime 
13374         eval $inlibc
13375         ;;
13376 *)
13377         val="$undef"; set d_ftime; eval $setvar
13378         ;;
13379 esac
13380 case "$d_gettimeod$d_ftime" in
13381 "$undef$undef")
13382         echo " "
13383         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13384         ;;
13385 esac
13386
13387 : see if gmtime_r exists
13388 set gmtime_r d_gmtime_r
13389 eval $inlibc
13390 case "$d_gmtime_r" in
13391 "$define")
13392         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13393         case "$d_gmtime_r_proto:$usethreads" in
13394         ":define")      d_gmtime_r_proto=define
13395                 set d_gmtime_r_proto gmtime_r $hdrs
13396                 eval $hasproto ;;
13397         *)      ;;
13398         esac
13399         case "$d_gmtime_r_proto" in
13400         define)
13401         case "$gmtime_r_proto" in
13402         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13403         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13404         esac
13405         case "$gmtime_r_proto" in
13406         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13407         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13408         esac
13409         case "$gmtime_r_proto" in
13410         ''|0)   d_gmtime_r=undef
13411                 gmtime_r_proto=0
13412                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13413         * )     case "$gmtime_r_proto" in
13414                 REENTRANT_PROTO*) ;;
13415                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13416                 esac
13417                 echo "Prototype: $try" ;;
13418         esac
13419         ;;
13420         *)      case "$usethreads" in
13421                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13422                 esac
13423                 d_gmtime_r=undef
13424                 gmtime_r_proto=0
13425                 ;;
13426         esac
13427         ;;
13428 *)      gmtime_r_proto=0
13429         ;;
13430 esac
13431
13432 : see if hasmntopt exists
13433 set hasmntopt d_hasmntopt
13434 eval $inlibc
13435
13436 : see if this is a netinet/in.h or sys/in.h system
13437 set netinet/in.h i_niin sys/in.h i_sysin
13438 eval $inhdr
13439
13440 : see if arpa/inet.h has to be included
13441 set arpa/inet.h i_arpainet
13442 eval $inhdr
13443
13444 : see if htonl --and friends-- exists
13445 val=''
13446 set htonl val
13447 eval $inlibc
13448
13449 : Maybe they are macros.
13450 case "$val" in
13451 $undef)
13452         $cat >htonl.c <<EOM
13453 #include <stdio.h>
13454 #include <sys/types.h>
13455 #$i_niin I_NETINET_IN
13456 #$i_sysin I_SYS_IN
13457 #$i_arpainet I_ARPA_INET
13458 #ifdef I_NETINET_IN
13459 #include <netinet/in.h>
13460 #endif
13461 #ifdef I_SYS_IN
13462 #include <sys/in.h>
13463 #endif
13464 #ifdef I_ARPA_INET
13465 #include <arpa/inet.h>
13466 #endif
13467 #ifdef htonl
13468 printf("Defined as a macro.");
13469 #endif
13470 EOM
13471         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13472         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13473                 val="$define"
13474                 echo "But it seems to be defined as a macro." >&4
13475         fi
13476         $rm -f htonl.?
13477         ;;
13478 esac
13479 set d_htonl
13480 eval $setvar
13481
13482 : see if ilogbl exists
13483 set ilogbl d_ilogbl
13484 eval $inlibc
13485
13486 : index or strchr
13487 echo " "
13488 if set index val -f; eval $csym; $val; then
13489         if set strchr val -f d_strchr; eval $csym; $val; then
13490                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13491                         val="$define"
13492                         vali="$undef"
13493                         echo "strchr() found." >&4
13494                 else
13495                         val="$undef"
13496                         vali="$define"
13497                         echo "index() found." >&4
13498                 fi
13499         else
13500                 val="$undef"
13501                 vali="$define"
13502                 echo "index() found." >&4
13503         fi
13504 else
13505         if set strchr val -f d_strchr; eval $csym; $val; then
13506                 val="$define"
13507                 vali="$undef"
13508                 echo "strchr() found." >&4
13509         else
13510                 echo "No index() or strchr() found!" >&4
13511                 val="$undef"
13512                 vali="$undef"
13513         fi
13514 fi
13515 set d_strchr; eval $setvar
13516 val="$vali"
13517 set d_index; eval $setvar
13518
13519 : check whether inet_aton exists
13520 set inet_aton d_inetaton
13521 eval $inlibc
13522
13523 : Look for isascii
13524 echo " "
13525 $cat >isascii.c <<EOCP
13526 #include <stdio.h>
13527 #include <ctype.h>
13528 #$i_stdlib I_STDLIB
13529 #ifdef I_STDLIB
13530 #include <stdlib.h>
13531 #endif
13532 int main() {
13533         int c = 'A';
13534         if (isascii(c))
13535                 exit(0);
13536         else
13537                 exit(1);
13538 }
13539 EOCP
13540 set isascii
13541 if eval $compile; then
13542         echo "isascii() found." >&4
13543         val="$define"
13544 else
13545         echo "isascii() NOT found." >&4
13546         val="$undef"
13547 fi
13548 set d_isascii
13549 eval $setvar
13550 $rm -f isascii*
13551
13552 : see if isfinite exists
13553 set isfinite d_isfinite
13554 eval $inlibc
13555
13556 : see if isinf exists
13557 set isinf d_isinf
13558 eval $inlibc
13559
13560 : see if isnan exists
13561 set isnan d_isnan
13562 eval $inlibc
13563
13564 : see if isnanl exists
13565 set isnanl d_isnanl
13566 eval $inlibc
13567
13568 : see if killpg exists
13569 set killpg d_killpg
13570 eval $inlibc
13571
13572 : see if lchown exists
13573 echo " "
13574 $cat > try.c <<'EOCP'
13575 /* System header to define __stub macros and hopefully few prototypes,
13576     which can conflict with char lchown(); below.  */
13577 #include <assert.h>
13578 /* Override any gcc2 internal prototype to avoid an error.  */
13579 /* We use char because int might match the return type of a gcc2
13580    builtin and then its argument prototype would still apply.  */
13581 char lchown();
13582 int main() {
13583     /*  The GNU C library defines this for functions which it implements
13584         to always fail with ENOSYS.  Some functions are actually named
13585         something starting with __ and the normal name is an alias.  */
13586 #if defined (__stub_lchown) || defined (__stub___lchown)
13587 choke me
13588 #else
13589 lchown();
13590 #endif
13591 ; return 0; }
13592 EOCP
13593 set try
13594 if eval $compile; then
13595     $echo "lchown() found." >&4
13596     val="$define"
13597 else
13598     $echo "lchown() NOT found." >&4
13599     val="$undef"
13600 fi
13601 set d_lchown
13602 eval $setvar
13603
13604 : See if number of significant digits in a double precision number is known
13605 echo " "
13606 $cat >ldbl_dig.c <<EOM
13607 #$i_limits I_LIMITS
13608 #$i_float I_FLOAT
13609 #ifdef I_LIMITS
13610 #include <limits.h>
13611 #endif
13612 #ifdef I_FLOAT
13613 #include <float.h>
13614 #endif
13615 #ifdef LDBL_DIG
13616 printf("Contains LDBL_DIG");
13617 #endif
13618 EOM
13619 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13620 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13621         echo "LDBL_DIG found." >&4
13622         val="$define"
13623 else
13624         echo "LDBL_DIG NOT found." >&4
13625         val="$undef"
13626 fi
13627 $rm -f ldbl_dig.?
13628 set d_ldbl_dig
13629 eval $setvar
13630
13631 : see if link exists
13632 set link d_link
13633 eval $inlibc
13634
13635 : see if localtime_r exists
13636 set localtime_r d_localtime_r
13637 eval $inlibc
13638 case "$d_localtime_r" in
13639 "$define")
13640         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13641         case "$d_localtime_r_proto:$usethreads" in
13642         ":define")      d_localtime_r_proto=define
13643                 set d_localtime_r_proto localtime_r $hdrs
13644                 eval $hasproto ;;
13645         *)      ;;
13646         esac
13647         case "$d_localtime_r_proto" in
13648         define)
13649         case "$localtime_r_proto" in
13650         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13651         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13652         esac
13653         case "$localtime_r_proto" in
13654         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13655         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13656         esac
13657         case "$localtime_r_proto" in
13658         ''|0)   d_localtime_r=undef
13659                 localtime_r_proto=0
13660                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13661         * )     case "$localtime_r_proto" in
13662                 REENTRANT_PROTO*) ;;
13663                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13664                 esac
13665                 echo "Prototype: $try" ;;
13666         esac
13667         ;;
13668         *)      case "$usethreads" in
13669                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13670                 esac
13671                 d_localtime_r=undef
13672                 localtime_r_proto=0
13673                 ;;
13674         esac
13675         ;;
13676 *)      localtime_r_proto=0
13677         ;;
13678 esac
13679
13680 : see if localeconv exists
13681 set localeconv d_locconv
13682 eval $inlibc
13683
13684 : see if lockf exists
13685 set lockf d_lockf
13686 eval $inlibc
13687
13688 : see if prototype for lseek is available
13689 echo " "
13690 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13691 eval $hasproto
13692
13693 : see if lstat exists
13694 set lstat d_lstat
13695 eval $inlibc
13696
13697 : see if madvise exists
13698 set madvise d_madvise
13699 eval $inlibc
13700
13701 : see if mblen exists
13702 set mblen d_mblen
13703 eval $inlibc
13704
13705 : see if mbstowcs exists
13706 set mbstowcs d_mbstowcs
13707 eval $inlibc
13708
13709 : see if mbtowc exists
13710 set mbtowc d_mbtowc
13711 eval $inlibc
13712
13713 : see if memchr exists
13714 set memchr d_memchr
13715 eval $inlibc
13716
13717 : see if memcmp exists
13718 set memcmp d_memcmp
13719 eval $inlibc
13720
13721 : see if memcpy exists
13722 set memcpy d_memcpy
13723 eval $inlibc
13724
13725 : see if memmove exists
13726 set memmove d_memmove
13727 eval $inlibc
13728
13729 : see if memset exists
13730 set memset d_memset
13731 eval $inlibc
13732
13733 : see if mkdir exists
13734 set mkdir d_mkdir
13735 eval $inlibc
13736
13737 : see if mkdtemp exists
13738 set mkdtemp d_mkdtemp
13739 eval $inlibc
13740
13741 : see if mkfifo exists
13742 set mkfifo d_mkfifo
13743 eval $inlibc
13744
13745 : see if mkstemp exists
13746 set mkstemp d_mkstemp
13747 eval $inlibc
13748
13749 : see if mkstemps exists
13750 set mkstemps d_mkstemps
13751 eval $inlibc
13752
13753 : see if mktime exists
13754 set mktime d_mktime
13755 eval $inlibc
13756
13757 : see if this is a sys/mman.h system
13758 set sys/mman.h i_sysmman
13759 eval $inhdr
13760
13761 : see if mmap exists
13762 set mmap d_mmap
13763 eval $inlibc
13764 : see what shmat returns
13765 : default to something harmless
13766 mmaptype='void *'
13767 case "$i_sysmman$d_mmap" in
13768 "$define$define")
13769         $cat >mmap.c <<'END'
13770 #include <sys/mman.h>
13771 void *mmap();
13772 END
13773         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13774                 mmaptype='void *'
13775         else
13776                 mmaptype='caddr_t'
13777         fi
13778         echo "and it returns ($mmaptype)." >&4
13779         ;;
13780 esac
13781
13782
13783
13784 : see if mprotect exists
13785 set mprotect d_mprotect
13786 eval $inlibc
13787
13788 : see if msgctl exists
13789 set msgctl d_msgctl
13790 eval $inlibc
13791
13792 : see if msgget exists
13793 set msgget d_msgget
13794 eval $inlibc
13795
13796 : see if msgsnd exists
13797 set msgsnd d_msgsnd
13798 eval $inlibc
13799
13800 : see if msgrcv exists
13801 set msgrcv d_msgrcv
13802 eval $inlibc
13803
13804 : see how much of the 'msg*(2)' library is present.
13805 h_msg=true
13806 echo " "
13807 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13808 *"$undef"*) h_msg=false;;
13809 esac
13810 case "$osname" in
13811 freebsd)
13812     case "`ipcs 2>&1`" in
13813     "SVID messages"*"not configured"*)
13814         echo "Your $osname does not have the msg*(2) configured." >&4
13815         h_msg=false
13816         val="$undef"
13817         set msgctl d_msgctl
13818         eval $setvar
13819         set msgget d_msgget
13820         eval $setvar
13821         set msgsnd d_msgsnd
13822         eval $setvar
13823         set msgrcv d_msgrcv
13824         eval $setvar
13825         ;;
13826     esac
13827     ;;
13828 esac
13829 : we could also check for sys/ipc.h ...
13830 if $h_msg && $test `./findhdr sys/msg.h`; then
13831         echo "You have the full msg*(2) library." >&4
13832         val="$define"
13833 else
13834         echo "You don't have the full msg*(2) library." >&4
13835         val="$undef"
13836 fi
13837 set d_msg
13838 eval $setvar
13839
13840
13841 echo " "
13842 echo "Checking to see if your system supports struct msghdr..." >&4
13843 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13844 eval $hasstruct
13845 case "$d_msghdr_s" in
13846 "$define")      echo "Yes, it does."   ;;
13847 *)              echo "No, it doesn't." ;;
13848 esac
13849
13850
13851 : see if msync exists
13852 set msync d_msync
13853 eval $inlibc
13854
13855 : see if munmap exists
13856 set munmap d_munmap
13857 eval $inlibc
13858
13859 : see if nanosleep exists
13860 set nanosleep d_nanosleep
13861 eval $inlibc
13862
13863 : see if nice exists
13864 set nice d_nice
13865 eval $inlibc
13866
13867 : see if this is a langinfo.h system
13868 set langinfo.h i_langinfo
13869 eval $inhdr
13870
13871 : see if nl_langinfo exists
13872 set nl_langinfo d_nl_langinfo
13873 eval $inlibc
13874
13875 : check for length of character
13876 echo " "
13877 case "$charsize" in
13878 '')
13879         echo "Checking to see how big your characters are (hey, you never know)..." >&4
13880         $cat >try.c <<EOCP
13881 #include <stdio.h>
13882 #$i_stdlib I_STDLIB
13883 #ifdef I_STDLIB
13884 #include <stdlib.h>
13885 #endif
13886 int main()
13887 {
13888     printf("%d\n", (int)sizeof(char));
13889     exit(0);
13890 }
13891 EOCP
13892         set try
13893         if eval $compile_ok; then
13894                 dflt=`$run ./try`
13895         else
13896                 dflt='1'
13897                 echo "(I can't seem to compile the test program.  Guessing...)"
13898         fi
13899         ;;
13900 *)
13901         dflt="$charsize"
13902         ;;
13903 esac
13904 rp="What is the size of a character (in bytes)?"
13905 . ./myread
13906 charsize="$ans"
13907 $rm -f try.c try
13908
13909 : check for volatile keyword
13910 echo " "
13911 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13912 $cat >try.c <<'EOCP'
13913 int main()
13914 {
13915         typedef struct _goo_struct goo_struct;
13916         goo_struct * volatile goo = ((goo_struct *)0);
13917         struct _goo_struct {
13918                 long long_int;
13919                 int reg_int;
13920                 char char_var;
13921         };
13922         typedef unsigned short foo_t;
13923         char *volatile foo;
13924         volatile int bar;
13925         volatile foo_t blech;
13926         foo = foo;
13927 }
13928 EOCP
13929 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13930         val="$define"
13931         echo "Yup, it does."
13932 else
13933         val="$undef"
13934         echo "Nope, it doesn't."
13935 fi
13936 set d_volatile
13937 eval $setvar
13938 $rm -f try.*
13939
13940
13941 echo " "
13942 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13943
13944 case "$use64bitint:$d_quad:$quadtype" in
13945 define:define:?*)
13946         ivtype="$quadtype"
13947         uvtype="$uquadtype"
13948         ivsize=8
13949         uvsize=8
13950         ;;
13951 *)      ivtype="long"
13952         uvtype="unsigned long"
13953         ivsize=$longsize
13954         uvsize=$longsize
13955         ;;
13956 esac
13957
13958 case "$uselongdouble:$d_longdbl" in
13959 define:define)
13960         nvtype="long double"
13961         nvsize=$longdblsize
13962         ;;
13963 *)      nvtype=double
13964         nvsize=$doublesize
13965         ;;
13966 esac
13967
13968 $echo "(IV will be "$ivtype", $ivsize bytes)"
13969 $echo "(UV will be "$uvtype", $uvsize bytes)"
13970 $echo "(NV will be "$nvtype", $nvsize bytes)"
13971
13972 $cat >try.c <<EOCP
13973 #$i_inttypes I_INTTYPES
13974 #ifdef I_INTTYPES
13975 #include <inttypes.h>
13976 #endif
13977 #include <stdio.h>
13978 int main() {
13979 #ifdef INT8
13980    int8_t i =  INT8_MAX;
13981   uint8_t u = UINT8_MAX;
13982   printf("int8_t\n");
13983 #endif
13984 #ifdef INT16
13985    int16_t i =  INT16_MAX;
13986   uint16_t i = UINT16_MAX;
13987   printf("int16_t\n");
13988 #endif
13989 #ifdef INT32
13990    int32_t i =  INT32_MAX;
13991   uint32_t u = UINT32_MAX;
13992   printf("int32_t\n");
13993 #endif
13994 }
13995 EOCP
13996
13997 case "$i8type" in
13998 '')     case "$charsize" in
13999         1)      i8type=char
14000                 u8type="unsigned char"
14001                 i8size=$charsize
14002                 u8size=$charsize
14003                 ;;
14004         esac
14005         ;;
14006 esac
14007 case "$i8type" in
14008 '')     set try -DINT8
14009         if eval $compile; then
14010                 case "`$run ./try`" in
14011                 int8_t) i8type=int8_t
14012                         u8type=uint8_t
14013                         i8size=1
14014                         u8size=1
14015                         ;;
14016                 esac
14017         fi
14018         ;;
14019 esac
14020 case "$i8type" in
14021 '')     if $test $charsize -ge 1; then
14022                 i8type=char
14023                 u8type="unsigned char"
14024                 i8size=$charsize
14025                 u8size=$charsize
14026         fi
14027         ;;
14028 esac
14029
14030 case "$i16type" in
14031 '')     case "$shortsize" in
14032         2)      i16type=short
14033                 u16type="unsigned short"
14034                 i16size=$shortsize
14035                 u16size=$shortsize
14036                 ;;
14037         esac
14038         ;;
14039 esac
14040 case "$i16type" in
14041 '')     set try -DINT16
14042         if eval $compile; then
14043                 case "`$run ./try`" in
14044                 int16_t)
14045                         i16type=int16_t
14046                         u16type=uint16_t
14047                         i16size=2
14048                         u16size=2
14049                         ;;
14050                 esac
14051         fi
14052         ;;
14053 esac
14054 case "$i16type" in
14055 '')     if $test $shortsize -ge 2; then
14056                 i16type=short
14057                 u16type="unsigned short"
14058                 i16size=$shortsize
14059                 u16size=$shortsize
14060         fi
14061         ;;
14062 esac
14063
14064 case "$i32type" in
14065 '')     case "$longsize" in
14066         4)      i32type=long
14067                 u32type="unsigned long"
14068                 i32size=$longsize
14069                 u32size=$longsize
14070                 ;;
14071         *)      case "$intsize" in
14072                 4)      i32type=int
14073                         u32type="unsigned int"
14074                         i32size=$intsize
14075                         u32size=$intsize
14076                         ;;
14077                 esac
14078                 ;;
14079         esac
14080         ;;
14081 esac
14082 case "$i32type" in
14083 '')     set try -DINT32
14084         if eval $compile; then
14085                 case "`$run ./try`" in
14086                 int32_t)
14087                         i32type=int32_t
14088                         u32type=uint32_t
14089                         i32size=4
14090                         u32size=4
14091                         ;;
14092                 esac
14093         fi
14094         ;;
14095 esac
14096 case "$i32type" in
14097 '')     if $test $intsize -ge 4; then
14098                 i32type=int
14099                 u32type="unsigned int"
14100                 i32size=$intsize
14101                 u32size=$intsize
14102         fi
14103         ;;
14104 esac
14105
14106 case "$i64type" in
14107 '')     case "$d_quad:$quadtype" in
14108         define:?*)
14109                 i64type="$quadtype"
14110                 u64type="$uquadtype"
14111                 i64size=8
14112                 u64size=8
14113                 ;;
14114         esac
14115         ;;
14116 esac
14117
14118 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14119 : volatile so that the compiler has to store it out to memory.
14120 if test X"$d_volatile" = X"$define"; then
14121         volatile=volatile
14122 fi
14123 $cat <<EOP >try.c
14124 #include <stdio.h>
14125 #$i_stdlib I_STDLIB
14126 #ifdef I_STDLIB
14127 #include <stdlib.h>
14128 #endif
14129 #include <sys/types.h>
14130 #include <signal.h>
14131 #ifdef SIGFPE
14132 $volatile int bletched = 0;
14133 $signal_t blech(s) int s; { bletched = 1; }
14134 #endif
14135 int main() {
14136     $uvtype u = 0;
14137     $nvtype d;
14138     int     n = 8 * $uvsize;
14139     int     i;
14140 #ifdef SIGFPE
14141     signal(SIGFPE, blech);
14142 #endif
14143
14144     for (i = 0; i < n; i++) {
14145       u = u << 1 | ($uvtype)1;
14146       d = ($nvtype)u;
14147       if (($uvtype)d != u)
14148         break;
14149       if (d <= 0)
14150         break;
14151       d = ($nvtype)(u - 1);
14152       if (($uvtype)d != (u - 1))
14153         break;
14154 #ifdef SIGFPE
14155       if (bletched) {
14156         break;
14157 #endif
14158       } 
14159     }
14160     printf("%d\n", ((i == n) ? -n : i));
14161     exit(0);
14162 }
14163 EOP
14164 set try
14165
14166 d_nv_preserves_uv="$undef"
14167 if eval $compile; then
14168         nv_preserves_uv_bits="`$run ./try`"
14169 fi
14170 case "$nv_preserves_uv_bits" in
14171 \-[1-9]*)       
14172         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14173         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14174         d_nv_preserves_uv="$define"
14175         ;;
14176 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14177         d_nv_preserves_uv="$undef" ;;
14178 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14179         nv_preserves_uv_bits="$undef" ;;
14180 esac
14181
14182 $rm -f try.* try
14183
14184
14185 : check for off64_t
14186 echo " "
14187 echo "Checking to see if you have off64_t..." >&4
14188 $cat >try.c <<EOCP
14189 #include <sys/types.h>
14190 #include <unistd.h>
14191 int main() { off64_t x = 7; }
14192 EOCP
14193 set try
14194 if eval $compile; then
14195         val="$define"
14196         echo "You have off64_t."
14197 else
14198         val="$undef"
14199         echo "You do not have off64_t."
14200         case "$lseeksize" in
14201         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14202         esac
14203 fi
14204 $rm -f try.* try
14205 set d_off64_t
14206 eval $setvar
14207
14208 : how to create joinable pthreads
14209 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14210         echo " "
14211         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14212         $cat >try.c <<'EOCP'
14213 #include <pthread.h>
14214 int main() {
14215     int detachstate = JOINABLE;
14216 }
14217 EOCP
14218         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14219         if eval $compile; then
14220                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14221                 val="$undef" # Yes, undef.
14222                 set d_old_pthread_create_joinable
14223                 eval $setvar
14224                 val=""
14225                 set old_pthread_create_joinable
14226                 eval $setvar
14227         else
14228                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14229                 if eval $compile; then
14230                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14231                         val="$define"
14232                         set d_old_pthread_create_joinable
14233                         eval $setvar
14234                         val=PTHREAD_CREATE_UNDETACHED
14235                         set old_pthread_create_joinable
14236                         eval $setvar
14237                 else            
14238                         set try -DJOINABLE=__UNDETACHED
14239                         if eval $compile; then
14240                                 echo "You seem to use __UNDETACHED." >&4
14241                                 val="$define"
14242                                 set d_old_pthread_create_joinable
14243                                 eval $setvar
14244                                 val=__UNDETACHED
14245                                 set old_pthread_create_joinable
14246                                 eval $setvar
14247                         else
14248                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14249                                 val="$define"
14250                                 set d_old_pthread_create_joinable
14251                                 eval $setvar
14252                                 val=0
14253                                 set old_pthread_create_joinable
14254                                 eval $setvar
14255                         fi
14256                 fi
14257         fi
14258         $rm -f try try.*
14259 else
14260     d_old_pthread_create_joinable="$undef"
14261     old_pthread_create_joinable=""
14262 fi
14263
14264 : see if pause exists
14265 set pause d_pause
14266 eval $inlibc
14267
14268 : see if pipe exists
14269 set pipe d_pipe
14270 eval $inlibc
14271
14272 : see if poll exists
14273 set poll d_poll
14274 eval $inlibc
14275
14276 : see if readlink exists
14277 set readlink d_readlink
14278 eval $inlibc
14279
14280 echo " "
14281 procselfexe=''
14282 val="$undef"
14283 case "$d_readlink" in
14284 "$define")
14285         if $issymlink /proc/self/exe ; then
14286                 $ls -l /proc/self/exe > reflect
14287                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14288                         echo "You have Linux-like /proc/self/exe."
14289                         procselfexe='"/proc/self/exe"'
14290                         val="$define"
14291                 fi
14292         fi
14293         if $issymlink /proc/curproc/file ; then
14294                 $ls -l /proc/curproc/file > reflect
14295                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14296                         echo "You have BSD-like /proc/curproc/file."
14297                         procselfexe='"/proc/curproc/file"'
14298                         val="$define"
14299                 fi
14300         fi
14301         ;;
14302 esac
14303 $rm -f reflect
14304 set d_procselfexe
14305 eval $setvar
14306
14307 : see whether the pthread_atfork exists
14308 $cat >try.c <<EOP
14309 #include <pthread.h>
14310 #include <stdio.h>
14311 int main() {
14312 #ifdef  PTHREAD_ATFORK
14313         pthread_atfork(NULL,NULL,NULL);
14314 #endif
14315 }
14316 EOP
14317
14318 : see if pthread_atfork exists
14319 set try -DPTHREAD_ATFORK
14320 if eval $compile; then
14321     val="$define"
14322 else
14323     val="$undef"
14324 fi
14325 case "$usethreads" in
14326 $define)
14327         case "$val" in
14328         $define) echo 'pthread_atfork found.' >&4        ;;
14329         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14330         esac
14331 esac
14332 set d_pthread_atfork
14333 eval $setvar
14334
14335
14336 : see whether the various POSIXish _yields exist
14337 $cat >try.c <<EOP
14338 #include <pthread.h>
14339 #include <stdio.h>
14340 int main() {
14341 #ifdef SCHED_YIELD
14342         sched_yield();
14343 #else
14344 #ifdef PTHREAD_YIELD
14345         pthread_yield();
14346 #else
14347 #ifdef PTHREAD_YIELD_NULL
14348         pthread_yield(NULL);
14349 #endif
14350 #endif
14351 #endif
14352 }
14353 EOP
14354 : see if sched_yield exists
14355 set try -DSCHED_YIELD
14356 if eval $compile; then
14357     val="$define"
14358     sched_yield='sched_yield()'
14359 else
14360     val="$undef"
14361 fi
14362 case "$usethreads" in
14363 $define)
14364         case "$val" in
14365         $define) echo 'sched_yield() found.' >&4        ;;
14366         *)       echo 'sched_yield() NOT found.' >&4    ;;
14367         esac
14368 esac
14369 set d_sched_yield
14370 eval $setvar
14371
14372 : see if pthread_yield exists
14373 set try -DPTHREAD_YIELD
14374 if eval $compile; then
14375     val="$define"
14376     case "$sched_yield" in
14377     '') sched_yield='pthread_yield()' ;;
14378     esac
14379 else
14380     set try -DPTHREAD_YIELD_NULL
14381     if eval $compile; then
14382         val="$define"
14383         case "$sched_yield" in
14384         '') sched_yield='pthread_yield(NULL)' ;;
14385         esac
14386     else
14387         val="$undef"
14388     fi
14389 fi
14390 case "$usethreads" in
14391 $define)
14392         case "$val" in
14393         $define) echo 'pthread_yield() found.' >&4      ;;
14394         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14395         esac
14396         ;;
14397 esac
14398 set d_pthread_yield
14399 eval $setvar
14400
14401 case "$sched_yield" in
14402 '') sched_yield=undef ;;
14403 esac
14404
14405 $rm -f try try.*
14406
14407 : see if random_r exists
14408 set random_r d_random_r
14409 eval $inlibc
14410 case "$d_random_r" in
14411 "$define")
14412         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14413         case "$d_random_r_proto:$usethreads" in
14414         ":define")      d_random_r_proto=define
14415                 set d_random_r_proto random_r $hdrs
14416                 eval $hasproto ;;
14417         *)      ;;
14418         esac
14419         case "$d_random_r_proto" in
14420         define)
14421         case "$random_r_proto" in
14422         ''|0) try='int random_r(int*, struct random_data*);'
14423         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14424         esac
14425         case "$random_r_proto" in
14426         ''|0) try='int random_r(long*, struct random_data*);'
14427         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14428         esac
14429         case "$random_r_proto" in
14430         ''|0) try='int random_r(struct random_data*, int32_t*);'
14431         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14432         esac
14433         case "$random_r_proto" in
14434         ''|0)   d_random_r=undef
14435                 random_r_proto=0
14436                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14437         * )     case "$random_r_proto" in
14438                 REENTRANT_PROTO*) ;;
14439                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14440                 esac
14441                 echo "Prototype: $try" ;;
14442         esac
14443         ;;
14444         *)      case "$usethreads" in
14445                 define) echo "random_r has no prototype, not using it." >&4 ;;
14446                 esac
14447                 d_random_r=undef
14448                 random_r_proto=0
14449                 ;;
14450         esac
14451         ;;
14452 *)      random_r_proto=0
14453         ;;
14454 esac
14455
14456 : see if readdir and friends exist
14457 set readdir d_readdir
14458 eval $inlibc
14459 set seekdir d_seekdir
14460 eval $inlibc
14461 set telldir d_telldir
14462 eval $inlibc
14463 set rewinddir d_rewinddir
14464 eval $inlibc
14465
14466 : see if readdir64_r exists
14467 set readdir64_r d_readdir64_r
14468 eval $inlibc
14469 case "$d_readdir64_r" in
14470 "$define")
14471         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14472         case "$d_readdir64_r_proto:$usethreads" in
14473         ":define")      d_readdir64_r_proto=define
14474                 set d_readdir64_r_proto readdir64_r $hdrs
14475                 eval $hasproto ;;
14476         *)      ;;
14477         esac
14478         case "$d_readdir64_r_proto" in
14479         define)
14480         case "$readdir64_r_proto" in
14481         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14482         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14483         esac
14484         case "$readdir64_r_proto" in
14485         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14486         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14487         esac
14488         case "$readdir64_r_proto" in
14489         ''|0)   d_readdir64_r=undef
14490                 readdir64_r_proto=0
14491                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14492         * )     case "$readdir64_r_proto" in
14493                 REENTRANT_PROTO*) ;;
14494                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14495                 esac
14496                 echo "Prototype: $try" ;;
14497         esac
14498         ;;
14499         *)      case "$usethreads" in
14500                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14501                 esac
14502                 d_readdir64_r=undef
14503                 readdir64_r_proto=0
14504                 ;;
14505         esac
14506         ;;
14507 *)      readdir64_r_proto=0
14508         ;;
14509 esac
14510
14511 : see if readdir_r exists
14512 set readdir_r d_readdir_r
14513 eval $inlibc
14514 case "$d_readdir_r" in
14515 "$define")
14516         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14517         case "$d_readdir_r_proto:$usethreads" in
14518         ":define")      d_readdir_r_proto=define
14519                 set d_readdir_r_proto readdir_r $hdrs
14520                 eval $hasproto ;;
14521         *)      ;;
14522         esac
14523         case "$d_readdir_r_proto" in
14524         define)
14525         case "$readdir_r_proto" in
14526         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14527         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14528         esac
14529         case "$readdir_r_proto" in
14530         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14531         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14532         esac
14533         case "$readdir_r_proto" in
14534         ''|0)   d_readdir_r=undef
14535                 readdir_r_proto=0
14536                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14537         * )     case "$readdir_r_proto" in
14538                 REENTRANT_PROTO*) ;;
14539                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14540                 esac
14541                 echo "Prototype: $try" ;;
14542         esac
14543         ;;
14544         *)      case "$usethreads" in
14545                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14546                 esac
14547                 d_readdir_r=undef
14548                 readdir_r_proto=0
14549                 ;;
14550         esac
14551         ;;
14552 *)      readdir_r_proto=0
14553         ;;
14554 esac
14555
14556 : see if readv exists
14557 set readv d_readv
14558 eval $inlibc
14559
14560 : see if recvmsg exists
14561 set recvmsg d_recvmsg
14562 eval $inlibc
14563
14564 : see if rename exists
14565 set rename d_rename
14566 eval $inlibc
14567
14568 : see if rmdir exists
14569 set rmdir d_rmdir
14570 eval $inlibc
14571
14572 : see if memory.h is available.
14573 val=''
14574 set memory.h val
14575 eval $inhdr
14576
14577 : See if it conflicts with string.h
14578 case "$val" in
14579 $define)
14580         case "$strings" in
14581         '') ;;
14582         *)
14583                 $cppstdin $cppflags $cppminus < $strings > mem.h
14584                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14585                         echo " "
14586                         echo "We won't be including <memory.h>."
14587                         val="$undef"
14588                 fi
14589                 $rm -f mem.h
14590                 ;;
14591         esac
14592 esac
14593 set i_memory
14594 eval $setvar
14595
14596 : can bcopy handle overlapping blocks?
14597 echo " "
14598 val="$undef"
14599 case "$d_memmove" in
14600 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14601 *)      case "$d_bcopy" in
14602         "$define")
14603                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14604                 $cat >try.c <<EOCP
14605 #$i_memory I_MEMORY
14606 #$i_stdlib I_STDLIB
14607 #$i_string I_STRING
14608 #$i_unistd I_UNISTD
14609 EOCP
14610         $cat >>try.c <<'EOCP'
14611 #include <stdio.h>
14612 #ifdef I_MEMORY
14613 #  include <memory.h>
14614 #endif
14615 #ifdef I_STDLIB
14616 #  include <stdlib.h>
14617 #endif
14618 #ifdef I_STRING
14619 #  include <string.h>
14620 #else
14621 #  include <strings.h>
14622 #endif
14623 #ifdef I_UNISTD
14624 #  include <unistd.h>  /* Needed for NetBSD */
14625 #endif
14626 int main()
14627 {
14628 char buf[128], abc[128];
14629 char *b;
14630 int len;
14631 int off;
14632 int align;
14633
14634 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14635    try to store the string in read-only memory. */
14636 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14637
14638 for (align = 7; align >= 0; align--) {
14639         for (len = 36; len; len--) {
14640                 b = buf+align;
14641                 bcopy(abc, b, len);
14642                 for (off = 1; off <= len; off++) {
14643                         bcopy(b, b+off, len);
14644                         bcopy(b+off, b, len);
14645                         if (bcmp(b, abc, len))
14646                                 exit(1);
14647                 }
14648         }
14649 }
14650 exit(0);
14651 }
14652 EOCP
14653                 set try
14654                 if eval $compile_ok; then
14655                         if ./try 2>/dev/null; then
14656                                 echo "Yes, it can."
14657                                 val="$define"
14658                         else
14659                                 echo "It can't, sorry."
14660                         fi
14661                 else
14662                         echo "(I can't compile the test program, so we'll assume not...)"
14663                 fi
14664                 ;;
14665         esac
14666         $rm -f try.* try core
14667         ;;
14668 esac
14669 set d_safebcpy
14670 eval $setvar
14671
14672 : can memcpy handle overlapping blocks?
14673 echo " "
14674 val="$undef"
14675 case "$d_memmove" in
14676 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14677 *)      case "$d_memcpy" in
14678         "$define")
14679                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14680                 $cat >try.c <<EOCP
14681 #$i_memory I_MEMORY
14682 #$i_stdlib I_STDLIB
14683 #$i_string I_STRING
14684 #$i_unistd I_UNISTD
14685 EOCP
14686         $cat >>try.c <<'EOCP'
14687 #include <stdio.h>
14688 #ifdef I_MEMORY
14689 #  include <memory.h>
14690 #endif
14691 #ifdef I_STDLIB
14692 #  include <stdlib.h>
14693 #endif
14694 #ifdef I_STRING
14695 #  include <string.h>
14696 #else
14697 #  include <strings.h>
14698 #endif
14699 #ifdef I_UNISTD
14700 #  include <unistd.h>  /* Needed for NetBSD */
14701 #endif
14702 int main()
14703 {
14704 char buf[128], abc[128];
14705 char *b;
14706 int len;
14707 int off;
14708 int align;
14709
14710 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14711    try to store the string in read-only memory. */
14712 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14713
14714 for (align = 7; align >= 0; align--) {
14715         for (len = 36; len; len--) {
14716                 b = buf+align;
14717                 memcpy(b, abc, len);
14718                 for (off = 1; off <= len; off++) {
14719                         memcpy(b+off, b, len);
14720                         memcpy(b, b+off, len);
14721                         if (memcmp(b, abc, len))
14722                                 exit(1);
14723                 }
14724         }
14725 }
14726 exit(0);
14727 }
14728 EOCP
14729                 set try
14730                 if eval $compile_ok; then
14731                         if ./try 2>/dev/null; then
14732                                 echo "Yes, it can."
14733                                 val="$define"
14734                         else
14735                                 echo "It can't, sorry."
14736                         fi
14737                 else
14738                         echo "(I can't compile the test program, so we'll assume not...)"
14739                 fi
14740                 ;;
14741         esac
14742         $rm -f try.* try core
14743         ;;
14744 esac
14745 set d_safemcpy
14746 eval $setvar
14747
14748 : can memcmp be trusted to compare relative magnitude?
14749 val="$undef"
14750 case "$d_memcmp" in
14751 "$define")
14752         echo " "
14753         echo "Checking if your memcmp() can compare relative magnitude..." >&4
14754         $cat >try.c <<EOCP
14755 #$i_memory I_MEMORY
14756 #$i_stdlib I_STDLIB
14757 #$i_string I_STRING
14758 #$i_unistd I_UNISTD
14759 EOCP
14760         $cat >>try.c <<'EOCP'
14761 #include <stdio.h>
14762 #ifdef I_MEMORY
14763 #  include <memory.h>
14764 #endif
14765 #ifdef I_STDLIB
14766 #  include <stdlib.h>
14767 #endif
14768 #ifdef I_STRING
14769 #  include <string.h>
14770 #else
14771 #  include <strings.h>
14772 #endif
14773 #ifdef I_UNISTD
14774 #  include <unistd.h>  /* Needed for NetBSD */
14775 #endif
14776 int main()
14777 {
14778 char a = -1;
14779 char b = 0;
14780 if ((a < b) && memcmp(&a, &b, 1) < 0)
14781         exit(1);
14782 exit(0);
14783 }
14784 EOCP
14785         set try
14786         if eval $compile_ok; then
14787                 if $run ./try 2>/dev/null; then
14788                         echo "Yes, it can."
14789                         val="$define"
14790                 else
14791                         echo "No, it can't (it uses signed chars)."
14792                 fi
14793         else
14794                 echo "(I can't compile the test program, so we'll assume not...)"
14795         fi
14796         ;;
14797 esac
14798 $rm -f try.* try core
14799 set d_sanemcmp
14800 eval $setvar
14801
14802 : see if prototype for sbrk is available
14803 echo " "
14804 set d_sbrkproto sbrk $i_unistd unistd.h
14805 eval $hasproto
14806
14807 : see if scalbnl exists
14808 set scalbnl d_scalbnl
14809 eval $inlibc
14810
14811 : see if select exists
14812 set select d_select
14813 eval $inlibc
14814
14815 : see if semctl exists
14816 set semctl d_semctl
14817 eval $inlibc
14818
14819 : see if semget exists
14820 set semget d_semget
14821 eval $inlibc
14822
14823 : see if semop exists
14824 set semop d_semop
14825 eval $inlibc
14826
14827 : see how much of the 'sem*(2)' library is present.
14828 h_sem=true
14829 echo " "
14830 case "$d_semctl$d_semget$d_semop" in
14831 *"$undef"*) h_sem=false;;
14832 esac
14833 case "$osname" in
14834 freebsd)
14835     case "`ipcs 2>&1`" in
14836     "SVID messages"*"not configured"*)
14837         echo "Your $osname does not have the sem*(2) configured." >&4
14838         h_sem=false
14839         val="$undef"
14840         set semctl d_semctl
14841         eval $setvar
14842         set semget d_semget
14843         eval $setvar
14844         set semop d_semop
14845         eval $setvar
14846         ;;
14847     esac
14848     ;;
14849 esac
14850 : we could also check for sys/ipc.h ...
14851 if $h_sem && $test `./findhdr sys/sem.h`; then
14852         echo "You have the full sem*(2) library." >&4
14853         val="$define"
14854 else
14855         echo "You don't have the full sem*(2) library." >&4
14856         val="$undef"
14857 fi
14858 set d_sem
14859 eval $setvar
14860
14861 : see whether sys/sem.h defines union semun
14862 echo " "
14863 $cat > try.c <<'END'
14864 #include <sys/types.h>
14865 #include <sys/ipc.h>
14866 #include <sys/sem.h>
14867 int main () { union semun semun; semun.buf = 0; }
14868 END
14869 set try
14870 if eval $compile; then
14871     echo "You have union semun in <sys/sem.h>." >&4
14872     val="$define"
14873 else
14874     echo "You do not have union semun in <sys/sem.h>." >&4
14875     val="$undef"
14876 fi
14877 $rm -f try try.c try.h
14878 set d_union_semun
14879 eval $setvar
14880
14881 : see how to do semctl IPC_STAT
14882 case "$d_sem" in
14883 $define)
14884     : see whether semctl IPC_STAT can use union semun
14885     echo " "
14886     $cat > try.h <<END
14887 #ifndef S_IRUSR
14888 #   ifdef S_IREAD
14889 #       define S_IRUSR S_IREAD
14890 #       define S_IWUSR S_IWRITE
14891 #       define S_IXUSR S_IEXEC
14892 #   else
14893 #       define S_IRUSR 0400
14894 #       define S_IWUSR 0200
14895 #       define S_IXUSR 0100
14896 #   endif
14897 #   define S_IRGRP (S_IRUSR>>3)
14898 #   define S_IWGRP (S_IWUSR>>3)
14899 #   define S_IXGRP (S_IXUSR>>3)
14900 #   define S_IROTH (S_IRUSR>>6)
14901 #   define S_IWOTH (S_IWUSR>>6)
14902 #   define S_IXOTH (S_IXUSR>>6)
14903 #endif
14904 #ifndef S_IRWXU
14905 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14906 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14907 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14908 #endif
14909 END
14910
14911     $cat > try.c <<END
14912 #include <sys/types.h>
14913 #include <sys/ipc.h>
14914 #include <sys/sem.h>
14915 #include <sys/stat.h>
14916 #include <stdio.h>
14917 #include <errno.h>
14918 #include "try.h"
14919 #ifndef errno
14920 extern int errno;
14921 #endif
14922 #$d_union_semun HAS_UNION_SEMUN
14923 int main() {
14924     union semun
14925 #ifndef HAS_UNION_SEMUN
14926     {
14927         int val;
14928         struct semid_ds *buf;
14929         unsigned short *array;
14930     }
14931 #endif
14932     arg;
14933     int sem, st;
14934
14935 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14936     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14937     if (sem > -1) {
14938         struct semid_ds argbuf;
14939         arg.buf = &argbuf;
14940 #       ifdef IPC_STAT
14941         st = semctl(sem, 0, IPC_STAT, arg);
14942         if (st == 0)
14943             printf("semun\n");
14944         else
14945 #       endif /* IPC_STAT */
14946             printf("semctl IPC_STAT failed: errno = %d\n", errno);
14947 #       ifdef IPC_RMID
14948         if (semctl(sem, 0, IPC_RMID, arg) != 0)
14949 #       endif /* IPC_RMID */
14950             printf("semctl IPC_RMID failed: errno = %d\n", errno);
14951     } else
14952 #endif /* IPC_PRIVATE && ... */
14953         printf("semget failed: errno = %d\n", errno);
14954   return 0;
14955 }
14956 END
14957     val="$undef"
14958     set try
14959     if eval $compile; then
14960         xxx=`$run ./try`
14961         case "$xxx" in
14962         semun) val="$define" ;;
14963         esac
14964     fi
14965     $rm -f try try.c
14966     set d_semctl_semun
14967     eval $setvar
14968     case "$d_semctl_semun" in
14969     $define)
14970         echo "You can use union semun for semctl IPC_STAT." >&4
14971         also='also'
14972         ;;
14973     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
14974         also=''
14975         ;;
14976     esac
14977
14978     : see whether semctl IPC_STAT can use struct semid_ds pointer
14979     $cat > try.c <<'END'
14980 #include <sys/types.h>
14981 #include <sys/ipc.h>
14982 #include <sys/sem.h>
14983 #include <sys/stat.h>
14984 #include "try.h"
14985 #include <stdio.h>
14986 #include <errno.h>
14987 #ifndef errno
14988 extern int errno;
14989 #endif
14990 int main() {
14991     struct semid_ds arg;
14992     int sem, st;
14993
14994 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
14995     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14996     if (sem > -1) {
14997 #       ifdef IPC_STAT
14998         st = semctl(sem, 0, IPC_STAT, &arg);
14999         if (st == 0)
15000             printf("semid_ds\n");
15001         else
15002 #       endif /* IPC_STAT */
15003             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15004 #       ifdef IPC_RMID
15005         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15006 #       endif /* IPC_RMID */
15007             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15008     } else
15009 #endif /* IPC_PRIVATE && ... */
15010         printf("semget failed: errno = %d\n", errno);
15011
15012     return 0;
15013 }
15014 END
15015     val="$undef"
15016     set try
15017     if eval $compile; then
15018         xxx=`$run ./try`
15019         case "$xxx" in
15020         semid_ds) val="$define" ;;
15021         esac
15022     fi
15023     $rm -f try try.c
15024     set d_semctl_semid_ds
15025     eval $setvar
15026     case "$d_semctl_semid_ds" in
15027     $define)
15028         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15029         ;;
15030     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15031         ;;
15032     esac
15033     $rm -f try.h
15034     ;;
15035 *)  val="$undef"
15036
15037     # We do not have the full sem*(2) library, so assume we can not
15038     # use either.
15039
15040     set d_semctl_semun
15041     eval $setvar
15042
15043     set d_semctl_semid_ds
15044     eval $setvar
15045     ;;
15046 esac
15047
15048 : see if sendmsg exists
15049 set sendmsg d_sendmsg
15050 eval $inlibc
15051
15052 : see if setegid exists
15053 set setegid d_setegid
15054 eval $inlibc
15055
15056 : see if seteuid exists
15057 set seteuid d_seteuid
15058 eval $inlibc
15059
15060 : see if setgrent exists
15061 set setgrent d_setgrent
15062 eval $inlibc
15063
15064 : see if setgrent_r exists
15065 set setgrent_r d_setgrent_r
15066 eval $inlibc
15067 case "$d_setgrent_r" in
15068 "$define")
15069         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15070         case "$d_setgrent_r_proto:$usethreads" in
15071         ":define")      d_setgrent_r_proto=define
15072                 set d_setgrent_r_proto setgrent_r $hdrs
15073                 eval $hasproto ;;
15074         *)      ;;
15075         esac
15076         case "$d_setgrent_r_proto" in
15077         define)
15078         case "$setgrent_r_proto" in
15079         ''|0) try='int setgrent_r(FILE**);'
15080         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15081         esac
15082         case "$setgrent_r_proto" in
15083         ''|0) try='void setgrent_r(FILE**);'
15084         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15085         esac
15086         case "$setgrent_r_proto" in
15087         ''|0)   d_setgrent_r=undef
15088                 setgrent_r_proto=0
15089                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15090         * )     case "$setgrent_r_proto" in
15091                 REENTRANT_PROTO*) ;;
15092                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15093                 esac
15094                 echo "Prototype: $try" ;;
15095         esac
15096         ;;
15097         *)      case "$usethreads" in
15098                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15099                 esac
15100                 d_setgrent_r=undef
15101                 setgrent_r_proto=0
15102                 ;;
15103         esac
15104         ;;
15105 *)      setgrent_r_proto=0
15106         ;;
15107 esac
15108
15109 : see if sethostent exists
15110 set sethostent d_sethent
15111 eval $inlibc
15112
15113 : see if sethostent_r exists
15114 set sethostent_r d_sethostent_r
15115 eval $inlibc
15116 case "$d_sethostent_r" in
15117 "$define")
15118         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15119         case "$d_sethostent_r_proto:$usethreads" in
15120         ":define")      d_sethostent_r_proto=define
15121                 set d_sethostent_r_proto sethostent_r $hdrs
15122                 eval $hasproto ;;
15123         *)      ;;
15124         esac
15125         case "$d_sethostent_r_proto" in
15126         define)
15127         case "$sethostent_r_proto" in
15128         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15129         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15130         esac
15131         case "$sethostent_r_proto" in
15132         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15133         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15134         esac
15135         case "$sethostent_r_proto" in
15136         ''|0)   d_sethostent_r=undef
15137                 sethostent_r_proto=0
15138                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15139         * )     case "$sethostent_r_proto" in
15140                 REENTRANT_PROTO*) ;;
15141                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15142                 esac
15143                 echo "Prototype: $try" ;;
15144         esac
15145         ;;
15146         *)      case "$usethreads" in
15147                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15148                 esac
15149                 d_sethostent_r=undef
15150                 sethostent_r_proto=0
15151                 ;;
15152         esac
15153         ;;
15154 *)      sethostent_r_proto=0
15155         ;;
15156 esac
15157
15158 : see if setitimer exists
15159 set setitimer d_setitimer
15160 eval $inlibc
15161
15162 : see if setlinebuf exists
15163 set setlinebuf d_setlinebuf
15164 eval $inlibc
15165
15166 : see if setlocale exists
15167 set setlocale d_setlocale
15168 eval $inlibc
15169
15170 : see if locale.h is available
15171 set locale.h i_locale
15172 eval $inhdr
15173
15174 : see if setlocale_r exists
15175 set setlocale_r d_setlocale_r
15176 eval $inlibc
15177 case "$d_setlocale_r" in
15178 "$define")
15179         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15180         case "$d_setlocale_r_proto:$usethreads" in
15181         ":define")      d_setlocale_r_proto=define
15182                 set d_setlocale_r_proto setlocale_r $hdrs
15183                 eval $hasproto ;;
15184         *)      ;;
15185         esac
15186         case "$d_setlocale_r_proto" in
15187         define)
15188         case "$setlocale_r_proto" in
15189         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15190         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15191         esac
15192         case "$setlocale_r_proto" in
15193         ''|0)   d_setlocale_r=undef
15194                 setlocale_r_proto=0
15195                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15196         * )     case "$setlocale_r_proto" in
15197                 REENTRANT_PROTO*) ;;
15198                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15199                 esac
15200                 echo "Prototype: $try" ;;
15201         esac
15202         ;;
15203         *)      case "$usethreads" in
15204                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15205                 esac
15206                 d_setlocale_r=undef
15207                 setlocale_r_proto=0
15208                 ;;
15209         esac
15210         ;;
15211 *)      setlocale_r_proto=0
15212         ;;
15213 esac
15214
15215 : see if setnetent exists
15216 set setnetent d_setnent
15217 eval $inlibc
15218
15219 : see if setnetent_r exists
15220 set setnetent_r d_setnetent_r
15221 eval $inlibc
15222 case "$d_setnetent_r" in
15223 "$define")
15224         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15225         case "$d_setnetent_r_proto:$usethreads" in
15226         ":define")      d_setnetent_r_proto=define
15227                 set d_setnetent_r_proto setnetent_r $hdrs
15228                 eval $hasproto ;;
15229         *)      ;;
15230         esac
15231         case "$d_setnetent_r_proto" in
15232         define)
15233         case "$setnetent_r_proto" in
15234         ''|0) try='int setnetent_r(int, struct netent_data*);'
15235         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15236         esac
15237         case "$setnetent_r_proto" in
15238         ''|0) try='void setnetent_r(int, struct netent_data*);'
15239         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15240         esac
15241         case "$setnetent_r_proto" in
15242         ''|0)   d_setnetent_r=undef
15243                 setnetent_r_proto=0
15244                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15245         * )     case "$setnetent_r_proto" in
15246                 REENTRANT_PROTO*) ;;
15247                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15248                 esac
15249                 echo "Prototype: $try" ;;
15250         esac
15251         ;;
15252         *)      case "$usethreads" in
15253                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15254                 esac
15255                 d_setnetent_r=undef
15256                 setnetent_r_proto=0
15257                 ;;
15258         esac
15259         ;;
15260 *)      setnetent_r_proto=0
15261         ;;
15262 esac
15263
15264 : see if setprotoent exists
15265 set setprotoent d_setpent
15266 eval $inlibc
15267
15268 : see if setpgid exists
15269 set setpgid d_setpgid
15270 eval $inlibc
15271
15272 : see if setpgrp2 exists
15273 set setpgrp2 d_setpgrp2
15274 eval $inlibc
15275
15276 : see if setpriority exists
15277 set setpriority d_setprior
15278 eval $inlibc
15279
15280 : see if setproctitle exists
15281 set setproctitle d_setproctitle
15282 eval $inlibc
15283
15284 : see if setprotoent_r exists
15285 set setprotoent_r d_setprotoent_r
15286 eval $inlibc
15287 case "$d_setprotoent_r" in
15288 "$define")
15289         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15290         case "$d_setprotoent_r_proto:$usethreads" in
15291         ":define")      d_setprotoent_r_proto=define
15292                 set d_setprotoent_r_proto setprotoent_r $hdrs
15293                 eval $hasproto ;;
15294         *)      ;;
15295         esac
15296         case "$d_setprotoent_r_proto" in
15297         define)
15298         case "$setprotoent_r_proto" in
15299         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15300         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15301         esac
15302         case "$setprotoent_r_proto" in
15303         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15304         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15305         esac
15306         case "$setprotoent_r_proto" in
15307         ''|0)   d_setprotoent_r=undef
15308                 setprotoent_r_proto=0
15309                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15310         * )     case "$setprotoent_r_proto" in
15311                 REENTRANT_PROTO*) ;;
15312                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15313                 esac
15314                 echo "Prototype: $try" ;;
15315         esac
15316         ;;
15317         *)      case "$usethreads" in
15318                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15319                 esac
15320                 d_setprotoent_r=undef
15321                 setprotoent_r_proto=0
15322                 ;;
15323         esac
15324         ;;
15325 *)      setprotoent_r_proto=0
15326         ;;
15327 esac
15328
15329 : see if setpwent exists
15330 set setpwent d_setpwent
15331 eval $inlibc
15332
15333 : see if setpwent_r exists
15334 set setpwent_r d_setpwent_r
15335 eval $inlibc
15336 case "$d_setpwent_r" in
15337 "$define")
15338         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15339         case "$d_setpwent_r_proto:$usethreads" in
15340         ":define")      d_setpwent_r_proto=define
15341                 set d_setpwent_r_proto setpwent_r $hdrs
15342                 eval $hasproto ;;
15343         *)      ;;
15344         esac
15345         case "$d_setpwent_r_proto" in
15346         define)
15347         case "$setpwent_r_proto" in
15348         ''|0) try='int setpwent_r(FILE**);'
15349         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15350         esac
15351         case "$setpwent_r_proto" in
15352         ''|0) try='void setpwent_r(FILE**);'
15353         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15354         esac
15355         case "$setpwent_r_proto" in
15356         ''|0)   d_setpwent_r=undef
15357                 setpwent_r_proto=0
15358                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15359         * )     case "$setpwent_r_proto" in
15360                 REENTRANT_PROTO*) ;;
15361                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15362                 esac
15363                 echo "Prototype: $try" ;;
15364         esac
15365         ;;
15366         *)      case "$usethreads" in
15367                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15368                 esac
15369                 d_setpwent_r=undef
15370                 setpwent_r_proto=0
15371                 ;;
15372         esac
15373         ;;
15374 *)      setpwent_r_proto=0
15375         ;;
15376 esac
15377
15378 : see if setregid exists
15379 set setregid d_setregid
15380 eval $inlibc
15381 set setresgid d_setresgid
15382 eval $inlibc
15383
15384 : see if setreuid exists
15385 set setreuid d_setreuid
15386 eval $inlibc
15387 set setresuid d_setresuid
15388 eval $inlibc
15389
15390 : see if setrgid exists
15391 set setrgid d_setrgid
15392 eval $inlibc
15393
15394 : see if setruid exists
15395 set setruid d_setruid
15396 eval $inlibc
15397
15398 : see if setservent exists
15399 set setservent d_setsent
15400 eval $inlibc
15401
15402 : see if setservent_r exists
15403 set setservent_r d_setservent_r
15404 eval $inlibc
15405 case "$d_setservent_r" in
15406 "$define")
15407         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15408         case "$d_setservent_r_proto:$usethreads" in
15409         ":define")      d_setservent_r_proto=define
15410                 set d_setservent_r_proto setservent_r $hdrs
15411                 eval $hasproto ;;
15412         *)      ;;
15413         esac
15414         case "$d_setservent_r_proto" in
15415         define)
15416         case "$setservent_r_proto" in
15417         ''|0) try='int setservent_r(int, struct servent_data*);'
15418         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15419         esac
15420         case "$setservent_r_proto" in
15421         ''|0) try='void setservent_r(int, struct servent_data*);'
15422         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15423         esac
15424         case "$setservent_r_proto" in
15425         ''|0)   d_setservent_r=undef
15426                 setservent_r_proto=0
15427                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15428         * )     case "$setservent_r_proto" in
15429                 REENTRANT_PROTO*) ;;
15430                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15431                 esac
15432                 echo "Prototype: $try" ;;
15433         esac
15434         ;;
15435         *)      case "$usethreads" in
15436                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15437                 esac
15438                 d_setservent_r=undef
15439                 setservent_r_proto=0
15440                 ;;
15441         esac
15442         ;;
15443 *)      setservent_r_proto=0
15444         ;;
15445 esac
15446
15447 : see if setsid exists
15448 set setsid d_setsid
15449 eval $inlibc
15450
15451 : see if setvbuf exists
15452 set setvbuf d_setvbuf
15453 eval $inlibc
15454
15455 : see if sfio.h is available
15456 set sfio.h i_sfio
15457 eval $inhdr
15458
15459
15460 : see if sfio library is available
15461 case "$i_sfio" in
15462 $define)
15463         val=''
15464         set sfreserve val
15465         eval $inlibc
15466         ;;
15467 *)
15468         val="$undef"
15469         ;;
15470 esac
15471 : Ok, but do we want to use it.
15472 case "$val" in
15473 $define)
15474         case "$usesfio" in
15475         true|$define|[yY]*) dflt='y';;
15476         *) dflt='n';;
15477         esac
15478         echo "$package can use the sfio library, but it is experimental."
15479         case "$useperlio" in
15480         "$undef")
15481             echo "For sfio also the PerlIO abstraction layer is needed."
15482             echo "Earlier you said you wouldn't want that."
15483             ;;
15484         esac
15485         rp="You seem to have sfio available, do you want to try using it?"
15486         . ./myread
15487         case "$ans" in
15488         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15489                 useperlio="$define"
15490                 val="$define"
15491                 ;;
15492         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15493                 val="$undef"
15494                 ;;
15495         esac
15496         ;;
15497 *)      case "$usesfio" in
15498         true|$define|[yY]*)
15499                 echo "Sorry, cannot find sfio on this machine." >&4
15500                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15501                 val="$undef"
15502                 ;;
15503         esac
15504         ;;
15505 esac
15506 set d_sfio
15507 eval $setvar
15508 case "$d_sfio" in
15509 $define) usesfio='true';;
15510 *) usesfio='false';;
15511 esac
15512 case "$d_sfio" in
15513 $define) ;;
15514 *)      : Remove sfio from list of libraries to use
15515         case "$libs" in
15516         *-lsfio*)
15517                 echo "Removing unneeded -lsfio from library list" >&4
15518                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15519                 shift
15520                 libs="$*"
15521                 echo "libs = $libs" >&4
15522                 ;;
15523         esac
15524 ;;
15525 esac
15526
15527
15528 : see if shmctl exists
15529 set shmctl d_shmctl
15530 eval $inlibc
15531
15532 : see if shmget exists
15533 set shmget d_shmget
15534 eval $inlibc
15535
15536 : see if shmat exists
15537 set shmat d_shmat
15538 eval $inlibc
15539 : see what shmat returns
15540 case "$d_shmat" in
15541 "$define")
15542         $cat >shmat.c <<'END'
15543 #include <sys/shm.h>
15544 void *shmat();
15545 END
15546         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15547                 shmattype='void *'
15548         else
15549                 shmattype='char *'
15550         fi
15551         echo "and it returns ($shmattype)." >&4
15552         : see if a prototype for shmat is available
15553         xxx=`./findhdr sys/shm.h`
15554         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15555         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15556                 val="$define"
15557         else
15558                 val="$undef"
15559         fi
15560         $rm -f shmat.[co]
15561         ;;
15562 *)
15563         val="$undef"
15564         ;;
15565 esac
15566 set d_shmatprototype
15567 eval $setvar
15568
15569 : see if shmdt exists
15570 set shmdt d_shmdt
15571 eval $inlibc
15572
15573 : see how much of the 'shm*(2)' library is present.
15574 h_shm=true
15575 echo " "
15576 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15577 *"$undef"*) h_shm=false;;
15578 esac
15579 case "$osname" in
15580 freebsd)
15581     case "`ipcs 2>&1`" in
15582     "SVID shared memory"*"not configured"*)
15583         echo "Your $osname does not have the shm*(2) configured." >&4
15584         h_shm=false
15585         val="$undef"
15586         set shmctl d_shmctl
15587         evat $setvar
15588         set shmget d_shmget
15589         evat $setvar
15590         set shmat d_shmat
15591         evat $setvar
15592         set shmdt d_shmdt
15593         evat $setvar
15594         ;;
15595     esac
15596     ;;
15597 esac
15598 : we could also check for sys/ipc.h ...
15599 if $h_shm && $test `./findhdr sys/shm.h`; then
15600         echo "You have the full shm*(2) library." >&4
15601         val="$define"
15602 else
15603         echo "You don't have the full shm*(2) library." >&4
15604         val="$undef"
15605 fi
15606 set d_shm
15607 eval $setvar
15608
15609 echo " "
15610 : see if we have sigaction
15611 if set sigaction val -f d_sigaction; eval $csym; $val; then
15612         echo 'sigaction() found.' >&4
15613         $cat > try.c <<EOP
15614 #include <stdio.h>
15615 #include <sys/types.h>
15616 #include <signal.h>
15617 #$i_stdlib I_STDLIB
15618 #ifdef I_STDLIB
15619 #include <stdlib.h>
15620 #endif
15621 int main()
15622 {
15623     struct sigaction act, oact;
15624     act.sa_flags = 0;
15625     oact.sa_handler = 0;
15626     /* so that act and oact are used */
15627     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
15628 }
15629 EOP
15630         set try
15631         if eval $compile_ok; then
15632                 val="$define"
15633         else
15634                 echo "But you don't seem to have a useable struct sigaction." >&4
15635                 val="$undef"
15636         fi
15637 else
15638         echo 'sigaction NOT found.' >&4
15639         val="$undef"
15640 fi
15641 set d_sigaction; eval $setvar
15642 $rm -f try try$_o try.c
15643
15644 : see if sigprocmask exists
15645 set sigprocmask d_sigprocmask
15646 eval $inlibc
15647
15648 : see if sigsetjmp exists
15649 echo " "
15650 case "$d_sigsetjmp" in
15651 '')
15652         $cat >try.c <<EOP
15653 #include <setjmp.h>
15654 #$i_stdlib I_STDLIB
15655 #ifdef I_STDLIB
15656 #include <stdlib.h>
15657 #endif
15658 sigjmp_buf env;
15659 int set = 1;
15660 int main()
15661 {
15662         if (sigsetjmp(env,1))
15663                 exit(set);
15664         set = 0;
15665         siglongjmp(env, 1);
15666         exit(1);
15667 }
15668 EOP
15669         set try
15670         if eval $compile; then
15671                 if $run ./try >/dev/null 2>&1; then
15672                         echo "POSIX sigsetjmp found." >&4
15673                         val="$define"
15674                 else
15675                         $cat >&4 <<EOM
15676 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15677 I'll ignore them.
15678 EOM
15679                         val="$undef"
15680                 fi
15681         else
15682                 echo "sigsetjmp not found." >&4
15683                 val="$undef"
15684         fi
15685         ;;
15686 *) val="$d_sigsetjmp"
15687         case "$d_sigsetjmp" in
15688         $define) echo "POSIX sigsetjmp found." >&4;;
15689         $undef) echo "sigsetjmp not found." >&4;;
15690         esac
15691         ;;
15692 esac
15693 set d_sigsetjmp
15694 eval $setvar
15695 $rm -f try.c try
15696
15697 : see if sockatmark exists
15698 set sockatmark d_sockatmark
15699 eval $inlibc
15700
15701 : see if prototype for sockatmark is available
15702 echo " "
15703 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15704 eval $hasproto
15705
15706 : see if socks5_init exists
15707 set socks5_init d_socks5_init
15708 eval $inlibc
15709
15710 : see if srand48_r exists
15711 set srand48_r d_srand48_r
15712 eval $inlibc
15713 case "$d_srand48_r" in
15714 "$define")
15715         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15716         case "$d_srand48_r_proto:$usethreads" in
15717         ":define")      d_srand48_r_proto=define
15718                 set d_srand48_r_proto srand48_r $hdrs
15719                 eval $hasproto ;;
15720         *)      ;;
15721         esac
15722         case "$d_srand48_r_proto" in
15723         define)
15724         case "$srand48_r_proto" in
15725         ''|0) try='int srand48_r(long, struct drand48_data*);'
15726         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15727         esac
15728         case "$srand48_r_proto" in
15729         ''|0)   d_srand48_r=undef
15730                 srand48_r_proto=0
15731                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15732         * )     case "$srand48_r_proto" in
15733                 REENTRANT_PROTO*) ;;
15734                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15735                 esac
15736                 echo "Prototype: $try" ;;
15737         esac
15738         ;;
15739         *)      case "$usethreads" in
15740                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15741                 esac
15742                 d_srand48_r=undef
15743                 srand48_r_proto=0
15744                 ;;
15745         esac
15746         ;;
15747 *)      srand48_r_proto=0
15748         ;;
15749 esac
15750
15751 : see if srandom_r exists
15752 set srandom_r d_srandom_r
15753 eval $inlibc
15754 case "$d_srandom_r" in
15755 "$define")
15756         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15757         case "$d_srandom_r_proto:$usethreads" in
15758         ":define")      d_srandom_r_proto=define
15759                 set d_srandom_r_proto srandom_r $hdrs
15760                 eval $hasproto ;;
15761         *)      ;;
15762         esac
15763         case "$d_srandom_r_proto" in
15764         define)
15765         case "$srandom_r_proto" in
15766         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15767         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15768         esac
15769         case "$srandom_r_proto" in
15770         ''|0)   d_srandom_r=undef
15771                 srandom_r_proto=0
15772                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15773         * )     case "$srandom_r_proto" in
15774                 REENTRANT_PROTO*) ;;
15775                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15776                 esac
15777                 echo "Prototype: $try" ;;
15778         esac
15779         ;;
15780         *)      case "$usethreads" in
15781                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15782                 esac
15783                 d_srandom_r=undef
15784                 srandom_r_proto=0
15785                 ;;
15786         esac
15787         ;;
15788 *)      srandom_r_proto=0
15789         ;;
15790 esac
15791
15792 : see if prototype for setresgid is available
15793 echo " "
15794 set d_sresgproto setresgid $i_unistd unistd.h
15795 eval $hasproto
15796
15797 : see if prototype for setresuid is available
15798 echo " "
15799 set d_sresuproto setresuid $i_unistd unistd.h
15800 eval $hasproto
15801
15802 : see if sys/stat.h is available
15803 set sys/stat.h i_sysstat
15804 eval $inhdr
15805
15806
15807 : see if stat knows about block sizes
15808 echo " "
15809 echo "Checking to see if your struct stat has st_blocks field..." >&4
15810 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15811 eval $hasfield
15812
15813
15814 : see if this is a sys/vfs.h system
15815 set sys/vfs.h i_sysvfs
15816 eval $inhdr
15817
15818
15819 : see if this is a sys/statfs.h system
15820 set sys/statfs.h i_sysstatfs
15821 eval $inhdr
15822
15823
15824 echo " "
15825 echo "Checking to see if your system supports struct statfs..." >&4
15826 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
15827 eval $hasstruct
15828 case "$d_statfs_s" in
15829 "$define")      echo "Yes, it does."   ;;
15830 *)              echo "No, it doesn't." ;;
15831 esac
15832
15833
15834
15835 : see if struct statfs knows about f_flags
15836 case "$d_statfs_s" in
15837 define) 
15838         echo " "
15839         echo "Checking to see if your struct statfs has f_flags field..." >&4
15840         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
15841         eval $hasfield
15842         ;;
15843 *)      val="$undef"
15844         set d_statfs_f_flags
15845         eval $setvar
15846         ;;
15847 esac
15848 case "$d_statfs_f_flags" in
15849 "$define")      echo "Yes, it does."   ;;
15850 *)              echo "No, it doesn't." ;;
15851 esac
15852
15853 : see if _ptr and _cnt from stdio act std
15854 echo " "
15855
15856 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15857         echo "(Looks like you have stdio.h from BSD.)"
15858         case "$stdio_ptr" in
15859         '') stdio_ptr='((fp)->_p)'
15860                 ptr_lval=$define
15861                 ;;
15862         *)      ptr_lval=$d_stdio_ptr_lval;;
15863         esac
15864         case "$stdio_cnt" in
15865         '') stdio_cnt='((fp)->_r)'
15866                 cnt_lval=$define
15867                 ;;
15868         *)      cnt_lval=$d_stdio_cnt_lval;;
15869         esac
15870         case "$stdio_base" in
15871         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15872         esac
15873         case "$stdio_bufsiz" in
15874         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15875         esac
15876 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15877         echo "(Looks like you have stdio.h from Linux.)"
15878         case "$stdio_ptr" in
15879         '') stdio_ptr='((fp)->_IO_read_ptr)'
15880                 ptr_lval=$define
15881                 ;;
15882         *)      ptr_lval=$d_stdio_ptr_lval;;
15883         esac
15884         case "$stdio_cnt" in
15885         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15886                 cnt_lval=$undef
15887                 ;;
15888         *)      cnt_lval=$d_stdio_cnt_lval;;
15889         esac
15890         case "$stdio_base" in
15891         '') stdio_base='((fp)->_IO_read_base)';;
15892         esac
15893         case "$stdio_bufsiz" in
15894         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15895         esac
15896 else
15897         case "$stdio_ptr" in
15898         '') stdio_ptr='((fp)->_ptr)'
15899                 ptr_lval=$define
15900                 ;;
15901         *)      ptr_lval=$d_stdio_ptr_lval;;
15902         esac
15903         case "$stdio_cnt" in
15904         '') stdio_cnt='((fp)->_cnt)'
15905                 cnt_lval=$define
15906                 ;;
15907         *)      cnt_lval=$d_stdio_cnt_lval;;
15908         esac
15909         case "$stdio_base" in
15910         '') stdio_base='((fp)->_base)';;
15911         esac
15912         case "$stdio_bufsiz" in
15913         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15914         esac
15915 fi
15916
15917 : test whether _ptr and _cnt really work
15918 echo "Checking how std your stdio is..." >&4
15919 $cat >try.c <<EOP
15920 #include <stdio.h>
15921 #$i_stdlib I_STDLIB
15922 #ifdef I_STDLIB
15923 #include <stdlib.h>
15924 #endif
15925 #define FILE_ptr(fp)    $stdio_ptr
15926 #define FILE_cnt(fp)    $stdio_cnt
15927 int main() {
15928         FILE *fp = fopen("try.c", "r");
15929         char c = getc(fp);
15930         if (
15931                 18 <= FILE_cnt(fp) &&
15932                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15933         )
15934                 exit(0);
15935         exit(1);
15936 }
15937 EOP
15938 val="$undef"
15939 set try
15940 if eval $compile && $to try.c; then
15941         if $run ./try; then
15942                 echo "Your stdio acts pretty std."
15943                 val="$define"
15944         else
15945                 echo "Your stdio isn't very std."
15946         fi
15947 else
15948         echo "Your stdio doesn't appear very std."
15949 fi
15950 $rm -f try.c try
15951
15952 # glibc 2.2.90 and above apparently change stdio streams so Perl's
15953 # direct buffer manipulation no longer works.  The Configure tests
15954 # should be changed to correctly detect this, but until then,
15955 # the following check should at least let perl compile and run.
15956 # (This quick fix should be updated before 5.8.1.)
15957 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
15958 # A. Dougherty, June 3, 2002.
15959 case "$d_gnulibc" in
15960 $define)
15961         case "$gnulibc_version" in
15962         2.[01]*)  ;;
15963         2.2) ;;
15964         2.2.[0-9]) ;;
15965         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
15966                 val="$undef"
15967                 ;;
15968         esac
15969         ;;
15970 esac
15971 set d_stdstdio
15972 eval $setvar
15973
15974 : Can _ptr be used as an lvalue?
15975 case "$d_stdstdio$ptr_lval" in
15976 $define$define) val=$define ;;
15977 *) val=$undef ;;
15978 esac
15979 set d_stdio_ptr_lval
15980 eval $setvar
15981
15982 : Can _cnt be used as an lvalue?
15983 case "$d_stdstdio$cnt_lval" in
15984 $define$define) val=$define ;;
15985 *) val=$undef ;;
15986 esac
15987 set d_stdio_cnt_lval
15988 eval $setvar
15989
15990
15991 : test whether setting _ptr sets _cnt as a side effect
15992 d_stdio_ptr_lval_sets_cnt="$undef"
15993 d_stdio_ptr_lval_nochange_cnt="$undef"
15994 case "$d_stdio_ptr_lval$d_stdstdio" in
15995 $define$define)
15996         echo "Checking to see what happens if we set the stdio ptr..." >&4
15997 $cat >try.c <<EOP
15998 #include <stdio.h>
15999 /* Can we scream? */
16000 /* Eat dust sed :-) */
16001 /* In the buffer space, no one can hear you scream. */
16002 #$i_stdlib I_STDLIB
16003 #ifdef I_STDLIB
16004 #include <stdlib.h>
16005 #endif
16006 #define FILE_ptr(fp)    $stdio_ptr
16007 #define FILE_cnt(fp)    $stdio_cnt
16008 #include <sys/types.h>
16009 int main() {
16010         FILE *fp = fopen("try.c", "r");
16011         int c;
16012         char *ptr;
16013         size_t cnt;
16014         if (!fp) {
16015             puts("Fail even to read");
16016             exit(1);
16017         }
16018         c = getc(fp); /* Read away the first # */
16019         if (c == EOF) {
16020             puts("Fail even to read");
16021             exit(1);
16022         }
16023         if (!(
16024                 18 <= FILE_cnt(fp) &&
16025                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
16026         )) {
16027                 puts("Fail even to read");
16028                 exit (1);
16029         }
16030         ptr = (char*) FILE_ptr(fp);
16031         cnt = (size_t)FILE_cnt(fp);
16032
16033         FILE_ptr(fp) += 42;
16034
16035         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
16036                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
16037                 exit (1);
16038         }
16039         if (FILE_cnt(fp) <= 20) {
16040                 printf ("Fail (<20 chars to test)");
16041                 exit (1);
16042         }
16043         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
16044                 puts("Fail compare");
16045                 exit (1);
16046         }
16047         if (cnt == FILE_cnt(fp)) {
16048                 puts("Pass_unchanged");
16049                 exit (0);
16050         }       
16051         if (FILE_cnt(fp) == (cnt - 42)) {
16052                 puts("Pass_changed");
16053                 exit (0);
16054         }
16055         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
16056         return 1;
16057
16058 }
16059 EOP
16060         set try
16061         if eval $compile && $to try.c; then
16062                 case `$run ./try` in
16063                 Pass_changed)
16064                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
16065                         d_stdio_ptr_lval_sets_cnt="$define" ;;
16066                 Pass_unchanged)
16067                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
16068                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
16069                 Fail*)
16070                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
16071                 *)
16072                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
16073         esac
16074         else
16075                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
16076         fi
16077         $rm -f try.c try
16078         ;;
16079 esac
16080
16081 : see if _base is also standard
16082 val="$undef"
16083 case "$d_stdstdio" in
16084 $define)
16085         $cat >try.c <<EOP
16086 #include <stdio.h>
16087 #$i_stdlib I_STDLIB
16088 #ifdef I_STDLIB
16089 #include <stdlib.h>
16090 #endif
16091 #define FILE_base(fp)   $stdio_base
16092 #define FILE_bufsiz(fp) $stdio_bufsiz
16093 int main() {
16094         FILE *fp = fopen("try.c", "r");
16095         char c = getc(fp);
16096         if (
16097                 19 <= FILE_bufsiz(fp) &&
16098                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
16099         )
16100                 exit(0);
16101         exit(1);
16102 }
16103 EOP
16104         set try
16105         if eval $compile && $to try.c; then
16106                 if $run ./try; then
16107                         echo "And its _base field acts std."
16108                         val="$define"
16109                 else
16110                         echo "But its _base field isn't std."
16111                 fi
16112         else
16113                 echo "However, it seems to be lacking the _base field."
16114         fi
16115         $rm -f try.c try
16116         ;;
16117 esac
16118 set d_stdiobase
16119 eval $setvar
16120
16121 $cat >&4 <<EOM
16122 Checking how to access stdio streams by file descriptor number...
16123 EOM
16124 case "$stdio_stream_array" in
16125 '')     $cat >try.c <<EOCP
16126 #include <stdio.h>
16127 int main() {
16128   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16129     printf("yes\n");
16130 }
16131 EOCP
16132         for s in _iob __iob __sF
16133         do
16134                 set try -DSTDIO_STREAM_ARRAY=$s
16135                 if eval $compile; then
16136                         case "`$run ./try`" in
16137                         yes)    stdio_stream_array=$s; break ;;
16138                         esac
16139                 fi
16140         done
16141         $rm -f try.* try$exe_ext
16142 esac
16143 case "$stdio_stream_array" in
16144 '')     $cat >&4 <<EOM
16145 I can't figure out how to access stdio streams by file descriptor number.
16146 EOM
16147         d_stdio_stream_array="$undef"
16148         ;;
16149 *)      $cat >&4 <<EOM
16150 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16151 EOM
16152         d_stdio_stream_array="$define"
16153         ;;
16154 esac
16155
16156 : see if strcoll exists
16157 set strcoll d_strcoll
16158 eval $inlibc
16159
16160 : check for structure copying
16161 echo " "
16162 echo "Checking to see if your C compiler can copy structs..." >&4
16163 $cat >try.c <<'EOCP'
16164 int main()
16165 {
16166         struct blurfl {
16167                 int dyick;
16168         } foo, bar;
16169
16170         foo = bar;
16171 }
16172 EOCP
16173 if $cc -c try.c >/dev/null 2>&1 ; then
16174         val="$define"
16175         echo "Yup, it can."
16176 else
16177         val="$undef"
16178         echo "Nope, it can't."
16179 fi
16180 set d_strctcpy
16181 eval $setvar
16182 $rm -f try.*
16183
16184 : see if strerror and/or sys_errlist[] exist
16185 echo " "
16186 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16187     if set strerror val -f d_strerror; eval $csym; $val; then
16188                 echo 'strerror() found.' >&4
16189                 d_strerror="$define"
16190                 d_strerrm='strerror(e)'
16191                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16192                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16193                         d_syserrlst="$define"
16194                 else
16195                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16196                         d_syserrlst="$undef"
16197                 fi
16198     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16199                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16200                 echo 'strerror() found in string header.' >&4
16201                 d_strerror="$define"
16202                 d_strerrm='strerror(e)'
16203                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16204                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16205                                 d_syserrlst="$define"
16206                 else
16207                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16208                         d_syserrlst="$undef"
16209                 fi
16210     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16211                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16212                 d_strerror="$undef"
16213                 d_syserrlst="$define"
16214                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16215     else
16216                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16217                 d_strerror="$undef"
16218                 d_syserrlst="$undef"
16219                 d_strerrm='"unknown"'
16220     fi
16221 fi
16222
16223 : see if strerror_r exists
16224 set strerror_r d_strerror_r
16225 eval $inlibc
16226 case "$d_strerror_r" in
16227 "$define")
16228         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16229         case "$d_strerror_r_proto:$usethreads" in
16230         ":define")      d_strerror_r_proto=define
16231                 set d_strerror_r_proto strerror_r $hdrs
16232                 eval $hasproto ;;
16233         *)      ;;
16234         esac
16235         case "$d_strerror_r_proto" in
16236         define)
16237         case "$strerror_r_proto" in
16238         ''|0) try='int strerror_r(int, char*, size_t);'
16239         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16240         esac
16241         case "$strerror_r_proto" in
16242         ''|0) try='int strerror_r(int, char*, int);'
16243         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16244         esac
16245         case "$strerror_r_proto" in
16246         ''|0) try='char* strerror_r(int, char*, size_t);'
16247         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16248         esac
16249         case "$strerror_r_proto" in
16250         ''|0)   d_strerror_r=undef
16251                 strerror_r_proto=0
16252                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16253         * )     case "$strerror_r_proto" in
16254                 REENTRANT_PROTO*) ;;
16255                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16256                 esac
16257                 echo "Prototype: $try" ;;
16258         esac
16259         ;;
16260         *)      case "$usethreads" in
16261                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16262                 esac
16263                 d_strerror_r=undef
16264                 strerror_r_proto=0
16265                 ;;
16266         esac
16267         ;;
16268 *)      strerror_r_proto=0
16269         ;;
16270 esac
16271
16272 : see if strftime exists
16273 set strftime d_strftime
16274 eval $inlibc
16275
16276 : see if strtod exists
16277 set strtod d_strtod
16278 eval $inlibc
16279
16280 : see if strtol exists
16281 set strtol d_strtol
16282 eval $inlibc
16283
16284 : see if strtold exists
16285 set strtold d_strtold
16286 eval $inlibc
16287
16288 : see if strtoll exists
16289 set strtoll d_strtoll
16290 eval $inlibc
16291
16292 case "$d_longlong-$d_strtoll" in
16293 "$define-$define")
16294         $cat <<EOM
16295 Checking whether your strtoll() works okay...
16296 EOM
16297         $cat >try.c <<'EOCP'
16298 #include <errno.h>
16299 #ifdef __hpux
16300 #define strtoll __strtoll
16301 #endif
16302 #ifdef __EMX__
16303 #define strtoll _strtoll
16304 #endif
16305 #include <stdio.h>
16306 extern long long int strtoll(char *s, char **, int); 
16307 static int bad = 0;
16308 int check(char *s, long long ell, int een) {
16309         long long gll;
16310         errno = 0;
16311         gll = strtoll(s, 0, 10);
16312         if (!((gll == ell) && (errno == een)))
16313                 bad++;
16314 }
16315 int main() {
16316         check(" 1",                                      1LL, 0);
16317         check(" 0",                                      0LL, 0);
16318         check("-1",                                     -1LL, 0);
16319         check("-9223372036854775808", -9223372036854775808LL, 0);
16320         check("-9223372036854775808", -9223372036854775808LL, 0);
16321         check(" 9223372036854775807",  9223372036854775807LL, 0);
16322         check("-9223372036854775808", -9223372036854775808LL, 0);
16323         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16324         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16325         if (!bad)
16326                 printf("ok\n");
16327 }
16328 EOCP
16329         set try
16330         if eval $compile; then
16331                 yyy=`$run ./try`
16332                 case "$yyy" in
16333                 ok) echo "Your strtoll() seems to be working okay." ;;
16334                 *) cat <<EOM >&4
16335 Your strtoll() doesn't seem to be working okay.
16336 EOM
16337                    d_strtoll="$undef"
16338                    ;;
16339                 esac
16340         else
16341                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16342                 d_strtoll="$undef"
16343         fi
16344         ;;
16345 esac
16346
16347 : see if strtoq exists
16348 set strtoq d_strtoq
16349 eval $inlibc
16350
16351 : see if strtoul exists
16352 set strtoul d_strtoul
16353 eval $inlibc
16354
16355 case "$d_strtoul" in
16356 "$define")
16357         $cat <<EOM
16358 Checking whether your strtoul() works okay...
16359 EOM
16360         $cat >try.c <<'EOCP'
16361 #include <errno.h>
16362 #include <stdio.h>
16363 extern unsigned long int strtoul(char *s, char **, int); 
16364 static int bad = 0;
16365 void check(char *s, unsigned long eul, int een) {
16366         unsigned long gul;
16367         errno = 0;
16368         gul = strtoul(s, 0, 10);
16369         if (!((gul == eul) && (errno == een)))
16370                 bad++;
16371 }
16372 int main() {
16373         check(" 1", 1L, 0);
16374         check(" 0", 0L, 0);
16375 EOCP
16376         case "$longsize" in
16377         8)
16378             $cat >>try.c <<'EOCP'
16379         check("18446744073709551615", 18446744073709551615UL, 0);
16380         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16381 #if 0 /* strtoul() for /^-/ strings is undefined. */
16382         check("-1", 18446744073709551615UL, 0);
16383         check("-18446744073709551614", 2, 0);
16384         check("-18446744073709551615", 1, 0);
16385         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16386         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16387 #endif
16388 EOCP
16389                 ;;
16390         4)
16391                     $cat >>try.c <<'EOCP'
16392         check("4294967295", 4294967295UL, 0);
16393         check("4294967296", 4294967295UL, ERANGE);
16394 #if 0 /* strtoul() for /^-/ strings is undefined. */
16395         check("-1", 4294967295UL, 0);
16396         check("-4294967294", 2, 0);
16397         check("-4294967295", 1, 0);
16398         check("-4294967296", 4294967295UL, ERANGE);
16399         check("-4294967297", 4294967295UL, ERANGE);
16400 #endif
16401 EOCP
16402                 ;;
16403         *)
16404 : Should we write these tests to be more portable by sprintf-ing
16405 : ~0 and then manipulating that char string as input for strtol?
16406                 ;;
16407         esac
16408         $cat >>try.c <<'EOCP'
16409         if (!bad)
16410                 printf("ok\n");
16411         return 0;
16412 }
16413 EOCP
16414         set try
16415         if eval $compile; then
16416                 case "`$run ./try`" in
16417                 ok) echo "Your strtoul() seems to be working okay." ;;
16418                 *) cat <<EOM >&4
16419 Your strtoul() doesn't seem to be working okay.
16420 EOM
16421                    d_strtoul="$undef"
16422                    ;;
16423                 esac
16424         fi
16425         ;;
16426 esac
16427
16428 : see if strtoull exists
16429 set strtoull d_strtoull
16430 eval $inlibc
16431
16432 case "$d_longlong-$d_strtoull" in
16433 "$define-$define")
16434         $cat <<EOM
16435 Checking whether your strtoull() works okay...
16436 EOM
16437         $cat >try.c <<'EOCP'
16438 #include <errno.h>
16439 #ifdef __hpux
16440 #define strtoull __strtoull
16441 #endif
16442 #include <stdio.h>
16443 extern unsigned long long int strtoull(char *s, char **, int); 
16444 static int bad = 0;
16445 int check(char *s, long long eull, int een) {
16446         long long gull;
16447         errno = 0;
16448         gull = strtoull(s, 0, 10);
16449         if (!((gull == eull) && (errno == een)))
16450                 bad++;
16451 }
16452 int main() {
16453         check(" 1",                                        1LL, 0);
16454         check(" 0",                                        0LL, 0);
16455         check("18446744073709551615",  18446744073709551615ULL, 0);
16456         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16457 #if 0 /* strtoull() for /^-/ strings is undefined. */
16458         check("-1",                    18446744073709551615ULL, 0);
16459         check("-18446744073709551614",                     2LL, 0);
16460         check("-18446744073709551615",                     1LL, 0);
16461         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16462         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16463 #endif
16464         if (!bad)
16465                 printf("ok\n");
16466 }
16467 EOCP
16468         set try
16469         if eval $compile; then
16470                 case "`$run ./try`" in
16471                 ok) echo "Your strtoull() seems to be working okay." ;;
16472                 *) cat <<EOM >&4
16473 Your strtoull() doesn't seem to be working okay.
16474 EOM
16475                    d_strtoull="$undef"
16476                    ;;
16477                 esac
16478         fi
16479         ;;
16480 esac
16481
16482 : see if strtouq exists
16483 set strtouq d_strtouq
16484 eval $inlibc
16485
16486 case "$d_strtouq" in
16487 "$define")
16488         $cat <<EOM
16489 Checking whether your strtouq() works okay...
16490 EOM
16491         $cat >try.c <<'EOCP'
16492 #include <errno.h>
16493 #include <stdio.h>
16494 extern unsigned long long int strtouq(char *s, char **, int); 
16495 static int bad = 0;
16496 void check(char *s, unsigned long long eull, int een) {
16497         unsigned long long gull;
16498         errno = 0;
16499         gull = strtouq(s, 0, 10);
16500         if (!((gull == eull) && (errno == een)))
16501                 bad++;
16502 }
16503 int main() {
16504         check(" 1",                                        1LL, 0);
16505         check(" 0",                                        0LL, 0);
16506         check("18446744073709551615",  18446744073709551615ULL, 0);
16507         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16508 #if 0 /* strtouq() for /^-/ strings is undefined. */
16509         check("-1",                    18446744073709551615ULL, 0);
16510         check("-18446744073709551614",                     2LL, 0);
16511         check("-18446744073709551615",                     1LL, 0);
16512         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16513         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16514 #endif
16515         if (!bad)
16516                 printf("ok\n");
16517         return 0;
16518 }
16519 EOCP
16520         set try
16521         if eval $compile; then
16522                 case "`$run ./try`" in
16523                 ok) echo "Your strtouq() seems to be working okay." ;;
16524                 *) cat <<EOM >&4
16525 Your strtouq() doesn't seem to be working okay.
16526 EOM
16527                    d_strtouq="$undef"
16528                    ;;
16529                 esac
16530         fi
16531         ;;
16532 esac
16533
16534 : see if strxfrm exists
16535 set strxfrm d_strxfrm
16536 eval $inlibc
16537
16538 : see if symlink exists
16539 set symlink d_symlink
16540 eval $inlibc
16541
16542 : see if syscall exists
16543 set syscall d_syscall
16544 eval $inlibc
16545
16546 : see if prototype for syscall is available
16547 echo " "
16548 set d_syscallproto syscall $i_unistd unistd.h
16549 eval $hasproto
16550
16551 : see if sysconf exists
16552 set sysconf d_sysconf
16553 eval $inlibc
16554
16555 : see if system exists
16556 set system d_system
16557 eval $inlibc
16558
16559 : see if tcgetpgrp exists
16560 set tcgetpgrp d_tcgetpgrp
16561 eval $inlibc
16562
16563 : see if tcsetpgrp exists
16564 set tcsetpgrp d_tcsetpgrp
16565 eval $inlibc
16566
16567 : see if prototype for telldir is available
16568 echo " "
16569 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16570 eval $hasproto
16571
16572 : see if time exists
16573 echo " "
16574 if test "X$d_time" = X -o X"$timetype" = X; then
16575     if set time val -f d_time; eval $csym; $val; then
16576                 echo 'time() found.' >&4
16577                 val="$define"
16578                 rp="What is the type returned by time() on this system?"
16579                 set time_t timetype long stdio.h sys/types.h
16580                 eval $typedef_ask
16581     else
16582                 echo 'time() not found, hope that will do.' >&4
16583                 val="$undef"
16584                 timetype='int';
16585     fi
16586     set d_time
16587     eval $setvar
16588 fi
16589
16590 : see if this is a sys/times.h system
16591 set sys/times.h i_systimes
16592 eval $inhdr
16593
16594 : see if times exists
16595 echo " "
16596 if set times val -f d_times; eval $csym; $val; then
16597         echo 'times() found.' >&4
16598         d_times="$define"
16599         inc=''
16600         case "$i_systimes" in
16601         "$define") inc='sys/times.h';;
16602         esac
16603         rp="What is the type returned by times() on this system?"
16604         set clock_t clocktype long stdio.h sys/types.h $inc
16605         eval $typedef_ask
16606 else
16607         echo 'times() NOT found, hope that will do.' >&4
16608         d_times="$undef"
16609         clocktype='int'
16610 fi
16611
16612 : see if tmpnam_r exists
16613 set tmpnam_r d_tmpnam_r
16614 eval $inlibc
16615 case "$d_tmpnam_r" in
16616 "$define")
16617         hdrs="$i_systypes sys/types.h define stdio.h "
16618         case "$d_tmpnam_r_proto:$usethreads" in
16619         ":define")      d_tmpnam_r_proto=define
16620                 set d_tmpnam_r_proto tmpnam_r $hdrs
16621                 eval $hasproto ;;
16622         *)      ;;
16623         esac
16624         case "$d_tmpnam_r_proto" in
16625         define)
16626         case "$tmpnam_r_proto" in
16627         ''|0) try='char* tmpnam_r(char*);'
16628         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16629         esac
16630         case "$tmpnam_r_proto" in
16631         ''|0)   d_tmpnam_r=undef
16632                 tmpnam_r_proto=0
16633                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16634         * )     case "$tmpnam_r_proto" in
16635                 REENTRANT_PROTO*) ;;
16636                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16637                 esac
16638                 echo "Prototype: $try" ;;
16639         esac
16640         ;;
16641         *)      case "$usethreads" in
16642                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16643                 esac
16644                 d_tmpnam_r=undef
16645                 tmpnam_r_proto=0
16646                 ;;
16647         esac
16648         ;;
16649 *)      tmpnam_r_proto=0
16650         ;;
16651 esac
16652
16653 : see if truncate exists
16654 set truncate d_truncate
16655 eval $inlibc
16656
16657 : see if ttyname_r exists
16658 set ttyname_r d_ttyname_r
16659 eval $inlibc
16660 case "$d_ttyname_r" in
16661 "$define")
16662         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16663         case "$d_ttyname_r_proto:$usethreads" in
16664         ":define")      d_ttyname_r_proto=define
16665                 set d_ttyname_r_proto ttyname_r $hdrs
16666                 eval $hasproto ;;
16667         *)      ;;
16668         esac
16669         case "$d_ttyname_r_proto" in
16670         define)
16671         case "$ttyname_r_proto" in
16672         ''|0) try='int ttyname_r(int, char*, size_t);'
16673         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16674         esac
16675         case "$ttyname_r_proto" in
16676         ''|0) try='int ttyname_r(int, char*, int);'
16677         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16678         esac
16679         case "$ttyname_r_proto" in
16680         ''|0) try='char* ttyname_r(int, char*, int);'
16681         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16682         esac
16683         case "$ttyname_r_proto" in
16684         ''|0)   d_ttyname_r=undef
16685                 ttyname_r_proto=0
16686                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16687         * )     case "$ttyname_r_proto" in
16688                 REENTRANT_PROTO*) ;;
16689                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16690                 esac
16691                 echo "Prototype: $try" ;;
16692         esac
16693         ;;
16694         *)      case "$usethreads" in
16695                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16696                 esac
16697                 d_ttyname_r=undef
16698                 ttyname_r_proto=0
16699                 ;;
16700         esac
16701         ;;
16702 *)      ttyname_r_proto=0
16703         ;;
16704 esac
16705
16706 : see if tzname[] exists
16707 echo " "
16708 if set tzname val -a d_tzname; eval $csym; $val; then
16709         val="$define"
16710         echo 'tzname[] found.' >&4
16711 else
16712         val="$undef"
16713         echo 'tzname[] NOT found.' >&4
16714 fi
16715 set d_tzname
16716 eval $setvar
16717
16718 case "$osname" in
16719 next|rhapsody|darwin) multiarch="$define" ;;
16720 esac
16721 case "$multiarch" in
16722 ''|[nN]*) multiarch="$undef" ;;
16723 esac
16724
16725 : check for ordering of bytes in a UV
16726 echo " "
16727 case "$usecrosscompile$multiarch" in
16728 *$define*)
16729         $cat <<EOM
16730 You seem to be either cross-compiling or doing a multiarchitecture build,
16731 skipping the byteorder check.
16732
16733 EOM
16734         byteorder='ffff'
16735         ;;
16736 *)
16737         case "$byteorder" in
16738         '')
16739                 $cat <<'EOM'
16740 In the following, larger digits indicate more significance.  A big-endian
16741 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16742 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16743 machines may have weird orders like 3412.  A Cray will report 87654321,
16744 an Alpha will report 12345678. If the test program works the default is
16745 probably right.
16746 I'm now running the test program...
16747 EOM
16748                 $cat >try.c <<EOCP
16749 #include <stdio.h>
16750 #$i_stdlib I_STDLIB
16751 #ifdef I_STDLIB
16752 #include <stdlib.h>
16753 #endif
16754 #include <sys/types.h>
16755 typedef $uvtype UV;
16756 int main()
16757 {
16758         int i;
16759         union {
16760                 UV l;
16761                 char c[$uvsize];
16762         } u;
16763
16764         if ($uvsize > 4)
16765                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16766         else
16767                 u.l = (UV)0x04030201;
16768         for (i = 0; i < $uvsize; i++)
16769                 printf("%c", u.c[i]+'0');
16770         printf("\n");
16771         exit(0);
16772 }
16773 EOCP
16774                 xxx_prompt=y
16775                 set try
16776                 if eval $compile && ./try > /dev/null; then
16777                         dflt=`$run ./try`
16778                         case "$dflt" in
16779                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16780                                 echo "(The test program ran ok.)"
16781                                 echo "byteorder=$dflt"
16782                                 xxx_prompt=n
16783                         ;;
16784                         ????|????????) echo "(The test program ran ok.)" ;;
16785                         *) echo "(The test program didn't run right for some reason.)" ;;
16786                         esac
16787                 else
16788                         dflt='4321'
16789                         cat <<'EOM'
16790 (I can't seem to compile the test program.  Guessing big-endian...)
16791 EOM
16792                 fi
16793                 case "$xxx_prompt" in
16794                 y)
16795                         rp="What is the order of bytes in $uvtype?"
16796                         . ./myread
16797                         byteorder="$ans"
16798                         ;;
16799                 *)      byteorder=$dflt
16800                         ;;
16801                 esac
16802                 ;;
16803         esac
16804         $rm -f try.c try
16805         ;;
16806 esac
16807
16808
16809 $cat <<EOM
16810
16811 Checking to see whether you can access character data unalignedly...
16812 EOM
16813 case "$d_u32align" in
16814 '')   $cat >try.c <<EOCP
16815 #include <stdio.h>
16816 #$i_stdlib I_STDLIB
16817 #ifdef I_STDLIB
16818 #include <stdlib.h>
16819 #endif
16820 #define U32 $u32type
16821 #define BYTEORDER 0x$byteorder
16822 #define U8 $u8type
16823 #include <signal.h>
16824 #ifdef SIGBUS
16825 $signal_t bletch(s) int s; { exit(4); }
16826 #endif
16827 int main() {
16828 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16829     U8 buf[8];
16830     U32 *up;
16831     int i;
16832
16833     if (sizeof(U32) != 4) {
16834         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16835         exit(1);
16836     }
16837
16838     fflush(stdout);
16839
16840 #ifdef SIGBUS
16841     signal(SIGBUS, bletch);
16842 #endif
16843
16844     buf[0] = 0;
16845     buf[1] = 0;
16846     buf[2] = 0;
16847     buf[3] = 1;
16848     buf[5] = 0;
16849     buf[6] = 0;
16850     buf[7] = 0;
16851     buf[8] = 1;
16852
16853     for (i = 0; i < 4; i++) {
16854         up = (U32*)(buf + i);
16855         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16856                (*up == 1 << (8*(3-i)))  /* little-endian */
16857               )
16858            )
16859         {
16860             printf("read failed (%x)\n", *up);
16861             exit(2);
16862         }
16863     }
16864
16865     /* write test */
16866     for (i = 0; i < 4; i++) {
16867         up = (U32*)(buf + i);
16868         *up = 0xBeef;
16869         if (*up != 0xBeef) {
16870             printf("write failed (%x)\n", *up);
16871             exit(3);
16872         }
16873     }
16874
16875     exit(0);
16876 #else
16877     printf("1\n");
16878     exit(1);
16879 #endif
16880     return 0;
16881 }
16882 EOCP
16883 set try
16884 if eval $compile_ok; then
16885         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16886         $run ./try 2>&1 >/dev/null
16887         case "$?" in
16888         0)      cat >&4 <<EOM
16889 You can access character data pretty unalignedly.
16890 EOM
16891                 d_u32align="$undef"
16892                 ;;
16893         *)      cat >&4 <<EOM
16894 It seems that you must access character data in an aligned manner.
16895 EOM
16896                 d_u32align="$define"
16897                 ;;
16898         esac
16899 else
16900         rp='Can you access character data at unaligned addresses?'
16901         dflt='n'
16902         . ./myread
16903         case "$ans" in
16904         [yY]*)  d_u32align="$undef"  ;;
16905         *)      d_u32align="$define" ;;
16906         esac
16907 fi
16908 $rm -f core core.try.* try.core
16909 ;;
16910 esac
16911
16912 : see if ualarm exists
16913 set ualarm d_ualarm
16914 eval $inlibc
16915
16916 : see if umask exists
16917 set umask d_umask
16918 eval $inlibc
16919
16920 : see if unordered exists
16921 set unordered d_unordered
16922 eval $inlibc
16923
16924 : see if usleep exists
16925 set usleep d_usleep
16926 eval $inlibc
16927
16928 : see if prototype for usleep is available
16929 echo " "
16930 set d_usleepproto usleep $i_unistd unistd.h
16931 eval $hasproto
16932
16933 : see if ustat exists
16934 set ustat d_ustat
16935 eval $inlibc
16936
16937 : backward compatibility for d_hvfork
16938 if test X$d_hvfork != X; then
16939         d_vfork="$d_hvfork"
16940         d_hvfork=''
16941 fi
16942 : see if there is a vfork
16943 val=''
16944 set vfork val
16945 eval $inlibc
16946
16947 : Ok, but do we want to use it. vfork is reportedly unreliable in 
16948 : perl on Solaris 2.x, and probably elsewhere.
16949 case "$val" in
16950 $define)
16951         echo " "
16952         case "$usevfork" in
16953         false) dflt='n';;
16954         *) dflt='y';;
16955         esac
16956         cat <<'EOM'
16957  
16958 Perl can only use a vfork() that doesn't suffer from strict
16959 restrictions on calling functions or modifying global data in
16960 the child.  For example, glibc-2.1 contains such a vfork()
16961 that is unsuitable.  If your system provides a proper fork()
16962 call, chances are that you do NOT want perl to use vfork().
16963
16964 EOM
16965         rp="Do you still want to use vfork()?"
16966         . ./myread
16967         case "$ans" in
16968         y|Y) ;;
16969         *)
16970                 echo "Ok, we won't use vfork()."
16971                 val="$undef"
16972                 ;;
16973         esac
16974         ;;
16975 esac
16976 set d_vfork
16977 eval $setvar
16978 case "$d_vfork" in
16979 $define) usevfork='true';;
16980 *) usevfork='false';;
16981 esac
16982
16983 : see if closedir exists
16984 set closedir d_closedir
16985 eval $inlibc
16986
16987 case "$d_closedir" in
16988 "$define")
16989         echo " "
16990         echo "Checking whether closedir() returns a status..." >&4
16991         cat > try.c <<EOM
16992 #$i_dirent I_DIRENT             /**/
16993 #$i_sysdir I_SYS_DIR            /**/
16994 #$i_sysndir I_SYS_NDIR          /**/
16995 #$i_systypes I_SYS_TYPES        /**/
16996
16997 #if defined(I_SYS_TYPES)
16998 #include <sys/types.h>
16999 #endif
17000 #if defined(I_DIRENT)
17001 #include <dirent.h>
17002 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17003 #include <sys/dir.h>
17004 #endif
17005 #else
17006 #ifdef I_SYS_NDIR
17007 #include <sys/ndir.h>
17008 #else
17009 #ifdef I_SYS_DIR
17010 #ifdef hp9000s500
17011 #include <ndir.h>       /* may be wrong in the future */
17012 #else
17013 #include <sys/dir.h>
17014 #endif
17015 #endif
17016 #endif
17017 #endif 
17018 int main() { return closedir(opendir(".")); }
17019 EOM
17020         set try
17021         if eval $compile_ok; then
17022                 if $run ./try > /dev/null 2>&1 ; then
17023                         echo "Yes, it does."
17024                         val="$undef"
17025                 else
17026                         echo "No, it doesn't."
17027                         val="$define"
17028                 fi
17029         else
17030                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17031                 val="$define"
17032         fi
17033         ;;
17034 *)
17035         val="$undef";
17036         ;;
17037 esac
17038 set d_void_closedir
17039 eval $setvar
17040 $rm -f try try.*
17041 : see if there is a wait4
17042 set wait4 d_wait4
17043 eval $inlibc
17044
17045 : see if waitpid exists
17046 set waitpid d_waitpid
17047 eval $inlibc
17048
17049 : see if wcstombs exists
17050 set wcstombs d_wcstombs
17051 eval $inlibc
17052
17053 : see if wctomb exists
17054 set wctomb d_wctomb
17055 eval $inlibc
17056
17057 : see if writev exists
17058 set writev d_writev
17059 eval $inlibc
17060
17061 : preserve RCS keywords in files with variable substitution, grrr
17062 Date='$Date'
17063 Id='$Id'
17064 Log='$Log'
17065 RCSfile='$RCSfile'
17066 Revision='$Revision'
17067
17068 : check for alignment requirements
17069 echo " "
17070 case "$usecrosscompile$multiarch" in
17071 *$define*)
17072         $cat <<EOM
17073 You seem to be either cross-compiling or doing a multiarchitecture build,
17074 skipping the memory alignment check.
17075
17076 EOM
17077         case "$alignbytes" in
17078         '') alignbytes=8 ;;
17079         esac
17080         ;;
17081 *)
17082         case "$alignbytes" in
17083         '') echo "Checking alignment constraints..." >&4
17084                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17085                         $cat >try.c <<'EOCP'
17086 typedef long double NV;
17087 EOCP
17088                 else
17089                         $cat >try.c <<'EOCP'
17090 typedef double NV;
17091 EOCP
17092                 fi
17093                 $cat >>try.c <<'EOCP'
17094 #include <stdio.h>
17095 struct foobar {
17096         char foo;
17097         NV bar;
17098 } try_algn;
17099 int main()
17100 {
17101     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17102     return(0);
17103 }
17104 EOCP
17105                 set try
17106                 if eval $compile_ok; then
17107                         dflt=`$run ./try`
17108                 else
17109                         dflt='8'
17110                         echo "(I can't seem to compile the test program...)"
17111                 fi
17112                 ;;
17113         *) dflt="$alignbytes"
17114                 ;;
17115         esac
17116         rp="Doubles must be aligned on a how-many-byte boundary?"
17117         . ./myread
17118         alignbytes="$ans"
17119         $rm -f try.c try
17120         ;;
17121 esac
17122
17123
17124 : set the base revision
17125 baserev=5.0
17126
17127 : how do we catenate cpp tokens here?
17128 echo " "
17129 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
17130 $cat >cpp_stuff.c <<'EOCP'
17131 #define RCAT(a,b)a/**/b
17132 #define ACAT(a,b)a ## b
17133 RCAT(Rei,ser)
17134 ACAT(Cir,cus)
17135 EOCP
17136 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17137 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17138         echo "Oh!  Smells like ANSI's been here." >&4
17139         echo "We can catify or stringify, separately or together!"
17140         cpp_stuff=42
17141 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17142         echo "Ah, yes!  The good old days!" >&4
17143         echo "However, in the good old days we don't know how to stringify and"
17144         echo "catify at the same time."
17145         cpp_stuff=1
17146 else
17147         $cat >&4 <<EOM
17148 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
17149 to have to edit the values of CAT[2-5] in config.h...
17150 EOM
17151         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17152 fi
17153 $rm -f cpp_stuff.*
17154
17155 : see if this is a db.h system
17156 set db.h i_db
17157 eval $inhdr
17158
17159 case "$i_db" in
17160 $define)
17161         : Check db version.
17162         echo " "
17163         echo "Checking Berkeley DB version ..." >&4
17164         $cat >try.c <<EOCP
17165 #$d_const HASCONST
17166 #ifndef HASCONST
17167 #define const
17168 #endif
17169 #include <sys/types.h>
17170 #include <stdio.h>
17171 #$i_stdlib I_STDLIB
17172 #ifdef I_STDLIB
17173 #include <stdlib.h>
17174 #endif
17175 #include <db.h>
17176 int main(int argc, char *argv[])
17177 {
17178 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17179     int Major, Minor, Patch ;
17180     unsigned long Version ;
17181     (void)db_version(&Major, &Minor, &Patch) ;
17182     if (argc == 2) {
17183         printf("%d %d %d %d %d %d\n",
17184                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17185                Major, Minor, Patch);
17186         exit(0);
17187     }
17188     printf("You have Berkeley DB Version 2 or greater.\n");
17189
17190     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17191                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17192     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17193                 Major, Minor, Patch) ;
17194
17195     /* check that db.h & libdb are compatible */
17196     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17197         printf("db.h and libdb are incompatible.\n") ;
17198         exit(3);        
17199     }
17200
17201     printf("db.h and libdb are compatible.\n") ;
17202
17203     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17204                 + DB_VERSION_PATCH ;
17205
17206     /* needs to be >= 2.3.4 */
17207     if (Version < 2003004) {
17208     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17209         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17210         exit(2);        
17211     }
17212
17213     exit(0);
17214 #else
17215 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17216     if (argc == 2) {
17217         printf("1 0 0\n");
17218         exit(0);
17219     }
17220     printf("You have Berkeley DB Version 1.\n");
17221     exit(0);    /* DB version < 2: the coast is clear. */
17222 #else
17223     exit(1);    /* <db.h> not Berkeley DB? */
17224 #endif
17225 #endif
17226 }
17227 EOCP
17228         set try
17229         if eval $compile_ok && $run ./try; then
17230                 echo 'Looks OK.' >&4
17231                 set `$run ./try 1`
17232                 db_version_major=$1
17233                 db_version_minor=$2
17234                 db_version_patch=$3
17235         else
17236                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17237                 i_db=$undef
17238                 case " $libs " in
17239                 *"-ldb "*)
17240                         : Remove db from list of libraries to use
17241                         echo "Removing unusable -ldb from library list" >&4
17242                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17243                         shift
17244                         libs="$*"
17245                         echo "libs = $libs" >&4
17246                         ;;
17247                 esac
17248         fi
17249         $rm -f try.*
17250         ;;
17251 esac
17252
17253 case "$i_db" in
17254 define)
17255         : Check the return type needed for hash 
17256         echo " "
17257         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17258         $cat >try.c <<EOCP
17259 #$d_const HASCONST
17260 #ifndef HASCONST
17261 #define const
17262 #endif
17263 #include <sys/types.h>
17264 #include <db.h>
17265
17266 #ifndef DB_VERSION_MAJOR
17267 u_int32_t hash_cb (ptr, size)
17268 const void *ptr;
17269 size_t size;
17270 {
17271 }
17272 HASHINFO info;
17273 int main()
17274 {
17275         info.hash = hash_cb;
17276 }
17277 #endif
17278 EOCP
17279         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17280                 if $contains warning try.out >>/dev/null 2>&1 ; then
17281                         db_hashtype='int'
17282                 else
17283                         db_hashtype='u_int32_t'
17284                 fi
17285         else
17286                 : XXX Maybe we should just give up here.
17287                 db_hashtype=u_int32_t
17288                 $cat try.out >&4
17289                 echo "Help:  I can't seem to compile the db test program." >&4
17290                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17291         fi
17292         $rm -f try.*
17293         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17294         ;;
17295 *)      db_hashtype=u_int32_t
17296         ;;
17297 esac
17298 case "$i_db" in
17299 define)
17300         : Check the return type needed for prefix 
17301         echo " "
17302         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17303         cat >try.c <<EOCP
17304 #$d_const HASCONST
17305 #ifndef HASCONST
17306 #define const
17307 #endif
17308 #include <sys/types.h>
17309 #include <db.h>
17310
17311 #ifndef DB_VERSION_MAJOR
17312 size_t prefix_cb (key1, key2)
17313 const DBT *key1;
17314 const DBT *key2;
17315 {
17316 }
17317 BTREEINFO info;
17318 int main()
17319 {
17320         info.prefix = prefix_cb;
17321 }
17322 #endif
17323 EOCP
17324         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17325                 if $contains warning try.out >>/dev/null 2>&1 ; then
17326                         db_prefixtype='int'
17327                 else
17328                         db_prefixtype='size_t'
17329                 fi
17330         else
17331                 db_prefixtype='size_t'
17332                 : XXX Maybe we should just give up here.
17333                 $cat try.out >&4
17334                 echo "Help:  I can't seem to compile the db test program." >&4
17335                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17336         fi
17337         $rm -f try.*
17338         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17339         ;;
17340 *)      db_prefixtype='size_t'
17341         ;;
17342 esac
17343
17344
17345 : How can we generate normalized random numbers ?
17346 echo " "
17347 echo "Looking for a random number function..." >&4
17348 case "$randfunc" in
17349 '')
17350         if set drand48 val -f; eval $csym; $val; then
17351                 dflt="drand48"
17352                 echo "Good, found drand48()." >&4
17353         elif set random val -f; eval $csym; $val; then
17354                 dflt="random"
17355                 echo "OK, found random()." >&4
17356         else
17357                 dflt="rand"
17358                 echo "Yick, looks like I have to use rand()." >&4
17359         fi
17360         echo " "
17361         ;;
17362 *)
17363         dflt="$randfunc"
17364         ;;
17365 esac
17366 cont=true
17367
17368 case "$ccflags" in
17369 *-Dmy_rand=*|*-Dmy_srand=*)
17370         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17371         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17372         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17373         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17374         ;;
17375 esac
17376
17377 while $test "$cont"; do
17378         rp="Use which function to generate random numbers?"
17379         . ./myread
17380         if $test "$ans" = "$dflt"; then
17381                 : null
17382         else
17383                 randbits=''
17384         fi
17385         randfunc="$ans"
17386         if set $ans val -f; eval $csym; $val; then
17387                 cont=''
17388         else
17389                 dflt=y
17390                 rp="I cannot find function $ans. Use that name anyway?"
17391                 . ./myread
17392                 dflt=rand
17393                 case "$ans" in
17394                         [yY]*) cont='';;
17395                 esac
17396         fi
17397         case "$cont" in
17398         '')
17399                 case "$randfunc" in
17400                 drand48)
17401                         drand01="drand48()"
17402                         seedfunc="srand48"
17403                         randbits=48
17404                         randseedtype=long
17405                         ;;
17406                 rand|random)
17407                         case "$randbits" in
17408                         '')
17409 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17410                                 $cat >try.c <<EOCP
17411 #$i_unistd I_UNISTD
17412 #$i_stdlib I_STDLIB
17413 #include <stdio.h>
17414 #ifdef I_UNISTD
17415 #  include <unistd.h>
17416 #endif
17417 #ifdef I_STDLIB
17418 #  include <stdlib.h>
17419 #endif
17420 int main()
17421 {
17422         register int i;
17423         register unsigned long tmp;
17424         register unsigned long max = 0L;
17425
17426         for (i = 1000; i; i--) {
17427                 tmp = (unsigned long) $randfunc();
17428                 if (tmp > max) max = tmp;
17429         }
17430         for (i = 0; max; i++)
17431                 max /= 2;
17432         printf("%d\n",i);
17433 }
17434 EOCP
17435                                 set try
17436                                 if eval $compile_ok; then
17437                                         dflt=`try`
17438                                 else
17439                                         dflt='?'
17440                                         echo "(I can't seem to compile the test program...)"
17441                                 fi
17442                                 ;;
17443                         *)
17444                                 dflt="$randbits"
17445                                 ;;
17446                         esac
17447                         rp="How many bits does your $randfunc() function produce?"
17448                         . ./myread
17449                         randbits="$ans"
17450                         $rm -f try.c try
17451                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17452                         seedfunc="s$randfunc"
17453                         randseedtype=unsigned
17454                         ;;
17455                 *)
17456                         dflt="31"
17457                         rp="How many bits does your $randfunc() function produce?"
17458                         . ./myread
17459                         randbits="$ans"
17460                         seedfunc="s$randfunc"
17461                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17462                         if set $seedfunc val -f; eval $csym; $val; then
17463                                 echo "(Using $seedfunc() to seed random generator)"
17464                         else
17465                                 echo "(Warning: no $seedfunc() to seed random generator)"
17466                                 seedfunc=rand
17467                         fi
17468                         randseedtype=unsigned
17469                         ;;
17470                 esac
17471                 ;;
17472         esac
17473 done
17474
17475 echo " "
17476 echo "Determining whether or not we are on an EBCDIC system..." >&4
17477 $cat >try.c <<'EOM'
17478 int main()
17479 {
17480   if ('M'==0xd4) return 0;
17481   return 1;
17482 }
17483 EOM
17484
17485 val=$undef
17486 set try
17487 if eval $compile_ok; then
17488         if $run ./try; then
17489                 echo "You seem to speak EBCDIC." >&4
17490                 val="$define"
17491         else
17492                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17493         fi
17494 else
17495         echo "I'm unable to compile the test program." >&4
17496         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17497 fi
17498 $rm -f try try.*
17499 set ebcdic
17500 eval $setvar
17501
17502 echo " "
17503 $cat >&4 <<EOM
17504 Checking how to flush all pending stdio output...
17505 EOM
17506 # I only know how to find the first 32 possibly open files on SunOS.
17507 # See also hints/sunos_4_1.sh and util.c  --AD
17508 case "$osname" in
17509 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17510 esac
17511 $cat >>try.c <<EOCP
17512 #include <stdio.h>
17513 #$i_stdlib I_STDLIB
17514 #ifdef I_STDLIB
17515 #include <stdlib.h>
17516 #endif
17517 #$i_unistd I_UNISTD
17518 #ifdef I_UNISTD
17519 # include <unistd.h>
17520 #endif
17521 #$d_sysconf HAS_SYSCONF
17522 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17523 #ifdef HAS_STDIO_STREAM_ARRAY
17524 # define STDIO_STREAM_ARRAY $stdio_stream_array
17525 #endif
17526 int main() {
17527   FILE* p;
17528   unlink("try.out");
17529   p = fopen("try.out", "w");
17530 #ifdef TRY_FPUTC
17531   fputc('x', p);
17532 #else
17533 # ifdef TRY_FPRINTF
17534   fprintf(p, "x");
17535 # endif
17536 #endif
17537 #ifdef TRY_FFLUSH_NULL
17538   fflush(NULL);
17539 #endif
17540 #ifdef TRY_FFLUSH_ALL
17541   {
17542     long open_max = -1;
17543 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17544     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17545 # else
17546 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17547     open_max = sysconf(_SC_OPEN_MAX);
17548 #  else
17549 #   ifdef FOPEN_MAX
17550     open_max = FOPEN_MAX;
17551 #   else
17552 #    ifdef OPEN_MAX
17553     open_max = OPEN_MAX;
17554 #    else
17555 #     ifdef _NFILE
17556     open_max = _NFILE;
17557 #     endif
17558 #    endif
17559 #   endif
17560 #  endif
17561 # endif 
17562 # ifdef HAS_STDIO_STREAM_ARRAY
17563     if (open_max > 0) {
17564       long i;
17565       for (i = 0; i < open_max; i++)
17566             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17567                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17568                 STDIO_STREAM_ARRAY[i]._flag)
17569                 fflush(&STDIO_STREAM_ARRAY[i]);
17570     }   
17571   }
17572 # endif
17573 #endif
17574   _exit(42);
17575 }
17576 EOCP
17577 : first we have to find out how _not_ to flush
17578 $to try.c
17579 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17580     output=''
17581     set try -DTRY_FPUTC
17582     if eval $compile; then
17583             $run ./try 2>/dev/null
17584             code="$?"
17585             $from try.out
17586             if $test ! -s try.out -a "X$code" = X42; then
17587                 output=-DTRY_FPUTC
17588             fi
17589     fi
17590     case "$output" in
17591     '')
17592             set try -DTRY_FPRINTF
17593             if eval $compile; then
17594                     $run ./try 2>/dev/null
17595                     code="$?"
17596                     $from try.out
17597                     if $test ! -s try.out -a "X$code" = X42; then
17598                         output=-DTRY_FPRINTF
17599                     fi
17600             fi
17601         ;;
17602     esac
17603 fi
17604 : check for fflush NULL behaviour
17605 case "$fflushNULL" in
17606 '')     set try -DTRY_FFLUSH_NULL $output
17607         if eval $compile; then
17608                 $run ./try 2>/dev/null
17609                 code="$?"
17610                 $from try.out
17611                 if $test -s try.out -a "X$code" = X42; then
17612                         fflushNULL="`$cat try.out`"
17613                 else
17614                         if $test "X$code" != X42; then
17615                                 $cat >&4 <<EOM
17616 (If this test failed, don't worry, we'll try another method shortly.)
17617 EOM
17618                         fi
17619                 fi
17620         fi
17621         $rm -f core try.core core.try.*
17622         case "$fflushNULL" in
17623         x)      $cat >&4 <<EOM
17624 Your fflush(NULL) works okay for output streams.
17625 Let's see if it clobbers input pipes...
17626 EOM
17627 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17628 # bug that improperly flushes the input end of pipes.  So we avoid the
17629 # autoflush on fork/system/exec support for now. :-(
17630 $cat >tryp.c <<EOCP
17631 #include <stdio.h>
17632 int
17633 main(int argc, char **argv)
17634 {
17635     char buf[1024];
17636     int i;
17637     char *bp = buf;
17638     while (1) {
17639         while ((i = getc(stdin)) != -1
17640                && (*bp++ = i) != '\n'
17641                && bp < &buf[1024])
17642         /* DO NOTHING */ ;
17643         *bp = '\0';
17644         fprintf(stdout, "%s", buf);
17645         fflush(NULL);
17646         if (i == -1)
17647             return 0;
17648         bp = buf;
17649     }
17650 }
17651 EOCP
17652                 fflushNULL="$define"
17653                 set tryp
17654                 if eval $compile; then
17655                     $rm -f tryp.out
17656                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17657                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17658                        $cat >&4 <<EOM
17659 fflush(NULL) seems to behave okay with input streams.
17660 EOM
17661                         fflushNULL="$define"
17662                     else
17663                         $cat >&4 <<EOM
17664 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17665 EOM
17666                         fflushNULL="$undef"
17667                     fi
17668                 fi
17669                 $rm -f core tryp.c tryp.core core.tryp.*
17670                 ;;
17671         '')     $cat >&4 <<EOM
17672 Your fflush(NULL) isn't working (contrary to ANSI C).
17673 EOM
17674                 fflushNULL="$undef"
17675                 ;;
17676         *)      $cat >&4 <<EOM
17677 Cannot figure out whether your fflush(NULL) works or not.
17678 I'm assuming it doesn't (contrary to ANSI C).
17679 EOM
17680                 fflushNULL="$undef"
17681                 ;;
17682         esac
17683         ;;
17684 $define|true|[yY]*)
17685         fflushNULL="$define"
17686         ;;
17687 *)
17688         fflushNULL="$undef"
17689         ;;
17690 esac
17691 : check explicit looping only if NULL did not work, and if the pipe
17692 : bug does not show up on an explicit flush too
17693 case "$fflushNULL" in
17694 "$undef")
17695         $cat >tryp.c <<EOCP
17696 #include <stdio.h>
17697 int
17698 main(int argc, char **argv)
17699 {
17700     char buf[1024];
17701     int i;
17702     char *bp = buf;
17703     while (1) {
17704         while ((i = getc(stdin)) != -1
17705                && (*bp++ = i) != '\n'
17706                && bp < &buf[1024])
17707         /* DO NOTHING */ ;
17708         *bp = '\0';
17709         fprintf(stdout, "%s", buf);
17710         fflush(stdin);
17711         if (i == -1)
17712             return 0;
17713         bp = buf;
17714     }
17715 }
17716 EOCP
17717         set tryp
17718         if eval $compile; then
17719             $rm -f tryp.out
17720             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17721             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17722                $cat >&4 <<EOM
17723 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17724 EOM
17725                 : now check for fflushall behaviour
17726                 case "$fflushall" in
17727                 '')     set try -DTRY_FFLUSH_ALL $output
17728                         if eval $compile; then
17729                                 $cat >&4 <<EOM
17730 (Now testing the other method--but note that this also may fail.)
17731 EOM
17732                                 $run ./try 2>/dev/null
17733                                 code=$?
17734                                 $from try.out
17735                                 if $test -s try.out -a "X$code" = X42; then
17736                                         fflushall="`$cat try.out`"
17737                                 fi
17738                         fi
17739                         $rm -f core try.core core.try.*
17740                         case "$fflushall" in
17741                         x)      $cat >&4 <<EOM
17742 Whew. Flushing explicitly all the stdio streams works.
17743 EOM
17744                                 fflushall="$define"
17745                                 ;;
17746                         '')     $cat >&4 <<EOM
17747 Sigh. Flushing explicitly all the stdio streams doesn't work.
17748 EOM
17749                                 fflushall="$undef"
17750                                 ;;
17751                         *)      $cat >&4 <<EOM
17752 Cannot figure out whether flushing stdio streams explicitly works or not.
17753 I'm assuming it doesn't.
17754 EOM
17755                                 fflushall="$undef"
17756                                 ;;
17757                         esac
17758                         ;;
17759                 "$define"|true|[yY]*)
17760                         fflushall="$define"
17761                         ;;
17762                 *)
17763                         fflushall="$undef"
17764                         ;;
17765                 esac
17766             else
17767                 $cat >&4 <<EOM
17768 All is futile.  Even fflush(stdin) clobbers input pipes!
17769 EOM
17770                 fflushall="$undef"
17771             fi
17772         else
17773             fflushall="$undef"
17774         fi
17775         $rm -f core tryp.c tryp.core core.tryp.*
17776         ;;
17777 *)      fflushall="$undef"
17778         ;;
17779 esac
17780
17781 case "$fflushNULL$fflushall" in
17782 undefundef)
17783         $cat <<EOM
17784 OK, I give up.  I cannot figure out how to flush pending stdio output.
17785 We won't be flushing handles at all before fork/exec/popen.
17786 EOM
17787         ;;
17788 esac
17789 $rm -f try.* try$exe_ext
17790
17791 : Store the full pathname to the ar program for use in the C program
17792 : Respect a hint or command line value for full_ar.
17793 case "$full_ar" in
17794 '') full_ar=$ar ;;
17795 esac
17796
17797 : Store the full pathname to the sed program for use in the C program
17798 full_sed=$sed
17799
17800 : see what type gids are declared as in the kernel
17801 echo " "
17802 echo "Looking for the type for group ids returned by getgid()."
17803 set gid_t gidtype xxx stdio.h sys/types.h
17804 eval $typedef
17805 case "$gidtype" in
17806 xxx)
17807         xxx=`./findhdr sys/user.h`
17808         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17809         case $1 in
17810         unsigned) dflt="$1 $2" ;;
17811         *) dflt="$1" ;;
17812         esac
17813         ;;
17814 *) dflt="$gidtype";;
17815 esac
17816 case "$gidtype" in
17817 gid_t) echo "gid_t found." ;;
17818 *)      rp="What is the type for group ids returned by getgid()?"
17819         . ./myread
17820         gidtype="$ans"
17821         ;;
17822 esac
17823
17824 echo " "
17825 case "$gidtype" in
17826 *_t) zzz="$gidtype"     ;;
17827 *)   zzz="gid"          ;;
17828 esac
17829 echo "Checking the size of $zzz..." >&4 
17830 cat > try.c <<EOCP
17831 #include <sys/types.h>
17832 #include <stdio.h>
17833 #$i_stdlib I_STDLIB
17834 #ifdef I_STDLIB
17835 #include <stdlib.h>
17836 #endif
17837 int main() {
17838     printf("%d\n", (int)sizeof($gidtype));
17839     exit(0);
17840 }
17841 EOCP
17842 set try
17843 if eval $compile_ok; then
17844         yyy=`$run ./try`
17845         case "$yyy" in
17846         '')     gidsize=4
17847                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17848                 ;;
17849         *)      gidsize=$yyy
17850                 echo "Your $zzz is $gidsize bytes long."
17851                 ;;
17852         esac
17853 else
17854         gidsize=4
17855         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17856 fi
17857
17858
17859 echo " "
17860 case "$gidtype" in
17861 *_t) zzz="$gidtype"     ;;
17862 *)   zzz="gid"          ;;
17863 esac
17864 echo "Checking the sign of $zzz..." >&4 
17865 cat > try.c <<EOCP
17866 #include <sys/types.h>
17867 #include <stdio.h>
17868 int main() {
17869         $gidtype foo = -1;
17870         if (foo < 0)
17871                 printf("-1\n");
17872         else
17873                 printf("1\n");
17874 }
17875 EOCP
17876 set try
17877 if eval $compile; then
17878         yyy=`$run ./try`
17879         case "$yyy" in
17880         '')     gidsign=1
17881                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17882                 ;;
17883         *)      gidsign=$yyy
17884                 case "$gidsign" in
17885                  1) echo "Your $zzz is unsigned." ;;
17886                 -1) echo "Your $zzz is signed."   ;;
17887                 esac
17888                 ;;
17889         esac
17890 else
17891         gidsign=1
17892         echo "(I can't compile the test program--guessing unsigned.)" >&4
17893 fi
17894
17895
17896 echo " "
17897
17898 if $test X"$quadtype" != X; then
17899
17900 echo "Checking how to print 64-bit integers..." >&4
17901
17902 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17903         $cat >try.c <<'EOCP'
17904 #include <sys/types.h>
17905 #include <stdio.h>
17906 int main() {
17907   int q = 12345678901;
17908   printf("%ld\n", q);
17909 }
17910 EOCP
17911         set try
17912         if eval $compile; then
17913                 yyy=`$run ./try`
17914                 case "$yyy" in
17915                 12345678901)
17916                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17917                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17918                         echo "We will use %d."
17919                         ;;
17920                 esac
17921         fi
17922 fi
17923
17924 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17925         $cat >try.c <<'EOCP'
17926 #include <sys/types.h>
17927 #include <stdio.h>
17928 int main() {
17929   long q = 12345678901;
17930   printf("%ld\n", q);
17931 }
17932 EOCP
17933         set try
17934         if eval $compile; then
17935                 yyy=`$run ./try`
17936                 case "$yyy" in
17937                 12345678901)
17938                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17939                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17940                         echo "We will use %ld."
17941                         ;;
17942                 esac
17943         fi
17944 fi
17945
17946 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17947         $cat >try.c <<'EOCP'
17948 #include <sys/types.h>
17949 #include <inttypes.h>
17950 #include <stdio.h>
17951 int main() {
17952   int64_t q = 12345678901;
17953   printf("%" PRId64 "\n", q);
17954 }
17955 EOCP
17956         set try
17957         if eval $compile; then
17958                 yyy=`$run ./try`
17959                 case "$yyy" in
17960                 12345678901)
17961                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17962                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17963                         echo "We will use the C9X style."
17964                         ;;
17965                 esac
17966         fi
17967 fi
17968
17969 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17970         $cat >try.c <<EOCP
17971 #include <sys/types.h>
17972 #include <stdio.h>
17973 int main() {
17974   $quadtype q = 12345678901;
17975   printf("%Ld\n", q);
17976 }
17977 EOCP
17978         set try
17979         if eval $compile; then
17980                 yyy=`$run ./try`
17981                 case "$yyy" in
17982                 12345678901)
17983                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
17984                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
17985                         echo "We will use %Ld."
17986                         ;;
17987                 esac
17988         fi
17989 fi
17990
17991 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
17992         $cat >try.c <<'EOCP'
17993 #include <sys/types.h>
17994 #include <stdio.h>
17995 int main() {
17996   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
17997   printf("%lld\n", q);
17998 }
17999 EOCP
18000         set try
18001         if eval $compile; then
18002                 yyy=`$run ./try`
18003                 case "$yyy" in
18004                 12345678901)
18005                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18006                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18007                         echo "We will use the %lld style."
18008                         ;;
18009                 esac
18010         fi
18011 fi
18012
18013 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18014         $cat >try.c <<EOCP
18015 #include <sys/types.h>
18016 #include <stdio.h>
18017 int main() {
18018   $quadtype q = 12345678901;
18019   printf("%qd\n", q);
18020 }
18021 EOCP
18022         set try
18023         if eval $compile; then
18024                 yyy=`$run ./try`
18025                 case "$yyy" in
18026                 12345678901)
18027                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18028                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18029                         echo "We will use %qd."
18030                         ;;
18031                 esac
18032         fi
18033 fi
18034
18035 if $test X"$sPRId64" = X; then
18036         echo "Cannot figure out how to print 64-bit integers." >&4
18037 fi
18038
18039 $rm -f try try.*
18040
18041 fi
18042
18043 case "$sPRId64" in
18044 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18045         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18046         ;;
18047 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18048         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18049         ;;
18050 esac
18051
18052
18053 echo " "
18054 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18055
18056 if $test X"$ivsize" = X8; then
18057         ivdformat="$sPRId64"
18058         uvuformat="$sPRIu64"
18059         uvoformat="$sPRIo64"
18060         uvxformat="$sPRIx64"
18061         uvXUformat="$sPRIXU64"
18062 else
18063         if $test X"$ivsize" = X"$longsize"; then
18064                 ivdformat='"ld"'
18065                 uvuformat='"lu"'
18066                 uvoformat='"lo"'
18067                 uvxformat='"lx"'
18068                 uvXUformat='"lX"'
18069         else
18070                 if $test X"$ivsize" = X"$intsize"; then
18071                         ivdformat='"d"'
18072                         uvuformat='"u"'
18073                         uvoformat='"o"'
18074                         uvxformat='"x"'
18075                         uvXUformat='"X"'
18076                 else
18077                         : far out
18078                         if $test X"$ivsize" = X"$shortsize"; then
18079                                 ivdformat='"hd"'
18080                                 uvuformat='"hu"'
18081                                 uvoformat='"ho"'
18082                                 uvxformat='"hx"'
18083                                 uvXUformat='"hX"'
18084                         fi
18085                 fi
18086         fi
18087 fi
18088
18089 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18090         nveformat="$sPRIeldbl"
18091         nvfformat="$sPRIfldbl"
18092         nvgformat="$sPRIgldbl"
18093         nvEUformat="$sPRIEUldbl"
18094         nvFUformat="$sPRIFUldbl"
18095         nvGUformat="$sPRIGUldbl"
18096 else
18097         nveformat='"e"'
18098         nvfformat='"f"'
18099         nvgformat='"g"'
18100         nvEUformat='"E"'
18101         nvFUformat='"F"'
18102         nvGUformat='"G"'
18103 fi
18104
18105 case "$ivdformat" in
18106 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18107     exit 1
18108     ;;
18109 esac
18110
18111
18112 echo " "
18113 $echo "Checking the format string to be used for gids..." >&4
18114
18115 case "$gidsign" in
18116 -1)     if $test X"$gidsize" = X"$ivsize"; then
18117                 gidformat="$ivdformat"
18118         else
18119                 if $test X"$gidsize" = X"$longsize"; then
18120                         gidformat='"ld"'
18121                 else
18122                         if $test X"$gidsize" = X"$intsize"; then
18123                                 gidformat='"d"'
18124                         else
18125                                 if $test X"$gidsize" = X"$shortsize"; then
18126                                         gidformat='"hd"'
18127                                 fi
18128                         fi
18129                 fi
18130         fi
18131         ;;
18132 *)      if $test X"$gidsize" = X"$uvsize"; then
18133                 gidformat="$uvuformat"
18134         else
18135                 if $test X"$gidsize" = X"$longsize"; then
18136                         gidformat='"lu"'
18137                 else
18138                         if $test X"$gidsize" = X"$intsize"; then
18139                                 gidformat='"u"'
18140                         else
18141                                 if $test X"$gidsize" = X"$shortsize"; then
18142                                         gidformat='"hu"'
18143                                 fi
18144                         fi
18145                 fi
18146         fi
18147         ;;
18148 esac
18149
18150 : see if getgroups exists
18151 set getgroups d_getgrps
18152 eval $inlibc
18153
18154 : see if setgroups exists
18155 set setgroups d_setgrps
18156 eval $inlibc
18157
18158
18159 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18160 echo " "
18161 case "$d_getgrps$d_setgrps" in
18162 *define*)
18163         case "$groupstype" in
18164         '') dflt="$gidtype" ;;
18165         *)  dflt="$groupstype" ;;
18166         esac
18167         $cat <<EOM
18168 What type of pointer is the second argument to getgroups() and setgroups()?
18169 Usually this is the same as group ids, $gidtype, but not always.
18170
18171 EOM
18172         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18173         . ./myread
18174         groupstype="$ans"
18175         ;;
18176 *)  groupstype="$gidtype";;
18177 esac
18178
18179 echo " "
18180 echo "Checking if your $make program sets \$(MAKE)..." >&4
18181 case "$make_set_make" in
18182 '')
18183         $sed 's/^X //' > testmake.mak << 'EOF'
18184 Xall:
18185 X       @echo 'maketemp="$(MAKE)"'
18186 EOF
18187         case "`$make -f testmake.mak 2>/dev/null`" in
18188         *maketemp=*) make_set_make='#' ;;
18189         *)      make_set_make="MAKE=$make" ;;
18190         esac
18191         $rm -f testmake.mak
18192         ;;
18193 esac
18194 case "$make_set_make" in
18195 '#') echo "Yup, it does.";;
18196 *) echo "Nope, it doesn't.";;
18197 esac
18198
18199 : see what type is used for mode_t
18200 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18201 set mode_t modetype int stdio.h sys/types.h
18202 eval $typedef_ask
18203
18204 : see if stdarg is available
18205 echo " "
18206 if $test `./findhdr stdarg.h`; then
18207         echo "<stdarg.h> found." >&4
18208         valstd="$define"
18209 else
18210         echo "<stdarg.h> NOT found." >&4
18211         valstd="$undef"
18212 fi
18213
18214 : see if varags is available
18215 echo " "
18216 if $test `./findhdr varargs.h`; then
18217         echo "<varargs.h> found." >&4
18218 else
18219         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18220 fi
18221
18222 : set up the varargs testing programs
18223 $cat > varargs.c <<EOP
18224 #ifdef I_STDARG
18225 #include <stdarg.h>
18226 #endif
18227 #ifdef I_VARARGS
18228 #include <varargs.h>
18229 #endif
18230
18231 #ifdef I_STDARG
18232 int f(char *p, ...)
18233 #else
18234 int f(va_alist)
18235 va_dcl
18236 #endif
18237 {
18238         va_list ap;
18239 #ifndef I_STDARG
18240         char *p;
18241 #endif
18242 #ifdef I_STDARG
18243         va_start(ap,p);
18244 #else
18245         va_start(ap);
18246         p = va_arg(ap, char *);
18247 #endif
18248         va_end(ap);
18249 }
18250 EOP
18251 $cat > varargs <<EOP
18252 $startsh
18253 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18254         echo "true"
18255 else
18256         echo "false"
18257 fi
18258 $rm -f varargs$_o
18259 EOP
18260 chmod +x varargs
18261
18262 : now check which varargs header should be included
18263 echo " "
18264 i_varhdr=''
18265 case "$valstd" in
18266 "$define")
18267         if `./varargs I_STDARG`; then
18268                 val='stdarg.h'
18269         elif `./varargs I_VARARGS`; then
18270                 val='varargs.h'
18271         fi
18272         ;;
18273 *)
18274         if `./varargs I_VARARGS`; then
18275                 val='varargs.h'
18276         fi
18277         ;;
18278 esac
18279 case "$val" in
18280 '')
18281 echo "I could not find the definition for va_dcl... You have problems..." >&4
18282         val="$undef"; set i_stdarg; eval $setvar
18283         val="$undef"; set i_varargs; eval $setvar
18284         ;;
18285 *) 
18286         set i_varhdr
18287         eval $setvar
18288         case "$i_varhdr" in
18289         stdarg.h)
18290                 val="$define"; set i_stdarg; eval $setvar
18291                 val="$undef"; set i_varargs; eval $setvar
18292                 ;;
18293         varargs.h)
18294                 val="$undef"; set i_stdarg; eval $setvar
18295                 val="$define"; set i_varargs; eval $setvar
18296                 ;;
18297         esac
18298         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18299 esac
18300 $rm -f varargs*
18301
18302 : see if we need va_copy
18303 echo " "
18304 case "$i_stdarg" in
18305 "$define")
18306         $cat >try.c <<EOCP
18307 #include <stdarg.h>
18308 #include <stdio.h>
18309 #$i_stdlib I_STDLIB
18310 #ifdef I_STDLIB
18311 #include <stdlib.h>
18312 #endif
18313 #include <signal.h>
18314
18315 int
18316 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18317 {
18318   return vfprintf(f, fmt, *valp);
18319 }
18320  
18321 int    
18322 myvfprintf(FILE *f, const  char *fmt, va_list val)
18323 {
18324   return ivfprintf(f, fmt, &val);
18325 }
18326       
18327 int
18328 myprintf(char *fmt, ...) 
18329 {
18330   va_list val;
18331   va_start(val, fmt);
18332   return myvfprintf(stdout, fmt, val); 
18333 }         
18334
18335 int
18336 main(int ac, char **av)
18337 {
18338   signal(SIGSEGV, exit);
18339
18340   myprintf("%s%cs all right, then\n", "that", '\'');                            
18341   exit(0);      
18342 }
18343 EOCP
18344         set try
18345         if eval $compile && $run ./try 2>&1 >/dev/null; then
18346                 case "`$run ./try`" in
18347                 "that's all right, then")
18348                         okay=yes
18349                         ;;
18350                 esac
18351         fi
18352         case "$okay" in
18353         yes)    echo "It seems that you don't need va_copy()." >&4
18354                 need_va_copy="$undef"
18355                 ;;
18356         *)      echo "It seems that va_copy() or similar will be needed." >&4
18357                 need_va_copy="$define"
18358                 ;;
18359         esac
18360         $rm -f try.* core core.* *.core *.core.*
18361         ;;
18362 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18363         ;;
18364 esac
18365
18366 : see what type is used for size_t
18367 rp="What is the type used for the length parameter for string functions?"
18368 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18369 eval $typedef_ask
18370
18371 : check for type of arguments to gethostbyaddr. 
18372 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18373         case "$d_gethbyaddr" in
18374         $define)
18375                 $cat <<EOM
18376
18377 Checking to see what type of arguments are accepted by gethostbyaddr().
18378 EOM
18379                 hdrs="$define sys/types.h
18380                         $d_socket sys/socket.h 
18381                         $i_niin netinet/in.h 
18382                         $i_netdb netdb.h
18383                         $i_unistd unistd.h"
18384                 : The first arg can 'char *' or 'void *'
18385                 : The second arg is some of integral type
18386                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18387                         for yyy in size_t long int; do
18388                                 case "$netdb_host_type" in
18389                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18390                                         if ./protochk "$try" $hdrs; then
18391                                                 echo "Your system accepts $xxx for the first arg."
18392                                                 echo "...and $yyy for the second arg."
18393                                                 netdb_host_type="$xxx"
18394                                                 netdb_hlen_type="$yyy"
18395                                         fi
18396                                         ;;
18397                                 esac
18398                         done
18399                 done
18400                 : In case none of those worked, prompt the user.
18401                 case "$netdb_host_type" in
18402                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18403                         dflt='char *'
18404                         . ./myread
18405                         netdb_host_type=$ans
18406                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18407                         dflt="$sizetype"
18408                         . ./myread
18409                         netdb_hlen_type=$ans
18410                         ;;
18411                 esac
18412                 ;;
18413         *)      : no gethostbyaddr, so pick harmless defaults
18414                 netdb_host_type='char *'
18415                 netdb_hlen_type="$sizetype"
18416                 ;;
18417         esac
18418         # Remove the "const" if needed. -- but then we'll have a 
18419         # prototype clash!
18420         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18421 fi
18422
18423 : check for type of argument to gethostbyname. 
18424 if test "X$netdb_name_type" = X ; then
18425         case "$d_gethbyname" in
18426         $define)
18427                 $cat <<EOM
18428
18429 Checking to see what type of argument is accepted by gethostbyname().
18430 EOM
18431                 hdrs="$define sys/types.h
18432                         $d_socket sys/socket.h 
18433                         $i_niin netinet/in.h 
18434                         $i_netdb netdb.h
18435                         $i_unistd unistd.h"
18436                 for xxx in "const char *" "char *"; do
18437                         case "$netdb_name_type" in
18438                         '')     try="extern struct hostent *gethostbyname($xxx);"
18439                                 if ./protochk "$try" $hdrs; then
18440                                         echo "Your system accepts $xxx."
18441                                         netdb_name_type="$xxx"
18442                                 fi
18443                                 ;;
18444                         esac
18445                 done
18446                 : In case none of those worked, prompt the user.
18447                 case "$netdb_name_type" in
18448                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18449                         dflt='char *'
18450                         . ./myread
18451                         netdb_name_type=$ans
18452                         ;;
18453                 esac
18454                 ;;
18455         *)      : no gethostbyname, so pick harmless default
18456                 netdb_name_type='char *'
18457                 ;;
18458         esac
18459 fi
18460
18461 : check for type of 1st argument to getnetbyaddr. 
18462 if test "X$netdb_net_type" = X ; then
18463         case "$d_getnbyaddr" in
18464         $define)
18465                 $cat <<EOM
18466
18467 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18468 EOM
18469                 hdrs="$define sys/types.h
18470                         $d_socket sys/socket.h 
18471                         $i_niin netinet/in.h 
18472                         $i_netdb netdb.h
18473                         $i_unistd unistd.h"
18474                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18475                         case "$netdb_net_type" in
18476                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18477                                 if ./protochk "$try" $hdrs; then
18478                                         echo "Your system accepts $xxx."
18479                                         netdb_net_type="$xxx"
18480                                 fi
18481                                 ;;
18482                         esac
18483                 done
18484                 : In case none of those worked, prompt the user.
18485                 case "$netdb_net_type" in
18486                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18487                         dflt='long'
18488                         . ./myread
18489                         netdb_net_type=$ans
18490                         ;;
18491                 esac
18492                 ;;
18493         *)      : no getnetbyaddr, so pick harmless default
18494                 netdb_net_type='long'
18495                 ;;
18496         esac
18497 fi
18498 : locate the preferred pager for this system
18499 fn=f/
18500 case "$pager" in
18501 '')
18502         dflt=''
18503         case "$pg" in
18504         /*) dflt=$pg;;
18505         [a-zA-Z]:/*) dflt=$pg;;
18506         esac
18507         case "$more" in
18508         /*) dflt=$more;;
18509         [a-zA-Z]:/*) dflt=$more;;
18510         esac
18511         case "$less" in
18512         /*) dflt=$less;;
18513         [a-zA-Z]:/*) dflt=$less;;
18514         esac
18515         case "$dflt" in
18516         '') dflt=/usr/ucb/more;;
18517         esac
18518         ;;
18519 *)      dflt="$pager"
18520         : Instruct ./getfile to trust the hinted or previous pager value,
18521         : even if it does not begin with a slash.  For example, on os2,
18522         : pager might be cmd /c more.  See comments in UU/getfile.
18523         fn="f/($pager)"
18524         ;;
18525 esac
18526 echo " "
18527 rp='What pager is used on your system?'
18528 . ./getfile
18529 pager="$ans"
18530
18531 : see what type pids are declared as in the kernel
18532 rp="What is the type of process ids on this system?"
18533 set pid_t pidtype int stdio.h sys/types.h
18534 eval $typedef_ask
18535
18536 : Find earliest binary compatible site_perl subdirectory perl can use.
18537 xs_apiversion=$version # The current site_perl version.
18538 : Find earliest pure perl site_perl subdirectory perl can use.
18539 : The versioned directories started at 5.005.
18540 pm_apiversion='5.005'
18541
18542 : see if ar generates random libraries by itself
18543 echo " "
18544 echo "Checking how to generate random libraries on your machine..." >&4
18545 echo 'int bar1() { return bar2(); }' > bar1.c
18546 echo 'int bar2() { return 2; }' > bar2.c
18547 $cat > foo.c <<EOP
18548 #$i_stdlib I_STDLIB
18549 #ifdef I_STDLIB
18550 #include <stdlib.h>
18551 #endif
18552 int main() { printf("%d\n", bar1()); exit(0); }
18553 EOP
18554 $cc $ccflags -c bar1.c >/dev/null 2>&1
18555 $cc $ccflags -c bar2.c >/dev/null 2>&1
18556 $cc $ccflags -c foo.c >/dev/null 2>&1
18557 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18558 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18559         $run ./foobar >/dev/null 2>&1; then
18560         echo "$ar appears to generate random libraries itself."
18561         orderlib=false
18562         ranlib=":"
18563 elif $ar ts bar$_a >/dev/null 2>&1 &&
18564         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18565         $run ./foobar >/dev/null 2>&1; then
18566                 echo "a table of contents needs to be added with '$ar ts'."
18567                 orderlib=false
18568                 ranlib="$ar ts"
18569 else
18570         case "$ranlib" in
18571         :) ranlib='';;
18572         '')
18573                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18574                 $test -f $ranlib || ranlib=''
18575                 ;;
18576         esac
18577         if $test -n "$ranlib"; then
18578                 echo "your system has '$ranlib'; we'll use that."
18579                 orderlib=false
18580         else
18581                 echo "your system doesn't seem to support random libraries"
18582                 echo "so we'll use lorder and tsort to order the libraries."
18583                 orderlib=true
18584                 ranlib=":"
18585         fi
18586 fi
18587 $rm -f foo* bar* 
18588
18589 : check for type of arguments to select. 
18590 case "$selecttype" in
18591 '') case "$d_select" in
18592         $define)
18593                 echo " "
18594                 $cat <<EOM
18595 Checking to see what type of arguments are accepted by select().
18596 EOM
18597                 hdrs="$define sys/types.h
18598                         $i_systime sys/time.h 
18599                         $i_sysselct sys/select.h
18600                         $d_socket sys/socket.h"
18601                 : The first arg can be int, unsigned, or size_t
18602                 : The last arg may or may not be 'const'
18603                 val=''
18604                 : void pointer has been seen but using that
18605                 : breaks the selectminbits test
18606                 for xxx in 'fd_set *' 'int *'; do
18607                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18608                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18609                                         case "$val" in
18610                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18611                                                 if ./protochk "$try" $hdrs; then
18612                                                         echo "Your system accepts $xxx."
18613                                                         val="$xxx"
18614                                                 fi
18615                                                 ;;
18616                                         esac
18617                                 done
18618                         done
18619                 done
18620                 case "$val" in
18621                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18622                         case "$d_fd_set" in
18623                                 $define) dflt="fd_set *" ;;
18624                                 *)              dflt="int *" ;;
18625                         esac
18626                         . ./myread
18627                         val=$ans
18628                         ;;
18629                 esac
18630                 selecttype="$val"
18631                 ;;
18632         *)      : no select, so pick a harmless default
18633                 selecttype='int *'
18634                 ;;
18635         esac
18636         ;;
18637 esac
18638
18639 : check for the select 'width'
18640 case "$selectminbits" in
18641 '') case "$d_select" in
18642         $define)
18643                 $cat <<EOM
18644
18645 Checking to see on how many bits at a time your select() operates...
18646 EOM
18647                 $cat >try.c <<EOCP
18648 #include <sys/types.h>
18649 #$i_time I_TIME
18650 #$i_systime I_SYS_TIME
18651 #$i_systimek I_SYS_TIME_KERNEL
18652 #ifdef I_TIME
18653 #   include <time.h>
18654 #endif
18655 #ifdef I_SYS_TIME
18656 #   ifdef I_SYS_TIME_KERNEL
18657 #       define KERNEL
18658 #   endif
18659 #   include <sys/time.h>
18660 #   ifdef I_SYS_TIME_KERNEL
18661 #       undef KERNEL
18662 #   endif
18663 #endif
18664 #$i_sysselct I_SYS_SELECT
18665 #ifdef I_SYS_SELECT
18666 #include <sys/select.h>
18667 #endif
18668 #$d_socket HAS_SOCKET
18669 #ifdef HAS_SOCKET
18670 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18671 #endif
18672 #include <stdio.h>
18673 #$i_stdlib I_STDLIB
18674 #ifdef I_STDLIB
18675 #include <stdlib.h>
18676 #endif
18677 $selecttype b;
18678 #define S sizeof(*(b))
18679 #define MINBITS 64
18680 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18681 #define NBITS  (NBYTES * 8)
18682 int main() {
18683     char s[NBYTES];
18684     struct timeval t;
18685     int i;
18686     FILE* fp;
18687     int fd;
18688
18689     fclose(stdin);
18690     fp = fopen("try.c", "r");
18691     if (fp == 0)
18692       exit(1);
18693     fd = fileno(fp);
18694     if (fd < 0)
18695       exit(2);
18696     b = ($selecttype)s;
18697     for (i = 0; i < NBITS; i++)
18698         FD_SET(i, b);
18699     t.tv_sec  = 0;
18700     t.tv_usec = 0;
18701     select(fd + 1, b, 0, 0, &t);
18702     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18703     printf("%d\n", i + 1);
18704     return 0;
18705 }
18706 EOCP
18707                 set try
18708                 if eval $compile_ok; then
18709                         selectminbits=`$run ./try`
18710                         case "$selectminbits" in
18711                         '')     cat >&4 <<EOM
18712 Cannot figure out on how many bits at a time your select() operates.
18713 I'll play safe and guess it is 32 bits.
18714 EOM
18715                                 selectminbits=32
18716                                 bits="32 bits"
18717                                 ;;
18718                         1)      bits="1 bit" ;;
18719                         *)      bits="$selectminbits bits" ;;
18720                         esac
18721                         echo "Your select() operates on $bits at a time." >&4
18722                 else
18723                         rp='What is the minimum number of bits your select() operates on?'
18724                         case "$byteorder" in
18725                         1234|12345678)  dflt=32 ;;
18726                         *)              dflt=1  ;;
18727                         esac
18728                         . ./myread
18729                         val=$ans
18730                         selectminbits="$val"
18731                 fi
18732                 $rm -f try.* try
18733                 ;;
18734         *)      : no select, so pick a harmless default
18735                 selectminbits='32'
18736                 ;;
18737         esac
18738         ;;
18739 esac
18740
18741 : Trace out the files included by signal.h, then look for SIGxxx names.
18742 : Remove SIGARRAYSIZE used by HPUX.
18743 : Remove SIGSTKSIZE used by Linux.
18744 : Remove SIGSTKSZ used by Posix.
18745 : Remove SIGTYP void lines used by OS2.
18746 : Some cpps, like os390, dont give the file name anywhere
18747 if [ "X$fieldn" = X ]; then
18748         : Just make some guesses.  We check them later.
18749         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18750 else
18751         xxx=`echo '#include <signal.h>' |
18752         $cppstdin $cppminus $cppflags 2>/dev/null |
18753         $grep '^[       ]*#.*include' | 
18754         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18755 fi
18756 : Check this list of files to be sure we have parsed the cpp output ok.
18757 : This will also avoid potentially non-existent files, such 
18758 : as ../foo/bar.h
18759 xxxfiles=''
18760 for xx in $xxx /dev/null ; do
18761         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18762 done
18763 : If we have found no files, at least try signal.h
18764 case "$xxxfiles" in
18765 '')     xxxfiles=`./findhdr signal.h` ;;
18766 esac
18767 xxx=`awk '
18768 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18769         print substr($2, 4, 20)
18770 }
18771 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18772         print substr($3, 4, 20)
18773 }' $xxxfiles`
18774 : Append some common names just in case the awk scan failed.
18775 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18776 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18777 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18778 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18779 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18780
18781 : generate a few handy files for later
18782 $cat > signal.c <<EOCP
18783 #include <sys/types.h>
18784 #include <signal.h>
18785 #$i_stdlib I_STDLIB
18786 #ifdef I_STDLIB
18787 #include <stdlib.h>
18788 #endif
18789 #include <stdio.h>
18790 int main() {
18791
18792 /* Strange style to avoid deeply-nested #if/#else/#endif */
18793 #ifndef NSIG
18794 #  ifdef _NSIG
18795 #    define NSIG (_NSIG)
18796 #  endif
18797 #endif
18798
18799 #ifndef NSIG
18800 #  ifdef SIGMAX
18801 #    define NSIG (SIGMAX+1)
18802 #  endif
18803 #endif
18804
18805 #ifndef NSIG
18806 #  ifdef SIG_MAX
18807 #    define NSIG (SIG_MAX+1)
18808 #  endif
18809 #endif
18810
18811 #ifndef NSIG
18812 #  ifdef MAXSIG
18813 #    define NSIG (MAXSIG+1)
18814 #  endif
18815 #endif
18816
18817 #ifndef NSIG
18818 #  ifdef MAX_SIG
18819 #    define NSIG (MAX_SIG+1)
18820 #  endif
18821 #endif
18822
18823 #ifndef NSIG
18824 #  ifdef SIGARRAYSIZE
18825 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18826 #  endif
18827 #endif
18828
18829 #ifndef NSIG
18830 #  ifdef _sys_nsig
18831 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18832 #  endif
18833 #endif
18834
18835 /* Default to some arbitrary number that's big enough to get most
18836    of the common signals.
18837 */
18838 #ifndef NSIG
18839 #    define NSIG 50
18840 #endif
18841
18842 printf("NSIG %d\n", NSIG);
18843
18844 #ifndef JUST_NSIG
18845
18846 EOCP
18847
18848 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18849 {
18850         printf "#ifdef SIG"; printf $1; printf "\n"
18851         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18852         printf $1; printf ");\n"
18853         printf "#endif\n"
18854 }
18855 END {
18856         printf "#endif /* JUST_NSIG */\n";
18857         printf "exit(0);\n}\n";
18858 }
18859 ' >>signal.c
18860 $cat >signal.awk <<'EOP'
18861 BEGIN { ndups = 0 }
18862 $1 ~ /^NSIG$/ { nsig = $2 }
18863 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18864     if ($2 > maxsig) { maxsig = $2 }
18865     if (sig_name[$2]) {
18866         dup_name[ndups] = $1
18867         dup_num[ndups] = $2
18868         ndups++ 
18869     }
18870     else {
18871         sig_name[$2] = $1
18872         sig_num[$2] = $2
18873     }
18874 }
18875 END { 
18876     if (nsig == 0) {
18877         nsig = maxsig + 1
18878     }
18879     printf("NSIG %d\n", nsig);
18880     for (n = 1; n < nsig; n++) {
18881         if (sig_name[n]) {
18882             printf("%s %d\n", sig_name[n], sig_num[n])
18883         }
18884         else {
18885             printf("NUM%d %d\n", n, n) 
18886         }
18887     }
18888     for (n = 0; n < ndups; n++) {
18889         printf("%s %d\n", dup_name[n], dup_num[n])
18890     }
18891 }
18892 EOP
18893 $cat >signal_cmd <<EOS
18894 $startsh
18895 if $test -s signal.lst; then
18896     echo "Using your existing signal.lst file"
18897         exit 0
18898 fi
18899 xxx="$xxx"
18900 EOS
18901 $cat >>signal_cmd <<'EOS'
18902
18903 set signal
18904 if eval $compile_ok; then
18905         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18906 else
18907         echo "(I can't seem be able to compile the whole test program)" >&4
18908         echo "(I'll try it in little pieces.)" >&4
18909         set signal -DJUST_NSIG
18910         if eval $compile_ok; then
18911                 $run ./signal$_exe > signal.nsg
18912                 $cat signal.nsg
18913         else
18914                 echo "I can't seem to figure out how many signals you have." >&4
18915                 echo "Guessing 50." >&4
18916                 echo 'NSIG 50' > signal.nsg
18917         fi
18918         : Now look at all the signal names, one at a time.
18919         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18920                 $cat > signal.c <<EOCP
18921 #include <sys/types.h>
18922 #include <signal.h>
18923 #include <stdio.h>
18924 int main() {
18925 printf("$xx %d\n", SIG${xx});
18926 return 0;
18927 }
18928 EOCP
18929                 set signal
18930                 if eval $compile; then
18931                         echo "SIG${xx} found."
18932                         $run ./signal$_exe  >> signal.ls1
18933                 else
18934                         echo "SIG${xx} NOT found."
18935                 fi
18936         done
18937         if $test -s signal.ls1; then
18938                 $cat signal.nsg signal.ls1 |
18939                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
18940         fi
18941
18942 fi
18943 if $test -s signal.lst; then
18944         :
18945 else
18946         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18947         echo 'kill -l' >signal
18948         set X `csh -f <signal`
18949         $rm -f signal
18950         shift
18951         case $# in
18952         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18953         esac
18954         echo $@ | $tr ' ' $trnl | \
18955             $awk '{ printf "%s %d\n", $1, ++s; }
18956                   END { printf "NSIG %d\n", ++s }' >signal.lst
18957 fi
18958 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18959 EOS
18960 chmod a+x signal_cmd
18961 $eunicefix signal_cmd
18962
18963 : generate list of signal names
18964 echo " "
18965 case "$sig_name_init" in
18966 '') doinit=yes ;;
18967 *)  case "$sig_num_init" in
18968     ''|*,*) doinit=yes ;;
18969     esac ;;
18970 esac
18971 case "$doinit" in
18972 yes)
18973         echo "Generating a list of signal names and numbers..." >&4
18974         . ./signal_cmd
18975         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
18976         sig_name=`$awk 'BEGIN { printf "ZERO " }
18977                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
18978         sig_num=`$awk  'BEGIN { printf "0 " }
18979                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
18980         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
18981                              !/^NSIG/   { printf "\"%s\", ", $1 }
18982                              END        { printf "0\n" }' signal.lst`
18983         sig_num_init=`$awk  'BEGIN      { printf "0, " }
18984                              !/^NSIG/   { printf "%d, ", $2}
18985                              END        { printf "0\n"}' signal.lst`
18986         ;;
18987 esac
18988 echo "The following $sig_count signals are available:"
18989 echo " "
18990 echo $sig_name | $awk \
18991 'BEGIN { linelen = 0 }
18992 {
18993         for (i = 1; i <= NF; i++) {
18994                 name = "SIG" $i " "
18995                 linelen = linelen + length(name)
18996                 if (linelen > 70) {
18997                         printf "\n"
18998                         linelen = length(name)
18999                 }
19000                 printf "%s", name
19001         }
19002         printf "\n"
19003 }'
19004 sig_size=`echo $sig_name | awk '{print NF}'`
19005 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19006
19007 echo " "
19008 case "$sizetype" in
19009 *_t) zzz="$sizetype"    ;;
19010 *)   zzz="filesize"     ;;
19011 esac
19012 echo "Checking the size of $zzz..." >&4 
19013 cat > try.c <<EOCP
19014 #include <sys/types.h>
19015 #include <stdio.h>
19016 #$i_stdlib I_STDLIB
19017 #ifdef I_STDLIB
19018 #include <stdlib.h>
19019 #endif
19020 int main() {
19021     printf("%d\n", (int)sizeof($sizetype));
19022     exit(0);
19023 }
19024 EOCP
19025 set try
19026 if eval $compile_ok; then
19027         yyy=`$run ./try`
19028         case "$yyy" in
19029         '')     sizesize=4
19030                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19031                 ;;
19032         *)      sizesize=$yyy
19033                 echo "Your $zzz size is $sizesize bytes."
19034                 ;;
19035         esac
19036 else
19037         sizesize=4
19038         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19039 fi
19040
19041
19042 : check for socklen_t
19043 echo " "
19044 echo "Checking to see if you have socklen_t..." >&4
19045 $cat >try.c <<EOCP
19046 #include <sys/types.h>
19047 #$d_socket HAS_SOCKET
19048 #ifdef HAS_SOCKET
19049 #include <sys/socket.h>
19050 #endif
19051 int main() { socklen_t x = 16; }
19052 EOCP
19053 set try
19054 if eval $compile; then
19055         val="$define"
19056         echo "You have socklen_t."
19057 else
19058         val="$undef"
19059         echo "You do not have socklen_t."
19060         case "$sizetype" in
19061         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19062         esac
19063 fi
19064 $rm -f try try.*
19065 set d_socklen_t
19066 eval $setvar
19067
19068 : see if this is a socks.h system
19069 set socks.h i_socks
19070 eval $inhdr
19071
19072 : check for type of the size argument to socket calls
19073 case "$d_socket" in
19074 "$define")
19075         $cat <<EOM
19076
19077 Checking to see what type is the last argument of accept().
19078 EOM
19079         yyy=''
19080         case "$d_socklen_t" in
19081         "$define") yyy="$yyy socklen_t"
19082         esac
19083         yyy="$yyy $sizetype int long unsigned"
19084         for xxx in $yyy; do
19085                 case "$socksizetype" in
19086                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19087                         case "$usesocks" in
19088                         "$define")
19089                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19090                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19091                                         socksizetype="$xxx"
19092                                 fi
19093                                 ;;
19094                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19095                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19096                                         socksizetype="$xxx"
19097                                 fi
19098                                 ;;
19099                         esac
19100                         ;;
19101                 esac
19102         done
19103 : In case none of those worked, prompt the user.
19104         case "$socksizetype" in
19105         '')     rp='What is the type for socket address structure sizes?'
19106                 dflt='int'
19107                 . ./myread
19108                 socksizetype=$ans
19109                 ;;
19110         esac
19111         ;;
19112 *)      : no sockets, so pick relatively harmless default
19113         socksizetype='int'
19114         ;;
19115 esac
19116
19117 : see what type is used for signed size_t
19118 set ssize_t ssizetype int stdio.h sys/types.h
19119 eval $typedef
19120 dflt="$ssizetype"
19121 $cat > try.c <<EOM
19122 #include <stdio.h>
19123 #$i_stdlib I_STDLIB
19124 #ifdef I_STDLIB
19125 #include <stdlib.h>
19126 #endif
19127 #include <sys/types.h>
19128 #define Size_t $sizetype
19129 #define SSize_t $dflt
19130 int main()
19131 {
19132         if (sizeof(Size_t) == sizeof(SSize_t))
19133                 printf("$dflt\n");
19134         else if (sizeof(Size_t) == sizeof(int))
19135                 printf("int\n");
19136         else 
19137                 printf("long\n");
19138         exit(0);
19139 }
19140 EOM
19141 echo " "
19142 set try
19143 if eval $compile_ok && $run ./try > /dev/null; then
19144         ssizetype=`$run ./try`
19145         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19146 else
19147         $cat >&4 <<EOM
19148 Help! I can't compile and run the ssize_t test program: please enlighten me!
19149 (This is probably a misconfiguration in your system or libraries, and
19150 you really ought to fix it.  Still, I'll try anyway.)
19151
19152 I need a type that is the same size as $sizetype, but is guaranteed to
19153 be signed.  Common values are ssize_t, int and long.
19154
19155 EOM
19156         rp="What signed type is the same size as $sizetype?"
19157         . ./myread
19158         ssizetype="$ans"
19159 fi
19160 $rm -f try try.*
19161
19162 : see what type of char stdio uses.
19163 echo " "
19164 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19165 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19166         echo "Your stdio uses unsigned chars." >&4
19167         stdchar="unsigned char"
19168 else
19169         echo "Your stdio uses signed chars." >&4
19170         stdchar="char"
19171 fi
19172 $rm -f stdioh
19173
19174
19175
19176 : see what type uids are declared as in the kernel
19177 echo " "
19178 echo "Looking for the type for user ids returned by getuid()."
19179 set uid_t uidtype xxx stdio.h sys/types.h
19180 eval $typedef
19181 case "$uidtype" in
19182 xxx)
19183         xxx=`./findhdr sys/user.h`
19184         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19185         case $1 in
19186         unsigned) dflt="$1 $2" ;;
19187         *) dflt="$1" ;;
19188         esac
19189         ;;
19190 *) dflt="$uidtype";;
19191 esac
19192 case "$uidtype" in
19193 uid_t)  echo "uid_t found." ;;
19194 *)      rp="What is the type for user ids returned by getuid()?"
19195         . ./myread
19196         uidtype="$ans"
19197         ;;
19198 esac
19199
19200 echo " "
19201 case "$uidtype" in
19202 *_t) zzz="$uidtype"     ;;
19203 *)   zzz="uid"          ;;
19204 esac
19205 echo "Checking the size of $zzz..." >&4 
19206 cat > try.c <<EOCP
19207 #include <sys/types.h>
19208 #include <stdio.h>
19209 #$i_stdlib I_STDLIB
19210 #ifdef I_STDLIB
19211 #include <stdlib.h>
19212 #endif
19213 int main() {
19214     printf("%d\n", (int)sizeof($uidtype));
19215     exit(0);
19216 }
19217 EOCP
19218 set try
19219 if eval $compile_ok; then
19220         yyy=`$run ./try`
19221         case "$yyy" in
19222         '')     uidsize=4
19223                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19224                 ;;
19225         *)      uidsize=$yyy
19226                 echo "Your $zzz is $uidsize bytes long."
19227                 ;;
19228         esac
19229 else
19230         uidsize=4
19231         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19232 fi
19233
19234 echo " "
19235 case "$uidtype" in
19236 *_t) zzz="$uidtype"     ;;
19237 *)   zzz="uid"          ;;
19238 esac
19239 echo "Checking the sign of $zzz..." >&4
19240 cat > try.c <<EOCP
19241 #include <sys/types.h>
19242 #include <stdio.h>
19243 int main() {
19244         $uidtype foo = -1;
19245         if (foo < 0)
19246                 printf("-1\n");
19247         else
19248                 printf("1\n");
19249 }
19250 EOCP
19251 set try
19252 if eval $compile; then
19253         yyy=`$run ./try`
19254         case "$yyy" in
19255         '')     uidsign=1
19256                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19257                 ;;
19258         *)      uidsign=$yyy
19259                 case "$uidsign" in
19260                  1) echo "Your $zzz is unsigned." ;;
19261                 -1) echo "Your $zzz is signed."   ;;
19262                 esac
19263                 ;;
19264         esac
19265 else
19266         uidsign=1
19267         echo "(I can't compile the test program--guessing unsigned.)" >&4
19268 fi
19269
19270
19271
19272 echo " "
19273 $echo "Checking the format string to be used for uids..." >&4
19274
19275 case "$uidsign" in
19276 -1)     if $test X"$uidsize" = X"$ivsize"; then
19277                 uidformat="$ivdformat"
19278         else
19279                 if $test X"$uidsize" = X"$longsize"; then
19280                         uidformat='"ld"'
19281                 else
19282                         if $test X"$uidsize" = X"$intsize"; then
19283                                 uidformat='"d"'
19284                         else
19285                                 if $test X"$uidsize" = X"$shortsize"; then
19286                                         uidformat='"hd"'
19287                                 fi
19288                         fi
19289                 fi
19290         fi
19291         ;;
19292 *)      if $test X"$uidsize" = X"$uvsize"; then
19293                 uidformat="$uvuformat"
19294         else
19295                 if $test X"$uidsize" = X"$longsize"; then
19296                         uidformat='"lu"'
19297                 else
19298                         if $test X"$uidsize" = X"$intsize"; then
19299                                 uidformat='"u"'
19300                         else
19301                                 if $test X"$uidsize" = X"$shortsize"; then
19302                                         uidformat='"hu"'
19303                                 fi
19304                         fi
19305                 fi
19306         fi
19307         ;;
19308 esac
19309
19310 : determine compiler compiler
19311 case "$yacc" in
19312 '')
19313         dflt=yacc;;
19314 *)
19315         dflt="$yacc";;
19316 esac
19317 echo " "
19318 comp='yacc'
19319 if $test -f "$byacc$_exe"; then
19320         dflt="$byacc"
19321         comp="byacc or $comp"
19322 fi
19323 if $test -f "$bison$_exe"; then
19324         comp="$comp or bison -y"
19325 fi
19326 rp="Which compiler compiler ($comp) shall I use?"
19327 . ./myread
19328 yacc="$ans"
19329 case "$yacc" in
19330 *bis*)
19331         case "$yacc" in
19332         *-y*) ;;
19333         *)
19334                 yacc="$yacc -y"
19335                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19336                 ;;
19337         esac
19338         ;;
19339 esac
19340
19341 : see if this is a fp.h system
19342 set fp.h i_fp
19343 eval $inhdr
19344
19345 : see if this is a fp_class.h system
19346 set fp_class.h i_fp_class
19347 eval $inhdr
19348
19349 : see if this is a ieeefp.h system
19350 case "$i_ieeefp" in
19351 '' ) set ieeefp.h i_ieeefp
19352      eval $inhdr
19353      ;;
19354 esac
19355
19356 : see if this is a libutil.h system
19357 set libutil.h i_libutil
19358 eval $inhdr
19359
19360 : see if mach cthreads are available
19361 if test "X$usethreads" = "X$define"; then
19362         set mach/cthreads.h i_machcthr
19363         eval $inhdr
19364 else
19365         i_machcthr="$undef"
19366 fi
19367
19368
19369
19370 : see if this is a math.h system
19371 set math.h i_math
19372 eval $inhdr
19373
19374 : see if this is a mntent.h system
19375 set mntent.h i_mntent
19376 eval $inhdr
19377
19378 : see if ndbm.h is available
19379 set ndbm.h t_ndbm
19380 eval $inhdr
19381
19382 case "$t_ndbm" in
19383 $undef)
19384     # Some Linux distributions such as RedHat 7.1 put the
19385     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19386     if $test -f /usr/include/gdbm/ndbm.h; then
19387         echo '<gdbm/ndbm.h> found.'
19388         ccflags="$ccflags -I/usr/include/gdbm"
19389         cppflags="$cppflags -I/usr/include/gdbm"
19390         t_ndbm=$define
19391     fi
19392     ;;
19393 esac
19394
19395 case "$t_ndbm" in
19396 $define)
19397         : see if dbm_open exists
19398         set dbm_open d_dbm_open
19399         eval $inlibc
19400         case "$d_dbm_open" in
19401         $undef)
19402                 t_ndbm="$undef"
19403                 echo "We won't be including <ndbm.h>"
19404                 ;;
19405         esac
19406         ;;
19407 esac
19408 val="$t_ndbm"
19409 set i_ndbm
19410 eval $setvar
19411
19412 : see if net/errno.h is available
19413 val=''
19414 set net/errno.h val
19415 eval $inhdr
19416
19417 : Unfortunately, it causes problems on some systems.  Arrgh.
19418 case "$val" in
19419 $define)
19420         cat > try.c <<'EOM'
19421 #include <stdio.h>
19422 #include <errno.h>
19423 #include <net/errno.h>
19424 int func()
19425 {
19426         return ENOTSOCK;
19427 }
19428 EOM
19429         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19430                 echo "We'll be including <net/errno.h>." >&4
19431         else
19432                 echo "We won't be including <net/errno.h>." >&4
19433                 val="$undef"
19434         fi
19435         $rm -f try.* try
19436         ;;
19437 esac
19438 set i_neterrno
19439 eval $setvar
19440
19441 : see if netinet/tcp.h is available
19442 set netinet/tcp.h i_netinettcp
19443 eval $inhdr
19444
19445 : see if this is a poll.h system
19446 set poll.h i_poll
19447 eval $inhdr
19448
19449 : see if this is a prot.h system
19450 set prot.h i_prot
19451 eval $inhdr
19452
19453 echo " "
19454 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19455 $cat <<'EOSH' > Cppsym.know
19456 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19457 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19458 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19459 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19460 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19461 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19462 bull c cadmus clipper CMU COFF COMPILER_VERSION
19463 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19464 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19465 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19466 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19467 GLIBC GLIBC_MINOR
19468 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19469 H3050R H3050RX hbullx20 hcx host_mips
19470 hp200 hp300 hp700 HP700 hp800 hp9000
19471 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19472 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19473 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19474 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19475 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19476 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19477 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19478 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19479 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19480 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19481 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19482 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19483 MATH_HAS_NO_SIDE_EFFECTS
19484 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19485 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19486 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19487 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19488 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19489 NetBSD news1500 news1700 news1800 news1900 news3700
19490 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19491 ns32016 ns32332 ns32k nsc32000
19492 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19493 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19494 pc532 pdp11 PGC PIC plexus PORTAR posix
19495 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19496 POSIX_C_SOURCE POSIX_SOURCE POWER
19497 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19498 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19499 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19500 sony sony_news sonyrisc sparc sparclite spectrum
19501 stardent stdc STDC_EXT stratos sun sun3 sun386
19502 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19503 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19504 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19505 sysV68 sysV88 Tek4132 Tek4300 titan
19506 TM3200 TM5400 TM5600
19507 tower tower32 tower32_200 tower32_600 tower32_700
19508 tower32_800 tower32_850 tss
19509 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19510 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19511 unix UNIX95 UNIX99 unixpc unos
19512 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19513 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19514 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19515 USGr4 USGr4_2
19516 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19517 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19518 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19519 z8000
19520 EOSH
19521 # Maybe put other stuff here too.
19522 cat <<EOSH >>Cppsym.know
19523 $osname
19524 EOSH
19525 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19526 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19527 $cat Cppsym.know > Cppsym.c
19528 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19529 $rm -f Cppsym.a Cppsym.b Cppsym.c
19530 cat <<EOSH > Cppsym
19531 $startsh
19532 if $test \$# -gt 0; then
19533     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19534     if $test -s Cppsym.got; then
19535         $rm -f Cppsym.got
19536         exit 0
19537     fi
19538     $rm -f Cppsym.got
19539     exit 1
19540 else
19541     $tr " " "$trnl" | ./Cppsym.try
19542     exit 0
19543 fi
19544 EOSH
19545 chmod +x Cppsym
19546 $eunicefix Cppsym
19547 cat <<EOSH > Cppsym.try
19548 $startsh
19549 cat <<'EOCP' > try.c
19550 #include <stdio.h>
19551 int main() {
19552 EOCP
19553 $awk \\
19554 EOSH
19555 cat <<'EOSH' >> Cppsym.try
19556 'length($1) > 0 {
19557     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
19558     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
19559     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
19560     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
19561 }'       >> try.c
19562 echo 'return 0;}' >> try.c
19563 EOSH
19564 cat <<EOSH >> Cppsym.try
19565 ccflags="$ccflags"
19566 case "$osname-$gccversion" in
19567 irix-) ccflags="\$ccflags -woff 1178" ;;
19568 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19569 esac
19570 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19571 EOSH
19572 chmod +x Cppsym.try
19573 $eunicefix Cppsym.try
19574 ./Cppsym < Cppsym.know > Cppsym.true
19575 : now check the C compiler for additional symbols
19576 postprocess_cc_v=''
19577 case "$osname" in
19578 aix) postprocess_cc_v="|$tr , ' '" ;;
19579 esac
19580 $cat >ccsym <<EOS
19581 $startsh
19582 $cat >tmp.c <<EOF
19583 extern int foo;
19584 EOF
19585 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19586 do
19587         case "\$i" in
19588         -D*) echo "\$i" | $sed 's/^-D//';;
19589         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19590         esac
19591 done
19592 $rm -f try.c
19593 EOS
19594 postprocess_cc_v=''
19595 chmod +x ccsym
19596 $eunicefix ccsym
19597 ./ccsym > ccsym1.raw
19598 if $test -s ccsym1.raw; then
19599        $sort ccsym1.raw | $uniq >ccsym.raw
19600 else
19601        mv ccsym1.raw ccsym.raw
19602 fi
19603
19604 $awk '/\=/ { print $0; next }
19605         { print $0"=1" }' ccsym.raw >ccsym.list
19606 $awk '/\=/ { print $0; next }
19607         { print $0"=1" }' Cppsym.true >ccsym.true
19608 $comm -13 ccsym.true ccsym.list >ccsym.own
19609 $comm -12 ccsym.true ccsym.list >ccsym.com
19610 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19611 also=''
19612 if $test -z ccsym.raw; then
19613         echo "Your C compiler doesn't seem to define any symbols!" >&4
19614         echo " "
19615         echo "However, your C preprocessor defines the following symbols:"
19616         $cat Cppsym.true
19617         ccsymbols=''
19618         cppsymbols=`$cat Cppsym.true`
19619         cppsymbols=`echo $cppsymbols`
19620         cppccsymbols="$cppsymbols"
19621 else
19622         if $test -s ccsym.com; then
19623                 echo "Your C compiler and pre-processor define these symbols:"
19624                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19625                 also='also '
19626                 symbols='ones'
19627                 cppccsymbols=`$cat ccsym.com`
19628                 cppccsymbols=`echo $cppccsymbols`
19629                 $test "$silent" || sleep 1
19630         fi
19631         if $test -s ccsym.cpp; then
19632                 $test "$also" && echo " "
19633                 echo "Your C pre-processor ${also}defines the following symbols:"
19634                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19635                 also='further '
19636                 cppsymbols=`$cat ccsym.cpp`
19637                 cppsymbols=`echo $cppsymbols`
19638                 $test "$silent" || sleep 1
19639         fi
19640         if $test -s ccsym.own; then
19641                 $test "$also" && echo " "
19642                 echo "Your C compiler ${also}defines the following cpp symbols:"
19643                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19644                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19645                 ccsymbols=`$cat ccsym.own`
19646                 ccsymbols=`echo $ccsymbols`
19647                 $test "$silent" || sleep 1
19648         fi
19649 fi
19650
19651 : see if this is a termio system
19652 val="$undef"
19653 val2="$undef"
19654 val3="$undef"
19655 if $test `./findhdr termios.h`; then
19656         set tcsetattr i_termios
19657         eval $inlibc
19658         val3="$i_termios"
19659 fi
19660 echo " "
19661 case "$val3" in
19662 "$define") echo "You have POSIX termios.h... good!" >&4;;
19663 *) if ./Cppsym pyr; then
19664                 case "`/bin/universe`" in
19665                 ucb) if $test `./findhdr sgtty.h`; then
19666                                 val2="$define"
19667                                 echo "<sgtty.h> found." >&4
19668                         else
19669                                 echo "System is pyramid with BSD universe."
19670                                 echo "<sgtty.h> not found--you could have problems." >&4
19671                         fi;;
19672                 *) if $test `./findhdr termio.h`; then
19673                                 val="$define"
19674                                 echo "<termio.h> found." >&4
19675                         else
19676                                 echo "System is pyramid with USG universe."
19677                                 echo "<termio.h> not found--you could have problems." >&4
19678                         fi;;
19679                 esac
19680         elif ./usg; then
19681                 if $test `./findhdr termio.h`; then
19682                         echo "<termio.h> found." >&4
19683                         val="$define"
19684                 elif $test `./findhdr sgtty.h`; then
19685                         echo "<sgtty.h> found." >&4
19686                         val2="$define"
19687                 else
19688 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19689                 fi
19690         else
19691                 if $test `./findhdr sgtty.h`; then
19692                         echo "<sgtty.h> found." >&4
19693                         val2="$define"
19694                 elif $test `./findhdr termio.h`; then
19695                         echo "<termio.h> found." >&4
19696                         val="$define"
19697                 else
19698 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19699                 fi
19700         fi;;
19701 esac
19702 set i_termio; eval $setvar
19703 val=$val2; set i_sgtty; eval $setvar
19704 val=$val3; set i_termios; eval $setvar
19705
19706 : see if stddef is available
19707 set stddef.h i_stddef
19708 eval $inhdr
19709
19710 : see if this is a sunmath.h system
19711 set sunmath.h i_sunmath
19712 eval $inhdr
19713
19714 : see if sys/access.h is available
19715 set sys/access.h i_sysaccess
19716 eval $inhdr
19717
19718 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19719 set sys/filio.h i_sysfilio
19720 eval $inhdr
19721 echo " "
19722 if $test `./findhdr sys/ioctl.h`; then
19723         val="$define"
19724         echo '<sys/ioctl.h> found.' >&4
19725 else
19726         val="$undef"
19727         if $test $i_sysfilio = "$define"; then
19728             echo '<sys/ioctl.h> NOT found.' >&4
19729         else
19730                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19731                 $test $i_termio = "$define" && xxx="termio.h"
19732                 $test $i_termios = "$define" && xxx="termios.h"
19733 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19734         fi
19735 fi
19736 set i_sysioctl
19737 eval $setvar
19738
19739 : see if socket ioctl defs are in sys/sockio.h
19740 echo " "
19741 xxx=`./findhdr sys/sockio.h`
19742 if $test "$xxx"; then
19743         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19744                 val="$define"
19745                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19746         else
19747                 val="$undef"
19748                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19749         fi
19750 else
19751         val="$undef"
19752         $cat <<EOM
19753 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19754 EOM
19755 fi
19756 set i_syssockio
19757 eval $setvar
19758
19759
19760 : see if this is a syslog.h system
19761 set syslog.h i_syslog
19762 eval $inhdr
19763
19764
19765 : see if this is a sys/mode.h system
19766 set sys/mode.h i_sysmode
19767 eval $inhdr
19768
19769 : see if sys/resource.h has to be included
19770 set sys/resource.h i_sysresrc
19771 eval $inhdr
19772
19773 : see if sys/security.h is available
19774 set sys/security.h i_syssecrt
19775 eval $inhdr
19776
19777 : see if this is a sys/statvfs.h system
19778 set sys/statvfs.h i_sysstatvfs
19779 eval $inhdr
19780
19781 : see if this is a sys/un.h system
19782 set sys/un.h i_sysun
19783 eval $inhdr
19784
19785
19786 : see if this is a sys/utsname.h system
19787 set sys/utsname.h i_sysutsname
19788 eval $inhdr
19789
19790 : see if this is a syswait system
19791 set sys/wait.h i_syswait
19792 eval $inhdr
19793
19794 : see if this is a ustat.h system
19795 set ustat.h i_ustat
19796 eval $inhdr
19797
19798 : see if this is an utime system
19799 set utime.h i_utime
19800 eval $inhdr
19801
19802 : see if this is a values.h system
19803 set values.h i_values
19804 eval $inhdr
19805
19806 : see if this is a vfork system
19807 case "$d_vfork" in
19808 "$define")
19809         set vfork.h i_vfork
19810         eval $inhdr
19811         ;;
19812 *)
19813         i_vfork="$undef"
19814         ;;
19815 esac
19816
19817 : see if gdbm.h is available
19818 set gdbm.h t_gdbm
19819 eval $inhdr
19820 case "$t_gdbm" in
19821 $define)
19822         : see if gdbm_open exists
19823         set gdbm_open d_gdbm_open
19824         eval $inlibc
19825         case "$d_gdbm_open" in
19826         $undef)
19827                 t_gdbm="$undef"
19828                 echo "We won't be including <gdbm.h>"
19829                 ;;
19830         esac
19831         ;;
19832 esac
19833 val="$t_gdbm"
19834 set i_gdbm
19835 eval $setvar
19836
19837 echo " "
19838 echo "Looking for extensions..." >&4
19839 : If we are using the old config.sh, known_extensions may contain
19840 : old or inaccurate or duplicate values.
19841 known_extensions=''
19842 nonxs_extensions=''
19843 : We do not use find because it might not be available.
19844 : We do not just use MANIFEST because the user may have dropped
19845 : some additional extensions into the source tree and expect them
19846 : to be built.
19847
19848 : Function to recursively find available extensions, ignoring DynaLoader
19849 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19850 find_extensions='
19851     for xxx in *; do
19852        case "$xxx" in
19853            DynaLoader|dynaload) ;;
19854            *)
19855            if $test -f $xxx/$xxx.xs; then
19856                known_extensions="$known_extensions $1$xxx";
19857            elif $test -f $xxx/Makefile.PL; then
19858                nonxs_extensions="$nonxs_extensions $1$xxx";
19859            else
19860                if $test -d $xxx -a $# -lt 10; then
19861                    set $1$xxx/ $*;
19862                    cd "$xxx";
19863                    eval $find_extensions;
19864                    cd ..;
19865                    shift;
19866                fi;
19867            fi
19868            ;;
19869        esac;
19870     done'
19871 tdir=`pwd`
19872 cd "$rsrc/ext"
19873 set X
19874 shift
19875 eval $find_extensions
19876 # Special case:  Add in threads/shared since it is not picked up by the
19877 # recursive find above (and adding in general recursive finding breaks
19878 # SDBM_File/sdbm).  A.D.  10/25/2001.
19879 known_extensions="$known_extensions threads/shared"
19880 set X $nonxs_extensions
19881 shift
19882 nonxs_extensions="$*"
19883 set X $known_extensions
19884 shift
19885 known_extensions="$*"
19886 cd "$tdir"
19887
19888 : Now see which are supported on this system.
19889 avail_ext=''
19890 for xxx in $known_extensions ; do
19891         case "$xxx" in
19892         DB_File|db_file)
19893                 case "$i_db" in
19894                 $define) avail_ext="$avail_ext $xxx" ;;
19895                 esac
19896                 ;;
19897         GDBM_File|gdbm_fil)
19898                 case "$i_gdbm" in 
19899                 $define) avail_ext="$avail_ext $xxx" ;;
19900                 esac
19901                 ;;
19902         I18N/Langinfo|i18n_lan)
19903                 case "$i_langinfo$d_nl_langinfo" in 
19904                 $define$define) avail_ext="$avail_ext $xxx" ;;
19905                 esac
19906                 ;;
19907         NDBM_File|ndbm_fil)
19908                 case "$i_ndbm" in
19909                 $define)
19910                     case "$osname-$use64bitint" in
19911                     hpux-define)
19912                         case "$libs" in
19913                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19914                         esac
19915                         ;;
19916                     *) avail_ext="$avail_ext $xxx" ;;
19917                     esac
19918                     ;;
19919                 esac
19920                 ;;
19921         ODBM_File|odbm_fil) 
19922                 case "${i_dbm}${i_rpcsvcdbm}" in
19923                 *"${define}"*)
19924                     case "$osname-$use64bitint" in
19925                     hpux-define)
19926                         case "$libs" in
19927                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19928                         esac
19929                         ;;
19930                     *) avail_ext="$avail_ext $xxx" ;;
19931                     esac
19932                     ;;
19933                 esac
19934                 ;;
19935         POSIX|posix)
19936                 case "$useposix" in
19937                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19938                 esac
19939                 ;;
19940         Opcode|opcode)
19941                 case "$useopcode" in
19942                 true|define|y) avail_ext="$avail_ext $xxx" ;;
19943                 esac
19944                 ;;
19945         Socket|socket)
19946                 case "$d_socket" in 
19947                 true|$define|y)
19948                     case "$osname" in
19949                     beos) ;; # not unless BONE
19950                     *) avail_ext="$avail_ext $xxx" ;;
19951                     esac
19952                     ;;
19953                 esac
19954                 ;;
19955         Sys/Syslog|sys/syslog)
19956                 : XXX syslog requires socket
19957                 case "$d_socket" in 
19958                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19959                 esac
19960                 ;;
19961         Thread|thread)
19962                 case "$usethreads" in
19963                 true|$define|y)
19964                         case "$useithreads" in
19965                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
19966                         esac
19967                 esac
19968                 ;;
19969         XS/APItest|xs/apitest)
19970                 # This is just for testing.  Skip it unless we have dynamic loading.
19971
19972                 case "$usedl" in
19973                 $define) avail_ext="$avail_ext $xxx" ;;
19974                 esac
19975                 ;;
19976         XS/Typemap|xs/typemap)
19977                 # This is just for testing.  Skip it unless we have dynamic loading.
19978                 case "$usedl" in
19979                 $define) avail_ext="$avail_ext $xxx" ;;
19980                 esac
19981                 ;;
19982         threads|threads/shared)
19983                 # threads and threads::shared are special cases.
19984                 # To stop people from asking "Perl 5.8.0 was supposed
19985                 # to have this new fancy threads implementation but my
19986                 # perl doesn't have it" and from people trying to
19987                 # (re)install the threads module using CPAN.pm and
19988                 # CPAN.pm then offering to reinstall Perl 5.8.0,
19989                 # the threads.pm and threads/shared.pm will always be
19990                 # there, croaking informatively ("you need to rebuild
19991                 # all of Perl with threads, sorry") when threads haven't
19992                 # been compiled in.
19993                 # --jhi
19994                 avail_ext="$avail_ext $xxx"
19995                 ;;
19996         IPC/SysV|ipc/sysv)
19997                 : XXX Do we need a useipcsysv variable here
19998                 case "${d_msg}${d_sem}${d_shm}" in 
19999                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20000                 esac
20001                 ;;
20002         *)      avail_ext="$avail_ext $xxx"
20003                 ;;
20004         esac
20005 done
20006
20007 set X $avail_ext
20008 shift
20009 avail_ext="$*"
20010
20011 : Now see which nonxs extensions are supported on this system.
20012 : For now assume all are.
20013 nonxs_ext=''
20014 for xxx in $nonxs_extensions ; do
20015         case "$xxx" in
20016         *)      nonxs_ext="$nonxs_ext $xxx"
20017                 ;;
20018         esac
20019 done
20020
20021 set X $nonxs_ext
20022 shift
20023 nonxs_ext="$*"
20024
20025 case $usedl in
20026 $define)
20027         $cat <<EOM
20028 A number of extensions are supplied with $package.  You may choose to
20029 compile these extensions for dynamic loading (the default), compile
20030 them into the $package executable (static loading), or not include
20031 them at all.  Answer "none" to include no extensions.
20032 Note that DynaLoader is always built and need not be mentioned here.
20033
20034 EOM
20035         case "$dynamic_ext" in
20036         '')
20037                 : Exclude those listed in static_ext
20038                 dflt=''
20039                 for xxx in $avail_ext; do
20040                         case " $static_ext " in
20041                         *" $xxx "*) ;;
20042                         *) dflt="$dflt $xxx" ;;
20043                         esac
20044                 done
20045                 set X $dflt
20046                 shift
20047                 dflt="$*"
20048                 ;;
20049         *)      dflt="$dynamic_ext"
20050                 # Perhaps we are reusing an old out-of-date config.sh.
20051                 case "$hint" in
20052                 previous)
20053                         if test X"$dynamic_ext" != X"$avail_ext"; then
20054                                 $cat <<EOM
20055 NOTICE:  Your previous config.sh list may be incorrect. 
20056 The extensions now available to you are 
20057         ${avail_ext}
20058 but the default list from your previous config.sh is
20059         ${dynamic_ext} 
20060
20061 EOM
20062                         fi
20063                         ;;
20064                 esac
20065                 ;;
20066         esac
20067         case "$dflt" in
20068         '')     dflt=none;;
20069         esac
20070         rp="What extensions do you wish to load dynamically?"
20071         . ./myread
20072         case "$ans" in
20073         none) dynamic_ext=' ' ;;
20074         *) dynamic_ext="$ans" ;;
20075         esac
20076
20077         case "$static_ext" in
20078         '')
20079                 : Exclude those already listed in dynamic linking
20080                 dflt=''
20081                 for xxx in $avail_ext; do
20082                         case " $dynamic_ext " in
20083                         *" $xxx "*) ;;
20084                         *) dflt="$dflt $xxx" ;;
20085                         esac
20086                 done
20087                 set X $dflt
20088                 shift
20089                 dflt="$*"
20090                 ;;
20091         *)  dflt="$static_ext" 
20092                 ;;
20093         esac
20094
20095         case "$dflt" in
20096         '')     dflt=none;;
20097         esac
20098         rp="What extensions do you wish to load statically?"
20099         . ./myread
20100         case "$ans" in
20101         none) static_ext=' ' ;;
20102         *) static_ext="$ans" ;;
20103         esac
20104         ;;
20105 *)
20106         $cat <<EOM
20107 A number of extensions are supplied with $package.  Answer "none" 
20108 to include no extensions. 
20109 Note that DynaLoader is always built and need not be mentioned here.
20110
20111 EOM
20112         case "$static_ext" in
20113         '') dflt="$avail_ext" ;;
20114         *)      dflt="$static_ext"
20115                 # Perhaps we are reusing an old out-of-date config.sh.
20116                 case "$hint" in
20117                 previous)
20118                         if test X"$static_ext" != X"$avail_ext"; then
20119                                 $cat <<EOM
20120 NOTICE:  Your previous config.sh list may be incorrect. 
20121 The extensions now available to you are 
20122         ${avail_ext}
20123 but the default list from your previous config.sh is
20124         ${static_ext} 
20125
20126 EOM
20127                         fi
20128                         ;;
20129                 esac
20130                 ;;
20131         esac
20132         : Exclude those that are not xs extensions
20133         case "$dflt" in
20134         '')     dflt=none;;
20135         esac
20136         rp="What extensions do you wish to include?"
20137         . ./myread
20138         case "$ans" in
20139         none) static_ext=' ' ;;
20140         *) static_ext="$ans" ;;
20141         esac
20142         ;;
20143 esac
20144 #        
20145 # Encode is a special case.  If we are building Encode as a static
20146 # extension, we need to explicitly list its subextensions as well.
20147 # For other nested extensions, this is handled automatically by
20148 # the appropriate Makefile.PL.
20149 case " $static_ext " in
20150         *" Encode "*) # Add the subextensions of Encode
20151         cd "$rsrc/ext"
20152         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20153                 static_ext="$static_ext Encode/$xxx"
20154         done
20155         cd "$tdir"
20156         ;;
20157 esac
20158
20159 set X $dynamic_ext $static_ext $nonxs_ext
20160 shift
20161 extensions="$*"
20162
20163 : Remove libraries needed only for extensions
20164 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20165 : The exception is SunOS 4.x, which needs them.
20166 case "${osname}X${osvers}" in
20167 sunos*X4*)
20168     perllibs="$libs"
20169     ;;
20170 *) case "$usedl" in
20171     $define|true|[yY]*)
20172             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20173             shift
20174             perllibs="$*"
20175             ;;
20176     *)  perllibs="$libs"
20177             ;;
20178     esac
20179     ;;
20180 esac
20181
20182 : Remove build directory name from cppstdin so it can be used from
20183 : either the present location or the final installed location.
20184 echo " "
20185 : Get out of the UU directory to get correct path name.
20186 cd ..
20187 case "$cppstdin" in
20188 `pwd`/cppstdin)
20189         echo "Stripping down cppstdin path name"
20190         cppstdin=cppstdin
20191         ;;
20192 esac
20193 cd UU
20194
20195 : end of configuration questions
20196 echo " "
20197 echo "End of configuration questions."
20198 echo " "
20199
20200 : back to where it started
20201 if test -d ../UU; then
20202         cd ..
20203 fi
20204
20205 : configuration may be patched via a 'config.arch' file
20206 if $test -f config.arch; then
20207         echo "I see a config.arch file, loading it."
20208         . ./config.arch
20209 fi
20210
20211 : configuration may be patched via a 'config.over' file
20212 if $test -f config.over; then
20213         echo " "
20214         dflt=y
20215         rp='I see a config.over file.  Do you wish to load it?'
20216         . UU/myread
20217         case "$ans" in
20218         n*) echo "OK, I'll ignore it.";;
20219         *)      . ./config.over
20220                 echo "Configuration override changes have been loaded."
20221                 ;;
20222         esac
20223 fi
20224
20225 : in case they want portability, strip down executable paths
20226 case "$d_portable" in
20227 "$define")
20228         echo " "
20229         echo "Stripping down executable paths..." >&4
20230         for file in $loclist $trylist; do
20231                 eval temp=\$$file
20232                 eval $file=`basename $temp`
20233         done
20234         ;;
20235 esac
20236
20237 : create config.sh file
20238 echo " "
20239 echo "Creating config.sh..." >&4
20240 $spitshell <<EOT >config.sh
20241 $startsh
20242 #
20243 # This file was produced by running the Configure script. It holds all the
20244 # definitions figured out by Configure. Should you modify one of these values,
20245 # do not forget to propagate your changes by running "Configure -der". You may
20246 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20247 #
20248
20249 # Package name      : $package
20250 # Source directory  : $src
20251 # Configuration time: $cf_time
20252 # Configured by     : $cf_by
20253 # Target system     : $myuname
20254
20255 Author='$Author'
20256 Date='$Date'
20257 Header='$Header'
20258 Id='$Id'
20259 Locker='$Locker'
20260 Log='$Log'
20261 Mcc='$Mcc'
20262 RCSfile='$RCSfile'
20263 Revision='$Revision'
20264 Source='$Source'
20265 State='$State'
20266 _a='$_a'
20267 _exe='$_exe'
20268 _o='$_o'
20269 afs='$afs'
20270 afsroot='$afsroot'
20271 alignbytes='$alignbytes'
20272 ansi2knr='$ansi2knr'
20273 aphostname='$aphostname'
20274 api_revision='$api_revision'
20275 api_subversion='$api_subversion'
20276 api_version='$api_version'
20277 api_versionstring='$api_versionstring'
20278 ar='$ar'
20279 archlib='$archlib'
20280 archlibexp='$archlibexp'
20281 archname64='$archname64'
20282 archname='$archname'
20283 archobjs='$archobjs'
20284 asctime_r_proto='$asctime_r_proto'
20285 awk='$awk'
20286 baserev='$baserev'
20287 bash='$bash'
20288 bin='$bin'
20289 binexp='$binexp'
20290 bison='$bison'
20291 byacc='$byacc'
20292 byteorder='$byteorder'
20293 c='$c'
20294 castflags='$castflags'
20295 cat='$cat'
20296 cc='$cc'
20297 cccdlflags='$cccdlflags'
20298 ccdlflags='$ccdlflags'
20299 ccflags='$ccflags'
20300 ccflags_uselargefiles='$ccflags_uselargefiles'
20301 ccname='$ccname'
20302 ccsymbols='$ccsymbols'
20303 ccversion='$ccversion'
20304 cf_by='$cf_by'
20305 cf_email='$cf_email'
20306 cf_time='$cf_time'
20307 charsize='$charsize'
20308 chgrp='$chgrp'
20309 chmod='$chmod'
20310 chown='$chown'
20311 clocktype='$clocktype'
20312 comm='$comm'
20313 compress='$compress'
20314 contains='$contains'
20315 cp='$cp'
20316 cpio='$cpio'
20317 cpp='$cpp'
20318 cpp_stuff='$cpp_stuff'
20319 cppccsymbols='$cppccsymbols'
20320 cppflags='$cppflags'
20321 cpplast='$cpplast'
20322 cppminus='$cppminus'
20323 cpprun='$cpprun'
20324 cppstdin='$cppstdin'
20325 cppsymbols='$cppsymbols'
20326 crypt_r_proto='$crypt_r_proto'
20327 cryptlib='$cryptlib'
20328 csh='$csh'
20329 ctermid_r_proto='$ctermid_r_proto'
20330 ctime_r_proto='$ctime_r_proto'
20331 d_Gconvert='$d_Gconvert'
20332 d_PRIEUldbl='$d_PRIEUldbl'
20333 d_PRIFUldbl='$d_PRIFUldbl'
20334 d_PRIGUldbl='$d_PRIGUldbl'
20335 d_PRIXU64='$d_PRIXU64'
20336 d_PRId64='$d_PRId64'
20337 d_PRIeldbl='$d_PRIeldbl'
20338 d_PRIfldbl='$d_PRIfldbl'
20339 d_PRIgldbl='$d_PRIgldbl'
20340 d_PRIi64='$d_PRIi64'
20341 d_PRIo64='$d_PRIo64'
20342 d_PRIu64='$d_PRIu64'
20343 d_PRIx64='$d_PRIx64'
20344 d_SCNfldbl='$d_SCNfldbl'
20345 d__fwalk='$d__fwalk'
20346 d_access='$d_access'
20347 d_accessx='$d_accessx'
20348 d_aintl='$d_aintl'
20349 d_alarm='$d_alarm'
20350 d_archlib='$d_archlib'
20351 d_asctime_r='$d_asctime_r'
20352 d_atolf='$d_atolf'
20353 d_atoll='$d_atoll'
20354 d_attribut='$d_attribut'
20355 d_bcmp='$d_bcmp'
20356 d_bcopy='$d_bcopy'
20357 d_bsd='$d_bsd'
20358 d_bsdgetpgrp='$d_bsdgetpgrp'
20359 d_bsdsetpgrp='$d_bsdsetpgrp'
20360 d_bzero='$d_bzero'
20361 d_casti32='$d_casti32'
20362 d_castneg='$d_castneg'
20363 d_charvspr='$d_charvspr'
20364 d_chown='$d_chown'
20365 d_chroot='$d_chroot'
20366 d_chsize='$d_chsize'
20367 d_class='$d_class'
20368 d_closedir='$d_closedir'
20369 d_cmsghdr_s='$d_cmsghdr_s'
20370 d_const='$d_const'
20371 d_copysignl='$d_copysignl'
20372 d_crypt='$d_crypt'
20373 d_crypt_r='$d_crypt_r'
20374 d_csh='$d_csh'
20375 d_ctermid_r='$d_ctermid_r'
20376 d_ctime_r='$d_ctime_r'
20377 d_cuserid='$d_cuserid'
20378 d_dbl_dig='$d_dbl_dig'
20379 d_dbminitproto='$d_dbminitproto'
20380 d_difftime='$d_difftime'
20381 d_dirfd='$d_dirfd'
20382 d_dirnamlen='$d_dirnamlen'
20383 d_dlerror='$d_dlerror'
20384 d_dlopen='$d_dlopen'
20385 d_dlsymun='$d_dlsymun'
20386 d_dosuid='$d_dosuid'
20387 d_drand48_r='$d_drand48_r'
20388 d_drand48proto='$d_drand48proto'
20389 d_dup2='$d_dup2'
20390 d_eaccess='$d_eaccess'
20391 d_endgrent='$d_endgrent'
20392 d_endgrent_r='$d_endgrent_r'
20393 d_endhent='$d_endhent'
20394 d_endhostent_r='$d_endhostent_r'
20395 d_endnent='$d_endnent'
20396 d_endnetent_r='$d_endnetent_r'
20397 d_endpent='$d_endpent'
20398 d_endprotoent_r='$d_endprotoent_r'
20399 d_endpwent='$d_endpwent'
20400 d_endpwent_r='$d_endpwent_r'
20401 d_endsent='$d_endsent'
20402 d_endservent_r='$d_endservent_r'
20403 d_eofnblk='$d_eofnblk'
20404 d_eunice='$d_eunice'
20405 d_fchdir='$d_fchdir'
20406 d_fchmod='$d_fchmod'
20407 d_fchown='$d_fchown'
20408 d_fcntl='$d_fcntl'
20409 d_fcntl_can_lock='$d_fcntl_can_lock'
20410 d_fd_macros='$d_fd_macros'
20411 d_fd_set='$d_fd_set'
20412 d_fds_bits='$d_fds_bits'
20413 d_fgetpos='$d_fgetpos'
20414 d_finite='$d_finite'
20415 d_finitel='$d_finitel'
20416 d_flexfnam='$d_flexfnam'
20417 d_flock='$d_flock'
20418 d_flockproto='$d_flockproto'
20419 d_fork='$d_fork'
20420 d_fp_class='$d_fp_class'
20421 d_fpathconf='$d_fpathconf'
20422 d_fpclass='$d_fpclass'
20423 d_fpclassify='$d_fpclassify'
20424 d_fpclassl='$d_fpclassl'
20425 d_fpos64_t='$d_fpos64_t'
20426 d_frexpl='$d_frexpl'
20427 d_fs_data_s='$d_fs_data_s'
20428 d_fseeko='$d_fseeko'
20429 d_fsetpos='$d_fsetpos'
20430 d_fstatfs='$d_fstatfs'
20431 d_fstatvfs='$d_fstatvfs'
20432 d_fsync='$d_fsync'
20433 d_ftello='$d_ftello'
20434 d_ftime='$d_ftime'
20435 d_getcwd='$d_getcwd'
20436 d_getespwnam='$d_getespwnam'
20437 d_getfsstat='$d_getfsstat'
20438 d_getgrent='$d_getgrent'
20439 d_getgrent_r='$d_getgrent_r'
20440 d_getgrgid_r='$d_getgrgid_r'
20441 d_getgrnam_r='$d_getgrnam_r'
20442 d_getgrps='$d_getgrps'
20443 d_gethbyaddr='$d_gethbyaddr'
20444 d_gethbyname='$d_gethbyname'
20445 d_gethent='$d_gethent'
20446 d_gethname='$d_gethname'
20447 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20448 d_gethostbyname_r='$d_gethostbyname_r'
20449 d_gethostent_r='$d_gethostent_r'
20450 d_gethostprotos='$d_gethostprotos'
20451 d_getitimer='$d_getitimer'
20452 d_getlogin='$d_getlogin'
20453 d_getlogin_r='$d_getlogin_r'
20454 d_getmnt='$d_getmnt'
20455 d_getmntent='$d_getmntent'
20456 d_getnbyaddr='$d_getnbyaddr'
20457 d_getnbyname='$d_getnbyname'
20458 d_getnent='$d_getnent'
20459 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20460 d_getnetbyname_r='$d_getnetbyname_r'
20461 d_getnetent_r='$d_getnetent_r'
20462 d_getnetprotos='$d_getnetprotos'
20463 d_getpagsz='$d_getpagsz'
20464 d_getpbyname='$d_getpbyname'
20465 d_getpbynumber='$d_getpbynumber'
20466 d_getpent='$d_getpent'
20467 d_getpgid='$d_getpgid'
20468 d_getpgrp2='$d_getpgrp2'
20469 d_getpgrp='$d_getpgrp'
20470 d_getppid='$d_getppid'
20471 d_getprior='$d_getprior'
20472 d_getprotobyname_r='$d_getprotobyname_r'
20473 d_getprotobynumber_r='$d_getprotobynumber_r'
20474 d_getprotoent_r='$d_getprotoent_r'
20475 d_getprotoprotos='$d_getprotoprotos'
20476 d_getprpwnam='$d_getprpwnam'
20477 d_getpwent='$d_getpwent'
20478 d_getpwent_r='$d_getpwent_r'
20479 d_getpwnam_r='$d_getpwnam_r'
20480 d_getpwuid_r='$d_getpwuid_r'
20481 d_getsbyname='$d_getsbyname'
20482 d_getsbyport='$d_getsbyport'
20483 d_getsent='$d_getsent'
20484 d_getservbyname_r='$d_getservbyname_r'
20485 d_getservbyport_r='$d_getservbyport_r'
20486 d_getservent_r='$d_getservent_r'
20487 d_getservprotos='$d_getservprotos'
20488 d_getspnam='$d_getspnam'
20489 d_getspnam_r='$d_getspnam_r'
20490 d_gettimeod='$d_gettimeod'
20491 d_gmtime_r='$d_gmtime_r'
20492 d_gnulibc='$d_gnulibc'
20493 d_grpasswd='$d_grpasswd'
20494 d_hasmntopt='$d_hasmntopt'
20495 d_htonl='$d_htonl'
20496 d_ilogbl='$d_ilogbl'
20497 d_index='$d_index'
20498 d_inetaton='$d_inetaton'
20499 d_int64_t='$d_int64_t'
20500 d_isascii='$d_isascii'
20501 d_isfinite='$d_isfinite'
20502 d_isinf='$d_isinf'
20503 d_isnan='$d_isnan'
20504 d_isnanl='$d_isnanl'
20505 d_killpg='$d_killpg'
20506 d_lchown='$d_lchown'
20507 d_ldbl_dig='$d_ldbl_dig'
20508 d_link='$d_link'
20509 d_localtime_r='$d_localtime_r'
20510 d_locconv='$d_locconv'
20511 d_lockf='$d_lockf'
20512 d_longdbl='$d_longdbl'
20513 d_longlong='$d_longlong'
20514 d_lseekproto='$d_lseekproto'
20515 d_lstat='$d_lstat'
20516 d_madvise='$d_madvise'
20517 d_mblen='$d_mblen'
20518 d_mbstowcs='$d_mbstowcs'
20519 d_mbtowc='$d_mbtowc'
20520 d_memchr='$d_memchr'
20521 d_memcmp='$d_memcmp'
20522 d_memcpy='$d_memcpy'
20523 d_memmove='$d_memmove'
20524 d_memset='$d_memset'
20525 d_mkdir='$d_mkdir'
20526 d_mkdtemp='$d_mkdtemp'
20527 d_mkfifo='$d_mkfifo'
20528 d_mkstemp='$d_mkstemp'
20529 d_mkstemps='$d_mkstemps'
20530 d_mktime='$d_mktime'
20531 d_mmap='$d_mmap'
20532 d_modfl='$d_modfl'
20533 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20534 d_modflproto='$d_modflproto'
20535 d_mprotect='$d_mprotect'
20536 d_msg='$d_msg'
20537 d_msg_ctrunc='$d_msg_ctrunc'
20538 d_msg_dontroute='$d_msg_dontroute'
20539 d_msg_oob='$d_msg_oob'
20540 d_msg_peek='$d_msg_peek'
20541 d_msg_proxy='$d_msg_proxy'
20542 d_msgctl='$d_msgctl'
20543 d_msgget='$d_msgget'
20544 d_msghdr_s='$d_msghdr_s'
20545 d_msgrcv='$d_msgrcv'
20546 d_msgsnd='$d_msgsnd'
20547 d_msync='$d_msync'
20548 d_munmap='$d_munmap'
20549 d_mymalloc='$d_mymalloc'
20550 d_nanosleep='$d_nanosleep'
20551 d_nice='$d_nice'
20552 d_nl_langinfo='$d_nl_langinfo'
20553 d_nv_preserves_uv='$d_nv_preserves_uv'
20554 d_off64_t='$d_off64_t'
20555 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20556 d_oldpthreads='$d_oldpthreads'
20557 d_oldsock='$d_oldsock'
20558 d_open3='$d_open3'
20559 d_pathconf='$d_pathconf'
20560 d_pause='$d_pause'
20561 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20562 d_phostname='$d_phostname'
20563 d_pipe='$d_pipe'
20564 d_poll='$d_poll'
20565 d_portable='$d_portable'
20566 d_procselfexe='$d_procselfexe'
20567 d_pthread_atfork='$d_pthread_atfork'
20568 d_pthread_yield='$d_pthread_yield'
20569 d_pwage='$d_pwage'
20570 d_pwchange='$d_pwchange'
20571 d_pwclass='$d_pwclass'
20572 d_pwcomment='$d_pwcomment'
20573 d_pwexpire='$d_pwexpire'
20574 d_pwgecos='$d_pwgecos'
20575 d_pwpasswd='$d_pwpasswd'
20576 d_pwquota='$d_pwquota'
20577 d_qgcvt='$d_qgcvt'
20578 d_quad='$d_quad'
20579 d_random_r='$d_random_r'
20580 d_readdir64_r='$d_readdir64_r'
20581 d_readdir='$d_readdir'
20582 d_readdir_r='$d_readdir_r'
20583 d_readlink='$d_readlink'
20584 d_readv='$d_readv'
20585 d_recvmsg='$d_recvmsg'
20586 d_rename='$d_rename'
20587 d_rewinddir='$d_rewinddir'
20588 d_rmdir='$d_rmdir'
20589 d_safebcpy='$d_safebcpy'
20590 d_safemcpy='$d_safemcpy'
20591 d_sanemcmp='$d_sanemcmp'
20592 d_sbrkproto='$d_sbrkproto'
20593 d_scalbnl='$d_scalbnl'
20594 d_sched_yield='$d_sched_yield'
20595 d_scm_rights='$d_scm_rights'
20596 d_seekdir='$d_seekdir'
20597 d_select='$d_select'
20598 d_sem='$d_sem'
20599 d_semctl='$d_semctl'
20600 d_semctl_semid_ds='$d_semctl_semid_ds'
20601 d_semctl_semun='$d_semctl_semun'
20602 d_semget='$d_semget'
20603 d_semop='$d_semop'
20604 d_sendmsg='$d_sendmsg'
20605 d_setegid='$d_setegid'
20606 d_seteuid='$d_seteuid'
20607 d_setgrent='$d_setgrent'
20608 d_setgrent_r='$d_setgrent_r'
20609 d_setgrps='$d_setgrps'
20610 d_sethent='$d_sethent'
20611 d_sethostent_r='$d_sethostent_r'
20612 d_setitimer='$d_setitimer'
20613 d_setlinebuf='$d_setlinebuf'
20614 d_setlocale='$d_setlocale'
20615 d_setlocale_r='$d_setlocale_r'
20616 d_setnent='$d_setnent'
20617 d_setnetent_r='$d_setnetent_r'
20618 d_setpent='$d_setpent'
20619 d_setpgid='$d_setpgid'
20620 d_setpgrp2='$d_setpgrp2'
20621 d_setpgrp='$d_setpgrp'
20622 d_setprior='$d_setprior'
20623 d_setproctitle='$d_setproctitle'
20624 d_setprotoent_r='$d_setprotoent_r'
20625 d_setpwent='$d_setpwent'
20626 d_setpwent_r='$d_setpwent_r'
20627 d_setregid='$d_setregid'
20628 d_setresgid='$d_setresgid'
20629 d_setresuid='$d_setresuid'
20630 d_setreuid='$d_setreuid'
20631 d_setrgid='$d_setrgid'
20632 d_setruid='$d_setruid'
20633 d_setsent='$d_setsent'
20634 d_setservent_r='$d_setservent_r'
20635 d_setsid='$d_setsid'
20636 d_setvbuf='$d_setvbuf'
20637 d_sfio='$d_sfio'
20638 d_shm='$d_shm'
20639 d_shmat='$d_shmat'
20640 d_shmatprototype='$d_shmatprototype'
20641 d_shmctl='$d_shmctl'
20642 d_shmdt='$d_shmdt'
20643 d_shmget='$d_shmget'
20644 d_sigaction='$d_sigaction'
20645 d_sigprocmask='$d_sigprocmask'
20646 d_sigsetjmp='$d_sigsetjmp'
20647 d_sockatmark='$d_sockatmark'
20648 d_sockatmarkproto='$d_sockatmarkproto'
20649 d_socket='$d_socket'
20650 d_socklen_t='$d_socklen_t'
20651 d_sockpair='$d_sockpair'
20652 d_socks5_init='$d_socks5_init'
20653 d_sqrtl='$d_sqrtl'
20654 d_srand48_r='$d_srand48_r'
20655 d_srandom_r='$d_srandom_r'
20656 d_sresgproto='$d_sresgproto'
20657 d_sresuproto='$d_sresuproto'
20658 d_statblks='$d_statblks'
20659 d_statfs_f_flags='$d_statfs_f_flags'
20660 d_statfs_s='$d_statfs_s'
20661 d_statvfs='$d_statvfs'
20662 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20663 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20664 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20665 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20666 d_stdio_stream_array='$d_stdio_stream_array'
20667 d_stdiobase='$d_stdiobase'
20668 d_stdstdio='$d_stdstdio'
20669 d_strchr='$d_strchr'
20670 d_strcoll='$d_strcoll'
20671 d_strctcpy='$d_strctcpy'
20672 d_strerrm='$d_strerrm'
20673 d_strerror='$d_strerror'
20674 d_strerror_r='$d_strerror_r'
20675 d_strftime='$d_strftime'
20676 d_strtod='$d_strtod'
20677 d_strtol='$d_strtol'
20678 d_strtold='$d_strtold'
20679 d_strtoll='$d_strtoll'
20680 d_strtoq='$d_strtoq'
20681 d_strtoul='$d_strtoul'
20682 d_strtoull='$d_strtoull'
20683 d_strtouq='$d_strtouq'
20684 d_strxfrm='$d_strxfrm'
20685 d_suidsafe='$d_suidsafe'
20686 d_symlink='$d_symlink'
20687 d_syscall='$d_syscall'
20688 d_syscallproto='$d_syscallproto'
20689 d_sysconf='$d_sysconf'
20690 d_sysernlst='$d_sysernlst'
20691 d_syserrlst='$d_syserrlst'
20692 d_system='$d_system'
20693 d_tcgetpgrp='$d_tcgetpgrp'
20694 d_tcsetpgrp='$d_tcsetpgrp'
20695 d_telldir='$d_telldir'
20696 d_telldirproto='$d_telldirproto'
20697 d_time='$d_time'
20698 d_times='$d_times'
20699 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20700 d_tm_tm_zone='$d_tm_tm_zone'
20701 d_tmpnam_r='$d_tmpnam_r'
20702 d_truncate='$d_truncate'
20703 d_ttyname_r='$d_ttyname_r'
20704 d_tzname='$d_tzname'
20705 d_u32align='$d_u32align'
20706 d_ualarm='$d_ualarm'
20707 d_umask='$d_umask'
20708 d_uname='$d_uname'
20709 d_union_semun='$d_union_semun'
20710 d_unordered='$d_unordered'
20711 d_usleep='$d_usleep'
20712 d_usleepproto='$d_usleepproto'
20713 d_ustat='$d_ustat'
20714 d_vendorarch='$d_vendorarch'
20715 d_vendorbin='$d_vendorbin'
20716 d_vendorlib='$d_vendorlib'
20717 d_vendorscript='$d_vendorscript'
20718 d_vfork='$d_vfork'
20719 d_void_closedir='$d_void_closedir'
20720 d_voidsig='$d_voidsig'
20721 d_voidtty='$d_voidtty'
20722 d_volatile='$d_volatile'
20723 d_vprintf='$d_vprintf'
20724 d_wait4='$d_wait4'
20725 d_waitpid='$d_waitpid'
20726 d_wcstombs='$d_wcstombs'
20727 d_wctomb='$d_wctomb'
20728 d_writev='$d_writev'
20729 d_xenix='$d_xenix'
20730 date='$date'
20731 db_hashtype='$db_hashtype'
20732 db_prefixtype='$db_prefixtype'
20733 db_version_major='$db_version_major'
20734 db_version_minor='$db_version_minor'
20735 db_version_patch='$db_version_patch'
20736 defvoidused='$defvoidused'
20737 direntrytype='$direntrytype'
20738 dlext='$dlext'
20739 dlsrc='$dlsrc'
20740 doublesize='$doublesize'
20741 drand01='$drand01'
20742 drand48_r_proto='$drand48_r_proto'
20743 dynamic_ext='$dynamic_ext'
20744 eagain='$eagain'
20745 ebcdic='$ebcdic'
20746 echo='$echo'
20747 egrep='$egrep'
20748 emacs='$emacs'
20749 endgrent_r_proto='$endgrent_r_proto'
20750 endhostent_r_proto='$endhostent_r_proto'
20751 endnetent_r_proto='$endnetent_r_proto'
20752 endprotoent_r_proto='$endprotoent_r_proto'
20753 endpwent_r_proto='$endpwent_r_proto'
20754 endservent_r_proto='$endservent_r_proto'
20755 eunicefix='$eunicefix'
20756 exe_ext='$exe_ext'
20757 expr='$expr'
20758 extensions='$extensions'
20759 extras='$extras'
20760 fflushNULL='$fflushNULL'
20761 fflushall='$fflushall'
20762 find='$find'
20763 firstmakefile='$firstmakefile'
20764 flex='$flex'
20765 fpossize='$fpossize'
20766 fpostype='$fpostype'
20767 freetype='$freetype'
20768 from='$from'
20769 full_ar='$full_ar'
20770 full_csh='$full_csh'
20771 full_sed='$full_sed'
20772 gccansipedantic='$gccansipedantic'
20773 gccosandvers='$gccosandvers'
20774 gccversion='$gccversion'
20775 getgrent_r_proto='$getgrent_r_proto'
20776 getgrgid_r_proto='$getgrgid_r_proto'
20777 getgrnam_r_proto='$getgrnam_r_proto'
20778 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20779 gethostbyname_r_proto='$gethostbyname_r_proto'
20780 gethostent_r_proto='$gethostent_r_proto'
20781 getlogin_r_proto='$getlogin_r_proto'
20782 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20783 getnetbyname_r_proto='$getnetbyname_r_proto'
20784 getnetent_r_proto='$getnetent_r_proto'
20785 getprotobyname_r_proto='$getprotobyname_r_proto'
20786 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20787 getprotoent_r_proto='$getprotoent_r_proto'
20788 getpwent_r_proto='$getpwent_r_proto'
20789 getpwnam_r_proto='$getpwnam_r_proto'
20790 getpwuid_r_proto='$getpwuid_r_proto'
20791 getservbyname_r_proto='$getservbyname_r_proto'
20792 getservbyport_r_proto='$getservbyport_r_proto'
20793 getservent_r_proto='$getservent_r_proto'
20794 getspnam_r_proto='$getspnam_r_proto'
20795 gidformat='$gidformat'
20796 gidsign='$gidsign'
20797 gidsize='$gidsize'
20798 gidtype='$gidtype'
20799 glibpth='$glibpth'
20800 gmake='$gmake'
20801 gmtime_r_proto='$gmtime_r_proto'
20802 gnulibc_version='$gnulibc_version'
20803 grep='$grep'
20804 groupcat='$groupcat'
20805 groupstype='$groupstype'
20806 gzip='$gzip'
20807 h_fcntl='$h_fcntl'
20808 h_sysfile='$h_sysfile'
20809 hint='$hint'
20810 hostcat='$hostcat'
20811 html1dir='$html1dir'
20812 html1direxp='$html1direxp'
20813 html3dir='$html3dir'
20814 html3direxp='$html3direxp'
20815 i16size='$i16size'
20816 i16type='$i16type'
20817 i32size='$i32size'
20818 i32type='$i32type'
20819 i64size='$i64size'
20820 i64type='$i64type'
20821 i8size='$i8size'
20822 i8type='$i8type'
20823 i_arpainet='$i_arpainet'
20824 i_bsdioctl='$i_bsdioctl'
20825 i_crypt='$i_crypt'
20826 i_db='$i_db'
20827 i_dbm='$i_dbm'
20828 i_dirent='$i_dirent'
20829 i_dld='$i_dld'
20830 i_dlfcn='$i_dlfcn'
20831 i_fcntl='$i_fcntl'
20832 i_float='$i_float'
20833 i_fp='$i_fp'
20834 i_fp_class='$i_fp_class'
20835 i_gdbm='$i_gdbm'
20836 i_grp='$i_grp'
20837 i_ieeefp='$i_ieeefp'
20838 i_inttypes='$i_inttypes'
20839 i_langinfo='$i_langinfo'
20840 i_libutil='$i_libutil'
20841 i_limits='$i_limits'
20842 i_locale='$i_locale'
20843 i_machcthr='$i_machcthr'
20844 i_malloc='$i_malloc'
20845 i_math='$i_math'
20846 i_memory='$i_memory'
20847 i_mntent='$i_mntent'
20848 i_ndbm='$i_ndbm'
20849 i_netdb='$i_netdb'
20850 i_neterrno='$i_neterrno'
20851 i_netinettcp='$i_netinettcp'
20852 i_niin='$i_niin'
20853 i_poll='$i_poll'
20854 i_prot='$i_prot'
20855 i_pthread='$i_pthread'
20856 i_pwd='$i_pwd'
20857 i_rpcsvcdbm='$i_rpcsvcdbm'
20858 i_sfio='$i_sfio'
20859 i_sgtty='$i_sgtty'
20860 i_shadow='$i_shadow'
20861 i_socks='$i_socks'
20862 i_stdarg='$i_stdarg'
20863 i_stddef='$i_stddef'
20864 i_stdlib='$i_stdlib'
20865 i_string='$i_string'
20866 i_sunmath='$i_sunmath'
20867 i_sysaccess='$i_sysaccess'
20868 i_sysdir='$i_sysdir'
20869 i_sysfile='$i_sysfile'
20870 i_sysfilio='$i_sysfilio'
20871 i_sysin='$i_sysin'
20872 i_sysioctl='$i_sysioctl'
20873 i_syslog='$i_syslog'
20874 i_sysmman='$i_sysmman'
20875 i_sysmode='$i_sysmode'
20876 i_sysmount='$i_sysmount'
20877 i_sysndir='$i_sysndir'
20878 i_sysparam='$i_sysparam'
20879 i_sysresrc='$i_sysresrc'
20880 i_syssecrt='$i_syssecrt'
20881 i_sysselct='$i_sysselct'
20882 i_syssockio='$i_syssockio'
20883 i_sysstat='$i_sysstat'
20884 i_sysstatfs='$i_sysstatfs'
20885 i_sysstatvfs='$i_sysstatvfs'
20886 i_systime='$i_systime'
20887 i_systimek='$i_systimek'
20888 i_systimes='$i_systimes'
20889 i_systypes='$i_systypes'
20890 i_sysuio='$i_sysuio'
20891 i_sysun='$i_sysun'
20892 i_sysutsname='$i_sysutsname'
20893 i_sysvfs='$i_sysvfs'
20894 i_syswait='$i_syswait'
20895 i_termio='$i_termio'
20896 i_termios='$i_termios'
20897 i_time='$i_time'
20898 i_unistd='$i_unistd'
20899 i_ustat='$i_ustat'
20900 i_utime='$i_utime'
20901 i_values='$i_values'
20902 i_varargs='$i_varargs'
20903 i_varhdr='$i_varhdr'
20904 i_vfork='$i_vfork'
20905 ignore_versioned_solibs='$ignore_versioned_solibs'
20906 inc_version_list='$inc_version_list'
20907 inc_version_list_init='$inc_version_list_init'
20908 incpath='$incpath'
20909 inews='$inews'
20910 installarchlib='$installarchlib'
20911 installbin='$installbin'
20912 installhtml1dir='$installhtml1dir'
20913 installhtml3dir='$installhtml3dir'
20914 installman1dir='$installman1dir'
20915 installman3dir='$installman3dir'
20916 installprefix='$installprefix'
20917 installprefixexp='$installprefixexp'
20918 installprivlib='$installprivlib'
20919 installscript='$installscript'
20920 installsitearch='$installsitearch'
20921 installsitebin='$installsitebin'
20922 installsitehtml1='$installsitehtml1'
20923 installsitehtml3='$installsitehtml3'
20924 installsitelib='$installsitelib'
20925 installsiteman1='$installsiteman1'
20926 installsiteman3='$installsiteman3'
20927 installsitescript='$installsitescript'
20928 installstyle='$installstyle'
20929 installusrbinperl='$installusrbinperl'
20930 installvendorarch='$installvendorarch'
20931 installvendorbin='$installvendorbin'
20932 installvendorhtml1='$installvendorhtml1'
20933 installvendorhtml3='$installvendorhtml3'
20934 installvendorlib='$installvendorlib'
20935 installvendorman1='$installvendorman1'
20936 installvendorman3='$installvendorman3'
20937 installvendorscript='$installvendorscript'
20938 intsize='$intsize'
20939 issymlink='$issymlink'
20940 ivdformat='$ivdformat'
20941 ivsize='$ivsize'
20942 ivtype='$ivtype'
20943 known_extensions='$known_extensions'
20944 ksh='$ksh'
20945 ld='$ld'
20946 lddlflags='$lddlflags'
20947 ldflags='$ldflags'
20948 ldflags_uselargefiles='$ldflags_uselargefiles'
20949 ldlibpthname='$ldlibpthname'
20950 less='$less'
20951 lib_ext='$lib_ext'
20952 libc='$libc'
20953 libperl='$libperl'
20954 libpth='$libpth'
20955 libs='$libs'
20956 libsdirs='$libsdirs'
20957 libsfiles='$libsfiles'
20958 libsfound='$libsfound'
20959 libspath='$libspath'
20960 libswanted='$libswanted'
20961 libswanted_uselargefiles='$libswanted_uselargefiles'
20962 line='$line'
20963 lint='$lint'
20964 lkflags='$lkflags'
20965 ln='$ln'
20966 lns='$lns'
20967 localtime_r_proto='$localtime_r_proto'
20968 locincpth='$locincpth'
20969 loclibpth='$loclibpth'
20970 longdblsize='$longdblsize'
20971 longlongsize='$longlongsize'
20972 longsize='$longsize'
20973 lp='$lp'
20974 lpr='$lpr'
20975 ls='$ls'
20976 lseeksize='$lseeksize'
20977 lseektype='$lseektype'
20978 mail='$mail'
20979 mailx='$mailx'
20980 make='$make'
20981 make_set_make='$make_set_make'
20982 mallocobj='$mallocobj'
20983 mallocsrc='$mallocsrc'
20984 malloctype='$malloctype'
20985 man1dir='$man1dir'
20986 man1direxp='$man1direxp'
20987 man1ext='$man1ext'
20988 man3dir='$man3dir'
20989 man3direxp='$man3direxp'
20990 man3ext='$man3ext'
20991 mips_type='$mips_type'
20992 mkdir='$mkdir'
20993 mmaptype='$mmaptype'
20994 modetype='$modetype'
20995 more='$more'
20996 multiarch='$multiarch'
20997 mv='$mv'
20998 myarchname='$myarchname'
20999 mydomain='$mydomain'
21000 myhostname='$myhostname'
21001 myuname='$myuname'
21002 n='$n'
21003 need_va_copy='$need_va_copy'
21004 netdb_hlen_type='$netdb_hlen_type'
21005 netdb_host_type='$netdb_host_type'
21006 netdb_name_type='$netdb_name_type'
21007 netdb_net_type='$netdb_net_type'
21008 nm='$nm'
21009 nm_opt='$nm_opt'
21010 nm_so_opt='$nm_so_opt'
21011 nonxs_ext='$nonxs_ext'
21012 nroff='$nroff'
21013 nvEUformat='$nvEUformat'
21014 nvFUformat='$nvFUformat'
21015 nvGUformat='$nvGUformat'
21016 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21017 nveformat='$nveformat'
21018 nvfformat='$nvfformat'
21019 nvgformat='$nvgformat'
21020 nvsize='$nvsize'
21021 nvtype='$nvtype'
21022 o_nonblock='$o_nonblock'
21023 obj_ext='$obj_ext'
21024 old_pthread_create_joinable='$old_pthread_create_joinable'
21025 optimize='$optimize'
21026 orderlib='$orderlib'
21027 osname='$osname'
21028 osvers='$osvers'
21029 otherlibdirs='$otherlibdirs'
21030 package='$package'
21031 pager='$pager'
21032 passcat='$passcat'
21033 patchlevel='$patchlevel'
21034 path_sep='$path_sep'
21035 perl5='$perl5'
21036 perl='$perl'
21037 perl_patchlevel='$perl_patchlevel'
21038 perladmin='$perladmin'
21039 perllibs='$perllibs'
21040 perlpath='$perlpath'
21041 pg='$pg'
21042 phostname='$phostname'
21043 pidtype='$pidtype'
21044 plibpth='$plibpth'
21045 pm_apiversion='$pm_apiversion'
21046 pmake='$pmake'
21047 pr='$pr'
21048 prefix='$prefix'
21049 prefixexp='$prefixexp'
21050 privlib='$privlib'
21051 privlibexp='$privlibexp'
21052 procselfexe='$procselfexe'
21053 prototype='$prototype'
21054 ptrsize='$ptrsize'
21055 quadkind='$quadkind'
21056 quadtype='$quadtype'
21057 randbits='$randbits'
21058 randfunc='$randfunc'
21059 random_r_proto='$random_r_proto'
21060 randseedtype='$randseedtype'
21061 ranlib='$ranlib'
21062 rd_nodata='$rd_nodata'
21063 readdir64_r_proto='$readdir64_r_proto'
21064 readdir_r_proto='$readdir_r_proto'
21065 revision='$revision'
21066 rm='$rm'
21067 rmail='$rmail'
21068 run='$run'
21069 runnm='$runnm'
21070 sPRIEUldbl='$sPRIEUldbl'
21071 sPRIFUldbl='$sPRIFUldbl'
21072 sPRIGUldbl='$sPRIGUldbl'
21073 sPRIXU64='$sPRIXU64'
21074 sPRId64='$sPRId64'
21075 sPRIeldbl='$sPRIeldbl'
21076 sPRIfldbl='$sPRIfldbl'
21077 sPRIgldbl='$sPRIgldbl'
21078 sPRIi64='$sPRIi64'
21079 sPRIo64='$sPRIo64'
21080 sPRIu64='$sPRIu64'
21081 sPRIx64='$sPRIx64'
21082 sSCNfldbl='$sSCNfldbl'
21083 sched_yield='$sched_yield'
21084 scriptdir='$scriptdir'
21085 scriptdirexp='$scriptdirexp'
21086 sed='$sed'
21087 seedfunc='$seedfunc'
21088 selectminbits='$selectminbits'
21089 selecttype='$selecttype'
21090 sendmail='$sendmail'
21091 setgrent_r_proto='$setgrent_r_proto'
21092 sethostent_r_proto='$sethostent_r_proto'
21093 setlocale_r_proto='$setlocale_r_proto'
21094 setnetent_r_proto='$setnetent_r_proto'
21095 setprotoent_r_proto='$setprotoent_r_proto'
21096 setpwent_r_proto='$setpwent_r_proto'
21097 setservent_r_proto='$setservent_r_proto'
21098 sh='$sh'
21099 shar='$shar'
21100 sharpbang='$sharpbang'
21101 shmattype='$shmattype'
21102 shortsize='$shortsize'
21103 shrpenv='$shrpenv'
21104 shsharp='$shsharp'
21105 sig_count='$sig_count'
21106 sig_name='$sig_name'
21107 sig_name_init='$sig_name_init'
21108 sig_num='$sig_num'
21109 sig_num_init='$sig_num_init'
21110 sig_size='$sig_size'
21111 signal_t='$signal_t'
21112 sitearch='$sitearch'
21113 sitearchexp='$sitearchexp'
21114 sitebin='$sitebin'
21115 sitebinexp='$sitebinexp'
21116 sitehtml1='$sitehtml1'
21117 sitehtml1exp='$sitehtml1exp'
21118 sitehtml3='$sitehtml3'
21119 sitehtml3exp='$sitehtml3exp'
21120 sitelib='$sitelib'
21121 sitelib_stem='$sitelib_stem'
21122 sitelibexp='$sitelibexp'
21123 siteman1='$siteman1'
21124 siteman1exp='$siteman1exp'
21125 siteman3='$siteman3'
21126 siteman3exp='$siteman3exp'
21127 siteprefix='$siteprefix'
21128 siteprefixexp='$siteprefixexp'
21129 sitescript='$sitescript'
21130 sitescriptexp='$sitescriptexp'
21131 sizesize='$sizesize'
21132 sizetype='$sizetype'
21133 sleep='$sleep'
21134 smail='$smail'
21135 so='$so'
21136 sockethdr='$sockethdr'
21137 socketlib='$socketlib'
21138 socksizetype='$socksizetype'
21139 sort='$sort'
21140 spackage='$spackage'
21141 spitshell='$spitshell'
21142 srand48_r_proto='$srand48_r_proto'
21143 srandom_r_proto='$srandom_r_proto'
21144 src='$src'
21145 ssizetype='$ssizetype'
21146 startperl='$startperl'
21147 startsh='$startsh'
21148 static_ext='$static_ext'
21149 stdchar='$stdchar'
21150 stdio_base='$stdio_base'
21151 stdio_bufsiz='$stdio_bufsiz'
21152 stdio_cnt='$stdio_cnt'
21153 stdio_filbuf='$stdio_filbuf'
21154 stdio_ptr='$stdio_ptr'
21155 stdio_stream_array='$stdio_stream_array'
21156 strerror_r_proto='$strerror_r_proto'
21157 strings='$strings'
21158 submit='$submit'
21159 subversion='$subversion'
21160 sysman='$sysman'
21161 tail='$tail'
21162 tar='$tar'
21163 targetarch='$targetarch'
21164 tbl='$tbl'
21165 tee='$tee'
21166 test='$test'
21167 timeincl='$timeincl'
21168 timetype='$timetype'
21169 tmpnam_r_proto='$tmpnam_r_proto'
21170 to='$to'
21171 touch='$touch'
21172 tr='$tr'
21173 trnl='$trnl'
21174 troff='$troff'
21175 ttyname_r_proto='$ttyname_r_proto'
21176 u16size='$u16size'
21177 u16type='$u16type'
21178 u32size='$u32size'
21179 u32type='$u32type'
21180 u64size='$u64size'
21181 u64type='$u64type'
21182 u8size='$u8size'
21183 u8type='$u8type'
21184 uidformat='$uidformat'
21185 uidsign='$uidsign'
21186 uidsize='$uidsize'
21187 uidtype='$uidtype'
21188 uname='$uname'
21189 uniq='$uniq'
21190 uquadtype='$uquadtype'
21191 use5005threads='$use5005threads'
21192 use64bitall='$use64bitall'
21193 use64bitint='$use64bitint'
21194 usecrosscompile='$usecrosscompile'
21195 usedl='$usedl'
21196 useithreads='$useithreads'
21197 uselargefiles='$uselargefiles'
21198 uselongdouble='$uselongdouble'
21199 usemorebits='$usemorebits'
21200 usemultiplicity='$usemultiplicity'
21201 usemymalloc='$usemymalloc'
21202 usenm='$usenm'
21203 useopcode='$useopcode'
21204 useperlio='$useperlio'
21205 useposix='$useposix'
21206 usereentrant='$usereentrant'
21207 usesfio='$usesfio'
21208 useshrplib='$useshrplib'
21209 usesocks='$usesocks'
21210 usethreads='$usethreads'
21211 usevendorprefix='$usevendorprefix'
21212 usevfork='$usevfork'
21213 usrinc='$usrinc'
21214 uuname='$uuname'
21215 uvXUformat='$uvXUformat'
21216 uvoformat='$uvoformat'
21217 uvsize='$uvsize'
21218 uvtype='$uvtype'
21219 uvuformat='$uvuformat'
21220 uvxformat='$uvxformat'
21221 vendorarch='$vendorarch'
21222 vendorarchexp='$vendorarchexp'
21223 vendorbin='$vendorbin'
21224 vendorbinexp='$vendorbinexp'
21225 vendorhtml1='$vendorhtml1'
21226 vendorhtml1exp='$vendorhtml1exp'
21227 vendorhtml3='$vendorhtml3'
21228 vendorhtml3exp='$vendorhtml3exp'
21229 vendorlib='$vendorlib'
21230 vendorlib_stem='$vendorlib_stem'
21231 vendorlibexp='$vendorlibexp'
21232 vendorman1='$vendorman1'
21233 vendorman1exp='$vendorman1exp'
21234 vendorman3='$vendorman3'
21235 vendorman3exp='$vendorman3exp'
21236 vendorprefix='$vendorprefix'
21237 vendorprefixexp='$vendorprefixexp'
21238 vendorscript='$vendorscript'
21239 vendorscriptexp='$vendorscriptexp'
21240 version='$version'
21241 version_patchlevel_string='$version_patchlevel_string'
21242 versiononly='$versiononly'
21243 vi='$vi'
21244 voidflags='$voidflags'
21245 xlibpth='$xlibpth'
21246 xs_apiversion='$xs_apiversion'
21247 yacc='$yacc'
21248 yaccflags='$yaccflags'
21249 zcat='$zcat'
21250 zip='$zip'
21251 EOT
21252
21253 : Add in command line options if available
21254 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21255
21256 : add special variables
21257 $test -f $src/patchlevel.h && \
21258 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21259 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21260 echo "PERL_CONFIG_SH=true" >>config.sh
21261
21262 : propagate old symbols
21263 if $test -f UU/config.sh; then
21264         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21265         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21266         $sort | $uniq -u >UU/oldsyms
21267         set X `cat UU/oldsyms`
21268         shift
21269         case $# in
21270         0) ;;
21271         *)
21272                 cat <<EOM
21273 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21274 EOM
21275                 echo "# Variables propagated from previous config.sh file." >>config.sh
21276                 for sym in `cat UU/oldsyms`; do
21277                         echo "    Propagating $hint variable "'$'"$sym..."
21278                         eval 'tmp="$'"${sym}"'"'
21279                         echo "$tmp" | \
21280                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21281                 done
21282                 ;;
21283         esac
21284 fi
21285
21286 : Finish up by extracting the .SH files
21287 case "$alldone" in
21288 exit)
21289         $rm -rf UU
21290         echo "Extraction done."
21291         exit 0
21292         ;;
21293 cont)
21294         ;;
21295 '')
21296         dflt=''
21297         nostick=true
21298         $cat <<EOM
21299
21300 If you'd like to make any changes to the config.sh file before I begin
21301 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21302
21303 EOM
21304         rp="Press return or use a shell escape to edit config.sh:"
21305         . UU/myread
21306         nostick=''
21307         case "$ans" in
21308         '') ;;
21309         *) : in case they cannot read
21310                 sh 1>&4 -c "$ans";;
21311         esac
21312         ;;
21313 esac
21314
21315 : if this fails, just run all the .SH files by hand
21316 . ./config.sh
21317
21318 echo " "
21319 exec 1>&4
21320 pwd=`pwd`
21321 . ./UU/extract
21322 cd "$pwd"
21323
21324 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21325         dflt=y
21326         case "$silent" in
21327         true) ;;
21328         *)
21329                 $cat <<EOM
21330
21331 Now you need to generate make dependencies by running "$make depend".
21332 You might prefer to run it in background: "$make depend > makedepend.out &"
21333 It can take a while, so you might not want to run it right now.
21334
21335 EOM
21336                 ;;
21337         esac
21338         rp="Run $make depend now?"
21339         . UU/myread
21340         case "$ans" in
21341         y*)
21342                 $make depend && echo "Now you must run '$make'."
21343                 ;;
21344         *)
21345                 echo "You must run '$make depend' then '$make'."
21346                 ;;
21347         esac
21348 elif test -f [Mm]akefile; then
21349         echo " "
21350         echo "Now you must run a $make."
21351 else
21352         echo "Configure done."
21353 fi
21354
21355 if $test -f Policy.sh; then
21356     $cat <<EOM
21357
21358 If you compile $package on a different machine or from a different object
21359 directory, copy the Policy.sh file from this object directory to the
21360 new one before you run Configure -- this will help you with most of
21361 the policy defaults.
21362
21363 EOM
21364 fi
21365 if $test -f config.msg; then
21366     echo "Hmm.  I also noted the following information while running:"
21367     echo " "
21368     $cat config.msg >&4
21369     $rm -f config.msg
21370 fi
21371 $rm -f kit*isdone ark*isdone
21372 $rm -rf UU
21373
21374 : End of Configure
21375