This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: ../lib/ExtUtils/t/Embed.t failure on Win32/GCC
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Feb 26 10:02:07 MET 2004 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat c1$$ c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f c1$$ c2$$
49
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
51         cat >&4 <<EOF
52 ***
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
57 ***
58 EOF
59         exit 1
60 fi
61
62 : compute my invocation name
63 me=$0
64 case "$0" in
65 */*)
66         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
67         test "$me" || me=$0
68         ;;
69 esac
70
71 : Proper separator for the PATH environment variable
72 p_=:
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75     if test -n "$OS2_SHELL"; then
76                 p_=\;
77                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
79                 is_os2=yes
80         elif test -n "$DJGPP"; then
81                 case "X${MACHTYPE:-nonesuchmach}" in
82                 *cygwin) ;;
83                 *) p_=\; ;;
84                 esac
85         fi
86 fi
87
88 : Proper PATH setting
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
98
99 for p in $paths
100 do
101         case "$p_$PATH$p_" in
102         *$p_$p$p_*) ;;
103         *) test -d $p && PATH=$PATH$p_$p ;;
104         esac
105 done
106
107 PATH=.$p_$PATH
108 export PATH
109
110 : shall we be using ksh?
111 inksh=''
112 needksh=''
113 avoidksh=''
114 newsh=/bin/ksh
115 changesh=''
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
117                 inksh=true
118 fi
119 if test -f /hp-ux -a -f /bin/ksh; then
120         needksh='to avoid sh bug in "here document" expansion'
121 fi
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123         if test X`/usr/bin/uname -v` = X4; then
124                 avoidksh="to avoid AIX 4's /bin/sh"
125                 newsh=/usr/bin/bsh
126         fi
127 fi
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129         if test X`/usr/bin/uname -s` = XOSF1; then
130                 avoidksh="to avoid Digital UNIX' ksh"
131                 newsh=/bin/sh
132                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
133         fi
134 fi
135 case "$inksh/$needksh" in
136 /[a-z]*)
137                 ENV=''
138                 changesh=true
139                 reason="$needksh"
140         ;;
141 esac
142 case "$inksh/$avoidksh" in
143 true/[a-z]*)
144         changesh=true
145         reason="$avoidksh"
146         ;;
147 esac
148 case "$inksh/$needksh-$avoidksh-" in
149 true/--)
150                 cat <<EOM
151 (I see you are using the Korn shell.  Some ksh's blow up on $me,
152 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
153 EOM
154         ;;
155 esac
156 case "$changesh" in
157 true)
158         export newsh
159         echo "(Feeding myself to $newsh $reason.)"
160         case "$0" in
161         Configure|*/Configure) exec $newsh $0 "$@";;
162         *) exec $newsh Configure "$@";;
163         esac
164         ;;
165 esac
166
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
169 case "$CDPATH" in
170 '')     ;;
171 *)      case "$SHELL" in
172         *bash*) CDPATH='.' ;;
173         *)              CDPATH='' ;;
174         esac
175         ;;
176 esac
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
179 cd UU && rm -f ./*
180
181 ccname=''
182 ccversion=''
183 ccsymbols=''
184 cppccsymbols=''
185 cppsymbols=''
186 from=''
187 run=''
188 targetarch=''
189 to=''
190 usecrosscompile=''
191 mistrustnm=''
192 perllibs=''
193 dynamic_ext=''
194 extensions=''
195 known_extensions=''
196 nonxs_ext=''
197 static_ext=''
198 useopcode=''
199 useposix=''
200 extras=''
201 d_bsd=''
202 d_eunice=''
203 d_xenix=''
204 eunicefix=''
205 Mcc=''
206 ar=''
207 awk=''
208 bash=''
209 bison=''
210 byacc=''
211 cat=''
212 chgrp=''
213 chmod=''
214 chown=''
215 comm=''
216 compress=''
217 cp=''
218 cpio=''
219 cpp=''
220 csh=''
221 date=''
222 echo=''
223 egrep=''
224 emacs=''
225 expr=''
226 find=''
227 flex=''
228 gmake=''
229 grep=''
230 gzip=''
231 inews=''
232 ksh=''
233 less=''
234 line=''
235 lint=''
236 ln=''
237 lp=''
238 lpr=''
239 ls=''
240 mail=''
241 mailx=''
242 make=''
243 mkdir=''
244 more=''
245 mv=''
246 nm=''
247 nroff=''
248 perl=''
249 pg=''
250 pmake=''
251 pr=''
252 rm=''
253 rmail=''
254 sed=''
255 sendmail=''
256 shar=''
257 sleep=''
258 smail=''
259 sort=''
260 submit=''
261 tail=''
262 tar=''
263 tbl=''
264 tee=''
265 test=''
266 touch=''
267 tr=''
268 troff=''
269 uname=''
270 uniq=''
271 uuname=''
272 vi=''
273 zcat=''
274 zip=''
275 full_ar=''
276 full_sed=''
277 libswanted=''
278 hint=''
279 myuname=''
280 osname=''
281 osvers=''
282 Author=''
283 Date=''
284 Header=''
285 Id=''
286 Locker=''
287 Log=''
288 RCSfile=''
289 Revision=''
290 Source=''
291 State=''
292 _a=''
293 _exe=''
294 _o=''
295 archobjs=''
296 exe_ext=''
297 firstmakefile=''
298 lib_ext=''
299 obj_ext=''
300 path_sep=''
301 afs=''
302 afsroot=''
303 alignbytes=''
304 ansi2knr=''
305 archlib=''
306 archlibexp=''
307 d_archlib=''
308 installarchlib=''
309 archname=''
310 myarchname=''
311 d_atolf=''
312 d_atoll=''
313 baserev=''
314 bin=''
315 binexp=''
316 installbin=''
317 byteorder=''
318 cc=''
319 ccflags=''
320 cppflags=''
321 ldflags=''
322 lkflags=''
323 locincpth=''
324 optimize=''
325 cf_email=''
326 cf_by=''
327 cf_time=''
328 charsize=''
329 contains=''
330 cpp_stuff=''
331 cpplast=''
332 cppminus=''
333 cpprun=''
334 cppstdin=''
335 d__fwalk=''
336 d_access=''
337 d_accessx=''
338 d_aintl=''
339 d_alarm=''
340 asctime_r_proto=''
341 d_asctime_r=''
342 d_attribut=''
343 d_bcmp=''
344 d_bcopy=''
345 d_bzero=''
346 d_casti32=''
347 castflags=''
348 d_castneg=''
349 d_chown=''
350 d_chroot=''
351 d_chsize=''
352 d_class=''
353 d_closedir=''
354 d_void_closedir=''
355 d_cmsghdr_s=''
356 d_const=''
357 d_copysignl=''
358 cryptlib=''
359 d_crypt=''
360 crypt_r_proto=''
361 d_crypt_r=''
362 d_csh=''
363 full_csh=''
364 ctermid_r_proto=''
365 d_ctermid_r=''
366 ctime_r_proto=''
367 d_ctime_r=''
368 d_cuserid=''
369 d_dbl_dig=''
370 d_dbminitproto=''
371 d_difftime=''
372 d_dirfd=''
373 d_dlerror=''
374 d_dlopen=''
375 d_dlsymun=''
376 d_dosuid=''
377 d_suidsafe=''
378 d_drand48_r=''
379 drand48_r_proto=''
380 d_drand48proto=''
381 d_dup2=''
382 d_eaccess=''
383 d_endgrent=''
384 d_endgrent_r=''
385 endgrent_r_proto=''
386 d_endhent=''
387 d_endhostent_r=''
388 endhostent_r_proto=''
389 d_endnent=''
390 d_endnetent_r=''
391 endnetent_r_proto=''
392 d_endpent=''
393 d_endprotoent_r=''
394 endprotoent_r_proto=''
395 d_endpwent=''
396 d_endpwent_r=''
397 endpwent_r_proto=''
398 d_endsent=''
399 d_endservent_r=''
400 endservent_r_proto=''
401 d_faststdio=''
402 d_fchdir=''
403 d_fchmod=''
404 d_fchown=''
405 d_fcntl=''
406 d_fcntl_can_lock=''
407 d_fd_macros=''
408 d_fd_set=''
409 d_fds_bits=''
410 d_fgetpos=''
411 d_finite=''
412 d_finitel=''
413 d_flexfnam=''
414 d_flock=''
415 d_flockproto=''
416 d_fork=''
417 d_fp_class=''
418 d_fpclass=''
419 d_fpclassify=''
420 d_fpclassl=''
421 d_fpos64_t=''
422 d_frexpl=''
423 d_fs_data_s=''
424 d_fseeko=''
425 d_fsetpos=''
426 d_fstatfs=''
427 d_fsync=''
428 d_ftello=''
429 d_ftime=''
430 d_gettimeod=''
431 d_Gconvert=''
432 d_getcwd=''
433 d_getespwnam=''
434 d_getfsstat=''
435 d_getgrent=''
436 d_getgrent_r=''
437 getgrent_r_proto=''
438 d_getgrgid_r=''
439 getgrgid_r_proto=''
440 d_getgrnam_r=''
441 getgrnam_r_proto=''
442 d_getgrps=''
443 d_gethbyaddr=''
444 d_gethbyname=''
445 d_gethent=''
446 aphostname=''
447 d_gethname=''
448 d_phostname=''
449 d_uname=''
450 d_gethostbyaddr_r=''
451 gethostbyaddr_r_proto=''
452 d_gethostbyname_r=''
453 gethostbyname_r_proto=''
454 d_gethostent_r=''
455 gethostent_r_proto=''
456 d_gethostprotos=''
457 d_getitimer=''
458 d_getlogin=''
459 d_getlogin_r=''
460 getlogin_r_proto=''
461 d_getmnt=''
462 d_getmntent=''
463 d_getnbyaddr=''
464 d_getnbyname=''
465 d_getnent=''
466 d_getnetbyaddr_r=''
467 getnetbyaddr_r_proto=''
468 d_getnetbyname_r=''
469 getnetbyname_r_proto=''
470 d_getnetent_r=''
471 getnetent_r_proto=''
472 d_getnetprotos=''
473 d_getpagsz=''
474 d_getpent=''
475 d_getpgid=''
476 d_getpgrp2=''
477 d_bsdgetpgrp=''
478 d_getpgrp=''
479 d_getppid=''
480 d_getprior=''
481 d_getpbyname=''
482 d_getpbynumber=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
487 d_getprotoent_r=''
488 getprotoent_r_proto=''
489 d_getprotoprotos=''
490 d_getprpwnam=''
491 d_getpwent=''
492 d_getpwent_r=''
493 getpwent_r_proto=''
494 d_getpwnam_r=''
495 getpwnam_r_proto=''
496 d_getpwuid_r=''
497 getpwuid_r_proto=''
498 d_getsent=''
499 d_getservbyname_r=''
500 getservbyname_r_proto=''
501 d_getservbyport_r=''
502 getservbyport_r_proto=''
503 d_getservent_r=''
504 getservent_r_proto=''
505 d_getservprotos=''
506 d_getspnam=''
507 d_getspnam_r=''
508 getspnam_r_proto=''
509 d_getsbyname=''
510 d_getsbyport=''
511 d_gmtime_r=''
512 gmtime_r_proto=''
513 d_gnulibc=''
514 gnulibc_version=''
515 d_hasmntopt=''
516 d_htonl=''
517 d_ilogbl=''
518 d_inetaton=''
519 d_int64_t=''
520 d_isascii=''
521 d_isfinite=''
522 d_isinf=''
523 d_isnan=''
524 d_isnanl=''
525 d_killpg=''
526 d_lchown=''
527 d_ldbl_dig=''
528 d_link=''
529 d_localtime_r=''
530 localtime_r_proto=''
531 d_locconv=''
532 d_lockf=''
533 d_longdbl=''
534 longdblsize=''
535 d_longlong=''
536 longlongsize=''
537 d_lseekproto=''
538 d_lstat=''
539 d_madvise=''
540 d_mblen=''
541 d_mbstowcs=''
542 d_mbtowc=''
543 d_memchr=''
544 d_memcmp=''
545 d_memcpy=''
546 d_memmove=''
547 d_memset=''
548 d_mkdir=''
549 d_mkdtemp=''
550 d_mkfifo=''
551 d_mkstemp=''
552 d_mkstemps=''
553 d_mktime=''
554 d_mmap=''
555 mmaptype=''
556 d_modfl=''
557 d_modfl_pow32_bug=''
558 d_modflproto=''
559 d_mprotect=''
560 d_msg=''
561 d_msgctl=''
562 d_msgget=''
563 d_msghdr_s=''
564 d_msgrcv=''
565 d_msgsnd=''
566 d_msync=''
567 d_munmap=''
568 d_nice=''
569 d_nl_langinfo=''
570 d_off64_t=''
571 d_open3=''
572 d_fpathconf=''
573 d_pathconf=''
574 d_pause=''
575 d_pipe=''
576 d_poll=''
577 d_portable=''
578 d_procselfexe=''
579 procselfexe=''
580 d_old_pthread_create_joinable=''
581 old_pthread_create_joinable=''
582 d_pthread_atfork=''
583 d_pthread_attr_setscope=''
584 d_pthread_yield=''
585 d_sched_yield=''
586 sched_yield=''
587 d_qgcvt=''
588 d_random_r=''
589 random_r_proto=''
590 d_readdir64_r=''
591 readdir64_r_proto=''
592 d_readdir=''
593 d_rewinddir=''
594 d_seekdir=''
595 d_telldir=''
596 d_readdir_r=''
597 readdir_r_proto=''
598 d_readlink=''
599 d_readv=''
600 d_recvmsg=''
601 d_rename=''
602 d_rmdir=''
603 d_safebcpy=''
604 d_safemcpy=''
605 d_sanemcmp=''
606 d_sbrkproto=''
607 d_scalbnl=''
608 d_select=''
609 d_sem=''
610 d_semctl=''
611 d_semget=''
612 d_semop=''
613 d_sendmsg=''
614 d_setegid=''
615 d_seteuid=''
616 d_setgrent=''
617 d_setgrent_r=''
618 setgrent_r_proto=''
619 d_setgrps=''
620 d_sethent=''
621 d_sethostent_r=''
622 sethostent_r_proto=''
623 d_setitimer=''
624 d_setlinebuf=''
625 d_setlocale=''
626 d_setlocale_r=''
627 setlocale_r_proto=''
628 d_setnent=''
629 d_setnetent_r=''
630 setnetent_r_proto=''
631 d_setpent=''
632 d_setpgid=''
633 d_setpgrp2=''
634 d_bsdsetpgrp=''
635 d_setpgrp=''
636 d_setprior=''
637 d_setproctitle=''
638 d_setprotoent_r=''
639 setprotoent_r_proto=''
640 d_setpwent=''
641 d_setpwent_r=''
642 setpwent_r_proto=''
643 d_setregid=''
644 d_setresgid=''
645 d_setresuid=''
646 d_setreuid=''
647 d_setrgid=''
648 d_setruid=''
649 d_setsent=''
650 d_setservent_r=''
651 setservent_r_proto=''
652 d_setsid=''
653 d_setvbuf=''
654 d_sfio=''
655 usesfio=''
656 d_shm=''
657 d_shmat=''
658 d_shmatprototype=''
659 shmattype=''
660 d_shmctl=''
661 d_shmdt=''
662 d_shmget=''
663 d_sigaction=''
664 d_sigprocmask=''
665 d_sigsetjmp=''
666 d_sockatmark=''
667 d_sockatmarkproto=''
668 d_msg_ctrunc=''
669 d_msg_dontroute=''
670 d_msg_oob=''
671 d_msg_peek=''
672 d_msg_proxy=''
673 d_oldsock=''
674 d_scm_rights=''
675 d_socket=''
676 d_sockpair=''
677 sockethdr=''
678 socketlib=''
679 d_socklen_t=''
680 d_socks5_init=''
681 d_sqrtl=''
682 d_srand48_r=''
683 srand48_r_proto=''
684 d_srandom_r=''
685 srandom_r_proto=''
686 d_sresgproto=''
687 d_sresuproto=''
688 d_statblks=''
689 d_statfs_f_flags=''
690 d_statfs_s=''
691 d_fstatvfs=''
692 d_statvfs=''
693 d_stdio_cnt_lval=''
694 d_stdio_ptr_lval=''
695 d_stdio_ptr_lval_nochange_cnt=''
696 d_stdio_ptr_lval_sets_cnt=''
697 d_stdiobase=''
698 d_stdstdio=''
699 stdio_base=''
700 stdio_bufsiz=''
701 stdio_cnt=''
702 stdio_filbuf=''
703 stdio_ptr=''
704 d_index=''
705 d_strchr=''
706 d_strcoll=''
707 d_strctcpy=''
708 d_strerrm=''
709 d_strerror=''
710 d_sysernlst=''
711 d_syserrlst=''
712 d_strerror_r=''
713 strerror_r_proto=''
714 d_strftime=''
715 d_strtod=''
716 d_strtol=''
717 d_strtold=''
718 d_strtoll=''
719 d_strtoq=''
720 d_strtoul=''
721 d_strtoull=''
722 d_strtouq=''
723 d_strxfrm=''
724 d_symlink=''
725 d_syscall=''
726 d_syscallproto=''
727 d_sysconf=''
728 d_system=''
729 d_tcgetpgrp=''
730 d_tcsetpgrp=''
731 d_telldirproto=''
732 d_time=''
733 timetype=''
734 clocktype=''
735 d_times=''
736 d_tmpnam_r=''
737 tmpnam_r_proto=''
738 d_truncate=''
739 d_ttyname_r=''
740 ttyname_r_proto=''
741 d_tzname=''
742 d_u32align=''
743 d_ualarm=''
744 d_umask=''
745 d_semctl_semid_ds=''
746 d_semctl_semun=''
747 d_union_semun=''
748 d_unordered=''
749 d_usleep=''
750 d_usleepproto=''
751 d_ustat=''
752 d_vfork=''
753 usevfork=''
754 d_voidsig=''
755 signal_t=''
756 d_volatile=''
757 d_charvspr=''
758 d_vprintf=''
759 d_wait4=''
760 d_waitpid=''
761 d_wcstombs=''
762 d_wctomb=''
763 d_writev=''
764 dlext=''
765 cccdlflags=''
766 ccdlflags=''
767 dlsrc=''
768 ld=''
769 lddlflags=''
770 usedl=''
771 doublesize=''
772 ebcdic=''
773 fflushNULL=''
774 fflushall=''
775 fpossize=''
776 fpostype=''
777 gccansipedantic=''
778 gccosandvers=''
779 gccversion=''
780 gidformat=''
781 gidsign=''
782 gidsize=''
783 gidtype=''
784 groupstype=''
785 h_fcntl=''
786 h_sysfile=''
787 html1dir=''
788 html1direxp=''
789 installhtml1dir=''
790 html3dir=''
791 html3direxp=''
792 installhtml3dir=''
793 i_arpainet=''
794 i_crypt=''
795 db_hashtype=''
796 db_prefixtype=''
797 db_version_major=''
798 db_version_minor=''
799 db_version_patch=''
800 i_db=''
801 i_dbm=''
802 i_rpcsvcdbm=''
803 d_dirnamlen=''
804 direntrytype=''
805 i_dirent=''
806 i_dld=''
807 i_dlfcn=''
808 i_fcntl=''
809 i_float=''
810 i_fp=''
811 i_fp_class=''
812 i_gdbm=''
813 d_grpasswd=''
814 i_grp=''
815 i_ieeefp=''
816 i_inttypes=''
817 i_langinfo=''
818 i_libutil=''
819 i_limits=''
820 i_locale=''
821 i_machcthr=''
822 i_malloc=''
823 i_math=''
824 i_memory=''
825 i_mntent=''
826 i_ndbm=''
827 i_netdb=''
828 i_neterrno=''
829 i_netinettcp=''
830 i_niin=''
831 i_sysin=''
832 i_poll=''
833 i_prot=''
834 i_pthread=''
835 d_pwage=''
836 d_pwchange=''
837 d_pwclass=''
838 d_pwcomment=''
839 d_pwexpire=''
840 d_pwgecos=''
841 d_pwpasswd=''
842 d_pwquota=''
843 i_pwd=''
844 i_sfio=''
845 i_shadow=''
846 i_socks=''
847 i_stddef=''
848 i_stdlib=''
849 i_string=''
850 strings=''
851 i_sunmath=''
852 i_sysaccess=''
853 i_sysdir=''
854 i_sysfile=''
855 d_voidtty=''
856 i_bsdioctl=''
857 i_sysfilio=''
858 i_sysioctl=''
859 i_syssockio=''
860 i_syslog=''
861 i_sysmman=''
862 i_sysmode=''
863 i_sysmount=''
864 i_sysndir=''
865 i_sysparam=''
866 i_sysresrc=''
867 i_syssecrt=''
868 i_sysselct=''
869 i_sysstat=''
870 i_sysstatfs=''
871 i_sysstatvfs=''
872 i_systimes=''
873 i_systypes=''
874 i_sysuio=''
875 i_sysun=''
876 i_sysutsname=''
877 i_sysvfs=''
878 i_syswait=''
879 i_sgtty=''
880 i_termio=''
881 i_termios=''
882 d_tm_tm_gmtoff=''
883 d_tm_tm_zone=''
884 i_systime=''
885 i_systimek=''
886 i_time=''
887 timeincl=''
888 i_unistd=''
889 i_ustat=''
890 i_utime=''
891 i_values=''
892 i_stdarg=''
893 i_varargs=''
894 i_varhdr=''
895 i_vfork=''
896 inc_version_list=''
897 inc_version_list_init=''
898 installprefix=''
899 installprefixexp=''
900 installstyle=''
901 installusrbinperl=''
902 intsize=''
903 longsize=''
904 shortsize=''
905 issymlink=''
906 libc=''
907 ldlibpthname=''
908 libperl=''
909 shrpenv=''
910 useshrplib=''
911 glibpth=''
912 libpth=''
913 loclibpth=''
914 plibpth=''
915 xlibpth=''
916 ignore_versioned_solibs=''
917 libs=''
918 libsdirs=''
919 libsfiles=''
920 libsfound=''
921 libspath=''
922 lns=''
923 d_PRIEUldbl=''
924 d_PRIFUldbl=''
925 d_PRIGUldbl=''
926 d_PRIeldbl=''
927 d_PRIfldbl=''
928 d_PRIgldbl=''
929 d_SCNfldbl=''
930 sPRIEUldbl=''
931 sPRIFUldbl=''
932 sPRIGUldbl=''
933 sPRIeldbl=''
934 sPRIfldbl=''
935 sPRIgldbl=''
936 sSCNfldbl=''
937 lseeksize=''
938 lseektype=''
939 make_set_make=''
940 d_mymalloc=''
941 freetype=''
942 mallocobj=''
943 mallocsrc=''
944 malloctype=''
945 usemymalloc=''
946 installman1dir=''
947 man1dir=''
948 man1direxp=''
949 man1ext=''
950 installman3dir=''
951 man3dir=''
952 man3direxp=''
953 man3ext=''
954 modetype=''
955 multiarch=''
956 mydomain=''
957 myhostname=''
958 phostname=''
959 c=''
960 n=''
961 d_eofnblk=''
962 eagain=''
963 o_nonblock=''
964 rd_nodata=''
965 need_va_copy=''
966 netdb_hlen_type=''
967 netdb_host_type=''
968 netdb_name_type=''
969 netdb_net_type=''
970 groupcat=''
971 hostcat=''
972 passcat=''
973 orderlib=''
974 ranlib=''
975 d_perl_otherlibdirs=''
976 otherlibdirs=''
977 package=''
978 spackage=''
979 pager=''
980 api_revision=''
981 api_subversion=''
982 api_version=''
983 api_versionstring=''
984 patchlevel=''
985 perl_patchlevel=''
986 revision=''
987 subversion=''
988 version=''
989 version_patchlevel_string=''
990 perl5=''
991 perladmin=''
992 perlpath=''
993 d_nv_preserves_uv=''
994 i16size=''
995 i16type=''
996 i32size=''
997 i32type=''
998 i64size=''
999 i64type=''
1000 i8size=''
1001 i8type=''
1002 ivsize=''
1003 ivtype=''
1004 nv_preserves_uv_bits=''
1005 nvsize=''
1006 nvtype=''
1007 u16size=''
1008 u16type=''
1009 u32size=''
1010 u32type=''
1011 u64size=''
1012 u64type=''
1013 u8size=''
1014 u8type=''
1015 uvsize=''
1016 uvtype=''
1017 ivdformat=''
1018 nvEUformat=''
1019 nvFUformat=''
1020 nvGUformat=''
1021 nveformat=''
1022 nvfformat=''
1023 nvgformat=''
1024 uvXUformat=''
1025 uvoformat=''
1026 uvuformat=''
1027 uvxformat=''
1028 pidtype=''
1029 prefix=''
1030 prefixexp=''
1031 installprivlib=''
1032 privlib=''
1033 privlibexp=''
1034 prototype=''
1035 ptrsize=''
1036 d_PRIXU64=''
1037 d_PRId64=''
1038 d_PRIi64=''
1039 d_PRIo64=''
1040 d_PRIu64=''
1041 d_PRIx64=''
1042 sPRIXU64=''
1043 sPRId64=''
1044 sPRIi64=''
1045 sPRIo64=''
1046 sPRIu64=''
1047 sPRIx64=''
1048 d_quad=''
1049 quadkind=''
1050 quadtype=''
1051 uquadtype=''
1052 drand01=''
1053 randbits=''
1054 randfunc=''
1055 randseedtype=''
1056 seedfunc=''
1057 installscript=''
1058 scriptdir=''
1059 scriptdirexp=''
1060 selectminbits=''
1061 selecttype=''
1062 sh=''
1063 sig_count=''
1064 sig_name=''
1065 sig_name_init=''
1066 sig_num=''
1067 sig_num_init=''
1068 sig_size=''
1069 installsitearch=''
1070 sitearch=''
1071 sitearchexp=''
1072 installsitebin=''
1073 sitebin=''
1074 sitebinexp=''
1075 installsitehtml1dir=''
1076 sitehtml1dir=''
1077 sitehtml1direxp=''
1078 installsitehtml3dir=''
1079 sitehtml3dir=''
1080 sitehtml3direxp=''
1081 installsitelib=''
1082 sitelib=''
1083 sitelib_stem=''
1084 sitelibexp=''
1085 installsiteman1dir=''
1086 siteman1dir=''
1087 siteman1direxp=''
1088 installsiteman3dir=''
1089 siteman3dir=''
1090 siteman3direxp=''
1091 siteprefix=''
1092 siteprefixexp=''
1093 installsitescript=''
1094 sitescript=''
1095 sitescriptexp=''
1096 sizesize=''
1097 sizetype=''
1098 so=''
1099 socksizetype=''
1100 sharpbang=''
1101 shsharp=''
1102 spitshell=''
1103 src=''
1104 ssizetype=''
1105 startperl=''
1106 startsh=''
1107 stdchar=''
1108 d_stdio_stream_array=''
1109 stdio_stream_array=''
1110 sysman=''
1111 trnl=''
1112 uidformat=''
1113 uidsign=''
1114 uidsize=''
1115 uidtype=''
1116 archname64=''
1117 use64bitall=''
1118 use64bitint=''
1119 usefaststdio=''
1120 ccflags_uselargefiles=''
1121 ldflags_uselargefiles=''
1122 libswanted_uselargefiles=''
1123 uselargefiles=''
1124 uselongdouble=''
1125 usemorebits=''
1126 usemultiplicity=''
1127 nm_opt=''
1128 nm_so_opt=''
1129 runnm=''
1130 usenm=''
1131 useperlio=''
1132 usesocks=''
1133 d_oldpthreads=''
1134 use5005threads=''
1135 useithreads=''
1136 usereentrant=''
1137 usethreads=''
1138 incpath=''
1139 mips_type=''
1140 usrinc=''
1141 d_vendorarch=''
1142 installvendorarch=''
1143 vendorarch=''
1144 vendorarchexp=''
1145 d_vendorbin=''
1146 installvendorbin=''
1147 vendorbin=''
1148 vendorbinexp=''
1149 installvendorhtml1dir=''
1150 vendorhtml1dir=''
1151 vendorhtml1direxp=''
1152 installvendorhtml3dir=''
1153 vendorhtml3dir=''
1154 vendorhtml3direxp=''
1155 d_vendorlib=''
1156 installvendorlib=''
1157 vendorlib=''
1158 vendorlib_stem=''
1159 vendorlibexp=''
1160 installvendorman1dir=''
1161 vendorman1dir=''
1162 vendorman1direxp=''
1163 installvendorman3dir=''
1164 vendorman3dir=''
1165 vendorman3direxp=''
1166 usevendorprefix=''
1167 vendorprefix=''
1168 vendorprefixexp=''
1169 d_vendorscript=''
1170 installvendorscript=''
1171 vendorscript=''
1172 vendorscriptexp=''
1173 versiononly=''
1174 defvoidused=''
1175 voidflags=''
1176 yacc=''
1177 yaccflags=''
1178 CONFIG=''
1179
1180 define='define'
1181 undef='undef'
1182 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1183 rmlist=''
1184
1185 : We must find out about Eunice early
1186 eunicefix=':'
1187 if test -f /etc/unixtovms; then
1188         eunicefix=/etc/unixtovms
1189 fi
1190 if test -f /etc/unixtovms.exe; then
1191         eunicefix=/etc/unixtovms.exe
1192 fi
1193
1194 : Set executable suffix now -- needed before hints available
1195 if test -f "/libs/version.library"; then
1196 : Amiga OS
1197     _exe=""
1198 elif test -f "/system/gnu_library/bin/ar.pm"; then
1199 : Stratus VOS
1200     _exe=".pm"
1201 elif test -n "$DJGPP"; then
1202 : DOS DJGPP
1203     _exe=".exe"
1204 elif test -d c:/. -o -n "$is_os2" ; then
1205 : OS/2 or cygwin
1206     _exe=".exe"
1207 fi
1208
1209 i_whoami=''
1210 ccname=''
1211 ccversion=''
1212 perllibs=''
1213 : set useposix=false in your hint file to disable the POSIX extension.
1214 useposix=true
1215 : set useopcode=false in your hint file to disable the Opcode extension.
1216 useopcode=true
1217 : Trailing extension.  Override this in a hint file, if needed.
1218 : Extra object files, if any, needed on this platform.
1219 archobjs=''
1220 archname=''
1221 : Possible local include directories to search.
1222 : Set locincpth to "" in a hint file to defeat local include searches.
1223 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1224 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1225 :
1226 : no include file wanted by default
1227 inclwanted=''
1228
1229 groupstype=''
1230 libnames=''
1231 : change the next line if compiling for Xenix/286 on Xenix/386
1232 xlibpth='/usr/lib/386 /lib/386'
1233 : Possible local library directories to search.
1234 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1235 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1236
1237 : general looking path for locating libraries
1238 glibpth="/lib /usr/lib $xlibpth"
1239 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1240 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1241 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1242
1243 : Private path used by Configure to find libraries.  Its value
1244 : is prepended to libpth. This variable takes care of special
1245 : machines, like the mips.  Usually, it should be empty.
1246 plibpth=''
1247
1248 : default library list
1249 libswanted=''
1250 : some systems want to use only the non-versioned libso:s
1251 ignore_versioned_solibs=''
1252 siteman1dir=''
1253 siteman3dir=''
1254 sitescript=''
1255 archname64=''
1256 ccflags_uselargefiles=''
1257 ldflags_uselargefiles=''
1258 libswanted_uselargefiles=''
1259 : set usemultiplicity on the Configure command line to enable multiplicity.
1260 : set usesocks on the Configure command line to enable socks.
1261 : set usethreads on the Configure command line to enable threads.
1262 usereentrant='undef'
1263 : full support for void wanted by default
1264 defvoidused=15
1265
1266 : List of libraries we want.
1267 : If anyone needs extra -lxxx, put those in a hint file.
1268 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1269 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1270 : We probably want to search /usr/shlib before most other libraries.
1271 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1272 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1273 glibpth="/usr/shlib $glibpth"
1274 : Do not use vfork unless overridden by a hint file.
1275 usevfork=false
1276
1277 : Find the basic shell for Bourne shell scripts
1278 case "$sh" in
1279 '')
1280         case "$SYSTYPE" in
1281         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1282         *) xxx='/bin/sh';;
1283         esac
1284         if test -f "$xxx"; then
1285                 sh="$xxx"
1286         else
1287                 : Build up a list and do a single loop so we can 'break' out.
1288                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1289                 for xxx in sh bash ksh pdksh ash; do
1290                         for p in $pth; do
1291                                 try="$try ${p}/${xxx}"
1292                         done
1293                 done
1294                 for xxx in $try; do
1295                         if test -f "$xxx"; then
1296                                 sh="$xxx";
1297                                 break
1298                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1299                                 sh="$xxx";
1300                                 break
1301                         elif test -f "$xxx.exe"; then
1302                                 sh="$xxx";
1303                                 break
1304                         fi
1305                 done
1306         fi
1307         ;;
1308 esac
1309
1310 case "$sh" in
1311 '')     cat >&2 <<EOM
1312 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1313
1314 Usually it's in /bin/sh.  How did you even get this far?
1315 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1316 we'll try to straighten this all out.
1317 EOM
1318         exit 1
1319         ;;
1320 esac
1321
1322 : see if sh knows # comments
1323 if `$sh -c '#' >/dev/null 2>&1`; then
1324         shsharp=true
1325         spitshell=cat
1326         xcat=/bin/cat
1327         test -f $xcat$_exe || xcat=/usr/bin/cat
1328         if test ! -f $xcat$_exe; then
1329                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1330                         if test -f $p/cat$_exe; then
1331                                 xcat=$p/cat
1332                                 break
1333                         fi
1334                 done
1335                 if test ! -f $xcat$_exe; then
1336                         echo "Can't find cat anywhere!"
1337                         exit 1
1338                 fi
1339         fi
1340         echo "#!$xcat" >sharp
1341         $eunicefix sharp
1342         chmod +x sharp
1343         ./sharp > today
1344         if test -s today; then
1345                 sharpbang='#!'
1346         else
1347                 echo "#! $xcat" > sharp
1348                 $eunicefix sharp
1349                 chmod +x sharp
1350                 ./sharp > today
1351                 if test -s today; then
1352                         sharpbang='#! '
1353                 else
1354                         sharpbang=': use '
1355                 fi
1356         fi
1357 else
1358         echo " "
1359         echo "Your $sh doesn't grok # comments--I will strip them later on."
1360         shsharp=false
1361         cd ..
1362         echo "exec grep -v '^[  ]*#'" >spitshell
1363         chmod +x spitshell
1364         $eunicefix spitshell
1365         spitshell=`pwd`/spitshell
1366         cd UU
1367         echo "I presume that if # doesn't work, #! won't work either!"
1368         sharpbang=': use '
1369 fi
1370 rm -f sharp today
1371
1372 : figure out how to guarantee sh startup
1373 case "$startsh" in
1374 '') startsh=${sharpbang}${sh} ;;
1375 *)
1376 esac
1377 cat >sharp <<EOSS
1378 $startsh
1379 set abc
1380 test "$?abc" != 1
1381 EOSS
1382
1383 chmod +x sharp
1384 $eunicefix sharp
1385 if ./sharp; then
1386         : echo "Yup, it does."
1387 else
1388         echo "Hmm... '$startsh' does not guarantee sh startup..."
1389         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1390 fi
1391 rm -f sharp
1392
1393
1394 : Save command line options in file UU/cmdline.opt for later use in
1395 : generating config.sh.
1396 cat > cmdline.opt <<EOSH
1397 # Configure command line arguments.
1398 config_arg0='$0'
1399 config_args='$*'
1400 config_argc=$#
1401 EOSH
1402 argn=1
1403 args_exp=''
1404 args_sep=''
1405 for arg in "$@"; do
1406         cat >>cmdline.opt <<EOSH
1407 config_arg$argn='$arg'
1408 EOSH
1409         # Extreme backslashitis: replace each ' by '"'"'
1410         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1411 $arg
1412 EOC
1413         arg_exp=`cat cmdl.opt`
1414         args_exp="$args_exp$args_sep'$arg_exp'"
1415         argn=`expr $argn + 1`
1416         args_sep=' '
1417 done
1418 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1419 # used by ./hints/os2.sh
1420 rm -f cmdl.opt
1421
1422 : produce awk script to parse command line options
1423 cat >options.awk <<'EOF'
1424 BEGIN {
1425         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1426
1427         len = length(optstr);
1428         for (i = 1; i <= len; i++) {
1429                 c = substr(optstr, i, 1);
1430                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1431                 if (a == ":") {
1432                         arg[c] = 1;
1433                         i++;
1434                 }
1435                 opt[c] = 1;
1436         }
1437 }
1438 {
1439         expect = 0;
1440         str = $0;
1441         if (substr(str, 1, 1) != "-") {
1442                 printf("'%s'\n", str);
1443                 next;
1444         }
1445         len = length($0);
1446         for (i = 2; i <= len; i++) {
1447                 c = substr(str, i, 1);
1448                 if (!opt[c]) {
1449                         printf("-%s\n", substr(str, i));
1450                         next;
1451                 }
1452                 printf("-%s\n", c);
1453                 if (arg[c]) {
1454                         if (i < len)
1455                                 printf("'%s'\n", substr(str, i + 1));
1456                         else
1457                                 expect = 1;
1458                         next;
1459                 }
1460         }
1461 }
1462 END {
1463         if (expect)
1464                 print "?";
1465 }
1466 EOF
1467
1468 : process the command line options
1469 set X `for arg in "$@"; do echo "X$arg"; done |
1470         sed -e s/X// | awk -f options.awk`
1471 eval "set $*"
1472 shift
1473 rm -f options.awk
1474
1475 : set up default values
1476 fastread=''
1477 reuseval=false
1478 config_sh=''
1479 alldone=''
1480 error=''
1481 silent=''
1482 extractsh=''
1483 override=''
1484 knowitall=''
1485 rm -f optdef.sh posthint.sh
1486 cat >optdef.sh <<EOS
1487 $startsh
1488 EOS
1489
1490
1491 : option parsing
1492 while test $# -gt 0; do
1493         case "$1" in
1494         -d) shift; fastread=yes;;
1495         -e) shift; alldone=cont;;
1496         -f)
1497                 shift
1498                 cd ..
1499                 if test -r "$1"; then
1500                         config_sh="$1"
1501                 else
1502                         echo "$me: cannot read config file $1." >&2
1503                         error=true
1504                 fi
1505                 cd UU
1506                 shift;;
1507         -h) shift; error=true;;
1508         -r) shift; reuseval=true;;
1509         -s) shift; silent=true; realsilent=true;;
1510         -E) shift; alldone=exit;;
1511         -K) shift; knowitall=true;;
1512         -O) shift; override=true;;
1513         -S) shift; silent=true; extractsh=true;;
1514         -D)
1515                 shift
1516                 case "$1" in
1517                 *=)
1518                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1519                         echo "$me: ignoring -D $1" >&2
1520                         ;;
1521                 *=*) echo "$1" | \
1522                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1523                 *) echo "$1='define'" >> optdef.sh;;
1524                 esac
1525                 shift
1526                 ;;
1527         -U)
1528                 shift
1529                 case "$1" in
1530                 *=) echo "$1" >> optdef.sh;;
1531                 *=*)
1532                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1533                         echo "$me: ignoring -U $1" >&2
1534                         ;;
1535                 *) echo "$1='undef'" >> optdef.sh;;
1536                 esac
1537                 shift
1538                 ;;
1539         -A)
1540             shift
1541             xxx=''
1542             yyy="$1"
1543             zzz=''
1544             uuu=undef
1545             case "$yyy" in
1546             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1547                  case "$zzz" in
1548                  *:*) zzz='' ;;
1549                  *)   xxx=append
1550                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
1551                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1552                  esac
1553                  ;;
1554             esac
1555             case "$xxx" in
1556             '')  case "$yyy" in
1557                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1558                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1559                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1560                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1561                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1562                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1563                  esac
1564                  ;;       
1565             esac
1566             case "$xxx" in
1567             append)
1568                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1569             clear)
1570                 echo "$yyy=''"                  >> posthint.sh ;;
1571             define)
1572                 case "$zzz" in
1573                 '') zzz=define ;;
1574                 esac
1575                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1576             eval)
1577                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1578             prepend)
1579                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1580             undef)
1581                 case "$zzz" in
1582                 '') zzz="$uuu" ;;
1583                 esac
1584                 echo "$yyy=$zzz"                >> posthint.sh ;;
1585             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1586             esac
1587             shift
1588             ;;
1589         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1590             exit 0;;
1591         --) break;;
1592         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1593         *) break;;
1594         esac
1595 done
1596
1597 case "$error" in
1598 true)
1599         cat >&2 <<EOM
1600 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1601                  [-U symbol] [-U symbol=] [-A command:symbol...]
1602   -d : use defaults for all answers.
1603   -e : go on without questioning past the production of config.sh.
1604   -f : specify an alternate default configuration file.
1605   -h : print this help message and exit (with an error status).
1606   -r : reuse C symbols value if possible (skips costly nm extraction).
1607   -s : silent mode, only echoes questions and essential information.
1608   -D : define symbol to have some value:
1609          -D symbol         symbol gets the value 'define'
1610          -D symbol=value   symbol gets the value 'value'
1611   -E : stop at the end of questions, after having produced config.sh.
1612   -K : do not use unless you know what you are doing.
1613   -O : let -D and -U override definitions from loaded configuration file.
1614   -S : perform variable substitutions on all .SH files (can mix with -f)
1615   -U : undefine symbol:
1616          -U symbol    symbol gets the value 'undef'
1617          -U symbol=   symbol gets completely empty
1618   -A : manipulate symbol after the platform specific hints have been applied:
1619          -A symbol=value                append " "value to symbol
1620          -A append:symbol=value         append value to symbol
1621          -A define:symbol=value         define symbol to have value
1622          -A clear:symbol                define symbol to be ''
1623          -A define:symbol               define symbol to be 'define'
1624          -A eval:symbol=value           define symbol to be eval of value
1625          -A prepend:symbol=value        prepend value to symbol
1626          -A undef:symbol                define symbol to be 'undef'
1627          -A undef:symbol=               define symbol to be ''
1628   -V : print version number and exit (with a zero status).
1629 EOM
1630         exit 1
1631         ;;
1632 esac
1633
1634 : Sanity checks
1635 case "$fastread$alldone" in
1636 yescont|yesexit) ;;
1637 *)
1638         case "$extractsh" in
1639         true) ;;
1640         *)
1641                 if test ! -t 0; then
1642                         echo "Say 'sh Configure', not 'sh <Configure'"
1643                         exit 1
1644                 fi
1645                 ;;
1646         esac
1647         ;;
1648 esac
1649
1650 exec 4>&1
1651 case "$silent" in
1652 true) exec 1>/dev/null;;
1653 esac
1654
1655 : run the defines and the undefines, if any, but leave the file out there...
1656 touch optdef.sh
1657 . ./optdef.sh
1658 : create the posthint manipulation script and leave the file out there...
1659 touch posthint.sh
1660
1661 : set package name
1662 package=perl5
1663 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1664 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1665 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1666 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1667 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1668 esac
1669
1670 : Some greps do not return status, grrr.
1671 echo "grimblepritz" >grimble
1672 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1673         contains=contains
1674 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1675         contains=grep
1676 else
1677         contains=contains
1678 fi
1679 rm -f grimble
1680 : the following should work in any shell
1681 case "$contains" in
1682 contains*)
1683         echo " "
1684         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1685         cat >contains <<'EOSS'
1686 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1687 EOSS
1688 chmod +x contains
1689 esac
1690
1691 : Find the path to the source tree
1692 case "$src" in
1693 '') case "$0" in
1694     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1695          case "$src" in
1696          /*)    ;;
1697          .)     ;;
1698          *)     src=`cd ../$src && pwd` ;;
1699          esac
1700          ;;
1701     *)   src='.';;
1702     esac;;
1703 esac
1704 case "$src" in
1705 '')     src=/
1706         rsrc=/
1707         ;;
1708 /*) rsrc="$src";;
1709 *) rsrc="../$src";;
1710 esac
1711 if test -f $rsrc/Configure && \
1712         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1713 then
1714    : found it, so we are ok.
1715 else
1716         rsrc=''
1717         for src in . .. ../.. ../../.. ../../../..; do
1718                 if test -f ../$src/Configure && \
1719                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1720                 then
1721                         rsrc=../$src
1722                         break
1723                 fi
1724         done
1725 fi
1726 case "$rsrc" in
1727 '')
1728         cat <<EOM >&4
1729
1730 Sorry, I can't seem to locate the source dir for $package.  Please start
1731 Configure with an explicit path -- i.e. /some/path/Configure.
1732
1733 EOM
1734         exit 1
1735         ;;
1736 ../.)   rsrc='..';;
1737 *)
1738         echo " "
1739         echo "Sources for $package found in \"$src\"." >&4
1740         ;;
1741 esac
1742
1743 : script used to extract .SH files with variable substitutions
1744 cat >extract <<'EOS'
1745 PERL_CONFIG_SH=true
1746 echo "Doing variable substitutions on .SH files..."
1747 if test -f MANIFEST; then
1748         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1749 else
1750         echo "(Looking for .SH files under the source directory.)"
1751         set x `(cd "$src"; find . -name "*.SH" -print)`
1752 fi
1753 shift
1754 case $# in
1755 0) set x `(cd "$src"; echo *.SH)`; shift;;
1756 esac
1757 if test ! -f "$src/$1"; then
1758         shift
1759 fi
1760 mkdir_p='
1761 name=$1;
1762 create="";
1763 while test $name; do
1764         if test ! -d "$name"; then
1765                 create="$name $create";
1766                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1767                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1768         else
1769                 name="";
1770         fi;
1771 done;
1772 for file in $create; do
1773         mkdir $file;
1774 done
1775 '
1776 for file in $*; do
1777         case "$src" in
1778         ".")
1779                 case "$file" in
1780                 */*)
1781                         dir=`expr X$file : 'X\(.*\)/'`
1782                         file=`expr X$file : 'X.*/\(.*\)'`
1783                         (cd "$dir" && . ./$file)
1784                         ;;
1785                 *)
1786                         . ./$file
1787                         ;;
1788                 esac
1789                 ;;
1790         *)
1791                 case "$file" in
1792                 */*)
1793                         dir=`expr X$file : 'X\(.*\)/'`
1794                         file=`expr X$file : 'X.*/\(.*\)'`
1795                         (set x $dir; shift; eval $mkdir_p)
1796                         sh <"$src/$dir/$file"
1797                         ;;
1798                 *)
1799                         sh <"$src/$file"
1800                         ;;
1801                 esac
1802                 ;;
1803         esac
1804 done
1805 if test -f "$src/config_h.SH"; then
1806         if test ! -f config.h; then
1807         : oops, they left it out of MANIFEST, probably, so do it anyway.
1808         . "$src/config_h.SH"
1809         fi
1810 fi
1811 EOS
1812
1813 : extract files and exit if asked to do so
1814 case "$extractsh" in
1815 true)
1816         case "$realsilent" in
1817         true) ;;
1818         *) exec 1>&4;;
1819         esac
1820         case "$config_sh" in
1821         '') config_sh='config.sh';;
1822         esac
1823         echo " "
1824         echo "Fetching answers from $config_sh..."
1825         cd ..
1826         . $config_sh
1827         test "$override" && . ./optdef.sh
1828         echo " "
1829         . UU/extract
1830         rm -rf UU
1831         echo "Extraction done."
1832         exit 0
1833         ;;
1834 esac
1835
1836 : Eunice requires " " instead of "", can you believe it
1837 echo " "
1838 : Here we go...
1839 echo "Beginning of configuration questions for $package."
1840
1841 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1842
1843 : first determine how to suppress newline on echo command
1844 echo " "
1845 echo "Checking echo to see how to suppress newlines..."
1846 (echo "hi there\c" ; echo " ") >.echotmp
1847 if $contains c .echotmp >/dev/null 2>&1 ; then
1848         echo "...using -n."
1849         n='-n'
1850         c=''
1851 else
1852         cat <<'EOM'
1853 ...using \c
1854 EOM
1855         n=''
1856         c='\c'
1857 fi
1858 echo $n "The star should be here-->$c"
1859 echo '*'
1860 rm -f .echotmp
1861
1862 : Now test for existence of everything in MANIFEST
1863 echo " "
1864 if test -f "$rsrc/MANIFEST"; then
1865         echo "First let's make sure your kit is complete.  Checking..." >&4
1866         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1867         rm -f missing
1868         tmppwd=`pwd`
1869         for filelist in x??; do
1870                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1871         done
1872         if test -s missing; then
1873                 cat missing >&4
1874                 cat >&4 <<'EOM'
1875
1876 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1877
1878 You have the option of continuing the configuration process, despite the
1879 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1880 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1881 and contact the author (perlbug@perl.org).
1882
1883 EOM
1884                 echo $n "Continue? [n] $c" >&4
1885                 read ans
1886                 case "$ans" in
1887                 y*)
1888                         echo "Continuing..." >&4
1889                         rm -f missing
1890                         ;;
1891                 *)
1892                         echo "ABORTING..." >&4
1893                         kill $$
1894                         ;;
1895                 esac
1896         else
1897                 echo "Looks good..."
1898         fi
1899 else
1900         echo "There is no MANIFEST file.  I hope your kit is complete !"
1901 fi
1902 rm -f missing x??
1903
1904 echo " "
1905 : Find the appropriate value for a newline for tr
1906 if test -n "$DJGPP"; then
1907        trnl='\012'
1908 fi
1909 if test X"$trnl" = X; then
1910         case "`echo foo|tr '\n' x 2>/dev/null`" in
1911         foox) trnl='\n' ;;
1912         esac
1913 fi
1914 if test X"$trnl" = X; then
1915         case "`echo foo|tr '\012' x 2>/dev/null`" in
1916         foox) trnl='\012' ;;
1917         esac
1918 fi
1919 if test X"$trnl" = X; then
1920        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1921        fooxy) trnl='\n\r' ;;
1922        esac
1923 fi
1924 if test X"$trnl" = X; then
1925         cat <<EOM >&2
1926
1927 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1928
1929 EOM
1930         exit 1
1931 fi
1932
1933 : compute the number of columns on the terminal for proper question formatting
1934 case "$COLUMNS" in
1935 '') COLUMNS='80';;
1936 esac
1937
1938 : set up the echo used in my read
1939 myecho="case \"\$xxxm\" in
1940 '') echo $n \"\$rp $c\" >&4;;
1941 *) case \"\$rp\" in
1942         '') echo $n \"[\$xxxm] $c\";;
1943         *)
1944                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1945                         echo \"\$rp\" >&4
1946                         echo $n \"[\$xxxm] $c\" >&4
1947                 else
1948                         echo $n \"\$rp [\$xxxm] $c\" >&4
1949                 fi
1950                 ;;
1951         esac;;
1952 esac"
1953
1954 : now set up to do reads with possible shell escape and default assignment
1955 cat <<EOSC >myread
1956 $startsh
1957 xxxm=\$dflt
1958 $myecho
1959 ans='!'
1960 case "\$fastread" in
1961 yes) case "\$dflt" in
1962         '') ;;
1963         *) ans='';
1964                 case "\$silent-\$rp" in
1965                 true-) ;;
1966                 *) echo " " >&4;;
1967                 esac;;
1968         esac;;
1969 *) case "\$silent" in
1970         true) case "\$rp" in
1971                 '') ans='';;
1972                 esac;;
1973         esac;;
1974 esac
1975 while expr "X\$ans" : "X!" >/dev/null; do
1976         read answ
1977         set x \$xxxm
1978         shift
1979         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1980         case  "\$answ" in
1981         "!")
1982                 sh 1>&4
1983                 echo " "
1984                 $myecho
1985                 ;;
1986         !*)
1987                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1988                 shift
1989                 sh 1>&4 -c "\$*"
1990                 echo " "
1991                 $myecho
1992                 ;;
1993         "\$ans")
1994                 case "\$ans" in
1995                 \\&*)
1996                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1997                         shift
1998                         case "\$1" in
1999                         -d)
2000                                 fastread=yes
2001                                 echo "(OK, I'll run with -d after this question.)" >&4
2002                                 ;;
2003                         -*)
2004                                 echo "*** Sorry, \$1 not supported yet." >&4
2005                                 ;;
2006                         esac
2007                         $myecho
2008                         ans=!
2009                         ;;
2010                 esac;;
2011         *)
2012                 case "\$aok" in
2013                 y)
2014                         echo "*** Substitution done -- please confirm."
2015                         xxxm="\$ans"
2016                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2017                         xxxm="\$ans"
2018                         ans=!
2019                         ;;
2020                 *)
2021                         echo "*** Error -- try again."
2022                         ans=!
2023                         ;;
2024                 esac
2025                 $myecho
2026                 ;;
2027         esac
2028         case "\$ans\$xxxm\$nostick" in
2029         '')
2030                 ans=!
2031                 $myecho
2032                 ;;
2033         esac
2034 done
2035 case "\$ans" in
2036 '') ans="\$xxxm";;
2037 esac
2038 EOSC
2039
2040 : create .config dir to save info across Configure sessions
2041 test -d ../.config || mkdir ../.config
2042 cat >../.config/README <<EOF
2043 This directory created by Configure to save information that should
2044 persist across sessions for $package.
2045
2046 You may safely delete it if you wish.
2047 EOF
2048
2049 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2050 case "$usedevel" in
2051 $define|true|[yY]*) ;;
2052 *) case "$xversion" in
2053    *[13579])
2054         cat >&4 <<EOH
2055 *** WHOA THERE!!! ***
2056
2057     This is an UNSTABLE DEVELOPMENT release.
2058     The version of this $package distribution is $xversion, that is, odd,
2059     (as opposed to even) and that signifies a development release.
2060     If you want a maintenance release, you want an even-numbered version.
2061
2062     Do ***NOT*** install this into production use.
2063     Data corruption and crashes are possible.
2064
2065     It is most seriously suggested that you do not continue any further
2066     unless you want to help in developing and debugging Perl.
2067
2068     If you *still* want to build perl, you can answer 'y' now,
2069     or pass -Dusedevel to Configure.
2070
2071 EOH
2072         rp='Do you really want to continue?'
2073         dflt='n'
2074         . ./myread
2075         case "$ans" in
2076         [yY]) echo >&4 "Okay, continuing."
2077               usedevel="$define" ;;
2078         *) echo >&4 "Okay, bye."
2079            exit 1
2080            ;;
2081         esac
2082         ;;
2083     esac
2084     ;;
2085 esac
2086 case "$usedevel" in
2087 $define|true|[yY]*)
2088         case "$versiononly" in
2089         '') versiononly="$define" ;;
2090         esac
2091         case "$installusrbinperl" in
2092         '') installusrbinperl="$undef" ;;
2093         esac
2094         ;;
2095 esac
2096
2097 : general instructions
2098 needman=true
2099 firsttime=true
2100 user=`(logname) 2>/dev/null`
2101 case "$user" in
2102 '') user=`whoami 2>&1`;;
2103 esac
2104 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2105         firsttime=false
2106         echo " "
2107         rp='Would you like to see the instructions?'
2108         dflt=n
2109         . ./myread
2110         case "$ans" in
2111         [yY]*) ;;
2112         *) needman=false;;
2113         esac
2114 fi
2115 if $needman; then
2116         cat <<EOH
2117
2118 This installation shell script will examine your system and ask you questions
2119 to determine how the perl5 package should be installed. If you get
2120 stuck on a question, you may use a ! shell escape to start a subshell or
2121 execute a command.  Many of the questions will have default answers in square
2122 brackets; typing carriage return will give you the default.
2123
2124 On some of the questions which ask for file or directory names you are allowed
2125 to use the ~name construct to specify the login directory belonging to "name",
2126 even if you don't have a shell which knows about that.  Questions where this is
2127 allowed will be marked "(~name ok)".
2128
2129 EOH
2130         rp=''
2131         dflt='Type carriage return to continue'
2132         . ./myread
2133         cat <<'EOH'
2134
2135 The prompter used in this script allows you to use shell variables and
2136 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2137 in the default answer, as if the default line was a set of arguments given to a
2138 script shell.  This means you may also use $* to repeat the whole default line,
2139 so you do not have to re-type everything to add something to the default.
2140
2141 Everytime there is a substitution, you will have to confirm.  If there is an
2142 error (e.g. an unmatched backtick), the default answer will remain unchanged
2143 and you will be prompted again.
2144
2145 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2146 the questions and use the computed defaults (or the previous answers if there
2147 was already a config.sh file). Type 'Configure -h' for a list of options.
2148 You may also start interactively and then answer '& -d' at any prompt to turn
2149 on the non-interactive behaviour for the remainder of the execution.
2150
2151 EOH
2152         . ./myread
2153         cat <<EOH
2154
2155 Much effort has been expended to ensure that this shell script will run on any
2156 Unix system.  If despite that it blows up on yours, your best bet is to edit
2157 Configure and run it again.  If you can't run Configure for some reason,
2158 you'll have to generate a config.sh file by hand.  Whatever problems you
2159 have, let me (perlbug@perl.org) know how I blew it.
2160
2161 This installation script affects things in two ways:
2162
2163 1) it may do direct variable substitutions on some of the files included
2164    in this kit.
2165 2) it builds a config.h file for inclusion in C programs.  You may edit
2166    any of these files as the need arises after running this script.
2167
2168 If you make a mistake on a question, there is no easy way to back up to it
2169 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2170 files.  Configure will offer to let you do this before it runs the SH files.
2171
2172 EOH
2173         dflt='Type carriage return to continue'
2174         . ./myread
2175         case "$firsttime" in
2176         true) echo $user >>../.config/instruct;;
2177         esac
2178 fi
2179
2180 : find out where common programs are
2181 echo " "
2182 echo "Locating common programs..." >&4
2183 cat <<EOSC >loc
2184 $startsh
2185 case \$# in
2186 0) exit 1;;
2187 esac
2188 thing=\$1
2189 shift
2190 dflt=\$1
2191 shift
2192 for dir in \$*; do
2193         case "\$thing" in
2194         .)
2195         if test -d \$dir/\$thing; then
2196                 echo \$dir
2197                 exit 0
2198         fi
2199         ;;
2200         *)
2201         for thisthing in \$dir/\$thing; do
2202                 : just loop through to pick last item
2203         done
2204         if test -f \$thisthing; then
2205                 echo \$thisthing
2206                 exit 0
2207         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2208                 echo \$thisthing
2209                 exit 0
2210         elif test -f \$dir/\$thing.exe; then
2211                 if test -n "$DJGPP"; then
2212                         echo \$dir/\$thing.exe
2213                 elif test "$eunicefix" != ":"; then
2214                         : on Eunice apparently
2215                         echo \$dir/\$thing
2216                         exit 0
2217                 fi
2218                 exit 0
2219         fi
2220         ;;
2221         esac
2222 done
2223 echo \$dflt
2224 exit 1
2225 EOSC
2226 chmod +x loc
2227 $eunicefix loc
2228 loclist="
2229 awk
2230 cat
2231 chmod
2232 comm
2233 cp
2234 echo
2235 expr
2236 grep
2237 ls
2238 mkdir
2239 rm
2240 sed
2241 sort
2242 touch
2243 tr
2244 uniq
2245 "
2246 trylist="
2247 Mcc
2248 ar
2249 bison
2250 byacc
2251 cpp
2252 csh
2253 date
2254 egrep
2255 gmake
2256 gzip
2257 less
2258 ln
2259 make
2260 more
2261 nm
2262 nroff
2263 pg
2264 test
2265 uname
2266 zip
2267 "
2268 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2269 pth="$pth /lib /usr/lib"
2270 for file in $loclist; do
2271         eval xxx=\$$file
2272         case "$xxx" in
2273         /*|?:[\\/]*)
2274                 if test -f "$xxx"; then
2275                         : ok
2276                 else
2277                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2278                         xxx=`./loc $file $file $pth`
2279                 fi
2280                 ;;
2281         '') xxx=`./loc $file $file $pth`;;
2282         *) xxx=`./loc $xxx $xxx $pth`;;
2283         esac
2284         eval $file=$xxx$_exe
2285         eval _$file=$xxx
2286         case "$xxx" in
2287         /*)
2288                 echo $file is in $xxx.
2289                 ;;
2290         ?:[\\/]*)
2291                 echo $file is in $xxx.
2292                 ;;
2293         *)
2294                 echo "I don't know where '$file' is, and my life depends on it." >&4
2295                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2296                 exit 1
2297                 ;;
2298         esac
2299 done
2300 echo " "
2301 echo "Don't worry if any of the following aren't found..."
2302 say=offhand
2303 for file in $trylist; do
2304         eval xxx=\$$file
2305         case "$xxx" in
2306         /*|?:[\\/]*)
2307                 if test -f "$xxx"; then
2308                         : ok
2309                 else
2310                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2311                         xxx=`./loc $file $file $pth`
2312                 fi
2313                 ;;
2314         '') xxx=`./loc $file $file $pth`;;
2315         *) xxx=`./loc $xxx $xxx $pth`;;
2316         esac
2317         eval $file=$xxx$_exe
2318         eval _$file=$xxx
2319         case "$xxx" in
2320         /*)
2321                 echo $file is in $xxx.
2322                 ;;
2323         ?:[\\/]*)
2324                 echo $file is in $xxx.
2325                 ;;
2326         *)
2327                 echo "I don't see $file out there, $say."
2328                 say=either
2329                 ;;
2330         esac
2331 done
2332 case "$egrep" in
2333 egrep)
2334         echo "Substituting grep for egrep."
2335         egrep=$grep
2336         _egrep=$grep
2337         ;;
2338 esac
2339 case "$ln" in
2340 ln)
2341         echo "Substituting cp for ln."
2342         ln=$cp
2343         _ln=$cp
2344         ;;
2345 esac
2346 case "$make" in
2347 make)   
2348         case "$gmake" in
2349         gmake)
2350         echo "I can't find make or gmake, and my life depends on it." >&4
2351         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2352         exit 1
2353         ;;
2354         esac
2355         ;;
2356 esac    
2357 case "$gmake" in
2358 gmake)  ;;
2359 *)      # We can't have osname yet.
2360         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2361                 # Assume that gmake, if found, is definitely GNU make
2362                 # and prefer it over the system make.
2363                 echo "Substituting gmake for make."
2364                 make=$gmake
2365                 _make=$gmake
2366         fi
2367         ;;
2368 esac
2369 case "$test" in
2370 test)
2371         echo "Hopefully test is built into your sh."
2372         ;;
2373 *)
2374         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2375                 echo "Using the test built into your sh."
2376                 test=test
2377                 _test=test
2378         fi
2379         ;;
2380 esac
2381 case "$echo" in
2382 echo)
2383         echo "Hopefully echo is built into your sh."
2384         ;;
2385 '') ;;
2386 *)
2387         echo " "
2388 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2389         $echo $n "hi there$c" >foo1
2390         echo $n "hi there$c" >foo2
2391         if cmp foo1 foo2 >/dev/null 2>&1; then
2392                 echo "They are compatible.  In fact, they may be identical."
2393         else
2394                 case "$n" in
2395                 '-n') n='' c='\c';;
2396                 *) n='-n' c='';;
2397                 esac
2398                 cat <<FOO
2399 They are not compatible!  You are probably running ksh on a non-USG system.
2400 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2401 have echo built in and we may have to run some Bourne shell scripts.  That
2402 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2403
2404 FOO
2405                 $echo $n "The star should be here-->$c"
2406                 $echo "*"
2407         fi
2408         $rm -f foo1 foo2
2409         ;;
2410 esac
2411
2412 cat <<EOS >trygcc
2413 $startsh
2414 EOS
2415 cat <<'EOSC' >>trygcc
2416 case "$cc" in
2417 '') ;;
2418 *)  $rm -f try try.*
2419     $cat >try.c <<EOM
2420 int main(int argc, char *argv[]) {
2421   return 0;
2422 }
2423 EOM
2424     if $cc -o try $ccflags $ldflags try.c; then
2425        :
2426     else
2427         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2428         despair=yes
2429         trygcc=yes
2430         case "$cc" in
2431         *gcc*) trygcc=no ;;
2432         esac
2433         case "`$cc -v -c try.c 2>&1`" in
2434         *gcc*) trygcc=no ;;
2435         esac
2436         if $test X"$trygcc" = Xyes; then
2437             if gcc -o try -c try.c; then
2438                 echo " "
2439                 echo "You seem to have a working gcc, though." >&4
2440                 rp="Would you like to use it?"
2441                 dflt=y
2442                 if $test -f myread; then
2443                     . ./myread
2444                 else
2445                     if $test -f UU/myread; then
2446                         . ./UU/myread
2447                     else
2448                         echo "Cannot find myread, sorry.  Aborting." >&2
2449                         exit 1
2450                     fi
2451                 fi  
2452                 case "$ans" in
2453                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2454                        if $test -f usethreads.cbu; then
2455                            $cat >&4 <<EOM 
2456
2457 *** However, any setting of the C compiler flags (e.g. for thread support)
2458 *** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
2459 *** (together with e.g. -Dusethreads).
2460
2461 EOM
2462                        fi;;
2463                 esac
2464             fi
2465         fi
2466     fi
2467     $rm -f try try.*
2468     ;;
2469 esac
2470 EOSC
2471
2472 cat <<EOS >checkcc
2473 $startsh
2474 EOS
2475 cat <<'EOSC' >>checkcc
2476 case "$cc" in        
2477 '') ;;
2478 *)  $rm -f try try.*              
2479     $cat >try.c <<EOM
2480 int main(int argc, char *argv[]) {
2481   return 0;
2482 }
2483 EOM
2484     if $cc -o try $ccflags $ldflags try.c; then
2485        :
2486     else
2487         if $test X"$despair" = Xyes; then
2488            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2489         fi
2490         $cat >&4 <<EOM         
2491 You need to find a working C compiler.
2492 Either (purchase and) install the C compiler supplied by your OS vendor,
2493 or for a free C compiler try http://gcc.gnu.org/
2494 I cannot continue any further, aborting.
2495 EOM
2496         exit 1
2497     fi
2498     $rm -f try try.*
2499     ;;
2500 esac
2501 EOSC
2502
2503 : determine whether symbolic links are supported
2504 echo " "
2505 $touch blurfl
2506 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2507         echo "Symbolic links are supported." >&4
2508         lns="$ln -s"
2509 else
2510         echo "Symbolic links are NOT supported." >&4
2511         lns="$ln"
2512 fi
2513 $rm -f blurfl sym
2514
2515 : determine whether symbolic links are supported
2516 echo " "
2517 case "$lns" in
2518 *"ln"*" -s")
2519         echo "Checking how to test for symbolic links..." >&4
2520         $lns blurfl sym
2521         if $test "X$issymlink" = X; then
2522                 case "$newsh" in
2523                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2524                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2525                 esac
2526                 if test $? = 0; then
2527                         issymlink="test -h"
2528                 else
2529                         echo "Your builtin 'test -h' may be broken." >&4
2530                         case "$test" in
2531                         /*)     ;;
2532                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2533                                 for p in $pth
2534                                 do
2535                                         if test -f "$p/$test"; then
2536                                                 test="$p/$test"
2537                                                 break
2538                                         fi
2539                                 done
2540                                 ;;
2541                         esac
2542                         case "$test" in
2543                         /*)
2544                                 echo "Trying external '$test -h'." >&4
2545                                 issymlink="$test -h"
2546                                 if $test ! -h sym >/dev/null 2>&1; then
2547                                         echo "External '$test -h' is broken, too." >&4
2548                                         issymlink=''
2549                                 fi
2550                                 ;;
2551                         *)      issymlink='' ;;
2552                         esac
2553                 fi              
2554         fi
2555         if $test "X$issymlink" = X; then
2556                 if $test -L sym 2>/dev/null; then
2557                         issymlink="$test -L"
2558                         echo "The builtin '$test -L' worked." >&4
2559                 fi
2560         fi
2561         if $test "X$issymlink" != X; then
2562                 echo "You can test for symbolic links with '$issymlink'." >&4
2563         else
2564                 echo "I do not know how you can test for symbolic links." >&4
2565         fi
2566         $rm -f blurfl sym
2567         ;;
2568 *)      echo "No symbolic links, so not testing for their testing..." >&4
2569         ;;
2570 esac
2571 echo " "
2572
2573
2574 case "$mksymlinks" in
2575 $define|true|[yY]*)
2576         case "$src" in
2577         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2578                 exit 1
2579                 ;;
2580         *)      case "$lns:$issymlink" in
2581                 *"ln"*" -s:"*"test -"?)
2582                         echo "Creating the symbolic links..." >&4
2583                         echo "(First creating the subdirectories...)" >&4
2584                         cd ..
2585                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2586                                 read directory
2587                                 test -z "$directory" && break
2588                                 mkdir -p $directory
2589                         done
2590                         # Sanity check 1.
2591                         if test ! -d t/base; then
2592                                 echo "Failed to create the subdirectories.  Aborting." >&4
2593                                 exit 1
2594                         fi
2595                         echo "(Then creating the symlinks...)" >&4
2596                         awk '{print $1}' $src/MANIFEST | while true; do
2597                                 read filename
2598                                 test -z "$filename" && break
2599                                 if test -f $filename; then
2600                                         if $issymlink $filename; then
2601                                                 rm -f $filename
2602                                         fi
2603                                 fi
2604                                 if test -f $filename; then
2605                                         echo "$filename already exists, not symlinking."
2606                                 else
2607                                         ln -s $src/$filename $filename
2608                                 fi
2609                         done
2610                         # Sanity check 2.
2611                         if test ! -f t/base/lex.t; then
2612                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2613                                 exit 1
2614                         fi
2615                         cd UU
2616                         ;;
2617                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2618                         ;;
2619                 esac
2620                 ;;
2621         esac
2622         ;;
2623 esac
2624
2625
2626 case "$usecrosscompile" in
2627 $define|true|[yY]*)
2628         $echo "Cross-compiling..."
2629         croak=''
2630         case "$cc" in
2631         *-*-gcc) # A cross-compiling gcc, probably.
2632             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2633             ar=$targetarch-ar
2634             # leave out ld, choosing it is more complex
2635             nm=$targetarch-nm
2636             ranlib=$targetarch-ranlib
2637             $echo 'extern int foo;' > try.c
2638             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2639             shift
2640             if $test $# -gt 0; then
2641                 incpth="$incpth $*"
2642                 incpth="`$echo $incpth|$sed 's/^ //'`"
2643                 echo "Guessing incpth '$incpth'." >&4
2644                 for i in $*; do
2645                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2646                     if $test -d $j; then
2647                         libpth="$libpth $j"
2648                     fi
2649                 done   
2650                 libpth="`$echo $libpth|$sed 's/^ //'`"
2651                 echo "Guessing libpth '$libpth'." >&4
2652             fi
2653             $rm -f try.c
2654             ;;
2655         esac
2656         case "$targetarch" in
2657         '') echo "Targetarch not defined." >&4; croak=y ;;
2658         *)  echo "Using targetarch $targetarch." >&4 ;;
2659         esac
2660         case "$incpth" in
2661         '') echo "Incpth not defined." >&4; croak=y ;;
2662         *)  echo "Using incpth '$incpth'." >&4 ;;
2663         esac
2664         case "$libpth" in
2665         '') echo "Libpth not defined." >&4; croak=y ;;
2666         *)  echo "Using libpth '$libpth'." >&4 ;;
2667         esac
2668         case "$usrinc" in
2669         '') for i in $incpth; do
2670                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2671                     usrinc=$i
2672                     echo "Guessing usrinc $usrinc." >&4
2673                     break
2674                 fi
2675             done
2676             case "$usrinc" in
2677             '') echo "Usrinc not defined." >&4; croak=y ;;
2678             esac
2679             ;;
2680         *)  echo "Using usrinc $usrinc." >&4 ;;
2681         esac
2682         case "$targethost" in
2683         '') echo "Targethost not defined." >&4; croak=y ;;
2684         *)  echo "Using targethost $targethost." >&4
2685         esac
2686         locincpth=' '
2687         loclibpth=' '
2688         case "$croak" in
2689         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2690         esac
2691         case "$src" in
2692         /*) run=$src/Cross/run
2693             targetmkdir=$src/Cross/mkdir
2694             to=$src/Cross/to
2695             from=$src/Cross/from
2696             ;;
2697         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2698             run=$pwd/Cross/run
2699             targetmkdir=$pwd/Cross/mkdir
2700             to=$pwd/Cross/to
2701             from=$pwd/Cross/from
2702             ;;
2703         esac
2704         case "$targetrun" in
2705         '') targetrun=ssh ;;
2706         esac
2707         case "$targetto" in
2708         '') targetto=scp ;;
2709         esac
2710         case "$targetfrom" in
2711         '') targetfrom=scp ;;
2712         esac
2713         run=$run-$targetrun
2714         to=$to-$targetto
2715         from=$from-$targetfrom
2716         case "$targetdir" in
2717         '')  targetdir=/tmp
2718              echo "Guessing targetdir $targetdir." >&4
2719              ;;
2720         esac
2721         case "$targetuser" in
2722         '')  targetuser=root
2723              echo "Guessing targetuser $targetuser." >&4
2724              ;;
2725         esac
2726         case "$targetfrom" in
2727         scp)    q=-q ;;
2728         *)      q='' ;;
2729         esac
2730         case "$targetrun" in
2731         ssh|rsh)
2732             cat >$run <<EOF
2733 #!/bin/sh
2734 case "\$1" in
2735 -cwd)
2736   shift
2737   cwd=\$1
2738   shift
2739   ;;
2740 esac
2741 case "\$cwd" in
2742 '') cwd=$targetdir ;;
2743 esac
2744 exe=\$1
2745 shift
2746 if $test ! -f \$exe.xok; then
2747   $to \$exe
2748   $touch \$exe.xok
2749 fi
2750 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2751 EOF
2752             ;;
2753         *)  echo "Unknown targetrun '$targetrun'" >&4
2754             exit 1
2755             ;;
2756         esac
2757         case "$targetmkdir" in
2758         */Cross/mkdir)
2759             cat >$targetmkdir <<EOF
2760 #!/bin/sh
2761 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2762 EOF
2763             $chmod a+rx $targetmkdir
2764             ;;
2765         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2766             exit 1
2767             ;;
2768         esac
2769         case "$targetto" in
2770         scp|rcp)
2771             cat >$to <<EOF
2772 #!/bin/sh
2773 for f in \$@
2774 do
2775   case "\$f" in
2776   /*)
2777     $targetmkdir \`dirname \$f\`
2778     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2779     ;;
2780   *)
2781     $targetmkdir $targetdir/\`dirname \$f\`
2782     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2783     ;;
2784   esac
2785 done
2786 exit 0
2787 EOF
2788             ;;
2789         cp) cat >$to <<EOF
2790 #!/bin/sh
2791 for f in \$@
2792 do
2793   case "\$f" in
2794   /*)
2795     $mkdir -p $targetdir/\`dirname \$f\`
2796     $cp \$f $targetdir/\$f || exit 1
2797     ;;
2798   *)
2799     $targetmkdir $targetdir/\`dirname \$f\`
2800     $cp \$f $targetdir/\$f || exit 1
2801     ;;
2802   esac
2803 done
2804 exit 0
2805 EOF
2806             ;;
2807         *)  echo "Unknown targetto '$targetto'" >&4
2808             exit 1
2809             ;;
2810         esac
2811         case "$targetfrom" in
2812         scp|rcp)
2813           cat >$from <<EOF
2814 #!/bin/sh
2815 for f in \$@
2816 do
2817   $rm -f \$f
2818   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2819 done
2820 exit 0
2821 EOF
2822             ;;
2823         cp) cat >$from <<EOF
2824 #!/bin/sh
2825 for f in \$@
2826 do
2827   $rm -f \$f
2828   cp $targetdir/\$f . || exit 1
2829 done
2830 exit 0
2831 EOF
2832             ;;
2833         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2834             exit 1
2835             ;;
2836         esac
2837         if $test ! -f $run; then
2838             echo "Target 'run' script '$run' not found." >&4
2839         else
2840             $chmod a+rx $run
2841         fi
2842         if $test ! -f $to; then
2843             echo "Target 'to' script '$to' not found." >&4
2844         else
2845             $chmod a+rx $to
2846         fi
2847         if $test ! -f $from; then
2848             echo "Target 'from' script '$from' not found." >&4
2849         else
2850             $chmod a+rx $from
2851         fi
2852         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2853             exit 1
2854         fi
2855         cat >&4 <<EOF
2856 Using '$run' for remote execution,
2857 and '$from' and '$to'
2858 for remote file transfer.
2859 EOF
2860         ;;
2861 *)      run=''
2862         to=:
2863         from=:
2864         usecrosscompile='undef'
2865         targetarch=''
2866         ;;
2867 esac
2868
2869 : see whether [:lower:] and [:upper:] are supported character classes
2870 echo " "
2871 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2872 ABYZ)
2873         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2874         up='[:upper:]'
2875         low='[:lower:]'
2876         ;;
2877 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2878         # (0xc9 and 0xd1), therefore that is a nice testing point.
2879         if test "X$up" = X -o "X$low" = X; then
2880             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2881             ij) up='[A-Z]'
2882                 low='[a-z]'
2883                 ;;
2884             esac
2885         fi
2886         if test "X$up" = X -o "X$low" = X; then
2887             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2888             ij) up='A-Z'
2889                 low='a-z'
2890                 ;;
2891             esac
2892         fi
2893         if test "X$up" = X -o "X$low" = X; then
2894             case "`echo IJ | od -x 2>/dev/null`" in
2895             *C9D1*|*c9d1*)
2896                 echo "Hey, this might be EBCDIC." >&4
2897                 if test "X$up" = X -o "X$low" = X; then
2898                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2899                     ij) up='[A-IJ-RS-Z]'
2900                         low='[a-ij-rs-z]'
2901                         ;;
2902                     esac
2903                 fi
2904                 if test "X$up" = X -o "X$low" = X; then
2905                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2906                     ij) up='A-IJ-RS-Z'
2907                         low='a-ij-rs-z'
2908                         ;;
2909                     esac
2910                 fi
2911                 ;;
2912             esac
2913         fi
2914 esac
2915 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2916 ij)
2917     echo "Using $up and $low to convert case." >&4
2918     ;;
2919 *)
2920     echo "I don't know how to translate letters from upper to lower case." >&4
2921     echo "Your tr is not acting any way I know of." >&4
2922     exit 1
2923     ;;
2924 esac
2925 : set up the translation script tr, must be called with ./tr of course
2926 cat >tr <<EOSC
2927 $startsh
2928 case "\$1\$2" in
2929 '[A-Z][a-z]') exec $tr '$up' '$low';;
2930 '[a-z][A-Z]') exec $tr '$low' '$up';;
2931 esac
2932 exec $tr "\$@"
2933 EOSC
2934 chmod +x tr
2935 $eunicefix tr
2936
2937 : Try to determine whether config.sh was made on this system
2938 case "$config_sh" in
2939 '')
2940 myuname=`$uname -a 2>/dev/null`
2941 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2942 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2943 # because the A-Z/a-z are not consecutive.
2944 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2945         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2946 newmyuname="$myuname"
2947 dflt=n
2948 case "$knowitall" in
2949 '')
2950         if test -f ../config.sh; then
2951                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2952                         eval "`grep myuname= ../config.sh`"
2953                 fi
2954                 if test "X$myuname" = "X$newmyuname"; then
2955                         dflt=y
2956                 fi
2957         fi
2958         ;;
2959 *) dflt=y;;
2960 esac
2961
2962 : Get old answers from old config file if Configure was run on the
2963 : same system, otherwise use the hints.
2964 hint=default
2965 cd ..
2966 if test -f config.sh; then
2967         echo " "
2968         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2969         . UU/myread
2970         case "$ans" in
2971         n*|N*) echo "OK, I'll ignore it."
2972                 mv config.sh config.sh.old
2973                 myuname="$newmyuname"
2974                 ;;
2975         *)  echo "Fetching default answers from your old config.sh file..." >&4
2976                 tmp_n="$n"
2977                 tmp_c="$c"
2978                 tmp_sh="$sh"
2979                 . ./config.sh
2980                 cp config.sh UU
2981                 n="$tmp_n"
2982                 c="$tmp_c"
2983                 : Older versions did not always set $sh.  Catch re-use of such
2984                 : an old config.sh.
2985                 case "$sh" in
2986                 '') sh="$tmp_sh" ;;
2987                 esac
2988                 hint=previous
2989                 ;;
2990         esac
2991 fi
2992 . ./UU/checkcc
2993 if test ! -f config.sh; then
2994         $cat <<EOM
2995
2996 First time through, eh?  I have some defaults handy for some systems
2997 that need some extra help getting the Configure answers right:
2998
2999 EOM
3000         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3001         dflt=''
3002         : Half the following guesses are probably wrong... If you have better
3003         : tests or hints, please send them to perlbug@perl.org
3004         : The metaconfig authors would also appreciate a copy...
3005         $test -f /irix && osname=irix
3006         $test -f /xenix && osname=sco_xenix
3007         $test -f /dynix && osname=dynix
3008         $test -f /dnix && osname=dnix
3009         $test -f /lynx.os && osname=lynxos
3010         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3011         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3012         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3013         $test -f /bin/mips && /bin/mips && osname=mips
3014         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3015                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3016         $test -d /usr/apollo/bin && osname=apollo
3017         $test -f /etc/saf/_sactab && osname=svr4
3018         $test -d /usr/include/minix && osname=minix
3019         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3020         if $test -d /MachTen -o -d /MachTen_Folder; then
3021                 osname=machten
3022                 if $test -x /sbin/version; then
3023                         osvers=`/sbin/version | $awk '{print $2}' |
3024                         $sed -e 's/[A-Za-z]$//'`
3025                 elif $test -x /usr/etc/version; then
3026                         osvers=`/usr/etc/version | $awk '{print $2}' |
3027                         $sed -e 's/[A-Za-z]$//'`
3028                 else
3029                         osvers="$2.$3"
3030                 fi
3031         fi
3032
3033         $test -f /sys/posix.dll &&
3034                 $test -f /usr/bin/what &&
3035                 set X `/usr/bin/what /sys/posix.dll` &&
3036                 $test "$3" = UWIN &&
3037                 osname=uwin &&
3038                 osvers="$5"
3039
3040         if $test -f $uname; then
3041                 set X $myuname
3042                 shift
3043
3044                 case "$5" in
3045                 fps*) osname=fps ;;
3046                 mips*)
3047                         case "$4" in
3048                         umips) osname=umips ;;
3049                         *) osname=mips ;;
3050                         esac;;
3051                 [23]100) osname=mips ;;
3052                 next*) osname=next ;;
3053                 i386*)
3054                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3055                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3056                                 osname='sco'
3057                                 osvers=$tmp
3058                         elif $test -f /etc/kconfig; then
3059                                 osname=isc
3060                                 if test "$lns" = "$ln -s"; then
3061                                         osvers=4
3062                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3063                                         osvers=3
3064                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3065                                         osvers=2
3066                                 fi
3067                         fi
3068                         tmp=''
3069                         ;;
3070                 pc*)
3071                         if test -n "$DJGPP"; then
3072                                 osname=dos
3073                                 osvers=djgpp
3074                         fi
3075                         ;;
3076                 esac
3077
3078                 case "$1" in
3079                 aix) osname=aix
3080                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3081                         case "$tmp" in
3082                         'not found') osvers="$4"."$3" ;;
3083                         '<3240'|'<>3240') osvers=3.2.0 ;;
3084                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3085                         '=3250'|'>3250') osvers=3.2.5 ;;
3086                         *) osvers=$tmp;;
3087                         esac
3088                         ;;
3089                 bsd386) osname=bsd386
3090                         osvers=`$uname -r`
3091                         ;;
3092                 cygwin*) osname=cygwin
3093                         osvers="$3"
3094                         ;;
3095                 *dc.osx) osname=dcosx
3096                         osvers="$3"
3097                         ;;
3098                 dnix) osname=dnix
3099                         osvers="$3"
3100                         ;;
3101                 domainos) osname=apollo
3102                         osvers="$3"
3103                         ;;
3104                 dgux)   osname=dgux 
3105                         osvers="$3"
3106                         ;;
3107                 dynixptx*) osname=dynixptx
3108                         osvers=`echo "$4"|sed 's/^v//'`
3109                         ;;
3110                 freebsd) osname=freebsd 
3111                         osvers="$3" ;;
3112                 genix)  osname=genix ;;
3113                 gnu)    osname=gnu
3114                         osvers="$3" ;;
3115                 hp*)    osname=hpux 
3116                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3117                         ;;
3118                 irix*)  osname=irix
3119                         case "$3" in
3120                         4*) osvers=4 ;;
3121                         5*) osvers=5 ;;
3122                         *)      osvers="$3" ;;
3123                         esac
3124                         ;;
3125                 linux)  osname=linux
3126                         case "$3" in
3127                         *)      osvers="$3" ;;
3128                         esac
3129                         ;;
3130                 MiNT)   osname=mint
3131                         ;;
3132                 netbsd*) osname=netbsd
3133                         osvers="$3"
3134                         ;;
3135                 news-os) osvers="$3"
3136                         case "$3" in
3137                         4*) osname=newsos4 ;;
3138                         *) osname=newsos ;;
3139                         esac
3140                         ;;
3141                 next*) osname=next ;;
3142                 nonstop-ux) osname=nonstopux ;;
3143                 openbsd) osname=openbsd
3144                         osvers="$3"
3145                         ;;
3146                 os2)    osname=os2
3147                         osvers="$4"
3148                         ;;
3149                 POSIX-BC | posix-bc ) osname=posix-bc
3150                         osvers="$3"
3151                         ;;
3152                 powerux | power_ux | powermax_os | powermaxos | \
3153                 powerunix | power_unix) osname=powerux
3154                         osvers="$3"
3155                         ;;
3156                 qnx) osname=qnx
3157                         osvers="$4"
3158                         ;;
3159                 solaris) osname=solaris
3160                         case "$3" in
3161                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3162                         *)      osvers="$3" ;;
3163                         esac
3164                         ;;
3165                 sunos) osname=sunos
3166                         case "$3" in
3167                         5*) osname=solaris
3168                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3169                         *)      osvers="$3" ;;
3170                         esac
3171                         ;;
3172                 titanos) osname=titanos
3173                         case "$3" in
3174                         1*) osvers=1 ;;
3175                         2*) osvers=2 ;;
3176                         3*) osvers=3 ;;
3177                         4*) osvers=4 ;;
3178                         *)      osvers="$3" ;;
3179                         esac
3180                         ;;
3181                 ultrix) osname=ultrix
3182                         osvers="$3"
3183                         ;;
3184                 osf1|mls+)      case "$5" in
3185                                 alpha)
3186                                         osname=dec_osf
3187                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3188                                         case "$osvers" in
3189                                         [1-9].[0-9]*) ;;
3190                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3191                                         esac
3192                                         ;;
3193                         hp*)    osname=hp_osf1  ;;
3194                         mips)   osname=mips_osf1 ;;
3195                         esac
3196                         ;;
3197                 # UnixWare 7.1.2 is known as Open UNIX 8
3198                 openunix|unixware) osname=svr5
3199                         osvers="$4"
3200                         ;;
3201                 uts)    osname=uts
3202                         osvers="$3"
3203                         ;;
3204                 vos) osvers="$3"
3205                         ;;
3206                 $2) case "$osname" in
3207                         *isc*) ;;
3208                         *freebsd*) ;;
3209                         svr*)
3210                                 : svr4.x or possibly later
3211                                 case "svr$3" in 
3212                                 ${osname}*)
3213                                         osname=svr$3
3214                                         osvers=$4
3215                                         ;;
3216                                 esac
3217                                 case "$osname" in
3218                                 svr4.0)
3219                                         : Check for ESIX
3220                                         if test -f /stand/boot ; then
3221                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3222                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3223                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3224                                                         if test -n "$isesix"; then
3225                                                                 osname=esix4
3226                                                         fi
3227                                                 fi
3228                                         fi
3229                                         ;;
3230                                 esac
3231                                 ;;
3232                         *)      if test -f /etc/systemid; then
3233                                         osname=sco
3234                                         set `echo $3 | $sed 's/\./ /g'` $4
3235                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3236                                                 osvers=$1.$2.$3
3237                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3238                                                 osvers=$1.$2
3239                                         elif $test -f $src/hints/sco_$1.sh; then
3240                                                 osvers=$1
3241                                         fi
3242                                 else
3243                                         case "$osname" in
3244                                         '') : Still unknown.  Probably a generic Sys V.
3245                                                 osname="sysv"
3246                                                 osvers="$3"
3247                                                 ;;
3248                                         esac
3249                                 fi
3250                                 ;;
3251                         esac
3252                         ;;
3253                 *)      case "$osname" in
3254                         '') : Still unknown.  Probably a generic BSD.
3255                                 osname="$1"
3256                                 osvers="$3"
3257                                 ;;
3258                         esac
3259                         ;;
3260                 esac
3261         else
3262                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3263                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3264                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3265                                 osname=news_os
3266                         fi
3267                         $rm -f UU/kernel.what
3268                 elif test -d c:/. -o -n "$is_os2" ; then
3269                         set X $myuname
3270                         osname=os2
3271                         osvers="$5"
3272                 fi
3273         fi
3274         
3275         case "$targetarch" in
3276         '') ;;
3277         *)  hostarch=$osname
3278             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3279             osvers=''
3280             ;;
3281         esac
3282
3283         : Now look for a hint file osname_osvers, unless one has been
3284         : specified already.
3285         case "$hintfile" in
3286         ''|' ')
3287                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3288                 : Also try without trailing minor version numbers.
3289                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3290                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3291                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3292                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3293                 case "$file" in
3294                 '') dflt=none ;;
3295                 *)  case "$osvers" in
3296                         '') dflt=$file
3297                                 ;;
3298                         *)  if $test -f $src/hints/$file.sh ; then
3299                                         dflt=$file
3300                                 elif $test -f $src/hints/$xfile.sh ; then
3301                                         dflt=$xfile
3302                                 elif $test -f $src/hints/$xxfile.sh ; then
3303                                         dflt=$xxfile
3304                                 elif $test -f $src/hints/$xxxfile.sh ; then
3305                                         dflt=$xxxfile
3306                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3307                                         dflt=$xxxxfile
3308                                 elif $test -f "$src/hints/${osname}.sh" ; then
3309                                         dflt="${osname}"
3310                                 else
3311                                         dflt=none
3312                                 fi
3313                                 ;;
3314                         esac
3315                         ;;
3316                 esac
3317                 if $test -f Policy.sh ; then
3318                         case "$dflt" in
3319                         *Policy*) ;;
3320                         none) dflt="Policy" ;;
3321                         *) dflt="Policy $dflt" ;;
3322                         esac
3323                 fi
3324                 ;;
3325         *)
3326                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3327                 ;;
3328         esac
3329
3330         if $test -f Policy.sh ; then
3331                 $cat <<EOM
3332
3333 There's also a Policy hint file available, which should make the
3334 site-specific (policy) questions easier to answer.
3335 EOM
3336
3337         fi
3338
3339         $cat <<EOM
3340
3341 You may give one or more space-separated answers, or "none" if appropriate.
3342 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3343 is a good thing.  DO NOT give a wrong version or a wrong OS.
3344
3345 EOM
3346
3347         rp="Which of these apply, if any?"
3348         . UU/myread
3349         tans=$ans
3350         for file in $tans; do
3351                 if $test X$file = XPolicy -a -f Policy.sh; then
3352                         . Policy.sh
3353                         $cat Policy.sh >> UU/config.sh
3354                 elif $test -f $src/hints/$file.sh; then
3355                         . $src/hints/$file.sh
3356                         $cat $src/hints/$file.sh >> UU/config.sh
3357                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3358                         : nothing
3359                 else
3360                         : Give one chance to correct a possible typo.
3361                         echo "$file.sh does not exist"
3362                         dflt=$file
3363                         rp="hint to use instead?"
3364                         . UU/myread
3365                         for file in $ans; do
3366                                 if $test -f "$src/hints/$file.sh"; then
3367                                         . $src/hints/$file.sh
3368                                         $cat $src/hints/$file.sh >> UU/config.sh
3369                                 elif $test X$ans = X -o X$ans = Xnone ; then
3370                                         : nothing
3371                                 else
3372                                         echo "$file.sh does not exist -- ignored."
3373                                 fi
3374                         done
3375                 fi
3376         done
3377
3378         hint=recommended
3379         : Remember our hint file for later.
3380         if $test -f "$src/hints/$file.sh" ; then
3381                 hintfile="$file"
3382         else
3383                 hintfile=''
3384         fi
3385 fi
3386 cd UU
3387 ;;
3388 *)
3389         echo " "
3390         echo "Fetching default answers from $config_sh..." >&4
3391         tmp_n="$n"
3392         tmp_c="$c"
3393         cd ..
3394         cp $config_sh config.sh 2>/dev/null
3395         chmod +w config.sh
3396         . ./config.sh
3397         cd UU
3398         cp ../config.sh .
3399         n="$tmp_n"
3400         c="$tmp_c"
3401         hint=previous
3402         ;;
3403 esac
3404 test "$override" && . ./optdef.sh
3405
3406 : Restore computed paths
3407 for file in $loclist $trylist; do
3408         eval $file="\$_$file"
3409 done
3410
3411 cat << EOM
3412
3413 Configure uses the operating system name and version to set some defaults.
3414 The default value is probably right if the name rings a bell. Otherwise,
3415 since spelling matters for me, either accept the default or answer "none"
3416 to leave it blank.
3417
3418 EOM
3419 case "$osname" in
3420         ''|' ')
3421                 case "$hintfile" in
3422                 ''|' '|none) dflt=none ;;
3423                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3424                 esac
3425                 ;;
3426         *) dflt="$osname" ;;
3427 esac
3428 rp="Operating system name?"
3429 . ./myread
3430 case "$ans" in
3431 none)  osname='' ;;
3432 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3433 esac
3434 echo " "
3435 case "$osvers" in
3436         ''|' ')
3437                 case "$hintfile" in
3438                 ''|' '|none) dflt=none ;;
3439                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3440                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3441                         case "$dflt" in
3442                         ''|' ') dflt=none ;;
3443                         esac
3444                         ;;
3445                 esac
3446                 ;;
3447         *) dflt="$osvers" ;;
3448 esac
3449 rp="Operating system version?"
3450 . ./myread
3451 case "$ans" in
3452 none)  osvers='' ;;
3453 *) osvers="$ans" ;;
3454 esac
3455
3456
3457 . ./posthint.sh
3458
3459 : who configured the system
3460 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3461 case "$cf_by" in
3462 "")
3463         cf_by=`(logname) 2>/dev/null`
3464         case "$cf_by" in
3465         "")
3466                 cf_by=`(whoami) 2>/dev/null`
3467                 case "$cf_by" in
3468                 "") cf_by=unknown ;;
3469                 esac ;;
3470         esac ;;
3471 esac
3472
3473 : set up the script used to warn in case of inconsistency
3474 cat <<EOS >whoa
3475 $startsh
3476 EOS
3477 cat <<'EOSC' >>whoa
3478 dflt=y
3479 echo " "
3480 echo "*** WHOA THERE!!! ***" >&4
3481 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3482 rp="    Keep the $hint value?"
3483 . ./myread
3484 case "$ans" in
3485 y) td=$was; tu=$was;;
3486 esac
3487 EOSC
3488
3489 : function used to set $1 to $val
3490 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3491 case "$val$was" in
3492 $define$undef) . ./whoa; eval "$var=\$td";;
3493 $undef$define) . ./whoa; eval "$var=\$tu";;
3494 *) eval "$var=$val";;
3495 esac'
3496
3497 case "$usesocks" in
3498 $define|true|[yY]*)     dflt='y';;
3499 *) dflt='n';;
3500 esac
3501 cat <<EOM
3502
3503 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3504 Configure must be run with -Dusesocks.  If you use SOCKS you also need
3505 to use the PerlIO abstraction layer, this will be implicitly selected.
3506
3507 If this doesn't make any sense to you, just accept the default '$dflt'.
3508 EOM
3509 rp='Build Perl for SOCKS?'
3510 . ./myread
3511 case "$ans" in
3512 y|Y)    val="$define" ;;     
3513 *)      val="$undef" ;;
3514 esac
3515 set usesocks
3516 eval $setvar
3517
3518 case "$usesocks" in
3519 $define|true|[yY]*) useperlio="$define";;
3520 esac
3521
3522 case "$useperlio" in
3523 $define|true|[yY]*|'')  dflt='y';;
3524 *) dflt='n';;
3525 esac
3526 cat <<EOM
3527
3528 Previous version of $package used the standard IO mechanisms as
3529 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
3530 alternate IO mechanisms via the PerlIO abstraction layer, but the
3531 stdio mechanism is still available if needed.  The abstraction layer
3532 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3533 Using PerlIO with sfio may cause problems with some extension modules.
3534
3535 If this doesn't make any sense to you, just accept the default '$dflt'.
3536 EOM
3537 rp='Use the PerlIO abstraction layer?'
3538 . ./myread
3539 case "$ans" in
3540 y|Y) 
3541         val="$define"
3542         ;;
3543 *)      
3544         echo "Ok, doing things the stdio way."
3545         val="$undef"
3546         ;;
3547 esac
3548 set useperlio
3549 eval $setvar 
3550
3551 case "$usesocks" in
3552 $define|true|[yY]*)
3553         case "$useperlio" in
3554         $define|true|[yY]*) ;;
3555         *)      cat >&4 <<EOM
3556
3557 You are using the SOCKS proxy protocol library which means that you
3558 should also use the PerlIO layer.  You may be headed for trouble.
3559
3560 EOM
3561                 ;;
3562         esac
3563         ;;
3564 esac
3565
3566         
3567 case "$usethreads" in
3568 $define|true|[yY]*)     dflt='y';;
3569 *)     # Catch case where user specified ithreads or 5005threads but
3570        # forgot -Dusethreads (A.D. 4/2002)
3571        case "$useithreads$use5005threads" in
3572        *$define*)      
3573                 case "$useperlio" in
3574                 "$define")      dflt='y' ;;
3575                 *)              dflt='n' ;;
3576                 esac
3577                 ;;
3578        *)       dflt='n';;
3579        esac
3580        ;;
3581 esac
3582 cat <<EOM
3583
3584 Perl can be built to take advantage of threads on some systems.
3585 To do so, Configure can be run with -Dusethreads.
3586
3587 Note that Perl built with threading support runs slightly slower
3588 and uses more memory than plain Perl. The current implementation
3589 is believed to be stable, but it is fairly new, and so should be
3590 treated with caution.
3591
3592 If this doesn't make any sense to you, just accept the default '$dflt'.
3593 EOM
3594 rp='Build a threading Perl?'
3595 . ./myread
3596 case "$ans" in
3597 y|Y)    val="$define" ;;
3598 *)      val="$undef" ;;
3599 esac
3600 set usethreads
3601 eval $setvar
3602
3603 case "$usethreads" in
3604 $define)
3605         $cat <<EOM
3606
3607 Since release 5.6, Perl has had two different threading implementations,
3608 the newer interpreter-based version (ithreads) with one interpreter per
3609 thread, and the older 5.005 version (5005threads).
3610 The 5005threads version is effectively unmaintained and will probably be
3611 removed in Perl 5.10, so there should be no need to build a Perl using it
3612 unless needed for backwards compatibility with some existing 5.005threads
3613 code.
3614
3615 EOM
3616         : Default to ithreads unless overridden on command line or with
3617         : old config.sh
3618         dflt='y'
3619         case "$use5005threads" in
3620                 $define|true|[yY]*) dflt='n';;
3621         esac
3622         case "$useithreads" in
3623                 $undef|false|[nN]*) dflt='n';;
3624         esac
3625         rp='Use the newer interpreter-based ithreads?'
3626         . ./myread
3627         case "$ans" in
3628         y|Y)    val="$define" ;;
3629         *)      val="$undef" ;;
3630         esac
3631         set useithreads
3632         eval $setvar
3633         : Now set use5005threads to the opposite value.
3634         case "$useithreads" in
3635         $define) val="$undef" ;;
3636         *) val="$define" ;;
3637         esac
3638         set use5005threads
3639         eval $setvar
3640         ;;
3641 *)
3642         useithreads="$undef"
3643         use5005threads="$undef"
3644         ;;
3645 esac
3646
3647 case "$useithreads$use5005threads" in
3648 "$define$define")
3649         $cat >&4 <<EOM
3650
3651 You cannot have both the ithreads and the 5.005 threads enabled
3652 at the same time.  Disabling the 5.005 threads since they are
3653 much less stable than the ithreads.
3654
3655 EOM
3656         use5005threads="$undef"
3657         ;;
3658 esac
3659
3660 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3661         cat >&4 <<EOF
3662 ***
3663 *** To build with ithreads you must also use the PerlIO layer.
3664 *** Cannot continue, aborting.
3665 ***
3666 EOF
3667         exit 1
3668 fi
3669
3670 case "$d_oldpthreads" in
3671 '')     : Configure tests would be welcome here.  For now, assume undef.
3672         val="$undef" ;;
3673 *)      val="$d_oldpthreads" ;;
3674 esac
3675 set d_oldpthreads
3676 eval $setvar
3677
3678
3679 : Look for a hint-file generated 'call-back-unit'.  If the
3680 : user has specified that a threading perl is to be built,
3681 : we may need to set or change some other defaults.
3682 if $test -f usethreads.cbu; then
3683     echo "Your platform has some specific hints regarding threaded builds, using them..."
3684     . ./usethreads.cbu
3685 else
3686     case "$usethreads" in
3687         "$define"|true|[yY]*)
3688                 $cat <<EOM
3689 (Your platform does not have any specific hints for threaded builds.
3690  Assuming POSIX threads, then.)
3691 EOM
3692         ;;
3693     esac
3694 fi
3695
3696 cat <<EOM
3697
3698 Perl can be built so that multiple Perl interpreters can coexist
3699 within the same Perl executable.
3700 EOM
3701
3702 case "$useithreads" in
3703 $define)
3704         cat <<EOM
3705 This multiple interpreter support is required for interpreter-based threads.
3706 EOM
3707         val="$define"
3708         ;;
3709 *)      case "$usemultiplicity" in
3710         $define|true|[yY]*)     dflt='y';;
3711         *) dflt='n';;
3712         esac
3713         echo " "
3714         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3715         rp='Build Perl for multiplicity?'
3716         . ./myread
3717         case "$ans" in
3718         y|Y)    val="$define" ;;
3719         *)      val="$undef" ;;
3720         esac
3721         ;;
3722 esac
3723 set usemultiplicity
3724 eval $setvar
3725
3726
3727 case "$usemorebits" in
3728 "$define"|true|[yY]*)
3729         use64bitint="$define"
3730         uselongdouble="$define"
3731         usemorebits="$define"
3732         ;;
3733 *)      usemorebits="$undef"
3734         ;;
3735 esac
3736
3737 : make some quick guesses about what we are up against
3738 echo " "
3739 $echo $n "Hmm...  $c"
3740 echo exit 1 >bsd
3741 echo exit 1 >usg
3742 echo exit 1 >v7
3743 echo exit 1 >osf1
3744 echo exit 1 >eunice
3745 echo exit 1 >xenix
3746 echo exit 1 >venix
3747 echo exit 1 >os2
3748 d_bsd="$undef"
3749 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3750 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3751 then
3752         echo "Looks kind of like an OSF/1 system, but we'll see..."
3753         echo exit 0 >osf1
3754 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3755         xxx=`./loc addbib blurfl $pth`
3756         if $test -f $xxx; then
3757         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3758                 echo exit 0 >bsd
3759                 echo exit 0 >usg
3760         else
3761                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3762                         echo "Looks kind of like an extended USG system, but we'll see..."
3763                 else
3764                         echo "Looks kind of like a USG system, but we'll see..."
3765                 fi
3766                 echo exit 0 >usg
3767         fi
3768 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3769         echo "Looks kind of like a BSD system, but we'll see..."
3770         d_bsd="$define"
3771         echo exit 0 >bsd
3772 else
3773         echo "Looks kind of like a Version 7 system, but we'll see..."
3774         echo exit 0 >v7
3775 fi
3776 case "$eunicefix" in
3777 *unixtovms*)
3778         $cat <<'EOI'
3779 There is, however, a strange, musty smell in the air that reminds me of
3780 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3781 EOI
3782         echo exit 0 >eunice
3783         d_eunice="$define"
3784 : it so happens the Eunice I know will not run shell scripts in Unix format
3785         ;;
3786 *)
3787         echo " "
3788         echo "Congratulations.  You aren't running Eunice."
3789         d_eunice="$undef"
3790         ;;
3791 esac
3792 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3793 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3794 : semicolon as a patch separator
3795 case "$p_" in
3796 :) ;;
3797 *)
3798         $cat <<'EOI'
3799 I have the feeling something is not exactly right, however...don't tell me...
3800 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3801 (Or you may be running DOS with DJGPP.)
3802 EOI
3803         echo exit 0 >os2
3804         ;;
3805 esac
3806 if test -f /xenix; then
3807         echo "Actually, this looks more like a XENIX system..."
3808         echo exit 0 >xenix
3809         d_xenix="$define"
3810 else
3811         echo " "
3812         echo "It's not Xenix..."
3813         d_xenix="$undef"
3814 fi
3815 chmod +x xenix
3816 $eunicefix xenix
3817 if test -f /venix; then
3818         echo "Actually, this looks more like a VENIX system..."
3819         echo exit 0 >venix
3820 else
3821         echo " "
3822         if ./xenix; then
3823                 : null
3824         else
3825                 echo "Nor is it Venix..."
3826         fi
3827 fi
3828 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3829 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3830 $rm -f foo
3831
3832 case "$cc" in
3833 '') dflt=cc;;
3834 *) dflt="$cc";;
3835 esac
3836 rp="Use which C compiler?"
3837 . ./myread
3838 cc="$ans"
3839
3840 : See if they have not cc but they do have gcc
3841 . ./trygcc
3842 : Look for a hint-file generated 'call-back-unit'.  Now that the
3843 : user has specified the compiler, we may need to set or change some
3844 : other defaults.
3845 if $test -f cc.cbu; then
3846     . ./cc.cbu
3847 fi
3848 . ./checkcc
3849
3850 echo " "
3851 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3852 $cat >try.c <<EOM
3853 #include <stdio.h>
3854 int main() {
3855 #ifdef __GNUC__
3856 #ifdef __VERSION__
3857         printf("%s\n", __VERSION__);
3858 #else
3859         printf("%s\n", "1");
3860 #endif
3861 #endif
3862         return(0);
3863 }
3864 EOM
3865 if $cc -o try $ccflags $ldflags try.c; then
3866         gccversion=`$run ./try`
3867         case "$gccversion" in
3868         '') echo "You are not using GNU cc." ;;
3869         *)  echo "You are using GNU cc $gccversion."
3870             ccname=gcc
3871             ;;
3872         esac
3873 else
3874         echo " "
3875         echo "*** WHOA THERE!!! ***" >&4
3876         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3877         case "$knowitall" in
3878         '')
3879         echo "    You'd better start hunting for one and let me know about it." >&4
3880                 exit 1
3881                 ;;
3882         esac
3883 fi
3884 $rm -f try try.*
3885 case "$gccversion" in
3886 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3887 esac
3888 case "$gccversion" in
3889 '') gccosandvers='' ;;
3890 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3891    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3892    gccshortvers=''
3893    case "$gccosandvers" in
3894    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3895    $osname$osvers) ;; # looking good
3896    $osname*) cat <<EOM >&4
3897
3898 *** WHOA THERE!!! ***
3899
3900     Your gcc has not been compiled for the exact release of
3901     your operating system ($gccosandvers versus $osname$osvers).
3902
3903     In general it is a good idea to keep gcc synchronized with
3904     the operating system because otherwise serious problems
3905     may ensue when trying to compile software, like Perl.
3906
3907     I'm trying to be optimistic here, though, and will continue.
3908     If later during the configuration and build icky compilation
3909     problems appear (headerfile conflicts being the most common
3910     manifestation), I suggest reinstalling the gcc to match
3911     your operating system release.
3912
3913 EOM
3914       ;;
3915    *) gccosandvers='' ;; # failed to parse, better be silent
3916    esac
3917    ;;
3918 esac
3919 case "$ccname" in
3920 '') ccname="$cc" ;;
3921 esac
3922
3923 # gcc 3.* complain about adding -Idirectories that they already know about,
3924 # so we will take those off from locincpth.
3925 case "$gccversion" in
3926 3*)
3927     echo "main(){}">try.c
3928     for incdir in $locincpth; do
3929        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3930              grep '^c[cp]p*[01]: warning: changing search order '`
3931        if test "X$warn" != X; then
3932            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3933        fi
3934     done
3935     $rm -f try try.*
3936 esac
3937
3938 : decide how portable to be.  Allow command line overrides.
3939 case "$d_portable" in
3940 "$undef") ;;
3941 *)      d_portable="$define" ;;
3942 esac
3943
3944 : set up shell script to do ~ expansion
3945 cat >filexp <<EOSS
3946 $startsh
3947 : expand filename
3948 case "\$1" in
3949  ~/*|~)
3950         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3951         ;;
3952  ~*)
3953         if $test -f /bin/csh; then
3954                 /bin/csh -f -c "glob \$1"
3955                 failed=\$?
3956                 echo ""
3957                 exit \$failed
3958         else
3959                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3960                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3961                 if $test ! -d "\$dir"; then
3962                         me=\`basename \$0\`
3963                         echo "\$me: can't locate home directory for: \$name" >&2
3964                         exit 1
3965                 fi
3966                 case "\$1" in
3967                 */*)
3968                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3969                         ;;
3970                 *)
3971                         echo \$dir
3972                         ;;
3973                 esac
3974         fi
3975         ;;
3976 *)
3977         echo \$1
3978         ;;
3979 esac
3980 EOSS
3981 chmod +x filexp
3982 $eunicefix filexp
3983
3984 : now set up to get a file name
3985 cat <<EOS >getfile
3986 $startsh
3987 EOS
3988 cat <<'EOSC' >>getfile
3989 tilde=''
3990 fullpath=''
3991 already=''
3992 skip=''
3993 none_ok=''
3994 exp_file=''
3995 nopath_ok=''
3996 orig_rp="$rp"
3997 orig_dflt="$dflt"
3998 case "$gfpth" in
3999 '') gfpth='.' ;;
4000 esac
4001
4002 case "$fn" in
4003 *\(*)
4004         : getfile will accept an answer from the comma-separated list
4005         : enclosed in parentheses even if it does not meet other criteria.
4006         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4007         fn=`echo $fn | sed 's/(.*)//'`
4008         ;;
4009 esac
4010
4011 case "$fn" in
4012 *:*)
4013         loc_file=`expr $fn : '.*:\(.*\)'`
4014         fn=`expr $fn : '\(.*\):.*'`
4015         ;;
4016 esac
4017
4018 case "$fn" in
4019 *~*) tilde=true;;
4020 esac
4021 case "$fn" in
4022 */*) fullpath=true;;
4023 esac
4024 case "$fn" in
4025 *+*) skip=true;;
4026 esac
4027 case "$fn" in
4028 *n*) none_ok=true;;
4029 esac
4030 case "$fn" in
4031 *e*) exp_file=true;;
4032 esac
4033 case "$fn" in
4034 *p*) nopath_ok=true;;
4035 esac
4036
4037 case "$fn" in
4038 *f*) type='File';;
4039 *d*) type='Directory';;
4040 *l*) type='Locate';;
4041 esac
4042
4043 what="$type"
4044 case "$what" in
4045 Locate) what='File';;
4046 esac
4047
4048 case "$exp_file" in
4049 '')
4050         case "$d_portable" in
4051         "$define") ;;
4052         *) exp_file=true;;
4053         esac
4054         ;;
4055 esac
4056
4057 cd ..
4058 while test "$type"; do
4059         redo=''
4060         rp="$orig_rp"
4061         dflt="$orig_dflt"
4062         case "$tilde" in
4063         true) rp="$rp (~name ok)";;
4064         esac
4065         . UU/myread
4066         if test -f UU/getfile.ok && \
4067                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4068         then
4069                 value="$ans"
4070                 ansexp="$ans"
4071                 break
4072         fi
4073         case "$ans" in
4074         none)
4075                 value=''
4076                 ansexp=''
4077                 case "$none_ok" in
4078                 true) type='';;
4079                 esac
4080                 ;;
4081         *)
4082                 case "$tilde" in
4083                 '') value="$ans"
4084                         ansexp="$ans";;
4085                 *)
4086                         value=`UU/filexp $ans`
4087                         case $? in
4088                         0)
4089                                 if test "$ans" != "$value"; then
4090                                         echo "(That expands to $value on this system.)"
4091                                 fi
4092                                 ;;
4093                         *) value="$ans";;
4094                         esac
4095                         ansexp="$value"
4096                         case "$exp_file" in
4097                         '') value="$ans";;
4098                         esac
4099                         ;;
4100                 esac
4101                 case "$fullpath" in
4102                 true)
4103                         case "$ansexp" in
4104                         /*) value="$ansexp" ;;
4105                         [a-zA-Z]:/*) value="$ansexp" ;;
4106                         *)
4107                                 redo=true
4108                                 case "$already" in
4109                                 true)
4110                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4111                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4112                                         ;;
4113                                 *)
4114                                 echo "Please give a full path name, starting with slash." >&4
4115                                         case "$tilde" in
4116                                         true)
4117                                 echo "Note that using ~name is ok provided it expands well." >&4
4118                                                 already=true
4119                                                 ;;
4120                                         esac
4121                                 esac
4122                                 ;;
4123                         esac
4124                         ;;
4125                 esac
4126                 case "$redo" in
4127                 '')
4128                         case "$type" in
4129                         File)
4130                                 for fp in $gfpth; do
4131                                         if test "X$fp" = X.; then
4132                                             pf="$ansexp"
4133                                         else    
4134                                             pf="$fp/$ansexp"
4135                                         fi
4136                                         if test -f "$pf"; then
4137                                                 type=''
4138                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4139                                         then
4140                                                 echo "($value is not a plain file, but that's ok.)"
4141                                                 type=''
4142                                         fi
4143                                         if test X"$type" = X; then
4144                                             value="$pf"
4145                                             break
4146                                         fi
4147                                 done
4148                                 ;;
4149                         Directory)
4150                                 for fp in $gfpth; do
4151                                         if test "X$fp" = X.; then
4152                                             dir="$ans"
4153                                             direxp="$ansexp"
4154                                         else    
4155                                             dir="$fp/$ansexp"
4156                                             direxp="$fp/$ansexp"
4157                                         fi
4158                                         if test -d "$direxp"; then
4159                                                 type=''
4160                                                 value="$dir"
4161                                                 break
4162                                         fi
4163                                 done
4164                                 ;;
4165                         Locate)
4166                                 if test -d "$ansexp"; then
4167                                         echo "(Looking for $loc_file in directory $value.)"
4168                                         value="$value/$loc_file"
4169                                         ansexp="$ansexp/$loc_file"
4170                                 fi
4171                                 if test -f "$ansexp"; then
4172                                         type=''
4173                                 fi
4174                                 case "$nopath_ok" in
4175                                 true)   case "$value" in
4176                                         */*) ;;
4177                                         *)      echo "Assuming $value will be in people's path."
4178                                                 type=''
4179                                                 ;;
4180                                         esac
4181                                         ;;
4182                                 esac
4183                                 ;;
4184                         esac
4185
4186                         case "$skip" in
4187                         true) type='';
4188                         esac
4189
4190                         case "$type" in
4191                         '') ;;
4192                         *)
4193                                 if test "$fastread" = yes; then
4194                                         dflt=y
4195                                 else
4196                                         dflt=n
4197                                 fi
4198                                 rp="$what $value doesn't exist.  Use that name anyway?"
4199                                 . UU/myread
4200                                 dflt=''
4201                                 case "$ans" in
4202                                 y*) type='';;
4203                                 *) echo " ";;
4204                                 esac
4205                                 ;;
4206                         esac
4207                         ;;
4208                 esac
4209                 ;;
4210         esac
4211 done
4212 cd UU
4213 ans="$value"
4214 rp="$orig_rp"
4215 dflt="$orig_dflt"
4216 rm -f getfile.ok
4217 test "X$gfpthkeep" != Xy && gfpth=""
4218 EOSC
4219
4220 : What should the include directory be ?
4221 echo " "
4222 $echo $n "Hmm...  $c"
4223 dflt='/usr/include'
4224 incpath=''
4225 mips_type=''
4226 if $test -f /bin/mips && /bin/mips; then
4227         echo "Looks like a MIPS system..."
4228         $cat >usr.c <<'EOCP'
4229 #ifdef SYSTYPE_BSD43
4230 /bsd43
4231 #endif
4232 EOCP
4233         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4234                 dflt='/bsd43/usr/include'
4235                 incpath='/bsd43'
4236                 mips_type='BSD 4.3'
4237         else
4238                 mips_type='System V'
4239         fi
4240         $rm -f usr.c usr.out
4241         echo "and you're compiling with the $mips_type compiler and libraries."
4242         xxx_prompt=y
4243         echo "exit 0" >mips
4244 else
4245         echo "Doesn't look like a MIPS system."
4246         xxx_prompt=n
4247         echo "exit 1" >mips
4248 fi
4249 chmod +x mips
4250 $eunicefix mips
4251 case "$usrinc" in
4252 '') ;;
4253 *) dflt="$usrinc";;
4254 esac
4255 case "$xxx_prompt" in
4256 y)      fn=d/
4257         echo " "
4258         rp='Where are the include files you want to use?'
4259         . ./getfile
4260         usrinc="$ans"
4261         ;;
4262 *)      usrinc="$dflt"
4263         ;;
4264 esac
4265
4266 : see how we invoke the C preprocessor
4267 echo " "
4268 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4269 cat <<'EOT' >testcpp.c
4270 #define ABC abc
4271 #define XYZ xyz
4272 ABC.XYZ
4273 EOT
4274 cd ..
4275 if test ! -f cppstdin; then
4276         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4277                 # AIX cc -E doesn't show the absolute headerfile
4278                 # locations but we'll cheat by using the -M flag.
4279                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
4280         else
4281                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4282         fi
4283 else
4284         echo "Keeping your $hint cppstdin wrapper."
4285 fi
4286 chmod 755 cppstdin
4287 wrapper=`pwd`/cppstdin
4288 ok='false'
4289 cd UU
4290
4291 if $test "X$cppstdin" != "X" && \
4292         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4293         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4294 then
4295         echo "You used to use $cppstdin $cppminus so we'll use that again."
4296         case "$cpprun" in
4297         '') echo "But let's see if we can live without a wrapper..." ;;
4298         *)
4299                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4300                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4301                 then
4302                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4303                         ok='true'
4304                 else
4305                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4306                 fi
4307                 ;;
4308         esac
4309 else
4310         case "$cppstdin" in
4311         '') ;;
4312         *)
4313                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4314                 ;;
4315         esac
4316 fi
4317
4318 if $ok; then
4319         : nothing
4320 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4321         $cc -E <testcpp.c >testcpp.out 2>&1; \
4322         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4323         echo "Yup, it does."
4324         x_cpp="$cc -E"
4325         x_minus='';
4326 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4327         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4328         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4329         echo "Yup, it does."
4330         x_cpp="$cc -E"
4331         x_minus='-';
4332 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4333         $cc -P <testcpp.c >testcpp.out 2>&1; \
4334         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4335         echo "Yipee, that works!"
4336         x_cpp="$cc -P"
4337         x_minus='';
4338 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4339         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4340         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4341         echo "At long last!"
4342         x_cpp="$cc -P"
4343         x_minus='-';
4344 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4345         $cpp <testcpp.c >testcpp.out 2>&1; \
4346         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4347         echo "It works!"
4348         x_cpp="$cpp"
4349         x_minus='';
4350 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4351         $cpp - <testcpp.c >testcpp.out 2>&1; \
4352         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4353         echo "Hooray, it works!  I was beginning to wonder."
4354         x_cpp="$cpp"
4355         x_minus='-';
4356 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4357         $wrapper <testcpp.c >testcpp.out 2>&1; \
4358         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4359         x_cpp="$wrapper"
4360         x_minus=''
4361         echo "Eureka!"
4362 else
4363         dflt=''
4364         rp="No dice.  I can't find a C preprocessor.  Name one:"
4365         . ./myread
4366         x_cpp="$ans"
4367         x_minus=''
4368         $x_cpp <testcpp.c >testcpp.out 2>&1
4369         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4370                 echo "OK, that will do." >&4
4371         else
4372 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4373                 exit 1
4374         fi
4375 fi
4376
4377 case "$ok" in
4378 false)
4379         cppstdin="$x_cpp"
4380         cppminus="$x_minus"
4381         cpprun="$x_cpp"
4382         cpplast="$x_minus"
4383         set X $x_cpp
4384         shift
4385         case "$1" in
4386         "$cpp")
4387                 echo "Perhaps can we force $cc -E using a wrapper..."
4388                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4389                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4390                 then
4391                         echo "Yup, we can."
4392                         cppstdin="$wrapper"
4393                         cppminus='';
4394                 else
4395                         echo "Nope, we'll have to live without it..."
4396                 fi
4397                 ;;
4398         esac
4399         case "$cpprun" in
4400         "$wrapper")
4401                 cpprun=''
4402                 cpplast=''
4403                 ;;
4404         esac
4405         ;;
4406 esac
4407
4408 case "$cppstdin" in
4409 "$wrapper"|'cppstdin') ;;
4410 *) $rm -f $wrapper;;
4411 esac
4412 $rm -f testcpp.c testcpp.out
4413
4414 : Set private lib path
4415 case "$plibpth" in
4416 '') if ./mips; then
4417                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4418         fi;;
4419 esac
4420 case "$libpth" in
4421 ' ') dlist='';;
4422 '') dlist="$loclibpth $plibpth $glibpth";;
4423 *) dlist="$libpth";;
4424 esac
4425
4426 : Now check and see which directories actually exist, avoiding duplicates
4427 libpth=''
4428 for xxx in $dlist
4429 do
4430     if $test -d $xxx; then
4431                 case " $libpth " in
4432                 *" $xxx "*) ;;
4433                 *) libpth="$libpth $xxx";;
4434                 esac
4435     fi
4436 done
4437 $cat <<'EOM'
4438
4439 Some systems have incompatible or broken versions of libraries.  Among
4440 the directories listed in the question below, please remove any you
4441 know not to be holding relevant libraries, and add any that are needed.
4442 Say "none" for none.
4443
4444 EOM
4445 case "$libpth" in
4446 '') dflt='none';;
4447 *)
4448         set X $libpth
4449         shift
4450         dflt=${1+"$@"}
4451         ;;
4452 esac
4453 rp="Directories to use for library searches?"
4454 . ./myread
4455 case "$ans" in
4456 none) libpth=' ';;
4457 *) libpth="$ans";;
4458 esac
4459
4460 : compute shared library extension
4461 case "$so" in
4462 '')
4463         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4464                 dflt='sl'
4465         else
4466                 dflt='so'
4467         fi
4468         ;;
4469 *) dflt="$so";;
4470 esac
4471 $cat <<EOM
4472
4473 On some systems, shared libraries may be available.  Answer 'none' if
4474 you want to suppress searching of shared libraries for the remainder
4475 of this configuration.
4476
4477 EOM
4478 rp='What is the file extension used for shared libraries?'
4479 . ./myread
4480 so="$ans"
4481
4482 : Define several unixisms.
4483 : Hints files or command line option can be used to override them.
4484 : The convoluted testing is in case hints files set either the old
4485 : or the new name.
4486 case "$_exe" in
4487 '')     case "$exe_ext" in
4488         '')     ;;
4489         *)      _exe="$exe_ext" ;;
4490         esac
4491         ;;
4492 esac
4493 case "$_a" in
4494 '')     case "$lib_ext" in
4495     '') _a='.a';;
4496         *)      _a="$lib_ext" ;;
4497         esac
4498         ;;
4499 esac
4500 case "$_o" in
4501 '') case "$obj_ext" in
4502         '')     _o='.o';;
4503         *)      _o="$obj_ext";;
4504         esac
4505         ;;
4506 esac
4507 case "$p_" in
4508 '') case "$path_sep" in
4509         '')     p_=':';;
4510         *)      p_="$path_sep";;
4511         esac
4512         ;;
4513 esac
4514 exe_ext=$_exe
4515 lib_ext=$_a
4516 obj_ext=$_o
4517 path_sep=$p_
4518
4519 : Which makefile gets called first.  This is used by make depend.
4520 case "$firstmakefile" in
4521 '') firstmakefile='makefile';;
4522 esac
4523
4524 case "$ccflags" in
4525 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4526 esac
4527
4528 case "$uselongdouble" in
4529 $define|true|[yY]*)     dflt='y';;
4530 *) dflt='n';;
4531 esac
4532 cat <<EOM
4533
4534 Perl can be built to take advantage of long doubles which
4535 (if available) may give more accuracy and range for floating point numbers.
4536
4537 If this doesn't make any sense to you, just accept the default '$dflt'.
4538 EOM
4539 rp='Try to use long doubles if available?'
4540 . ./myread
4541 case "$ans" in
4542 y|Y)    val="$define"   ;;
4543 *)      val="$undef"    ;;
4544 esac
4545 set uselongdouble
4546 eval $setvar
4547
4548 case "$uselongdouble" in
4549 true|[yY]*) uselongdouble="$define" ;;
4550 esac
4551
4552 : Look for a hint-file generated 'call-back-unit'.  If the
4553 : user has specified that long doubles should be used,
4554 : we may need to set or change some other defaults.
4555 if $test -f uselongdouble.cbu; then
4556     echo "Your platform has some specific hints regarding long doubles, using them..."
4557     . ./uselongdouble.cbu
4558 else
4559     case "$uselongdouble" in
4560         $define)
4561                 $cat <<EOM
4562 (Your platform does not have any specific hints for long doubles.)
4563 EOM
4564         ;;
4565     esac
4566 fi
4567
4568 : Looking for optional libraries
4569 echo " "
4570 echo "Checking for optional libraries..." >&4
4571 case "$libs" in
4572 ' '|'') dflt='';;
4573 *) dflt="$libs";;
4574 esac
4575 case "$libswanted" in
4576 '') libswanted='c_s';;
4577 esac
4578 case "$usesocks" in
4579 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4580 esac
4581 libsfound=''
4582 libsfiles=''
4583 libsdirs=''
4584 libspath=''
4585 for thisdir in $libpth $xlibpth; do
4586   test -d $thisdir && libspath="$libspath $thisdir"
4587 done
4588 for thislib in $libswanted; do
4589         for thisdir in $libspath; do
4590             xxx=''
4591             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4592                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4593                 $test -f "$xxx" && eval $libscheck
4594                 $test -f "$xxx" && libstyle=shared
4595             fi
4596             if test ! -f "$xxx"; then
4597                 xxx=$thisdir/lib$thislib.$so
4598                 $test -f "$xxx" && eval $libscheck
4599                 $test -f "$xxx" && libstyle=shared
4600             fi  
4601             if test ! -f "$xxx"; then
4602                 xxx=$thisdir/lib$thislib$_a
4603                 $test -f "$xxx" && eval $libscheck
4604                 $test -f "$xxx" && libstyle=static
4605             fi
4606             if test ! -f "$xxx"; then
4607                 xxx=$thisdir/$thislib$_a
4608                 $test -f "$xxx" && eval $libscheck
4609                 $test -f "$xxx" && libstyle=static
4610             fi
4611             if test ! -f "$xxx"; then
4612                 xxx=$thisdir/lib${thislib}_s$_a
4613                 $test -f "$xxx" && eval $libscheck
4614                 $test -f "$xxx" && libstyle=static
4615                 $test -f "$xxx" && thislib=${thislib}_s
4616             fi
4617             if test ! -f "$xxx"; then
4618                 xxx=$thisdir/Slib$thislib$_a
4619                 $test -f "$xxx" && eval $libscheck
4620                 $test -f "$xxx" && libstyle=static
4621             fi
4622             if $test -f "$xxx"; then
4623                 case "$libstyle" in
4624                 shared) echo "Found -l$thislib (shared)." ;;
4625                 static) echo "Found -l$thislib." ;;
4626                 *)      echo "Found -l$thislib ($libstyle)." ;;
4627                 esac
4628                 case " $dflt " in
4629                 *"-l$thislib "*);;
4630                 *) dflt="$dflt -l$thislib"
4631                    libsfound="$libsfound $xxx"
4632                    yyy=`basename $xxx`
4633                    libsfiles="$libsfiles $yyy"
4634                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4635                    case " $libsdirs " in
4636                    *" $yyy "*) ;;
4637                    *) libsdirs="$libsdirs $yyy" ;;
4638                    esac
4639                    ;;
4640                 esac
4641                 break
4642             fi  
4643         done
4644         if $test ! -f "$xxx"; then
4645             echo "No -l$thislib."
4646         fi
4647 done
4648 set X $dflt
4649 shift
4650 dflt="$*"
4651 case "$libs" in
4652 '') dflt="$dflt";;
4653 *) dflt="$libs";;
4654 esac
4655 case "$dflt" in
4656 ' '|'') dflt='none';;
4657 esac
4658
4659 $cat <<EOM
4660
4661 In order to compile $package on your machine, a number of libraries
4662 are usually needed.  Include any other special libraries here as well.
4663 Say "none" for none.  The default list is almost always right.
4664 EOM
4665
4666 echo " "
4667 rp="What libraries to use?"
4668 . ./myread
4669 case "$ans" in
4670 none) libs=' ';;
4671 *) libs="$ans";;
4672 esac
4673
4674 : determine optimization, if desired, or use for debug flag also
4675 case "$optimize" in
4676 ' '|$undef) dflt='none';;
4677 '') dflt='-O';;
4678 *) dflt="$optimize";;
4679 esac
4680 $cat <<EOH
4681
4682 By default, $package compiles with the -O flag to use the optimizer.
4683 Alternately, you might want to use the symbolic debugger, which uses
4684 the -g flag (on traditional Unix systems).  Either flag can be
4685 specified here.  To use neither flag, specify the word "none".
4686
4687 EOH
4688 rp="What optimizer/debugger flag should be used?"
4689 . ./myread
4690 optimize="$ans"
4691 case "$optimize" in
4692 'none') optimize=" ";;
4693 esac
4694
4695 dflt=''
4696 : We will not override a previous value, but we might want to
4697 : augment a hint file
4698 case "$hint" in
4699 default|recommended)
4700         case "$gccversion" in
4701         1*) dflt='-fpcc-struct-return' ;;
4702         esac
4703         case "$optimize" in
4704         *-g*) dflt="$dflt -DDEBUGGING";;
4705         esac
4706         case "$gccversion" in
4707         2*) if test -d /etc/conf/kconfig.d &&
4708                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4709                 then
4710                         dflt="$dflt -posix"
4711                 fi
4712                 ;;
4713         esac
4714         case "$gccversion" in
4715         1*) ;;
4716         2.[0-8]*) ;;
4717         ?*)     echo " "
4718                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4719                 echo 'int main(void) { return 0; }' > gcctest.c
4720                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4721                         echo "Yes, it does." 2>&1
4722                         case "$ccflags" in
4723                         *strict-aliasing*) 
4724                                 echo "Leaving current flags $ccflags alone." 2>&1
4725                                 ;;
4726                         *) dflt="$dflt -fno-strict-aliasing" ;;
4727                         esac
4728                 else
4729                         echo "Nope, it doesn't, but that's ok." 2>&1
4730                 fi
4731                 ;;
4732         esac
4733         ;;
4734 esac
4735
4736 case "$mips_type" in
4737 *BSD*|'') inclwanted="$locincpth $usrinc";;
4738 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4739 esac
4740 for thisincl in $inclwanted; do
4741         if $test -d $thisincl; then
4742                 if $test x$thisincl != x$usrinc; then
4743                         case "$dflt" in
4744                         *" -I$thisincl "*);;
4745                         *) dflt="$dflt -I$thisincl ";;
4746                         esac
4747                 fi
4748         fi
4749 done
4750
4751 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4752         xxx=true;
4753 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4754         xxx=true;
4755 else
4756         xxx=false;
4757 fi;
4758 if $xxx; then
4759         case "$dflt" in
4760         *$2*);;
4761         *) dflt="$dflt -D$2";;
4762         esac;
4763 fi'
4764
4765 set signal.h LANGUAGE_C; eval $inctest
4766
4767 case "$usesocks" in
4768 $define)
4769         ccflags="$ccflags -DSOCKS"
4770         ;;
4771 esac
4772
4773 case "$hint" in
4774 default|recommended) dflt="$ccflags $dflt" ;;
4775 *) dflt="$ccflags";;
4776 esac
4777
4778 case "$dflt" in
4779 ''|' ') dflt=none;;
4780 esac
4781
4782 $cat <<EOH
4783
4784 Your C compiler may want other flags.  For this question you should include
4785 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4786 but you should NOT include libraries or ld flags like -lwhatever.  If you
4787 want $package to honor its debug switch, you should include -DDEBUGGING here.
4788 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4789
4790 To use no flags, specify the word "none".
4791
4792 EOH
4793 set X $dflt
4794 shift
4795 dflt=${1+"$@"}
4796 rp="Any additional cc flags?"
4797 . ./myread
4798 case "$ans" in
4799 none) ccflags='';;
4800 *) ccflags="$ans";;
4801 esac
4802
4803 : the following weeds options from ccflags that are of no interest to cpp
4804 case "$cppflags" in
4805 '') cppflags="$ccflags" ;;
4806 *)  cppflags="$cppflags $ccflags" ;;
4807 esac
4808 case "$gccversion" in
4809 1*) cppflags="$cppflags -D__GNUC__"
4810 esac
4811 case "$mips_type" in
4812 '');;
4813 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4814 esac
4815 case "$cppflags" in
4816 '');;
4817 *)
4818         echo " "
4819         echo "Let me guess what the preprocessor flags are..." >&4
4820         set X $cppflags
4821         shift
4822         cppflags=''
4823         $cat >cpp.c <<'EOM'
4824 #define BLURFL foo
4825
4826 BLURFL xx LFRULB
4827 EOM
4828         previous=''
4829         for flag in $*
4830         do
4831                 case "$flag" in
4832                 -*) ftry="$flag";;
4833                 *) ftry="$previous $flag";;
4834                 esac
4835                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4836                         >cpp1.out 2>/dev/null && \
4837                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4838                         >cpp2.out 2>/dev/null && \
4839                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4840                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4841                 then
4842                         cppflags="$cppflags $ftry"
4843                         previous=''
4844                 else
4845                         previous="$flag"
4846                 fi
4847         done
4848         set X $cppflags
4849         shift
4850         cppflags=${1+"$@"}
4851         case "$cppflags" in
4852         *-*)  echo "They appear to be: $cppflags";;
4853         esac
4854         $rm -f cpp.c cpp?.out
4855         ;;
4856 esac
4857
4858 : flags used in final linking phase
4859 case "$ldflags" in
4860 '') if ./venix; then
4861                 dflt='-i -z'
4862         else
4863                 dflt=''
4864         fi
4865         case "$ccflags" in
4866         *-posix*) dflt="$dflt -posix" ;;
4867         esac
4868         ;;
4869 *) dflt="$ldflags";;
4870 esac
4871
4872 : Try to guess additional flags to pick up local libraries.
4873 for thislibdir in $libpth; do
4874         case " $loclibpth " in
4875         *" $thislibdir "*)
4876                 case "$dflt " in 
4877                 *"-L$thislibdir "*) ;;
4878                 *)  dflt="$dflt -L$thislibdir" ;;
4879                 esac
4880                 ;;
4881         esac
4882 done
4883
4884 case "$dflt" in
4885 '') dflt='none' ;;
4886 esac
4887
4888 $cat <<EOH
4889
4890 Your C linker may need flags.  For this question you should
4891 include -L/whatever and any other flags used by the C linker, but you
4892 should NOT include libraries like -lwhatever.
4893
4894 Make sure you include the appropriate -L/path flags if your C linker
4895 does not normally search all of the directories you specified above,
4896 namely
4897         $libpth
4898 To use no flags, specify the word "none".
4899
4900 EOH
4901
4902 rp="Any additional ld flags (NOT including libraries)?"
4903 . ./myread
4904 case "$ans" in
4905 none) ldflags='';;
4906 *) ldflags="$ans";;
4907 esac
4908 rmlist="$rmlist pdp11"
4909
4910 : coherency check
4911 echo " "
4912 echo "Checking your choice of C compiler and flags for coherency..." >&4
4913 $cat > try.c <<'EOF'
4914 #include <stdio.h>
4915 int main() { printf("Ok\n"); return(0); }
4916 EOF
4917 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4918 shift
4919 $cat >try.msg <<'EOM'
4920 I've tried to compile and run the following simple program:
4921
4922 EOM
4923 $cat try.c >> try.msg
4924
4925 $cat >> try.msg <<EOM
4926
4927 I used the command:
4928
4929         $*
4930         $run ./try
4931
4932 and I got the following output:
4933
4934 EOM
4935 dflt=y
4936 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4937         if $sh -c "$run ./try" >>try.msg 2>&1; then
4938                 xxx=`$run ./try`
4939                 case "$xxx" in
4940                 "Ok") dflt=n ;;
4941                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4942                         case " $libs " in
4943                         *" -lsfio "*)
4944                                 cat >> try.msg <<'EOQS'
4945 If $libs contains -lsfio, and sfio is mis-configured, then it
4946 sometimes (apparently) runs and exits with a 0 status, but with no
4947 output!  It may have to do with sfio's use of _exit vs. exit.
4948
4949 EOQS
4950                                 rp="You have a big problem.  Shall I abort Configure"
4951                                 dflt=y
4952                                 ;;
4953                         esac
4954                         ;;
4955                 esac
4956         else
4957                 echo "The program compiled OK, but exited with status $?." >>try.msg
4958                 rp="You have a problem.  Shall I abort Configure"
4959                 dflt=y
4960         fi
4961 else
4962         echo "I can't compile the test program." >>try.msg
4963         rp="You have a BIG problem.  Shall I abort Configure"
4964         dflt=y
4965 fi
4966 case "$dflt" in
4967 y)
4968         $cat try.msg >&4
4969         case "$knowitall" in
4970         '')
4971                 echo "(The supplied flags or libraries might be incorrect.)"
4972                 ;;
4973         *) dflt=n;;
4974         esac
4975         echo " "
4976         . ./myread
4977         case "$ans" in
4978         n*|N*) ;;
4979         *)      echo "Ok.  Stopping Configure." >&4
4980                 exit 1
4981                 ;;
4982         esac
4983         ;;
4984 n) echo "OK, that should do.";;
4985 esac
4986 $rm -f try try.* core
4987
4988 : define a shorthand compile call
4989 compile='
4990 mc_file=$1;
4991 shift;
4992 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4993 : define a shorthand compile call for compilations that should be ok.
4994 compile_ok='
4995 mc_file=$1;
4996 shift;
4997 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4998
4999 : determine filename position in cpp output
5000 echo " "
5001 echo "Computing filename position in cpp output for #include directives..." >&4
5002 case "$osname" in
5003 vos) testaccess=-e ;;
5004 *)   testaccess=-r ;;
5005 esac
5006 echo '#include <stdio.h>' > foo.c
5007 $cat >fieldn <<EOF
5008 $startsh
5009 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5010 $grep '^[       ]*#.*stdio\.h' | \
5011 while read cline; do
5012         pos=1
5013         set \$cline
5014         while $test \$# -gt 0; do
5015                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5016                         echo "\$pos"
5017                         exit 0
5018                 fi
5019                 shift
5020                 pos=\`expr \$pos + 1\`
5021         done
5022 done
5023 EOF
5024 chmod +x fieldn
5025 fieldn=`./fieldn`
5026 $rm -f foo.c fieldn
5027 case $fieldn in
5028 '') pos='???';;
5029 1) pos=first;;
5030 2) pos=second;;
5031 3) pos=third;;
5032 *) pos="${fieldn}th";;
5033 esac
5034 echo "Your cpp writes the filename in the $pos field of the line."
5035
5036 case "$osname" in
5037 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5038 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5039 *)   cppfilter='' ;;
5040 esac
5041 : locate header file
5042 $cat >findhdr <<EOF
5043 $startsh
5044 wanted=\$1
5045 name=''
5046 for usrincdir in $usrinc
5047 do
5048         if test -f \$usrincdir/\$wanted; then
5049                 echo "\$usrincdir/\$wanted"
5050                 exit 0
5051         fi
5052 done
5053 awkprg='{ print \$$fieldn }'
5054 echo "#include <\$wanted>" > foo\$\$.c
5055 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5056 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5057 while read cline; do
5058         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5059         case "\$name" in
5060         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5061         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5062         *) exit 2;;
5063         esac;
5064 done;
5065 #
5066 # status = 0: grep returned 0 lines, case statement not executed
5067 # status = 1: headerfile found
5068 # status = 2: while loop executed, no headerfile found
5069 #
5070 status=\$?
5071 $rm -f foo\$\$.c;
5072 if test \$status -eq 1; then
5073         exit 0;
5074 fi
5075 exit 1
5076 EOF
5077 chmod +x findhdr
5078
5079 : define an alternate in-header-list? function
5080 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5081 cont=true; xxf="echo \"<\$1> found.\" >&4";
5082 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5083 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5084 esac;
5085 case $# in 4) instead=instead;; *) instead="at last";; esac;
5086 while $test "$cont"; do
5087         xxx=`./findhdr $1`
5088         var=$2; eval "was=\$$2";
5089         if $test "$xxx" && $test -r "$xxx";
5090         then eval $xxf;
5091         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5092                 cont="";
5093         else eval $xxnf;
5094         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5095         set $yyy; shift; shift; yyy=$@;
5096         case $# in 0) cont="";;
5097         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5098                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5099         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5100                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5101         esac;
5102 done;
5103 while $test "$yyy";
5104 do set $yyy; var=$2; eval "was=\$$2";
5105         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5106         set $yyy; shift; shift; yyy=$@;
5107 done'
5108
5109 : see if stdlib is available
5110 set stdlib.h i_stdlib
5111 eval $inhdr
5112
5113 : check for lengths of integral types
5114 echo " "
5115 case "$intsize" in
5116 '')
5117         echo "Checking to see how big your integers are..." >&4
5118         $cat >try.c <<EOCP
5119 #include <stdio.h>
5120 #$i_stdlib I_STDLIB
5121 #ifdef I_STDLIB
5122 #include <stdlib.h>
5123 #endif
5124 int main()
5125 {
5126         printf("intsize=%d;\n", (int)sizeof(int));
5127         printf("longsize=%d;\n", (int)sizeof(long));
5128         printf("shortsize=%d;\n", (int)sizeof(short));
5129         exit(0);
5130 }
5131 EOCP
5132         set try
5133         if eval $compile_ok && $run ./try > /dev/null; then
5134                 eval `$run ./try`
5135                 echo "Your integers are $intsize bytes long."
5136                 echo "Your long integers are $longsize bytes long."
5137                 echo "Your short integers are $shortsize bytes long."
5138         else
5139                 $cat >&4 <<EOM
5140 !
5141 Help! I can't compile and run the intsize test program: please enlighten me!
5142 (This is probably a misconfiguration in your system or libraries, and
5143 you really ought to fix it.  Still, I'll try anyway.)
5144 !
5145 EOM
5146                 dflt=4
5147                 rp="What is the size of an integer (in bytes)?"
5148                 . ./myread
5149                 intsize="$ans"
5150                 dflt=$intsize
5151                 rp="What is the size of a long integer (in bytes)?"
5152                 . ./myread
5153                 longsize="$ans"
5154                 dflt=2
5155                 rp="What is the size of a short integer (in bytes)?"
5156                 . ./myread
5157                 shortsize="$ans"
5158         fi
5159         ;;
5160 esac
5161 $rm -f try try.*
5162
5163 : check for long long
5164 echo " "
5165 echo "Checking to see if you have long long..." >&4
5166 echo 'int main() { long long x = 7; return 0; }' > try.c
5167 set try
5168 if eval $compile; then
5169         val="$define"
5170         echo "You have long long."
5171 else
5172         val="$undef"
5173         echo "You do not have long long."
5174 fi
5175 $rm try.*
5176 set d_longlong
5177 eval $setvar
5178
5179 : check for length of long long
5180 case "${d_longlong}${longlongsize}" in
5181 $define)
5182         echo " "
5183         echo "Checking to see how big your long longs are..." >&4
5184         $cat >try.c <<'EOCP'
5185 #include <stdio.h>
5186 int main()
5187 {
5188     printf("%d\n", (int)sizeof(long long));
5189     return(0);
5190 }
5191 EOCP
5192         set try
5193         if eval $compile_ok; then
5194                 longlongsize=`$run ./try`
5195                 echo "Your long longs are $longlongsize bytes long."
5196         else
5197                 dflt='8'
5198                 echo " "
5199                 echo "(I can't seem to compile the test program.  Guessing...)"
5200                 rp="What is the size of a long long (in bytes)?"
5201                 . ./myread
5202                 longlongsize="$ans"
5203         fi
5204         if $test "X$longsize" = "X$longlongsize"; then
5205                 echo "(That isn't any different from an ordinary long.)"
5206         fi      
5207         ;;
5208 esac
5209 $rm -f try.* try
5210
5211 : see if inttypes.h is available
5212 : we want a real compile instead of Inhdr because some systems
5213 : have an inttypes.h which includes non-existent headers
5214 echo " "
5215 $cat >try.c <<EOCP
5216 #include <inttypes.h>
5217 int main() {
5218         static int32_t foo32 = 0x12345678;
5219 }
5220 EOCP
5221 set try
5222 if eval $compile; then
5223         echo "<inttypes.h> found." >&4
5224         val="$define"
5225 else
5226         echo "<inttypes.h> NOT found." >&4
5227         val="$undef"
5228 fi
5229 $rm -f try.c try
5230 set i_inttypes
5231 eval $setvar
5232
5233 : check for int64_t
5234 echo " "
5235 echo "Checking to see if you have int64_t..." >&4
5236 $cat >try.c <<EOCP
5237 #include <sys/types.h>
5238 #$i_inttypes I_INTTYPES
5239 #ifdef I_INTTYPES
5240 #include <inttypes.h>
5241 #endif
5242 int main() { int64_t x = 7; }
5243 EOCP
5244 set try
5245 if eval $compile; then
5246         val="$define"
5247         echo "You have int64_t."
5248 else
5249         val="$undef"
5250         echo "You do not have int64_t."
5251 fi
5252 $rm -f try try.*
5253 set d_int64_t
5254 eval $setvar
5255
5256
5257 echo " "
5258 echo "Checking which 64-bit integer type we could use..." >&4
5259
5260 case "$intsize" in
5261 8) val=int
5262    set quadtype
5263    eval $setvar
5264    val='"unsigned int"'
5265    set uquadtype
5266    eval $setvar
5267    quadkind=1
5268    ;;
5269 *) case "$longsize" in
5270    8) val=long
5271       set quadtype
5272       eval $setvar
5273       val='"unsigned long"'
5274       set uquadtype
5275       eval $setvar
5276       quadkind=2
5277       ;;
5278    *) case "$d_longlong:$longlongsize" in
5279       define:8)
5280         val='"long long"'
5281         set quadtype
5282         eval $setvar
5283         val='"unsigned long long"'
5284         set uquadtype
5285         eval $setvar
5286         quadkind=3
5287         ;;
5288       *) case "$d_int64_t" in
5289          define)
5290            val=int64_t
5291            set quadtype
5292            eval $setvar
5293            val=uint64_t
5294            set uquadtype
5295            eval $setvar
5296            quadkind=4
5297            ;;
5298          esac
5299          ;;
5300       esac
5301       ;;
5302    esac
5303    ;;
5304 esac
5305
5306 case "$quadtype" in
5307 '')     echo "Alas, no 64-bit integer types in sight." >&4
5308         d_quad="$undef"
5309         ;;
5310 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
5311         d_quad="$define"
5312         ;;
5313 esac
5314
5315
5316 case "$uselonglong" in
5317 "$define"|true|[yY]*)
5318         cat <<EOM >&4
5319
5320 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5321 EOM
5322         use64bitint="$define"
5323         ;;
5324 esac                          
5325 case "$use64bits" in
5326 "$define"|true|[yY]*)
5327         cat <<EOM >&4
5328
5329 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5330 EOM
5331         use64bitint="$define"
5332         ;;
5333 esac                          
5334 case "$use64bitints" in
5335 "$define"|true|[yY]*)
5336         cat <<EOM >&4
5337
5338 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5339 EOM
5340         use64bitint="$define"
5341         ;;
5342 esac                          
5343 case "$use64bitsint" in
5344 "$define"|true|[yY]*)
5345         cat <<EOM >&4
5346
5347 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5348 EOM
5349         use64bitint="$define"
5350         ;;
5351 esac                          
5352 case "$uselonglongs" in
5353 "$define"|true|[yY]*)
5354         cat <<EOM >&4
5355
5356 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5357 EOM
5358         use64bitint="$define"
5359         ;;
5360 esac                          
5361 case "$use64bitsall" in
5362 "$define"|true|[yY]*)
5363         cat <<EOM >&4
5364
5365 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5366 EOM
5367         use64bitall="$define"
5368         ;;
5369 esac                          
5370
5371 case "$ccflags" in
5372 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5373 esac
5374 case "$use64bitall" in
5375 "$define"|true|[yY]*) use64bitint="$define" ;;
5376 esac
5377
5378 case "$longsize" in
5379 8) cat <<EOM
5380
5381 You have natively 64-bit long integers.
5382 EOM
5383    val="$define"
5384    ;;
5385 *) case "$use64bitint" in
5386    "$define"|true|[yY]*) dflt='y';;
5387    *) dflt='n';;
5388    esac
5389    case "$d_quad" in
5390    "$define") ;;
5391    *) dflt='n' ;;
5392    esac
5393    cat <<EOM
5394
5395 Perl can be built to take advantage of 64-bit integer types
5396 on some systems.  To do so, Configure can be run with -Duse64bitint.
5397 Choosing this option will most probably introduce binary incompatibilities.
5398
5399 If this doesn't make any sense to you, just accept the default '$dflt'.
5400 (The default has been chosen based on your configuration.)
5401 EOM
5402    rp='Try to use 64-bit integers, if available?'
5403    . ./myread
5404    case "$ans" in
5405    [yY]*) val="$define" ;;
5406    *)     val="$undef"  ;;
5407    esac
5408    ;;
5409 esac
5410 set use64bitint
5411 eval $setvar
5412
5413 case "$use64bitall" in
5414 "$define"|true|[yY]*) dflt='y' ;;
5415 *) case "$longsize" in
5416    8) dflt='y' ;;
5417    *) dflt='n' ;;
5418    esac
5419    ;;
5420 esac    
5421 cat <<EOM
5422
5423 You may also choose to try maximal 64-bitness.  It means using as much
5424 64-bitness as possible on the platform.  This in turn means even more
5425 binary incompatibilities.  On the other hand, your platform may not
5426 have any more 64-bitness available than what you already have chosen.
5427
5428 If this doesn't make any sense to you, just accept the default '$dflt'.
5429 (The default has been chosen based on your configuration.)
5430 EOM
5431 rp='Try to use maximal 64-bit support, if available?'
5432 . ./myread
5433 case "$ans" in
5434 [yY]*) val="$define" ;;
5435 *)     val="$undef"  ;;
5436 esac
5437 set use64bitall
5438 eval $setvar
5439 case "$use64bitall" in
5440 "$define")
5441         case "$use64bitint" in
5442         "$undef")
5443                 cat <<EOM
5444
5445 Since you have chosen a maximally 64-bit build, I'm also turning on
5446 the use of 64-bit integers.
5447 EOM
5448                 use64bitint="$define" ;;
5449         esac
5450         ;;
5451 esac
5452
5453 : Look for a hint-file generated 'call-back-unit'.  If the
5454 : user has specified that a 64-bit perl is to be built,
5455 : we may need to set or change some other defaults.
5456         if $test -f use64bitint.cbu; then
5457         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5458                 . ./use64bitint.cbu
5459         fi
5460 case "$use64bitint" in
5461 "$define"|true|[yY]*)
5462         case "$longsize" in
5463         4) case "$archname64" in
5464            '') archname64=64int ;;
5465            esac
5466            ;;
5467         esac
5468         ;;
5469 esac
5470
5471 : Look for a hint-file generated 'call-back-unit'.  If the
5472 : user has specified that a maximally 64-bit perl is to be built,
5473 : we may need to set or change some other defaults.
5474         if $test -f use64bitall.cbu; then
5475         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5476                 . ./use64bitall.cbu
5477         fi
5478 case "$use64bitall" in
5479 "$define"|true|[yY]*)
5480         case "$longsize" in
5481         4) case "$archname64" in
5482            ''|64int) archname64=64all ;;
5483            esac
5484            ;;
5485         esac
5486         ;;
5487 esac
5488
5489 case "$d_quad:$use64bitint" in
5490 $undef:$define)
5491         cat >&4 <<EOF
5492
5493 *** You have chosen to use 64-bit integers,
5494 *** but none cannot be found.
5495 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5496 *** Cannot continue, aborting.
5497
5498 EOF
5499         exit 1
5500         ;;
5501 esac
5502
5503 : check for length of double
5504 echo " "
5505 case "$doublesize" in
5506 '')
5507         echo "Checking to see how big your double precision numbers are..." >&4
5508         $cat >try.c <<EOCP
5509 #include <stdio.h>
5510 #$i_stdlib I_STDLIB
5511 #ifdef I_STDLIB
5512 #include <stdlib.h>
5513 #endif
5514 int main()
5515 {
5516     printf("%d\n", (int)sizeof(double));
5517     exit(0);
5518 }
5519 EOCP
5520         set try
5521         if eval $compile_ok; then
5522                 doublesize=`$run ./try`
5523                 echo "Your double is $doublesize bytes long."
5524         else
5525                 dflt='8'
5526                 echo "(I can't seem to compile the test program.  Guessing...)"
5527                 rp="What is the size of a double precision number (in bytes)?"
5528                 . ./myread
5529                 doublesize="$ans"
5530         fi
5531         ;;
5532 esac
5533 $rm -f try.c try
5534
5535 : check for long doubles
5536 echo " "
5537 echo "Checking to see if you have long double..." >&4
5538 echo 'int main() { long double x = 7.0; }' > try.c
5539 set try
5540 if eval $compile; then
5541         val="$define"
5542         echo "You have long double."
5543 else
5544         val="$undef"
5545         echo "You do not have long double."
5546 fi
5547 $rm try.*
5548 set d_longdbl
5549 eval $setvar
5550
5551 : check for length of long double
5552 case "${d_longdbl}${longdblsize}" in
5553 $define)
5554         echo " "
5555         echo "Checking to see how big your long doubles are..." >&4
5556         $cat >try.c <<'EOCP'
5557 #include <stdio.h>
5558 int main()
5559 {
5560         printf("%d\n", sizeof(long double));
5561 }
5562 EOCP
5563         set try
5564         set try
5565         if eval $compile; then
5566                 longdblsize=`$run ./try`
5567                 echo "Your long doubles are $longdblsize bytes long."
5568         else
5569                 dflt='8'
5570                 echo " "
5571                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5572                 rp="What is the size of a long double (in bytes)?"
5573                 . ./myread
5574                 longdblsize="$ans"
5575         fi
5576         if $test "X$doublesize" = "X$longdblsize"; then
5577                 echo "That isn't any different from an ordinary double."
5578                 echo "I'll keep your setting anyway, but you may see some"
5579                 echo "harmless compilation warnings."
5580         fi      
5581         ;;
5582 esac
5583 $rm -f try.* try
5584
5585 : determine the architecture name
5586 echo " "
5587 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5588         tarch=`arch`"-$osname"
5589 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5590         if uname -m > tmparch 2>&1 ; then
5591                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5592                         -e 's/$/'"-$osname/" tmparch`
5593         else
5594                 tarch="$osname"
5595         fi
5596         $rm -f tmparch
5597 else
5598         tarch="$osname"
5599 fi
5600 case "$myarchname" in
5601 ''|"$tarch") ;;
5602 *)
5603         echo "(Your architecture name used to be $myarchname.)"
5604         archname=''
5605         ;;
5606 esac
5607 case "$targetarch" in
5608 '') ;;
5609 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5610 esac
5611 myarchname="$tarch"
5612 case "$archname" in
5613 '') dflt="$tarch";;
5614 *) dflt="$archname";;
5615 esac
5616 rp='What is your architecture name'
5617 . ./myread
5618 archname="$ans"
5619 case "$usethreads" in
5620 $define)
5621         echo "Threads selected." >&4
5622         case "$archname" in
5623         *-thread*) echo "...and architecture name already has -thread." >&4
5624                 ;;
5625         *)      archname="$archname-thread"
5626                 echo "...setting architecture name to $archname." >&4
5627                 ;;
5628         esac
5629         ;;
5630 esac
5631 case "$usemultiplicity" in
5632 $define)
5633         echo "Multiplicity selected." >&4
5634         case "$archname" in
5635         *-multi*) echo "...and architecture name already has -multi." >&4
5636                 ;;
5637         *)      archname="$archname-multi"
5638                 echo "...setting architecture name to $archname." >&4
5639                 ;;
5640         esac
5641         ;;
5642 esac
5643 case "$use64bitint$use64bitall" in
5644 *"$define"*)
5645         case "$archname64" in
5646         '')
5647                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5648                 ;;
5649         *)
5650                 case "$use64bitint" in
5651                 "$define") echo "64 bit integers selected." >&4 ;;
5652                 esac
5653                 case "$use64bitall" in
5654                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5655                 esac
5656                 case "$archname" in
5657                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5658                         ;;
5659                 *)      archname="$archname-$archname64"
5660                         echo "...setting architecture name to $archname." >&4
5661                         ;;
5662                 esac
5663                 ;;
5664         esac
5665 esac
5666 case "$uselongdouble" in
5667 $define)
5668         echo "Long doubles selected." >&4
5669         case "$longdblsize" in
5670         $doublesize)
5671                 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5672                 ;;
5673         *)
5674                 case "$archname" in
5675                 *-ld*) echo "...and architecture name already has -ld." >&4
5676                         ;;
5677                 *)      archname="$archname-ld"
5678                         echo "...setting architecture name to $archname." >&4
5679                         ;;
5680                 esac
5681                 ;;
5682         esac
5683         ;;
5684 esac
5685 case "$useperlio" in
5686 $define)
5687         echo "Perlio selected." >&4
5688         ;;
5689 *)
5690         echo "Perlio not selected, using stdio." >&4
5691         case "$archname" in
5692         *-stdio*) echo "...and architecture name already has -stdio." >&4
5693                 ;;
5694         *)      archname="$archname-stdio"
5695                 echo "...setting architecture name to $archname." >&4
5696                 ;;
5697         esac
5698         ;;
5699 esac
5700 if $test -f archname.cbu; then
5701         echo "Your platform has some specific hints for architecture name, using them..."
5702         . ./archname.cbu
5703 fi
5704
5705 : determine root of directory hierarchy where package will be installed.
5706 case "$prefix" in
5707 '')
5708         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5709         ;;
5710 *?/)
5711         dflt=`echo "$prefix" | sed 's/.$//'`
5712         ;;
5713 *)
5714         dflt="$prefix"
5715         ;;
5716 esac
5717 $cat <<EOM
5718
5719 By default, $package will be installed in $dflt/bin, manual pages
5720 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5721 installation directories. Typically this is something like /usr/local.
5722 If you wish to have binaries under /usr/bin but other parts of the
5723 installation under /usr/local, that's ok: you will be prompted
5724 separately for each of the installation directories, the prefix being
5725 only used to set the defaults.
5726
5727 EOM
5728 fn=d~
5729 rp='Installation prefix to use?'
5730 . ./getfile
5731 oldprefix=''
5732 case "$prefix" in
5733 '') ;;
5734 *)
5735         case "$ans" in
5736         "$prefix") ;;
5737         *) oldprefix="$prefix";;
5738         esac
5739         ;;
5740 esac
5741 prefix="$ans"
5742 prefixexp="$ansexp"
5743
5744 case "$afsroot" in
5745 '')     afsroot=/afs ;;
5746 *)      afsroot=$afsroot ;;
5747 esac
5748
5749 : is AFS running?
5750 echo " "
5751 case "$afs" in
5752 $define|true)   afs=true ;;
5753 $undef|false)   afs=false ;;
5754 *)      if test -d $afsroot; then
5755                 afs=true
5756         else
5757                 afs=false
5758         fi
5759         ;;
5760 esac
5761 if $afs; then
5762         echo "AFS may be running... I'll be extra cautious then..." >&4
5763 else
5764         echo "AFS does not seem to be running..." >&4
5765 fi
5766
5767 : determine installation prefix for where package is to be installed.
5768 if $afs; then 
5769 $cat <<EOM
5770
5771 Since you are running AFS, I need to distinguish the directory in which
5772 files will reside from the directory in which they are installed (and from
5773 which they are presumably copied to the former directory by occult means).
5774
5775 EOM
5776         case "$installprefix" in
5777         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5778         *) dflt="$installprefix";;
5779         esac
5780 else
5781 $cat <<EOM
5782
5783 In some special cases, particularly when building $package for distribution,
5784 it is convenient to distinguish the directory in which files should be
5785 installed from the directory ($prefix) in which they will
5786 eventually reside.  For most users, these two directories are the same.
5787
5788 EOM
5789         case "$installprefix" in
5790         '') dflt=$prefix ;;
5791         *) dflt=$installprefix;;
5792         esac
5793 fi
5794 fn=d~
5795 rp='What installation prefix should I use for installing files?'
5796 . ./getfile
5797 installprefix="$ans"
5798 installprefixexp="$ansexp"
5799
5800 : set the prefixit variable, to compute a suitable default value
5801 prefixit='case "$3" in
5802 ""|none)
5803         case "$oldprefix" in
5804         "") eval "$1=\"\$$2\"";;
5805         *)
5806                 case "$3" in
5807                 "") eval "$1=";;
5808                 none)
5809                         eval "tp=\"\$$2\"";
5810                         case "$tp" in
5811                         ""|" ") eval "$1=\"\$$2\"";;
5812                         *) eval "$1=";;
5813                         esac;;
5814                 esac;;
5815         esac;;
5816 *)
5817         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5818         case "$tp" in
5819         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5820         /*-$oldprefix/*|\~*-$oldprefix/*)
5821                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5822         *) eval "$1=\"\$$2\"";;
5823         esac;;
5824 esac'
5825
5826 : get the patchlevel
5827 echo " "
5828 echo "Getting the current patchlevel..." >&4
5829 if $test -r $rsrc/patchlevel.h;then
5830         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5831         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5832         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5833         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5834         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5835         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5836        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5837 else
5838         revision=0
5839         patchlevel=0
5840         subversion=0
5841         api_revision=0
5842         api_version=0
5843         api_subversion=0
5844         perl_patchlevel=0
5845         $echo "(You do not have patchlevel.h.  Eek.)"
5846 fi
5847 if $test -r $rsrc/.patch ; then  
5848         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5849                 perl_patchlevel=`cat $rsrc/.patch`
5850         fi
5851 fi
5852 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5853 version_patchlevel_string="version $patchlevel subversion $subversion"
5854 case "$perl_patchlevel" in
5855 0|'') ;;
5856 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5857 esac
5858
5859 $echo "(You have $package $version_patchlevel_string.)"
5860
5861 case "$osname" in
5862 dos|vms)
5863         : XXX Should be a Configure test for double-dots in filenames.
5864         version=`echo $revision $patchlevel $subversion | \
5865                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5866         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5867                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5868         ;;
5869 *)
5870         version=`echo $revision $patchlevel $subversion | \
5871                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5872         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5873                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5874         ;;
5875 esac
5876 : Special case the 5.005_xx maintenance series, which used 5.005
5877 : without any subversion label as a subdirectory in $sitelib
5878 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5879         api_versionstring='5.005'
5880 fi
5881
5882 : determine installation style
5883 : For now, try to deduce it from prefix unless it is already set.
5884 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5885 case "$installstyle" in
5886 '')     case "$prefix" in
5887                 *perl*) dflt='lib';;
5888                 *) dflt='lib/perl5' ;;
5889         esac
5890         ;;
5891 *)      dflt="$installstyle" ;;
5892 esac
5893 : Probably not worth prompting for this since we prompt for all
5894 : the directories individually, and the prompt would be too long and
5895 : confusing anyway.
5896 installstyle=$dflt
5897
5898 : determine where private library files go
5899 : Usual default is /usr/local/lib/perl5/$version.
5900 : Also allow things like /opt/perl/lib/$version, since 
5901 : /opt/perl/lib/perl5... would be redundant.
5902 : The default "style" setting is made in installstyle.U
5903 case "$installstyle" in
5904 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5905 *)       set dflt privlib lib/$version ;;
5906 esac
5907 eval $prefixit
5908 $cat <<EOM
5909
5910 There are some auxiliary files for $package that need to be put into a
5911 private library directory that is accessible by everyone.
5912
5913 EOM
5914 fn=d~+
5915 rp='Pathname where the private library files will reside?'
5916 . ./getfile
5917 privlib="$ans"
5918 privlibexp="$ansexp"
5919 : Change installation prefix, if necessary.
5920 if $test X"$prefix" != X"$installprefix"; then
5921         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5922 else
5923         installprivlib="$privlibexp"
5924 fi
5925
5926 : set the prefixup variable, to restore leading tilda escape
5927 prefixup='case "$prefixexp" in
5928 "$prefix") ;;
5929 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5930 esac'
5931
5932 : determine where public architecture dependent libraries go
5933 set archlib archlib
5934 eval $prefixit
5935 : privlib default is /usr/local/lib/$package/$version
5936 : archlib default is /usr/local/lib/$package/$version/$archname
5937 : privlib may have an optional trailing /share.
5938 tdflt=`echo $privlib | $sed 's,/share$,,'`
5939 tdflt=$tdflt/$archname
5940 case "$archlib" in
5941 '')     dflt=$tdflt
5942         ;;
5943 *)      dflt="$archlib"
5944     ;;
5945 esac
5946 $cat <<EOM
5947
5948 $spackage contains architecture-dependent library files.  If you are
5949 sharing libraries in a heterogeneous environment, you might store
5950 these files in a separate location.  Otherwise, you can just include
5951 them with the rest of the public library files.
5952
5953 EOM
5954 fn=d+~
5955 rp='Where do you want to put the public architecture-dependent libraries?'
5956 . ./getfile
5957 archlib="$ans"
5958 archlibexp="$ansexp"
5959 if $test X"$archlib" = X"$privlib"; then
5960         d_archlib="$undef"
5961 else
5962         d_archlib="$define"
5963 fi
5964 : Change installation prefix, if necessary.
5965 if $test X"$prefix" != X"$installprefix"; then
5966         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5967 else
5968         installarchlib="$archlibexp"
5969 fi
5970
5971 : see if setuid scripts can be secure
5972 $cat <<EOM
5973
5974 Some kernels have a bug that prevents setuid #! scripts from being
5975 secure.  Some sites have disabled setuid #! scripts because of this.
5976
5977 First let's decide if your kernel supports secure setuid #! scripts.
5978 (If setuid #! scripts would be secure but have been disabled anyway,
5979 don't say that they are secure if asked.)
5980
5981 EOM
5982
5983 val="$undef"
5984 if $test -d /dev/fd; then
5985         echo "#!$ls" >reflect
5986         chmod +x,u+s reflect
5987         ./reflect >flect 2>&1
5988         if $contains "/dev/fd" flect >/dev/null; then
5989                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5990                 val="$define"
5991         else
5992                 $cat <<EOM
5993 If you are not sure if they are secure, I can check but I'll need a
5994 username and password different from the one you are using right now.
5995 If you don't have such a username or don't want me to test, simply
5996 enter 'none'.
5997
5998 EOM
5999                 rp='Other username to test security of setuid scripts with?'
6000                 dflt='none'
6001                 . ./myread
6002                 case "$ans" in
6003                 n|none)
6004                         case "$d_suidsafe" in
6005                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6006                                 dflt=n;;
6007                         "$undef")
6008                                 echo "Well, the $hint value is *not* secure." >&4
6009                                 dflt=n;;
6010                         *)      echo "Well, the $hint value *is* secure." >&4
6011                                 dflt=y;;
6012                         esac
6013                         ;;
6014                 *)
6015                         $rm -f reflect flect
6016                         echo "#!$ls" >reflect
6017                         chmod +x,u+s reflect
6018                         echo >flect
6019                         chmod a+w flect
6020                         echo '"su" will (probably) prompt you for '"$ans's password."
6021                         su $ans -c './reflect >flect'
6022                         if $contains "/dev/fd" flect >/dev/null; then
6023                                 echo "Okay, it looks like setuid scripts are secure." >&4
6024                                 dflt=y
6025                         else
6026                                 echo "I don't think setuid scripts are secure." >&4
6027                                 dflt=n
6028                         fi
6029                         ;;
6030                 esac
6031                 rp='Does your kernel have *secure* setuid scripts?'
6032                 . ./myread
6033                 case "$ans" in
6034                 [yY]*)  val="$define";;
6035                 *)      val="$undef";;
6036                 esac
6037         fi
6038 else
6039         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6040         echo "(That's for file descriptors, not floppy disks.)"
6041         val="$undef"
6042 fi
6043 set d_suidsafe
6044 eval $setvar
6045
6046 $rm -f reflect flect
6047
6048 : now see if they want to do setuid emulation
6049 echo " "
6050 val="$undef"
6051 case "$d_suidsafe" in
6052 "$define")
6053         val="$undef"
6054         echo "No need to emulate SUID scripts since they are secure here." >&4
6055         ;;
6056 *)
6057         $cat <<EOM
6058 Some systems have disabled setuid scripts, especially systems where
6059 setuid scripts cannot be secure.  On systems where setuid scripts have
6060 been disabled, the setuid/setgid bits on scripts are currently
6061 useless.  It is possible for $package to detect those bits and emulate
6062 setuid/setgid in a secure fashion.  This emulation will only work if
6063 setuid scripts have been disabled in your kernel.
6064
6065 EOM
6066         case "$d_dosuid" in
6067         "$define") dflt=y ;;
6068         *) dflt=n ;;
6069         esac
6070         rp="Do you want to do setuid/setgid emulation?"
6071         . ./myread
6072         case "$ans" in
6073         [yY]*)  val="$define";;
6074         *)      val="$undef";;
6075         esac
6076         ;;
6077 esac
6078 set d_dosuid
6079 eval $setvar
6080
6081 : see if this is a malloc.h system
6082 : we want a real compile instead of Inhdr because some systems have a
6083 : malloc.h that just gives a compile error saying to use stdlib.h instead
6084 echo " "
6085 $cat >try.c <<EOCP
6086 #include <stdlib.h>
6087 #include <malloc.h>
6088 int main () { return 0; }
6089 EOCP
6090 set try
6091 if eval $compile; then
6092     echo "<malloc.h> found." >&4
6093     val="$define"
6094 else
6095     echo "<malloc.h> NOT found." >&4
6096     val="$undef"
6097 fi
6098 $rm -f try.c try
6099 set i_malloc
6100 eval $setvar
6101
6102 : check for void type
6103 echo " "
6104 echo "Checking to see how well your C compiler groks the void type..." >&4
6105 case "$voidflags" in
6106 '')
6107         $cat >try.c <<EOCP
6108 #$i_stdlib I_STDLIB
6109 #ifdef I_STDLIB
6110 #include <stdlib.h>
6111 #endif
6112 #if TRY & 1
6113 void sub() {
6114 #else
6115 sub() {
6116 #endif
6117         extern void moo();      /* function returning void */
6118         void (*goo)();          /* ptr to func returning void */
6119 #if TRY & 8
6120         void *hue;              /* generic ptr */
6121 #endif
6122 #if TRY & 2
6123         void (*foo[10])();
6124 #endif
6125
6126 #if TRY & 4
6127         if(goo == moo) {
6128                 exit(0);
6129         }
6130 #endif
6131         exit(0);
6132 }
6133 int main() { sub(); }
6134 EOCP
6135         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6136                 voidflags=$defvoidused
6137         echo "Good.  It appears to support void to the level $package wants.">&4
6138                 if $contains warning .out >/dev/null 2>&1; then
6139                         echo "However, you might get some warnings that look like this:"
6140                         $cat .out
6141                 fi
6142         else
6143 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6144                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6145                         echo "It supports 1..."
6146                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6147                                 echo "It also supports 2..."
6148                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6149                                         voidflags=7
6150                                         echo "And it supports 4 but not 8 definitely."
6151                                 else
6152                                         echo "It doesn't support 4..."
6153                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6154                                                 voidflags=11
6155                                                 echo "But it supports 8."
6156                                         else
6157                                                 voidflags=3
6158                                                 echo "Neither does it support 8."
6159                                         fi
6160                                 fi
6161                         else
6162                                 echo "It does not support 2..."
6163                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6164                                         voidflags=13
6165                                         echo "But it supports 4 and 8."
6166                                 else
6167                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6168                                                 voidflags=5
6169                                                 echo "And it supports 4 but has not heard about 8."
6170                                         else
6171                                                 echo "However it supports 8 but not 4."
6172                                         fi
6173                                 fi
6174                         fi
6175                 else
6176                         echo "There is no support at all for void."
6177                         voidflags=0
6178                 fi
6179         fi
6180 esac
6181 case "$voidflags" in
6182 "$defvoidused") ;;
6183 *)      $cat >&4 <<'EOM'
6184   Support flag bits are:
6185     1: basic void declarations.
6186     2: arrays of pointers to functions returning void.
6187     4: operations between pointers to and addresses of void functions.
6188     8: generic void pointers.
6189 EOM
6190         dflt="$voidflags";
6191         rp="Your void support flags add up to what?"
6192         . ./myread
6193         voidflags="$ans"
6194         ;;
6195 esac
6196 $rm -f try.* .out
6197
6198 : check for length of pointer
6199 echo " "
6200 case "$ptrsize" in
6201 '')
6202         echo "Checking to see how big your pointers are..." >&4
6203         if test "$voidflags" -gt 7; then
6204                 echo '#define VOID_PTR char *' > try.c
6205         else
6206                 echo '#define VOID_PTR void *' > try.c
6207         fi
6208         $cat >>try.c <<EOCP
6209 #include <stdio.h>
6210 #$i_stdlib I_STDLIB
6211 #ifdef I_STDLIB
6212 #include <stdlib.h>
6213 #endif
6214 int main()
6215 {
6216     printf("%d\n", (int)sizeof(VOID_PTR));
6217     exit(0);
6218 }
6219 EOCP
6220         set try
6221         if eval $compile_ok; then
6222                 ptrsize=`$run ./try`
6223                 echo "Your pointers are $ptrsize bytes long."
6224         else
6225                 dflt='4'
6226                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6227                 rp="What is the size of a pointer (in bytes)?"
6228                 . ./myread
6229                 ptrsize="$ans"
6230         fi
6231         ;;
6232 esac
6233 $rm -f try.c try
6234 case "$use64bitall" in
6235 "$define"|true|[yY]*)
6236         case "$ptrsize" in
6237         4)      cat <<EOM >&4
6238
6239 *** You have chosen a maximally 64-bit build,
6240 *** but your pointers are only 4 bytes wide.
6241 *** Please rerun Configure without -Duse64bitall.
6242 EOM
6243                 case "$d_quad" in
6244                 define)
6245                         cat <<EOM >&4
6246 *** Since you have quads, you could possibly try with -Duse64bitint.
6247 EOM
6248                         ;;
6249                 esac
6250                 cat <<EOM >&4
6251 *** Cannot continue, aborting.
6252
6253 EOM
6254
6255                 exit 1
6256                 ;;
6257         esac
6258         ;;
6259 esac
6260
6261
6262 : determine which malloc to compile in
6263 echo " "
6264 case "$usemymalloc" in
6265 [yY]*|true|$define)     dflt='y' ;;
6266 [nN]*|false|$undef)     dflt='n' ;;
6267 *)      case "$ptrsize" in
6268         4) dflt='y' ;;
6269         *) dflt='n' ;;
6270         esac
6271         ;;
6272 esac
6273 rp="Do you wish to attempt to use the malloc that comes with $package?"
6274 . ./myread
6275 usemymalloc="$ans"
6276 case "$ans" in
6277 y*|true)
6278         usemymalloc='y'
6279         mallocsrc='malloc.c'
6280         mallocobj="malloc$_o"
6281         d_mymalloc="$define"
6282         case "$libs" in
6283         *-lmalloc*)
6284                 : Remove malloc from list of libraries to use
6285                 echo "Removing unneeded -lmalloc from library list" >&4
6286                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6287                 shift
6288                 libs="$*"
6289                 echo "libs = $libs" >&4
6290                 ;;
6291         esac
6292         ;;
6293 *)
6294         usemymalloc='n'
6295         mallocsrc=''
6296         mallocobj=''
6297         d_mymalloc="$undef"
6298         ;;
6299 esac
6300
6301 : compute the return types of malloc and free
6302 echo " "
6303 $cat >malloc.c <<END
6304 #$i_malloc I_MALLOC
6305 #$i_stdlib I_STDLIB
6306 #include <stdio.h>
6307 #include <sys/types.h>
6308 #ifdef I_MALLOC
6309 #include <malloc.h>
6310 #endif
6311 #ifdef I_STDLIB
6312 #include <stdlib.h>
6313 #endif
6314 #ifdef TRY_MALLOC
6315 void *malloc();
6316 #endif
6317 #ifdef TRY_FREE
6318 void free();
6319 #endif
6320 END
6321 case "$malloctype" in
6322 '')
6323         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6324                 malloctype='void *'
6325         else
6326                 malloctype='char *'
6327         fi
6328         ;;
6329 esac
6330 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6331
6332 case "$freetype" in
6333 '')
6334         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6335                 freetype='void'
6336         else
6337                 freetype='int'
6338         fi
6339         ;;
6340 esac
6341 echo "Your system uses $freetype free(), it would seem." >&4
6342 $rm -f malloc.[co]
6343 $cat <<EOM
6344
6345 After $package is installed, you may wish to install various
6346 add-on modules and utilities.  Typically, these add-ons will
6347 be installed under $prefix with the rest
6348 of this package.  However, you may wish to install such add-ons
6349 elsewhere under a different prefix.
6350
6351 If you do not wish to put everything under a single prefix, that's
6352 ok.  You will be prompted for the individual locations; this siteprefix
6353 is only used to suggest the defaults.
6354
6355 The default should be fine for most people.
6356
6357 EOM
6358 fn=d~+
6359 rp='Installation prefix to use for add-on modules and utilities?'
6360 : XXX Here might be another good place for an installstyle setting.
6361 case "$siteprefix" in
6362 '') dflt=$prefix ;;
6363 *)  dflt=$siteprefix ;;
6364 esac
6365 . ./getfile
6366 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6367 oldsiteprefix=''
6368 case "$siteprefix" in
6369 '') ;;
6370 *)      case "$ans" in
6371         "$prefix") ;;
6372         *) oldsiteprefix="$prefix";;
6373         esac
6374         ;;
6375 esac
6376 siteprefix="$ans"
6377 siteprefixexp="$ansexp"
6378
6379 : determine where site specific libraries go.
6380 : Usual default is /usr/local/lib/perl5/site_perl/$version
6381 : The default "style" setting is made in installstyle.U
6382 : XXX No longer works with Prefixit stuff.
6383 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6384 case "$sitelib" in
6385 '') case "$installstyle" in
6386         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6387         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6388         esac
6389         ;;
6390 *)      dflt="$sitelib"
6391         ;;
6392 esac
6393 $cat <<EOM
6394
6395 The installation process will create a directory for
6396 site-specific extensions and modules.  Most users find it convenient
6397 to place all site-specific files in this directory rather than in the
6398 main distribution directory.
6399
6400 EOM
6401 fn=d~+
6402 rp='Pathname for the site-specific library files?'
6403 . ./getfile
6404 sitelib="$ans"
6405 sitelibexp="$ansexp"
6406 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6407 : Change installation prefix, if necessary.
6408 if $test X"$prefix" != X"$installprefix"; then
6409         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6410 else
6411         installsitelib="$sitelibexp"
6412 fi
6413
6414 : determine where site specific architecture-dependent libraries go.
6415 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6416 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6417 : sitelib may have an optional trailing /share.
6418 case "$sitearch" in
6419 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6420         dflt="$dflt/$archname"
6421         ;;
6422 *)      dflt="$sitearch"
6423         ;;
6424 esac
6425 set sitearch sitearch none
6426 eval $prefixit
6427 $cat <<EOM
6428
6429 The installation process will also create a directory for
6430 architecture-dependent site-specific extensions and modules.
6431
6432 EOM
6433 fn=d~+
6434 rp='Pathname for the site-specific architecture-dependent library files?'
6435 . ./getfile
6436 sitearch="$ans"
6437 sitearchexp="$ansexp"
6438 : Change installation prefix, if necessary.
6439 if $test X"$prefix" != X"$installprefix"; then
6440         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6441 else
6442         installsitearch="$sitearchexp"
6443 fi
6444
6445 $cat <<EOM
6446
6447 The installation process will also create a directory for
6448 vendor-supplied add-ons.  Vendors who supply perl with their system
6449 may find it convenient to place all vendor-supplied files in this
6450 directory rather than in the main distribution directory.  This will
6451 ease upgrades between binary-compatible maintenance versions of perl.
6452
6453 Of course you may also use these directories in whatever way you see
6454 fit.  For example, you might use them to access modules shared over a
6455 company-wide network.
6456
6457 The default answer should be fine for most people.
6458 This causes further questions about vendor add-ons to be skipped
6459 and no vendor-specific directories will be configured for perl.
6460
6461 EOM
6462 rp='Do you want to configure vendor-specific add-on directories?'
6463 case "$usevendorprefix" in
6464 define|true|[yY]*) dflt=y ;;
6465 *)      : User may have set vendorprefix directly on Configure command line.
6466         case "$vendorprefix" in
6467         ''|' ') dflt=n ;;
6468         *)      dflt=y ;;
6469         esac
6470         ;;
6471 esac
6472 . ./myread
6473 case "$ans" in
6474 [yY]*)  fn=d~+
6475         rp='Installation prefix to use for vendor-supplied add-ons?'
6476         case "$vendorprefix" in
6477         '') dflt='' ;;
6478         *)  dflt=$vendorprefix ;;
6479         esac
6480         . ./getfile
6481         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6482         oldvendorprefix=''
6483         case "$vendorprefix" in
6484         '') ;;
6485         *)      case "$ans" in
6486                 "$prefix") ;;
6487                 *) oldvendorprefix="$prefix";;
6488                 esac
6489                 ;;
6490         esac
6491         usevendorprefix="$define"
6492         vendorprefix="$ans"
6493         vendorprefixexp="$ansexp"
6494         ;;
6495 *)      usevendorprefix="$undef"
6496         vendorprefix=''
6497         vendorprefixexp=''
6498         ;;
6499 esac
6500
6501 case "$vendorprefix" in
6502 '')     d_vendorlib="$undef"
6503         vendorlib=''
6504         vendorlibexp=''
6505         ;;
6506 *)      d_vendorlib="$define"
6507         : determine where vendor-supplied modules go.
6508         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6509         case "$vendorlib" in
6510         '')
6511                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6512                 case "$installstyle" in
6513                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6514                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6515                 esac
6516                 ;;
6517         *)      dflt="$vendorlib"
6518                 ;;
6519         esac
6520         fn=d~+
6521         rp='Pathname for the vendor-supplied library files?'
6522         . ./getfile
6523         vendorlib="$ans"
6524         vendorlibexp="$ansexp"
6525         ;;
6526 esac
6527 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6528 : Change installation prefix, if necessary.
6529 if $test X"$prefix" != X"$installprefix"; then
6530         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6531 else
6532         installvendorlib="$vendorlibexp"
6533 fi
6534
6535 case "$vendorprefix" in
6536 '')     d_vendorarch="$undef"
6537         vendorarch=''
6538         vendorarchexp=''
6539         ;;
6540 *)      d_vendorarch="$define"
6541         : determine where vendor-supplied architecture-dependent libraries go.
6542         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6543         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6544         : vendorlib may have an optional trailing /share.
6545         case "$vendorarch" in
6546         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6547                 dflt="$dflt/$archname"
6548                 ;;
6549         *)      dflt="$vendorarch" ;;
6550         esac
6551         fn=d~+
6552         rp='Pathname for vendor-supplied architecture-dependent files?'
6553         . ./getfile
6554         vendorarch="$ans"
6555         vendorarchexp="$ansexp"
6556         ;;
6557 esac
6558 : Change installation prefix, if necessary.
6559 if $test X"$prefix" != X"$installprefix"; then
6560         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6561 else
6562         installvendorarch="$vendorarchexp"
6563 fi
6564
6565 : Final catch-all directories to search
6566 $cat <<EOM
6567
6568 Lastly, you can have perl look in other directories for extensions and
6569 modules in addition to those already specified.
6570 These directories will be searched after 
6571         $sitearch 
6572         $sitelib 
6573 EOM
6574 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6575 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6576 echo ' '
6577 case "$otherlibdirs" in
6578 ''|' ') dflt='none' ;;
6579 *)      dflt="$otherlibdirs" ;;
6580 esac
6581 $cat <<EOM
6582 Enter a colon-separated set of extra paths to include in perl's @INC
6583 search path, or enter 'none' for no extra paths.
6584
6585 EOM
6586
6587 rp='Colon-separated list of additional directories for perl to search?'
6588 . ./myread
6589 case "$ans" in
6590 ' '|''|none)    otherlibdirs=' ' ;;     
6591 *)      otherlibdirs="$ans" ;;
6592 esac
6593 case "$otherlibdirs" in
6594 ' ') val=$undef ;;
6595 *)      val=$define ;;
6596 esac
6597 set d_perl_otherlibdirs
6598 eval $setvar
6599
6600 : Cruising for prototypes
6601 echo " "
6602 echo "Checking out function prototypes..." >&4
6603 $cat >prototype.c <<EOCP
6604 #$i_stdlib I_STDLIB
6605 #ifdef I_STDLIB
6606 #include <stdlib.h>
6607 #endif
6608 int main(int argc, char *argv[]) {
6609         exit(0);}
6610 EOCP
6611 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6612         echo "Your C compiler appears to support function prototypes."
6613         val="$define"
6614 else
6615         echo "Your C compiler doesn't seem to understand function prototypes."
6616         val="$undef"
6617 fi
6618 set prototype
6619 eval $setvar
6620 $rm -f prototype*
6621
6622 case "$prototype" in
6623 "$define") ;;
6624 *)      ansi2knr='ansi2knr'
6625         echo " "
6626         cat <<EOM >&4
6627
6628 $me:  FATAL ERROR:
6629 This version of $package can only be compiled by a compiler that 
6630 understands function prototypes.  Unfortunately, your C compiler 
6631         $cc $ccflags
6632 doesn't seem to understand them.  Sorry about that.
6633
6634 If GNU cc is available for your system, perhaps you could try that instead.  
6635
6636 Eventually, we hope to support building Perl with pre-ANSI compilers.
6637 If you would like to help in that effort, please contact <perlbug@perl.org>.
6638
6639 Aborting Configure now.
6640 EOM
6641         exit 2
6642         ;;
6643 esac
6644
6645 : determine where public executables go
6646 echo " "
6647 set dflt bin bin
6648 eval $prefixit
6649 fn=d~
6650 rp='Pathname where the public executables will reside?'
6651 . ./getfile
6652 if $test "X$ansexp" != "X$binexp"; then
6653         installbin=''
6654 fi
6655 bin="$ans"
6656 binexp="$ansexp"
6657 : Change installation prefix, if necessary.
6658 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6659 if $test X"$prefix" != X"$installprefix"; then
6660         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6661 else
6662         installbin="$binexp"
6663 fi
6664
6665 echo " "
6666 case "$extras" in
6667 '') dflt='n';;
6668 *) dflt='y';;
6669 esac
6670 cat <<EOM
6671 Perl can be built with extra modules or bundles of modules which
6672 will be fetched from the CPAN and installed alongside Perl.
6673
6674 Notice that you will need access to the CPAN; either via the Internet,
6675 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6676 be asked later to configure the CPAN.pm module which will in turn do
6677 the installation of the rest of the extra modules or bundles.)
6678
6679 Notice also that if the modules require any external software such as
6680 libraries and headers (the libz library and the zlib.h header for the
6681 Compress::Zlib module, for example) you MUST have any such software
6682 already installed, this configuration process will NOT install such
6683 things for you.
6684
6685 If this doesn't make any sense to you, just accept the default '$dflt'.
6686 EOM
6687 rp='Install any extra modules (y or n)?'
6688 . ./myread
6689 case "$ans" in
6690 y|Y)
6691         cat <<EOM
6692
6693 Please list any extra modules or bundles to be installed from CPAN,
6694 with spaces between the names.  The names can be in any format the
6695 'install' command of CPAN.pm will understand.  (Answer 'none',
6696 without the quotes, to install no extra modules or bundles.)
6697 EOM
6698         rp='Extras?'
6699         dflt="$extras"
6700         . ./myread
6701         extras="$ans"
6702 esac
6703 case "$extras" in
6704 ''|'none')
6705         val=''
6706         $rm -f ../extras.lst
6707         ;;
6708 *)      echo "(Saving the list of extras for later...)"
6709         echo "$extras" > ../extras.lst
6710         val="'$extras'"
6711         ;;
6712 esac
6713 set extras
6714 eval $setvar
6715 echo " "
6716
6717 : determine where html pages for programs go
6718 set html1dir html1dir none
6719 eval $prefixit
6720 $cat <<EOM
6721
6722 If you wish to install html files for programs in $spackage, indicate 
6723 the appropriate directory here.  To skip installing html files,
6724 answer "none".
6725 EOM
6726 case "$html1dir" in
6727 ''|none|$undef|' ') dflt=none ;;
6728 *) dflt=$html1dir ;;
6729 esac
6730 fn=dn+~
6731 rp="Directory for the main $spackage html pages?"
6732 . ./getfile
6733 html1dir="$ans"
6734 html1direxp="$ansexp"
6735 : Use ' ' for none so value is preserved next time through Configure
6736 $test X"$html1dir" = "X" && html1dir=' '
6737 : Change installation prefix, if necessary.
6738 if $test X"$prefix" != X"$installprefix"; then
6739         installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6740 else
6741         installhtml1dir="$html1direxp"
6742 fi
6743
6744 : determine where html pages for libraries and modules go
6745 set html3dir html3dir none
6746 eval $prefixit
6747 $cat <<EOM
6748
6749 If you wish to install html files for modules associated with $spackage,
6750 indicate the appropriate directory here.  To skip installing html files,
6751 answer "none".
6752 EOM
6753 : There is no obvious default.  If they have specified html1dir, then
6754 : try to key off that, possibly changing .../html1 into .../html3.
6755 case "$html3dir" in
6756 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6757 *) dflt=$html3dir ;;
6758 esac
6759 fn=dn+~
6760 rp="Directory for the $spackage module html pages?"
6761 . ./getfile
6762 html3dir="$ans"
6763 html3direxp="$ansexp"
6764 : Use ' ' for none so value is preserved next time through Configure
6765 $test X"$html3dir" = "X" && html3dir=' '
6766 : Change installation prefix, if necessary.
6767 if $test X"$prefix" != X"$installprefix"; then
6768         installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6769 else
6770         installhtml3dir="$html3direxp"
6771 fi
6772
6773 : Find perl5.005 or later.
6774 echo "Looking for a previously installed perl5.005 or later... "
6775 case "$perl5" in
6776 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6777                 : Check if this perl is recent and can load a simple module
6778                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6779                         perl5=$tdir/perl
6780                         break;
6781                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6782                         perl5=$tdir/perl5
6783                         break;
6784                 fi
6785         done
6786         ;;
6787 *)      perl5="$perl5"
6788         ;;
6789 esac
6790 case "$perl5" in
6791 '')     echo "None found.  That's ok.";;
6792 *)      echo "Using $perl5." ;;
6793 esac
6794
6795 : Determine list of previous versions to include in @INC
6796 $cat > getverlist <<EOPL
6797 #!$perl5 -w
6798 use File::Basename;
6799 \$api_versionstring = "$api_versionstring";
6800 \$version = "$version";
6801 \$stem = "$sitelib_stem";
6802 \$archname = "$archname";
6803 EOPL
6804         $cat >> getverlist <<'EOPL'
6805 # Can't have leading @ because metaconfig interprets it as a command!
6806 ;@inc_version_list=();
6807 # XXX Redo to do opendir/readdir? 
6808 if (-d $stem) {
6809     chdir($stem);
6810     ;@candidates = glob("5.*");
6811 }
6812 else {
6813     ;@candidates = ();
6814 }
6815
6816 # XXX ToDo:  These comparisons must be reworked when two-digit
6817 # subversions come along, so that 5.7.10 compares as greater than
6818 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6819 # widespread that we can use the built-in version vectors rather
6820 # than reinventing them here.  For 5.6.0, however, we must
6821 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6822 foreach $d (@candidates) {
6823     if ($d lt $version) {
6824         if ($d ge $api_versionstring) {
6825             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6826         }
6827         elsif ($d ge "5.005") {
6828             unshift(@inc_version_list, grep { -d } $d);
6829         }
6830     }
6831     else {
6832         # Skip newer version.  I.e. don't look in
6833         # 5.7.0 if we're installing 5.6.1.
6834     }
6835 }
6836
6837 if (@inc_version_list) {
6838     print join(' ', @inc_version_list);
6839 }
6840 else {
6841     # Blank space to preserve value for next Configure run.
6842     print " ";
6843 }
6844 EOPL
6845 chmod +x getverlist
6846 case "$inc_version_list" in
6847 '')     if test -x "$perl5$exe_ext"; then
6848                 dflt=`$perl5 getverlist`
6849         else
6850                 dflt='none'
6851         fi
6852         ;;
6853 $undef) dflt='none' ;;
6854 *)  eval dflt=\"$inc_version_list\" ;;
6855 esac
6856 case "$dflt" in
6857 ''|' ') dflt=none ;;
6858 esac
6859 case "$dflt" in
6860 5.005) dflt=none ;;
6861 esac
6862 $cat <<EOM
6863
6864 In order to ease the process of upgrading, this version of perl 
6865 can be configured to use modules built and installed with earlier 
6866 versions of perl that were installed under $prefix.  Specify here
6867 the list of earlier versions that this version of perl should check.
6868 If Configure detected no earlier versions of perl installed under
6869 $prefix, then the list will be empty.  Answer 'none' to tell perl
6870 to not search earlier versions.
6871
6872 The default should almost always be sensible, so if you're not sure,
6873 just accept the default.
6874 EOM
6875
6876 rp='List of earlier versions to include in @INC?'
6877 . ./myread
6878 case "$ans" in
6879 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6880 *) inc_version_list="$ans" ;;
6881 esac
6882 case "$inc_version_list" in
6883 ''|' ') 
6884         inc_version_list_init='0';;
6885 *)      inc_version_list_init=`echo $inc_version_list |
6886                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6887         ;;
6888 esac
6889 $rm -f getverlist
6890
6891 : determine whether to install perl also as /usr/bin/perl
6892
6893 echo " "
6894 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6895         $cat <<EOM
6896 Many scripts expect perl to be installed as /usr/bin/perl.
6897
6898 If you want to, I can install the perl you are about to compile
6899 as /usr/bin/perl (in addition to $bin/perl).
6900 EOM
6901         if test -f /usr/bin/perl; then
6902             $cat <<EOM
6903
6904 However, please note that because you already have a /usr/bin/perl,
6905 overwriting that with a new Perl would very probably cause problems.
6906 Therefore I'm assuming you don't want to do that (unless you insist).
6907
6908 EOM
6909             case "$installusrbinperl" in
6910             "$define"|[yY]*)    dflt='y';;
6911             *)                  dflt='n';;
6912             esac
6913         else
6914             $cat <<EOM
6915
6916 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6917
6918 EOM
6919             case "$installusrbinperl" in
6920             "$undef"|[nN]*)     dflt='n';;
6921             *)                  dflt='y';;
6922             esac
6923         fi
6924         rp="Do you want to install perl as /usr/bin/perl?"
6925         . ./myread
6926         case "$ans" in
6927         [yY]*)  val="$define";;
6928         *)      val="$undef" ;;
6929         esac
6930 else
6931         val="$undef"
6932 fi
6933 set installusrbinperl
6934 eval $setvar
6935
6936 echo " "
6937 echo "Checking for GNU C Library..." >&4
6938 cat >try.c <<'EOCP'
6939 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6940    alone are insufficient to distinguish different versions, such as
6941    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6942    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6943 */
6944 #include <stdio.h>
6945 int main(void)
6946 {
6947 #ifdef __GLIBC__
6948 #   ifdef __GLIBC_MINOR__
6949 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
6950 #           include <gnu/libc-version.h>
6951             printf("%s\n",  gnu_get_libc_version());
6952 #       else
6953             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6954 #       endif
6955 #   else
6956         printf("%d\n",  __GLIBC__);
6957 #   endif
6958     return 0;
6959 #else
6960     return 1;
6961 #endif
6962 }
6963 EOCP
6964 set try
6965 if eval $compile_ok && $run ./try > glibc.ver; then
6966         val="$define"
6967         gnulibc_version=`$cat glibc.ver`
6968         echo "You are using the GNU C Library version $gnulibc_version"
6969 else
6970         val="$undef"
6971         gnulibc_version=''
6972         echo "You are not using the GNU C Library"
6973 fi
6974 $rm -f try try.* glibc.ver
6975 set d_gnulibc
6976 eval $setvar
6977
6978 : see if nm is to be used to determine whether a symbol is defined or not
6979 case "$usenm" in
6980 '')
6981         dflt=''
6982         case "$d_gnulibc" in
6983         "$define")
6984                 echo " "
6985                 echo "nm probably won't work on the GNU C Library." >&4
6986                 dflt=n
6987                 ;;
6988         esac
6989         case "$dflt" in
6990         '') 
6991                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6992                         echo " "
6993                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6994                         echo "'nm' won't be sufficient on this sytem." >&4
6995                         dflt=n
6996                 fi
6997                 ;;
6998         esac
6999         case "$dflt" in
7000         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7001                 if $test $dflt -gt 20; then
7002                         dflt=y
7003                 else
7004                         dflt=n
7005                 fi
7006                 ;;
7007         esac
7008         ;;
7009 *)
7010         case "$usenm" in
7011         true|$define) dflt=y;;
7012         *) dflt=n;;
7013         esac
7014         ;;
7015 esac
7016 $cat <<EOM
7017
7018 I can use $nm to extract the symbols from your C libraries. This
7019 is a time consuming task which may generate huge output on the disk (up
7020 to 3 megabytes) but that should make the symbols extraction faster. The
7021 alternative is to skip the 'nm' extraction part and to compile a small
7022 test program instead to determine whether each symbol is present. If
7023 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7024 this may be the best solution.
7025
7026 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7027
7028 EOM
7029 rp="Shall I use $nm to extract C symbols from the libraries?"
7030 . ./myread
7031 case "$ans" in
7032 [Nn]*) usenm=false;;
7033 *) usenm=true;;
7034 esac
7035
7036 runnm=$usenm
7037 case "$reuseval" in
7038 true) runnm=false;;
7039 esac
7040
7041 : nm options which may be necessary
7042 case "$nm_opt" in
7043 '') if $test -f /mach_boot; then
7044                 nm_opt=''       # Mach
7045         elif $test -d /usr/ccs/lib; then
7046                 nm_opt='-p'     # Solaris (and SunOS?)
7047         elif $test -f /dgux; then
7048                 nm_opt='-p'     # DG-UX
7049         elif $test -f /lib64/rld; then
7050                 nm_opt='-p'     # 64-bit Irix
7051         else
7052                 nm_opt=''
7053         fi;;
7054 esac
7055
7056 : nm options which may be necessary for shared libraries but illegal
7057 : for archive libraries.  Thank you, Linux.
7058 case "$nm_so_opt" in
7059 '')     case "$myuname" in
7060         *linux*)
7061                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7062                         nm_so_opt='--dynamic'
7063                 fi
7064                 ;;
7065         esac
7066         ;;
7067 esac
7068
7069 case "$runnm" in
7070 true)
7071 : get list of predefined functions in a handy place
7072 echo " "
7073 case "$libc" in
7074 '') libc=unknown
7075         case "$libs" in
7076         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7077         esac
7078         ;;
7079 esac
7080 case "$libs" in
7081 '') ;;
7082 *)  for thislib in $libs; do
7083         case "$thislib" in
7084         -lc|-lc_s)
7085                 : Handle C library specially below.
7086                 ;;
7087         -l*)
7088                 thislib=`echo $thislib | $sed -e 's/^-l//'`
7089                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7090                         :
7091                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7092                         :
7093                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7094                         :
7095                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7096                         :
7097                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7098                         :
7099                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7100                         :
7101                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7102                         :
7103                 else
7104                         try=''
7105                 fi
7106                 libnames="$libnames $try"
7107                 ;;
7108         *) libnames="$libnames $thislib" ;;
7109         esac
7110         done
7111         ;;
7112 esac
7113 xxx=normal
7114 case "$libc" in
7115 unknown)
7116         set /lib/libc.$so
7117         for xxx in $libpth; do
7118                 $test -r $1 || set $xxx/libc.$so
7119                 : The messy sed command sorts on library version numbers.
7120                 $test -r $1 || \
7121                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7122                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7123                                 h
7124                                 s/[0-9][0-9]*/0000&/g
7125                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7126                                 G
7127                                 s/\n/ /' | \
7128                          $sort | $sed -e 's/^.* //'`
7129                 eval set \$$#
7130         done
7131         $test -r $1 || set /usr/ccs/lib/libc.$so
7132         $test -r $1 || set /lib/libsys_s$_a
7133         ;;
7134 *)
7135         set blurfl
7136         ;;
7137 esac
7138 if $test -r "$1"; then
7139         echo "Your (shared) C library seems to be in $1."
7140         libc="$1"
7141 elif $test -r /lib/libc && $test -r /lib/clib; then
7142         echo "Your C library seems to be in both /lib/clib and /lib/libc."
7143         xxx=apollo
7144         libc='/lib/clib /lib/libc'
7145         if $test -r /lib/syslib; then
7146                 echo "(Your math library is in /lib/syslib.)"
7147                 libc="$libc /lib/syslib"
7148         fi
7149 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7150         echo "Your C library seems to be in $libc, as you said before."
7151 elif $test -r $incpath/usr/lib/libc$_a; then
7152         libc=$incpath/usr/lib/libc$_a;
7153         echo "Your C library seems to be in $libc.  That's fine."
7154 elif $test -r /lib/libc$_a; then
7155         libc=/lib/libc$_a;
7156         echo "Your C library seems to be in $libc.  You're normal."
7157 else
7158         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7159                 :
7160         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7161                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7162         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7163                 :
7164         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7165                 :
7166         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7167                 :
7168         else
7169                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7170         fi
7171         if $test -r "$tans"; then
7172                 echo "Your C library seems to be in $tans, of all places."
7173                 libc=$tans
7174         else
7175                 libc='blurfl'
7176         fi
7177 fi
7178 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7179         dflt="$libc"
7180         cat <<EOM
7181
7182 If the guess above is wrong (which it might be if you're using a strange
7183 compiler, or your machine supports multiple models), you can override it here.
7184
7185 EOM
7186 else
7187         dflt=''
7188         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7189         cat >&4 <<EOM
7190 I can't seem to find your C library.  I've looked in the following places:
7191
7192 EOM
7193         $sed 's/^/      /' libpath
7194         cat <<EOM
7195
7196 None of these seems to contain your C library. I need to get its name...
7197
7198 EOM
7199 fi
7200 fn=f
7201 rp='Where is your C library?'
7202 . ./getfile
7203 libc="$ans"
7204
7205 echo " "
7206 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7207 set X `cat libnames`
7208 shift
7209 xxx=files
7210 case $# in 1) xxx=file; esac
7211 echo "Extracting names from the following $xxx for later perusal:" >&4
7212 echo " "
7213 $sed 's/^/      /' libnames >&4
7214 echo " "
7215 $echo $n "This may take a while...$c" >&4
7216
7217 for file in $*; do
7218         case $file in
7219         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7220         *) $nm $nm_opt $file 2>/dev/null;;
7221         esac
7222 done >libc.tmp
7223
7224 $echo $n ".$c"
7225 $grep fprintf libc.tmp > libc.ptf
7226 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7227 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7228 xxx='[ADTSIW]'
7229 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
7230         eval $xscan;\
7231         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7232                 eval $xrun
7233 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7234         eval $xscan;\
7235         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7236                 eval $xrun
7237 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7238         eval $xscan;\
7239         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7240                 eval $xrun
7241 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7242         eval $xscan;\
7243         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7244                 eval $xrun
7245 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7246         eval $xscan;\
7247         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7248                 eval $xrun
7249 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7250         eval $xscan;\
7251         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7252                 eval $xrun
7253 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7254                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
7255         eval $xscan;\
7256         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7257                 eval $xrun
7258 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7259         eval $xscan;\
7260         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7261                 eval $xrun
7262 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7263         eval $xscan;\
7264         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7265                 eval $xrun
7266 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7267         eval $xscan;\
7268         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7269                 eval $xrun
7270 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7271         eval $xscan;\
7272         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7273                 eval $xrun
7274 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7275         eval $xscan;\
7276         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7277                 eval $xrun
7278 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7279         eval $xscan;\
7280         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7281                 eval $xrun
7282 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
7283         eval $xscan;\
7284         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7285                 eval $xrun
7286 else
7287         $nm -p $* 2>/dev/null >libc.tmp
7288         $grep fprintf libc.tmp > libc.ptf
7289         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7290                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7291         then
7292                 nm_opt='-p'
7293                 eval $xrun
7294         else
7295                 echo " "
7296                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7297                 com=''
7298                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7299                         for thisname in $libnames $libc; do
7300                                 $ar t $thisname >>libc.tmp
7301                         done
7302                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7303                         echo "Ok." >&4
7304                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7305                         # Repeat libc to extract forwarders to DLL entries too
7306                         for thisname in $libnames $libc; do
7307                                 $ar tv $thisname >>libc.tmp
7308                                 # Revision 50 of EMX has bug in $ar.
7309                                 # it will not extract forwarders to DLL entries
7310                                 # Use emximp which will extract exactly them.
7311                                 emximp -o tmp.imp $thisname \
7312                                     2>/dev/null && \
7313                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7314                                     < tmp.imp >>libc.tmp
7315                                 $rm tmp.imp
7316                         done
7317                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7318                         echo "Ok." >&4
7319                 else
7320                         echo "$ar didn't seem to work right." >&4
7321                         echo "Maybe this is a Cray...trying bld instead..." >&4
7322                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7323                         then
7324                                 for thisname in $libnames; do
7325                                         bld t $libnames | \
7326                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7327                                         $ar t $thisname >>libc.tmp
7328                                 done
7329                                 echo "Ok." >&4
7330                         else
7331                                 echo "That didn't work either.  Giving up." >&4
7332                                 exit 1
7333                         fi
7334                 fi
7335         fi
7336 fi
7337 nm_extract="$com"
7338 case "$PASE" in
7339 define)
7340     echo " "
7341     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7342     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7343     ;;
7344 *)  if $test -f /lib/syscalls.exp; then
7345         echo " "
7346         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7347         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
7348     fi
7349     ;;
7350 esac
7351 ;;
7352 esac
7353 $rm -f libnames libpath
7354
7355 : see if dld is available
7356 set dld.h i_dld
7357 eval $inhdr
7358
7359 : is a C symbol defined?
7360 csym='tlook=$1;
7361 case "$3" in
7362 -v) tf=libc.tmp; tdc="";;
7363 -a) tf=libc.tmp; tdc="[]";;
7364 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7365 esac;
7366 tx=yes;
7367 case "$reuseval-$4" in
7368 true-) ;;
7369 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7370 esac;
7371 case "$tx" in
7372 yes)
7373         tval=false;
7374         if $test "$runnm" = true; then
7375                 if $contains $tlook $tf >/dev/null 2>&1; then
7376                         tval=true;
7377                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7378                         echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7379                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7380                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7381                         $rm -f try$_exe try.c core core.* try.core;
7382                 fi;
7383         else
7384                 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7385                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7386                 $rm -f try$_exe try.c;
7387         fi;
7388         ;;
7389 *)
7390         case "$tval" in
7391         $define) tval=true;;
7392         *) tval=false;;
7393         esac;
7394         ;;
7395 esac;
7396 eval "$2=$tval"'
7397
7398 : define an is-in-libc? function
7399 inlibc='echo " "; td=$define; tu=$undef;
7400 sym=$1; var=$2; eval "was=\$$2";
7401 tx=yes;
7402 case "$reuseval$was" in
7403 true) ;;
7404 true*) tx=no;;
7405 esac;
7406 case "$tx" in
7407 yes)
7408         set $sym tres -f;
7409         eval $csym;
7410         case "$tres" in
7411         true)
7412                 echo "$sym() found." >&4;
7413                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7414         *)
7415                 echo "$sym() NOT found." >&4;
7416                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7417         esac;;
7418 *)
7419         case "$was" in
7420         $define) echo "$sym() found." >&4;;
7421         *) echo "$sym() NOT found." >&4;;
7422         esac;;
7423 esac'
7424
7425 : see if dlopen exists
7426 xxx_runnm="$runnm"
7427 runnm=false
7428 set dlopen d_dlopen
7429 eval $inlibc
7430 runnm="$xxx_runnm"
7431
7432 : determine which dynamic loading, if any, to compile in
7433 echo " "
7434 dldir="ext/DynaLoader"
7435 case "$usedl" in
7436 $define|y|true)
7437         dflt='y'
7438         usedl="$define"
7439         ;;
7440 $undef|n|false)
7441         dflt='n'
7442         usedl="$undef"
7443         ;;
7444 *) 
7445         dflt='n'
7446         case "$d_dlopen" in
7447             $define) dflt='y' ;;
7448         esac
7449         case "$i_dld" in
7450             $define) dflt='y' ;;
7451         esac
7452         : Does a dl_xxx.xs file exist for this operating system
7453         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7454         ;;
7455 esac
7456 rp="Do you wish to use dynamic loading?"
7457 . ./myread
7458 usedl="$ans"
7459 case "$ans" in
7460 y*) usedl="$define"
7461         case "$dlsrc" in
7462         '')
7463                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7464                         dflt="$dldir/dl_${osname}.xs"
7465                 elif $test "$d_dlopen" = "$define" ; then
7466                         dflt="$dldir/dl_dlopen.xs"
7467                 elif $test "$i_dld" = "$define" ; then
7468                         dflt="$dldir/dl_dld.xs"
7469                 else
7470                         dflt=''
7471                 fi
7472                 ;;
7473         *)      dflt="$dldir/$dlsrc"
7474                 ;;
7475         esac
7476     echo "The following dynamic loading files are available:"
7477         : Can not go over to $dldir because getfile has path hard-coded in.
7478         tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7479         rp="Source file to use for dynamic loading"
7480         fn="fne"
7481         gfpth="$src"
7482         . ./getfile
7483         usedl="$define"
7484         : emulate basename
7485         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7486
7487         $cat << EOM
7488
7489 Some systems may require passing special flags to $cc -c to
7490 compile modules that will be used to create a shared library.
7491 To use no flags, say "none".
7492
7493 EOM
7494     case "$cccdlflags" in
7495     '') case "$gccversion" in
7496                 '') case "$osname" in
7497                         hpux)   dflt='+z' ;;
7498                         next)   dflt='none' ;;
7499                         irix*)  dflt='-KPIC' ;;
7500                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7501                         sunos)  dflt='-pic' ;;
7502                         *)      dflt='none' ;;
7503                     esac
7504                         ;;
7505                 *)  case "$osname" in
7506                         darwin) dflt='none' ;;
7507                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7508                         *)      dflt='-fpic' ;;
7509                     esac ;;
7510             esac ;;
7511         ' ') dflt='none' ;;
7512     *)  dflt="$cccdlflags" ;;
7513     esac
7514     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7515     . ./myread
7516     case "$ans" in
7517     none) cccdlflags=' ' ;;
7518     *) cccdlflags="$ans" ;;
7519     esac
7520
7521     cat << EOM
7522
7523 Some systems use ld to create libraries that can be dynamically loaded,
7524 while other systems (such as those using ELF) use $cc.
7525
7526 EOM
7527         case "$ld" in
7528         '')     $cat >try.c <<EOM
7529 /* Test for whether ELF binaries are produced */
7530 #include <fcntl.h>
7531 #$i_stdlib I_STDLIB
7532 #ifdef I_STDLIB
7533 #include <stdlib.h>
7534 #endif
7535 int main() {
7536         char b[4];
7537         int i = open("a.out",O_RDONLY);
7538         if(i == -1) 
7539                 exit(1); /* fail */
7540         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7541                 exit(0); /* succeed (yes, it's ELF) */
7542         else
7543                 exit(1); /* fail */
7544 }
7545 EOM
7546                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7547                         cat <<EOM
7548 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7549 EOM
7550                         dflt="$cc"
7551                 else
7552                         echo "I'll use ld to build dynamic libraries."
7553                         dflt='ld'
7554                 fi
7555                 rm -f try.c a.out
7556                 ;;
7557         *)      dflt="$ld"
7558                 ;;
7559         esac
7560
7561     rp="What command should be used to create dynamic libraries?"
7562     . ./myread
7563         ld="$ans"
7564
7565     cat << EOM
7566
7567 Some systems may require passing special flags to $ld to create a
7568 library that can be dynamically loaded.  If your ld flags include
7569 -L/other/path options to locate libraries outside your loader's normal
7570 search path, you may need to specify those -L options here as well.  To
7571 use no flags, say "none".
7572
7573 EOM
7574     case "$lddlflags" in
7575     '') case "$osname" in
7576                         beos) dflt='-nostart' ;;
7577                         hpux) dflt='-b';
7578                               case "$gccversion" in
7579                               '') dflt="$dflt +vnocompatwarnings" ;;
7580                               esac
7581                               ;;        
7582                         linux|irix*)    dflt='-shared' ;;
7583                         next)  dflt='none' ;;
7584                         solaris) dflt='-G' ;;
7585                         sunos) dflt='-assert nodefinitions' ;;
7586                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7587                 *)     dflt='none' ;;
7588                         esac
7589                         ;;
7590     *) dflt="$lddlflags" ;;
7591     esac
7592
7593         : Try to guess additional flags to pick up local libraries.
7594         : Be careful not to append to a plain 'none'
7595         case "$dflt" in
7596         none) dflt='' ;;
7597         esac
7598         for thisflag in $ldflags; do
7599                 case "$thisflag" in
7600                 -L*|-R*|-Wl,-R*)
7601                         case " $dflt " in
7602                         *" $thisflag "*) ;;
7603                         *) dflt="$dflt $thisflag" ;;
7604                         esac
7605                         ;;
7606                 esac
7607         done
7608
7609         case "$dflt" in
7610         ''|' ') dflt='none' ;;
7611         esac
7612
7613     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7614     . ./myread
7615     case "$ans" in
7616     none) lddlflags=' ' ;;
7617     *) lddlflags="$ans" ;;
7618     esac
7619
7620         cat <<EOM
7621
7622 Some systems may require passing special flags to $cc to indicate that
7623 the resulting executable will use dynamic linking.  To use no flags,
7624 say "none".
7625
7626 EOM
7627     case "$ccdlflags" in
7628     '') case "$osname" in
7629             linux|hpux) dflt='-Wl,-E' ;;
7630             next|sunos) dflt='none' ;;
7631             *)          dflt='none' ;;
7632             esac ;;
7633     ' ')  dflt='none' ;;
7634     *)  dflt="$ccdlflags" ;;
7635     esac
7636     rp="Any special flags to pass to $cc to use dynamic linking?"
7637     . ./myread
7638     case "$ans" in
7639     none) ccdlflags=' ' ;;
7640     *) ccdlflags="$ans" ;;
7641     esac
7642     ;;
7643 *)  usedl="$undef"
7644         ld='ld'
7645     dlsrc='dl_none.xs'
7646     lddlflags=''
7647     ccdlflags=''
7648     ;;
7649 esac
7650
7651 also=''
7652 case "$usedl" in
7653 $undef)
7654         # No dynamic loading being used, so don't bother even to prompt.
7655         useshrplib='false'
7656         ;;
7657 *)      case "$useshrplib" in
7658         '')     case "$osname" in
7659                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7660                         dflt=y
7661                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7662                         ;;
7663                 next*)
7664                         case "$osvers" in
7665                         4*)     dflt=y
7666                                 also='Building a shared libperl is needed for MAB support.'
7667                                 ;;
7668                         *)      dflt=n
7669                                 ;;
7670                         esac
7671                         ;;
7672                 *)      dflt=n
7673                         ;;
7674                 esac
7675                 ;;
7676         $define|true|[Yy]*)
7677                 dflt=y
7678                 ;;
7679         *)      dflt=n
7680                 ;;
7681         esac
7682         $cat << EOM
7683
7684 The perl executable is normally obtained by linking perlmain.c with
7685 libperl${_a}, any static extensions (usually just DynaLoader), and
7686 any other libraries needed on this system (such as -lm, etc.).  Since
7687 your system supports dynamic loading, it is probably possible to build
7688 a shared libperl.$so.  If you will have more than one executable linked
7689 to libperl.$so, this will significantly reduce the size of each
7690 executable, but it may have a noticeable affect on performance.  The
7691 default is probably sensible for your system.
7692 $also
7693
7694 EOM
7695         rp="Build a shared libperl.$so (y/n)"
7696         . ./myread
7697         case "$ans" in
7698         true|$define|[Yy]*)
7699                 useshrplib='true'  ;;
7700         *)      useshrplib='false' ;;
7701         esac
7702         ;;
7703 esac
7704
7705 case "$useshrplib" in
7706 true)
7707         case "$libperl" in
7708         '')
7709                 # Figure out a good name for libperl.so.  Since it gets stored in
7710                 # a version-specific architecture-dependent library, the version
7711                 # number isn't really that important, except for making cc/ld happy.
7712                 #
7713                 # A name such as libperl.so.3.1
7714                 majmin="libperl.$so.$patchlevel.$subversion"
7715                 # A name such as libperl.so.301
7716                 majonly=`echo $patchlevel $subversion |
7717                         $awk '{printf "%d%02d", $1, $2}'`
7718                 majonly=libperl.$so.$majonly
7719                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7720                 # rely on figuring it out from the naming of libc.
7721                 case "${osname}${osvers}" in
7722                 next4*)
7723                         dflt=libperl.5.$so
7724                         # XXX How handle the --version stuff for MAB?
7725                         ;;
7726                 linux*)  # ld won't link with a bare -lperl otherwise.
7727                         dflt=libperl.$so
7728                         ;;
7729                 cygwin*) # ld links against an importlib
7730                         dflt=libperl$lib_ext
7731                         ;;
7732                 *)      # Try to guess based on whether libc has major.minor.
7733                         case "$libc" in
7734                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7735                         *libc.$so.[0-9]*) dflt=$majonly ;;
7736                         *)      dflt=libperl.$so ;;
7737                         esac
7738                         ;;
7739                 esac
7740                 ;;
7741         *)      dflt=$libperl
7742                 ;;
7743         esac
7744         cat << EOM
7745
7746 I need to select a good name for the shared libperl.  If your system uses
7747 library names with major and minor numbers, then you might want something
7748 like $majmin.  Alternatively, if your system uses a single version
7749 number for shared libraries, then you might want to use $majonly.
7750 Or, your system might be quite happy with a simple libperl.$so.
7751
7752 Since the shared libperl will get installed into a version-specific
7753 architecture-dependent directory, the version number of the shared perl
7754 library probably isn't important, so the default should be o.k.
7755
7756 EOM
7757         rp='What name do you want to give to the shared libperl?'
7758         . ./myread
7759         libperl=$ans
7760         echo "Ok, I'll use $libperl"
7761         ;;
7762 *)
7763         libperl="libperl${_a}"
7764         ;;
7765 esac
7766
7767 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7768 case "$shrpdir" in
7769 '') ;;
7770 *)      $cat >&4 <<EOM
7771 WARNING:  Use of the shrpdir variable for the installation location of
7772 the shared $libperl is not supported.  It was never documented and
7773 will not work in this version.  Let me (perlbug@perl.org)
7774 know of any problems this may cause.
7775
7776 EOM
7777         case "$shrpdir" in
7778         "$archlibexp/CORE")
7779                 $cat >&4 <<EOM
7780 But your current setting of $shrpdir is
7781 the default anyway, so it's harmless.
7782 EOM
7783                 ;;
7784         *)
7785                 $cat >&4 <<EOM
7786 Further, your current attempted setting of $shrpdir
7787 conflicts with the value of $archlibexp/CORE
7788 that installperl will use.
7789 EOM
7790                 ;;
7791         esac
7792         ;;
7793 esac
7794
7795 # How will the perl executable find the installed shared $libperl?
7796 # Add $xxx to ccdlflags.
7797 # If we can't figure out a command-line option, use $shrpenv to
7798 # set env LD_RUN_PATH.  The main perl makefile uses this.
7799 shrpdir=$archlibexp/CORE
7800 xxx=''
7801 tmp_shrpenv=''
7802 if "$useshrplib"; then
7803     case "$osname" in 
7804         aix)
7805                 # We'll set it in Makefile.SH...
7806                 ;;
7807         solaris)
7808                 xxx="-R $shrpdir"
7809                 ;;
7810         freebsd|netbsd|openbsd)
7811                 xxx="-Wl,-R$shrpdir"
7812                 ;;
7813         bsdos|linux|irix*|dec_osf)
7814                 xxx="-Wl,-rpath,$shrpdir"
7815                 ;;
7816         next)
7817                 # next doesn't like the default...
7818                 ;;
7819         beos)
7820                 # beos doesn't like the default, either.
7821                 ;;
7822         hpux*)
7823                 # hpux doesn't like the default, either.
7824                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7825                 ;;
7826         *)
7827                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7828                 ;;
7829         esac
7830         case "$xxx" in
7831         '') ;;
7832         *)      
7833                 # Only add $xxx if it isn't already in ccdlflags.
7834                 case " $ccdlflags " in
7835                 *" $xxx "*)     ;;
7836                 *)      ccdlflags="$ccdlflags $xxx"
7837                         cat <<EOM >&4
7838
7839 Adding $xxx to the flags
7840 passed to $ld so that the perl executable will find the 
7841 installed shared $libperl.
7842
7843 EOM
7844                         ;;
7845                 esac
7846                 ;;
7847         esac
7848 fi
7849 # Fix ccdlflags in AIX for building external extensions.
7850 # (For building Perl itself bare -bE:perl.exp is needed,
7851 #  Makefile.SH takes care of this.)
7852 case "$osname" in
7853 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7854 esac
7855 # Respect a hint or command-line value.
7856 case "$shrpenv" in
7857 '') shrpenv="$tmp_shrpenv" ;;
7858 esac
7859 case "$ldlibpthname" in
7860 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7861 none)   ldlibpthname='' ;;
7862 esac
7863
7864 : determine where manual pages are on this system
7865 echo " "
7866 case "$sysman" in
7867 '') 
7868         syspath='/usr/share/man/man1 /usr/man/man1'
7869         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7870         syspath="$syspath /usr/man/u_man/man1"
7871         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7872         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7873         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7874         sysman=`./loc . /usr/man/man1 $syspath`
7875         ;;
7876 esac
7877 if $test -d "$sysman"; then
7878         echo "System manual is in $sysman." >&4
7879 else
7880         echo "Could not find manual pages in source form." >&4
7881 fi
7882
7883 : determine where manual pages go
7884 set man1dir man1dir none
7885 eval $prefixit
7886 $cat <<EOM
7887
7888 $spackage has manual pages available in source form.
7889 EOM
7890 case "$nroff" in
7891 nroff)
7892         echo "However, you don't have nroff, so they're probably useless to you."
7893         case "$man1dir" in
7894         '') man1dir="none";;
7895         esac;;
7896 esac
7897 echo "If you don't want the manual sources installed, answer 'none'."
7898 case "$man1dir" in
7899 ' ') dflt=none
7900         ;;
7901 '')
7902         lookpath="$prefixexp/share/man/man1"
7903         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7904         lookpath="$lookpath $prefixexp/man/p_man/man1"
7905         lookpath="$lookpath $prefixexp/man/u_man/man1"
7906         lookpath="$lookpath $prefixexp/man/man.1"
7907         case "$sysman" in
7908         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7909         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7910         esac
7911         set dflt
7912         eval $prefixup
7913         ;;
7914 *)  dflt="$man1dir"
7915         ;;
7916 esac
7917 echo " "
7918 fn=dn+~
7919 rp="Where do the main $spackage manual pages (source) go?"
7920 . ./getfile
7921 if $test "X$man1direxp" != "X$ansexp"; then
7922         installman1dir=''
7923 fi
7924 man1dir="$ans"
7925 man1direxp="$ansexp"
7926 case "$man1dir" in
7927 '')     man1dir=' '
7928         installman1dir='';;
7929 esac
7930
7931 : Change installation prefix, if necessary.
7932 if $test X"$prefix" != X"$installprefix"; then
7933         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7934 else
7935         installman1dir="$man1direxp"
7936 fi
7937
7938 : What suffix to use on installed man pages
7939
7940 case "$man1dir" in
7941 ' ')
7942         man1ext='0'
7943         ;;
7944 *)
7945         rp="What suffix should be used for the main $spackage man pages?"
7946         case "$man1ext" in
7947         '')     case "$man1dir" in
7948                 *1)  dflt=1 ;;
7949                 *1p) dflt=1p ;;
7950                 *1pm) dflt=1pm ;;
7951                 *l) dflt=l;;
7952                 *n) dflt=n;;
7953                 *o) dflt=o;;
7954                 *p) dflt=p;;
7955                 *C) dflt=C;;
7956                 *L) dflt=L;;
7957                 *L1) dflt=L1;;
7958                 *) dflt=1;;
7959                 esac
7960                 ;;
7961         *)      dflt="$man1ext";;
7962         esac
7963         . ./myread
7964         man1ext="$ans"
7965         ;;
7966 esac
7967
7968 : see if we can have long filenames
7969 echo " "
7970 first=123456789abcdef
7971 $rm -f $first
7972 if (echo hi >$first) 2>/dev/null; then
7973         if $test -f 123456789abcde; then
7974                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7975                 val="$undef"
7976         else
7977                 echo 'You can have filenames longer than 14 characters.'>&4
7978                 val="$define"
7979         fi
7980 else
7981         $cat <<'EOM'
7982 You can't have filenames longer than 14 chars.
7983 You can't even think about them!
7984 EOM
7985         val="$undef"
7986 fi 
7987 set d_flexfnam
7988 eval $setvar
7989 $rm -rf 123456789abcde*
7990
7991 : determine where library module manual pages go
7992 set man3dir man3dir none
7993 eval $prefixit
7994 $cat <<EOM
7995
7996 $spackage has manual pages for many of the library modules.
7997 EOM
7998
7999 case "$nroff" in
8000 nroff)
8001         $cat <<'EOM'
8002 However, you don't have nroff, so they're probably useless to you.
8003 EOM
8004         case "$man3dir" in
8005         '') man3dir="none";;
8006         esac;;
8007 esac
8008
8009 case "$d_flexfnam" in
8010 undef)
8011         $cat <<'EOM'
8012 However, your system can't handle the long file names like File::Basename.3. 
8013 EOM
8014         case "$man3dir" in
8015         '') man3dir="none";;
8016         esac;;
8017 esac
8018
8019 echo "If you don't want the manual sources installed, answer 'none'."
8020 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8021 case "$man3dir" in
8022 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8023         if $test -d "$privlib/man/man3"; then
8024                 cat <<EOM >&4
8025
8026 WARNING:  Previous versions of perl installed man3 pages into
8027 $privlib/man/man3.  This version will suggest a 
8028 new default of $dflt.  
8029 EOM
8030                 tdflt=$dflt
8031                 dflt='n'
8032                 rp='Do you wish to preserve the old behavior?(y/n)'
8033                 . ./myread
8034                 case "$ans" in
8035                 y*) dflt="$privlib/man/man3" ;;
8036                 *)  dflt=$tdflt ;;
8037                 esac
8038     fi
8039         ;;
8040 *)      dflt="$man3dir" ;;
8041 esac
8042 case "$dflt" in
8043 ' ') dflt=none ;;
8044 esac
8045 echo " "
8046 fn=dn+~
8047 rp="Where do the $package library man pages (source) go?"
8048 . ./getfile
8049 man3dir="$ans"
8050 man3direxp="$ansexp"
8051 case "$man3dir" in
8052 '')     man3dir=' '
8053         installman3dir='';;
8054 esac
8055
8056 : Change installation prefix, if necessary.
8057 if $test X"$prefix" != X"$installprefix"; then
8058         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8059 else
8060         installman3dir="$man3direxp"
8061 fi
8062
8063 : What suffix to use on installed man pages
8064 case "$man3dir" in
8065 ' ')
8066         man3ext='0'
8067         ;;
8068 *)
8069         rp="What suffix should be used for the $package library man pages?"
8070         case "$man3ext" in
8071         '')     case "$man3dir" in
8072                 *3)  dflt=3 ;;
8073                 *3p) dflt=3p ;;
8074                 *3pm) dflt=3pm ;;
8075                 *l) dflt=l;;
8076                 *n) dflt=n;;
8077                 *o) dflt=o;;
8078                 *p) dflt=p;;
8079                 *C) dflt=C;;
8080                 *L) dflt=L;;
8081                 *L3) dflt=L3;;
8082                 *) dflt=3;;
8083                 esac
8084                 ;;
8085         *)      dflt="$man3ext";;
8086         esac
8087         . ./myread
8088         man3ext="$ans"
8089         ;;
8090 esac
8091
8092 : see if we have to deal with yellow pages, now NIS.
8093 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8094         if $test -f /usr/etc/nibindd; then
8095                 echo " "
8096                 echo "I'm fairly confident you're on a NeXT."
8097                 echo " "
8098                 rp='Do you get the hosts file via NetInfo?'
8099                 dflt=y
8100                 case "$hostcat" in
8101                 nidump*) ;;
8102                 '') ;;
8103                 *) dflt=n;;
8104                 esac
8105                 . ./myread
8106                 case "$ans" in
8107                 y*) hostcat='nidump hosts .';;
8108                 *)      case "$hostcat" in
8109                         nidump*) hostcat='';;
8110                         esac
8111                         ;;
8112                 esac
8113         fi
8114         case "$hostcat" in
8115         nidump*) ;;
8116         *)
8117                 case "$hostcat" in
8118                 *ypcat*) dflt=y;;
8119                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8120                                 dflt=y
8121                         else
8122                                 dflt=n
8123                         fi;;
8124                 *) dflt=n;;
8125                 esac
8126                 echo " "
8127                 rp='Are you getting the hosts file via yellow pages?'
8128                 . ./myread
8129                 case "$ans" in
8130                 y*) hostcat='ypcat hosts';;
8131                 *) hostcat='cat /etc/hosts';;
8132                 esac
8133                 ;;
8134         esac
8135 fi
8136 case "$hostcat" in
8137 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8138 esac
8139 case "$groupcat" in
8140 '') test -f /etc/group && groupcat='cat /etc/group';;
8141 esac
8142 case "$passcat" in
8143 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8144 esac
8145
8146 : now get the host name
8147 echo " "
8148 echo "Figuring out host name..." >&4
8149 case "$myhostname" in
8150 '') cont=true
8151         echo 'Maybe "hostname" will work...'
8152         if tans=`sh -c hostname 2>&1` ; then
8153                 myhostname=$tans
8154                 phostname=hostname
8155                 cont=''
8156         fi
8157         ;;
8158 *) cont='';;
8159 esac
8160 if $test "$cont"; then
8161         if ./xenix; then
8162                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
8163                 if tans=`cat /etc/systemid 2>&1` ; then
8164                         myhostname=$tans
8165                         phostname='cat /etc/systemid'
8166                         echo "Whadyaknow.  Xenix always was a bit strange..."
8167                         cont=''
8168                 fi
8169         elif $test -r /etc/systemid; then
8170                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8171         fi
8172 fi
8173 if $test "$cont"; then
8174         echo 'No, maybe "uuname -l" will work...'
8175         if tans=`sh -c 'uuname -l' 2>&1` ; then
8176                 myhostname=$tans
8177                 phostname='uuname -l'
8178         else
8179                 echo 'Strange.  Maybe "uname -n" will work...'
8180                 if tans=`sh -c 'uname -n' 2>&1` ; then
8181                         myhostname=$tans
8182                         phostname='uname -n'
8183                 else
8184                         echo 'Oh well, maybe I can mine it out of whoami.h...'
8185                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8186                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8187                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8188                         else
8189                                 case "$myhostname" in
8190                                 '') echo "Does this machine have an identity crisis or something?"
8191                                         phostname='';;
8192                                 *)
8193                                         echo "Well, you said $myhostname before..."
8194                                         phostname='echo $myhostname';;
8195                                 esac
8196                         fi
8197                 fi
8198         fi
8199 fi
8200 case "$myhostname" in
8201 '') myhostname=noname ;;
8202 esac
8203 : you do not want to know about this
8204 set $myhostname
8205 myhostname=$1
8206
8207 : verify guess
8208 if $test "$myhostname" ; then
8209         dflt=y
8210         rp='Your host name appears to be "'$myhostname'".'" Right?"
8211         . ./myread
8212         case "$ans" in
8213         y*) ;;
8214         *) myhostname='';;
8215         esac
8216 fi
8217
8218 : bad guess or no guess
8219 while $test "X$myhostname" = X ; do
8220         dflt=''
8221         rp="Please type the (one word) name of your host:"
8222         . ./myread
8223         myhostname="$ans"
8224 done
8225
8226 : translate upper to lower if necessary
8227 case "$myhostname" in
8228 *[A-Z]*)
8229         echo "(Normalizing case in your host name)"
8230         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8231         ;;
8232 esac
8233
8234 case "$myhostname" in
8235 *.*)
8236         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8237         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8238         echo "(Trimming domain name from host name--host name is now $myhostname)"
8239         ;;
8240 *) case "$mydomain" in
8241         '')
8242                 {
8243                         test "X$hostcat" = "Xypcat hosts" &&
8244                         ypmatch "$myhostname" hosts 2>/dev/null |\
8245                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
8246                         $test -s hosts
8247                 } || {
8248                         test "X$hostcat" != "X" &&
8249                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
8250                                         /[       ]$myhostname[  . ]/p" > hosts
8251                 }
8252                 tmp_re="[       . ]"
8253                 if $test -f hosts; then
8254                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
8255                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
8256                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8257                                 hosts | $sort | $uniq | \
8258                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8259                         case `$echo X$dflt` in
8260                         X*\ *)  echo "(Several hosts in the database matched hostname)"
8261                                 dflt=.
8262                                 ;;
8263                         X.) echo "(You do not have fully-qualified names in the hosts database)"
8264                                 ;;
8265                         esac
8266                 else
8267                         echo "(I cannot locate a hosts database anywhere)"
8268                         dflt=.
8269                 fi
8270                 case "$dflt" in
8271                 .)
8272                         tans=`./loc resolv.conf X /etc /usr/etc`
8273                         if $test -f "$tans"; then
8274                                 echo "(Attempting domain name extraction from $tans)"
8275                                 dflt=.`$sed -n -e 's/   / /g' \
8276                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
8277                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8278                                 case "$dflt" in
8279                                 .) dflt=.`$sed -n -e 's/        / /g' \
8280                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
8281                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8282                                         ;;
8283                                 esac
8284                         fi
8285                         ;;
8286                 esac
8287                 case "$dflt" in
8288                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8289                         dflt=.`sh -c domainname 2>/dev/null`
8290                         case "$dflt" in
8291                         '') dflt='.';;
8292                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8293                         esac
8294                         ;;
8295                 esac
8296                 case "$dflt$osname" in
8297                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8298                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8299                         ;;
8300                 esac
8301                 case "$dflt" in
8302                 .) echo "(Lost all hope -- silly guess then)"
8303                         dflt='.nonet'
8304                         ;;
8305                 esac
8306                 $rm -f hosts
8307                 ;;
8308         *) dflt="$mydomain";;
8309         esac;;
8310 esac
8311 echo " "
8312 rp="What is your domain name?"
8313 . ./myread
8314 tans="$ans"
8315 case "$ans" in
8316 '') ;;
8317 .*) ;;
8318 *) tans=".$tans";;
8319 esac
8320 mydomain="$tans"
8321
8322 : translate upper to lower if necessary
8323 case "$mydomain" in
8324 *[A-Z]*)
8325         echo "(Normalizing case in your domain name)"
8326         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8327         ;;
8328 esac
8329
8330 : a little sanity check here
8331 case "$phostname" in
8332 '') ;;
8333 *)
8334         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8335         $myhostname$mydomain|$myhostname) ;;
8336         *)
8337                 case "$phostname" in
8338                 sed*)
8339                         echo "(That doesn't agree with your whoami.h file, by the way.)"
8340                         ;;
8341                 *)
8342                         echo "(That doesn't agree with your $phostname command, by the way.)"
8343                         ;;
8344                 esac
8345         ;;
8346         esac
8347         ;;
8348 esac
8349
8350 $cat <<EOM
8351
8352 I need to get your e-mail address in Internet format if possible, i.e.
8353 something like user@host.domain. Please answer accurately since I have
8354 no easy means to double check it. The default value provided below
8355 is most probably close to reality but may not be valid from outside
8356 your organization...
8357
8358 EOM
8359 cont=x
8360 while test "$cont"; do
8361         case "$cf_email" in
8362         '') dflt="$cf_by@$myhostname$mydomain";;
8363         *) dflt="$cf_email";;
8364         esac
8365         rp='What is your e-mail address?'
8366         . ./myread
8367         cf_email="$ans"
8368         case "$cf_email" in
8369         *@*.*) cont='' ;;
8370         *)
8371                 rp='Address does not look like an Internet one.  Use it anyway?'
8372                 case "$fastread" in
8373                 yes) dflt=y ;;
8374                 *) dflt=n ;;
8375                 esac
8376                 . ./myread
8377                 case "$ans" in
8378                 y*) cont='' ;;
8379                 *) echo " " ;;
8380                 esac
8381                 ;;
8382         esac
8383 done
8384
8385 $cat <<EOM
8386
8387 If you or somebody else will be maintaining perl at your site, please
8388 fill in the correct e-mail address here so that they may be contacted
8389 if necessary. Currently, the "perlbug" program included with perl
8390 will send mail to this address in addition to perlbug@perl.org. You may
8391 enter "none" for no administrator.
8392
8393 EOM
8394 case "$perladmin" in
8395 '') dflt="$cf_email";;
8396 *) dflt="$perladmin";;
8397 esac
8398 rp='Perl administrator e-mail address'
8399 . ./myread
8400 perladmin="$ans"
8401
8402 : determine whether to only install version-specific parts.
8403 echo " "
8404 $cat <<EOM
8405 Do you want to install only the version-specific parts of the perl
8406 distribution?  Usually you do *not* want to do this.
8407 EOM
8408 case "$versiononly" in
8409 "$define"|[Yy]*|true) dflt='y' ;;
8410 *) dflt='n';
8411 esac
8412 rp="Do you want to install only the version-specific parts of perl?"
8413 . ./myread
8414 case "$ans" in
8415 [yY]*)  val="$define";;
8416 *)      val="$undef" ;;
8417 esac
8418 set versiononly
8419 eval $setvar
8420
8421 case "$versiononly" in
8422 "$define") inc_version_list=''
8423            inc_version_list_init=0
8424            ;;
8425 esac
8426
8427 : figure out how to guarantee perl startup
8428 case "$startperl" in
8429 '')
8430         case "$sharpbang" in
8431         *!)
8432                 $cat <<EOH
8433
8434 I can use the #! construct to start perl on your system. This will
8435 make startup of perl scripts faster, but may cause problems if you
8436 want to share those scripts and perl is not in a standard place
8437 ($binexp/perl) on all your platforms. The alternative is to force
8438 a shell by starting the script with a single ':' character.
8439
8440 EOH
8441                 case "$versiononly" in
8442                 "$define")      dflt="$binexp/perl$version";;  
8443                 *)              dflt="$binexp/perl";;
8444                 esac
8445                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8446                 . ./myread
8447                 case "$ans" in
8448                 none)   startperl=": # use perl";;
8449                 *)      startperl="#!$ans"
8450                         if $test 30 -lt `echo "$ans" | wc -c`; then
8451                                 $cat >&4 <<EOM
8452
8453 WARNING:  Some systems limit the #! command to 32 characters.
8454 If you experience difficulty running Perl scripts with #!, try
8455 installing Perl in a directory with a shorter pathname.
8456
8457 EOM
8458                         fi ;;
8459                 esac
8460                 ;;
8461         *) startperl=": # use perl"
8462                 ;;
8463         esac
8464         ;;
8465 esac
8466 echo "I'll use $startperl to start perl scripts."
8467
8468 : figure best path for perl in scripts
8469 case "$perlpath" in
8470 '')
8471         case "$versiononly" in
8472         "$define")      perlpath="$binexp/perl$version";;
8473         *)              perlpath="$binexp/perl";;
8474         esac
8475         case "$startperl" in
8476         *!*) ;;
8477         *)
8478                 $cat <<EOH
8479
8480 I will use the "eval 'exec'" idiom to start Perl on your system.
8481 I can use the full path of your Perl binary for this purpose, but
8482 doing so may cause problems if you want to share those scripts and
8483 Perl is not always in a standard place ($binexp/perl).
8484
8485 EOH
8486                 dflt="$binexp/perl"
8487                 rp="What path shall I use in \"eval 'exec'\"?"
8488                 . ./myread
8489                 perlpath="$ans"
8490                 ;;
8491         esac
8492         ;;
8493 esac
8494 case "$startperl" in
8495 *!*)    ;;
8496 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8497 esac
8498
8499 : determine where public executable scripts go
8500 set scriptdir scriptdir
8501 eval $prefixit
8502 case "$scriptdir" in
8503 '')
8504         dflt="$bin"
8505         : guess some guesses
8506         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8507         $test -d /usr/share/bin     && dflt=/usr/share/bin
8508         $test -d /usr/local/script  && dflt=/usr/local/script
8509         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8510         $test -d $prefixexp/script  && dflt=$prefixexp/script
8511         set dflt
8512         eval $prefixup
8513         ;;
8514 *)  dflt="$scriptdir"
8515         ;;
8516 esac
8517 $cat <<EOM
8518  
8519 Some installations have a separate directory just for executable scripts so
8520 that they can mount it across multiple architectures but keep the scripts in
8521 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8522 Or you might just lump your scripts in with all your other executables.
8523  
8524 EOM
8525 fn=d~
8526 rp='Where do you keep publicly executable scripts?'
8527 . ./getfile
8528 if $test "X$ansexp" != "X$scriptdirexp"; then
8529         installscript=''
8530 fi
8531 scriptdir="$ans"
8532 scriptdirexp="$ansexp"
8533 : Change installation prefix, if necessary.
8534 if $test X"$prefix" != X"$installprefix"; then
8535         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8536 else
8537         installscript="$scriptdirexp"
8538 fi
8539
8540 : determine where add-on public executables go
8541 case "$sitebin" in
8542 '')     dflt=$siteprefix/bin ;;
8543 *)      dflt=$sitebin ;;
8544 esac
8545 fn=d~
8546 rp='Pathname where the add-on public executables should be installed?'
8547 . ./getfile
8548 sitebin="$ans"
8549 sitebinexp="$ansexp"
8550 : Change installation prefix, if necessary.
8551 if $test X"$prefix" != X"$installprefix"; then
8552         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8553 else
8554         installsitebin="$sitebinexp"
8555 fi
8556
8557 : determine where add-on html pages go
8558 : There is no standard location, so try to copy the previously-selected
8559 : directory structure for the core html pages.
8560 case "$sitehtml1dir" in
8561 '')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8562 *)     dflt=$sitehtml1dir ;;
8563 esac
8564 case "$dflt" in
8565 ''|' ') dflt=none ;;
8566 esac
8567 fn=dn+~
8568 rp='Pathname where the site-specific html pages should be installed?'
8569 . ./getfile
8570 sitehtml1dir="$ans"
8571 sitehtml1direxp="$ansexp"
8572 : Change installation prefix, if necessary.
8573 if $test X"$prefix" != X"$installprefix"; then
8574         installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8575 else
8576         installsitehtml1dir="$sitehtml1direxp"
8577 fi
8578
8579 : determine where add-on library html pages go
8580 : There is no standard location, so try to copy the previously-selected
8581 : directory structure for the core html pages.
8582 case "$sitehtml3dir" in
8583 '')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8584 *)     dflt=$sitehtml3dir ;;
8585 esac
8586 case "$dflt" in
8587 ''|' ') dflt=none ;;
8588 esac
8589 fn=dn+~
8590 rp='Pathname where the site-specific library html pages should be installed?'
8591 . ./getfile
8592 sitehtml3dir="$ans"
8593 sitehtml3direxp="$ansexp"
8594 : Change installation prefix, if necessary.
8595 if $test X"$prefix" != X"$installprefix"; then
8596         installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8597 else
8598         installsitehtml3dir="$sitehtml3direxp"
8599 fi
8600
8601 : determine where add-on manual pages go
8602 case "$siteman1dir" in
8603 '')     dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8604 *)      dflt=$siteman1dir ;;
8605 esac
8606 case "$dflt" in
8607 ''|' ') dflt=none ;;
8608 esac
8609 fn=dn+~
8610 rp='Pathname where the site-specific manual pages should be installed?'
8611 . ./getfile
8612 siteman1dir="$ans"
8613 siteman1direxp="$ansexp"
8614 : Change installation prefix, if necessary.
8615 if $test X"$prefix" != X"$installprefix"; then
8616         installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8617 else
8618         installsiteman1dir="$siteman1direxp"
8619 fi
8620
8621 : determine where add-on library man pages go
8622 case "$siteman3dir" in
8623 '')     dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8624 *)      dflt=$siteman3dir ;;
8625 esac
8626 case "$dflt" in
8627 ''|' ') dflt=none ;;
8628 esac
8629 fn=dn+~
8630 rp='Pathname where the site-specific library manual pages should be installed?'
8631 . ./getfile
8632 siteman3dir="$ans"
8633 siteman3direxp="$ansexp"
8634 : Change installation prefix, if necessary.
8635 if $test X"$prefix" != X"$installprefix"; then
8636         installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8637 else
8638         installsiteman3dir="$siteman3direxp"
8639 fi
8640
8641 : determine where add-on public executable scripts go
8642 case "$sitescript" in
8643 '')     dflt=$siteprefix/script
8644         $test -d $dflt || dflt=$sitebin ;;
8645 *)  dflt="$sitescript" ;;
8646 esac
8647 fn=d~+
8648 rp='Pathname where add-on public executable scripts should be installed?'
8649 . ./getfile
8650 sitescript="$ans"
8651 sitescriptexp="$ansexp"
8652 : Change installation prefix, if necessary.
8653 if $test X"$prefix" != X"$installprefix"; then
8654         installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8655 else
8656         installsitescript="$sitescriptexp"
8657 fi
8658
8659 case "$usefaststdio" in
8660 $define|true|[yY]*|'')
8661         xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8662         case "$xversion" in
8663         [68])   dflt='y' ;;
8664         *)      dflt='n' ;;
8665         esac
8666         ;;
8667 *) dflt='n';;
8668 esac
8669 cat <<EOM
8670
8671 Perl can be built to use 'fast stdio', which means using the stdio
8672 library but also directly manipulating the stdio buffers to enable
8673 faster I/O.  Using stdio is better for backward compatibility (especially
8674 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8675 interface has been preferred instead of stdio.
8676
8677 If this doesn't make any sense to you, just accept the default '$dflt'.
8678 EOM
8679 rp='Use the "fast stdio" if available?'
8680 . ./myread
8681 case "$ans" in
8682 y|Y)    val="$define" ;;     
8683 *)      val="$undef" ;;
8684 esac
8685 set usefaststdio
8686 eval $setvar
8687
8688
8689 : define an is-a-typedef? function
8690 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8691 case "$inclist" in
8692 "") inclist="sys/types.h";;
8693 esac;
8694 eval "varval=\$$var";
8695 case "$varval" in
8696 "")
8697         $rm -f temp.c;
8698         for inc in $inclist; do
8699                 echo "#include <$inc>" >>temp.c;
8700         done;
8701         echo "#ifdef $type" >> temp.c;
8702         echo "printf(\"We have $type\");" >> temp.c;
8703         echo "#endif" >> temp.c;
8704         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8705         if $contains $type temp.E >/dev/null 2>&1; then
8706                 eval "$var=\$type";
8707         else
8708                 eval "$var=\$def";
8709         fi;
8710         $rm -f temp.?;;
8711 *) eval "$var=\$varval";;
8712 esac'
8713
8714 : define an is-a-typedef? function that prompts if the type is not available.
8715 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8716 case "$inclist" in
8717 "") inclist="sys/types.h";;
8718 esac;
8719 eval "varval=\$$var";
8720 case "$varval" in
8721 "")
8722         $rm -f temp.c;
8723         for inc in $inclist; do
8724                 echo "#include <$inc>" >>temp.c;
8725         done;
8726         echo "#ifdef $type" >> temp.c;
8727         echo "printf(\"We have $type\");" >> temp.c;
8728         echo "#endif" >> temp.c;
8729         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8730         echo " " ;
8731         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8732         if $contains $type temp.E >/dev/null 2>&1; then
8733                 echo "$type found." >&4;
8734                 eval "$var=\$type";
8735         else
8736                 echo "$type NOT found." >&4;
8737                 dflt="$def";
8738                 . ./myread ;
8739                 eval "$var=\$ans";
8740         fi;
8741         $rm -f temp.?;;
8742 *) eval "$var=\$varval";;
8743 esac'
8744
8745 : see what type lseek is declared as in the kernel
8746 rp="What is the type used for lseek's offset on this system?"
8747 set off_t lseektype long stdio.h sys/types.h
8748 eval $typedef_ask
8749
8750 echo " "
8751 echo "Checking to see how big your file offsets are..." >&4
8752 $cat >try.c <<EOCP
8753 #include <sys/types.h>
8754 #include <stdio.h>
8755 int main()
8756 {
8757     printf("%d\n", (int)sizeof($lseektype));
8758     return(0); 
8759 }
8760 EOCP
8761 set try
8762 if eval $compile_ok; then
8763         lseeksize=`$run ./try`
8764         echo "Your file offsets are $lseeksize bytes long."
8765 else
8766         dflt=$longsize
8767         echo " "
8768         echo "(I can't seem to compile the test program.  Guessing...)"
8769         rp="What is the size of your file offsets (in bytes)?"
8770         . ./myread
8771         lseeksize="$ans"
8772 fi
8773 $rm -f try.c try
8774
8775 : see what type file positions are declared as in the library
8776 rp="What is the type for file position used by fsetpos()?"
8777 set fpos_t fpostype long stdio.h sys/types.h
8778 eval $typedef_ask
8779
8780 echo " "
8781 case "$fpostype" in
8782 *_t) zzz="$fpostype"    ;;
8783 *)   zzz="fpos_t"       ;;
8784 esac
8785 echo "Checking the size of $zzz..." >&4 
8786 cat > try.c <<EOCP
8787 #include <sys/types.h>
8788 #include <stdio.h>
8789 #$i_stdlib I_STDLIB
8790 #ifdef I_STDLIB
8791 #include <stdlib.h>
8792 #endif
8793 int main() {
8794     printf("%d\n", (int)sizeof($fpostype));
8795     exit(0);
8796 }
8797 EOCP
8798 set try
8799 if eval $compile_ok; then
8800         yyy=`$run ./try`
8801         case "$yyy" in
8802         '')     fpossize=4
8803                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8804                 ;;
8805         *)      fpossize=$yyy
8806                 echo "Your $zzz is $fpossize bytes long."
8807                 ;;
8808         esac
8809 else
8810         dflt="$longsize"
8811         echo " " >&4
8812         echo "(I can't compile the test program.  Guessing...)" >&4
8813         rp="What is the size of your file positions (in bytes)?"
8814         . ./myread
8815         fpossize="$ans"
8816 fi
8817
8818 # Backward compatibility (uselfs is deprecated).
8819 case "$uselfs" in
8820 "$define"|true|[yY]*)
8821         cat <<EOM >&4
8822
8823 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8824 EOM
8825         uselargefiles="$define"
8826         ;;
8827 esac                          
8828
8829 case "$lseeksize:$fpossize" in
8830 8:8) cat <<EOM
8831
8832 You can have files larger than 2 gigabytes.
8833 EOM
8834    val="$define" ;;
8835 *)    case "$uselargefiles" in
8836    "$undef"|false|[nN]*) dflt='n' ;;
8837    *)   dflt='y' ;;
8838    esac
8839    cat <<EOM
8840
8841 Perl can be built to understand large files (files larger than 2 gigabytes)
8842 on some systems.  To do so, Configure can be run with -Duselargefiles.
8843
8844 If this doesn't make any sense to you, just accept the default '$dflt'.
8845 EOM
8846    rp='Try to understand large files, if available?'
8847    . ./myread
8848    case "$ans" in
8849    y|Y)         val="$define" ;;
8850    *)           val="$undef"  ;;
8851    esac
8852    ;;
8853 esac
8854 set uselargefiles
8855 eval $setvar
8856 : Look for a hint-file generated 'call-back-unit'.  If the
8857 : user has specified that a large files perl is to be built,
8858 : we may need to set or change some other defaults.
8859 if $test -f uselargefiles.cbu; then
8860         echo "Your platform has some specific hints regarding large file builds, using them..."
8861         . ./uselargefiles.cbu
8862 fi
8863 case "$uselargefiles" in
8864 "$define")
8865         if $test -f uselargefiles.cbu; then
8866                 echo " "
8867                 echo "Rechecking to see how big your file offsets are..." >&4
8868                 $cat >try.c <<EOCP
8869 #include <sys/types.h>
8870 #include <stdio.h>
8871 int main()
8872 {
8873     printf("%d\n", (int)sizeof($lseektype));
8874     return(0); 
8875 }
8876 EOCP
8877                 set try
8878                 if eval $compile_ok; then
8879                         lseeksize=`$run ./try`
8880                         $echo "Your file offsets are now $lseeksize bytes long."
8881                 else
8882                         dflt="$lseeksize"
8883                         echo " "
8884                         echo "(I can't seem to compile the test program.  Guessing...)"
8885                         rp="What is the size of your file offsets (in bytes)?"
8886                         . ./myread
8887                         lseeksize="$ans"
8888                 fi
8889                 case "$fpostype" in
8890                 *_t) zzz="$fpostype"    ;;
8891                 *)   zzz="fpos_t"       ;;
8892                 esac
8893                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8894                 $cat > try.c <<EOCP
8895 #include <sys/types.h>
8896 #include <stdio.h>
8897 #$i_stdlib I_STDLIB
8898 #ifdef I_STDLIB
8899 #include <stdlib.h>
8900 #endif
8901 int main() {
8902     printf("%d\n", (int)sizeof($fpostype));
8903     return(0);
8904 }
8905 EOCP
8906                 set try
8907                 if eval $compile_ok; then
8908                         yyy=`$run ./try`
8909                         dflt="$lseeksize"
8910                         case "$yyy" in
8911                         '')     echo " "
8912                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8913                                 ;;
8914                         *)      fpossize=$yyy
8915                                 echo " $fpossize bytes." >&4
8916                                 ;;
8917                         esac
8918                 else
8919                         dflt="$fpossize"
8920                         echo " "
8921                         echo "(I can't compile the test program.  Guessing...)" >&4
8922                         rp="What is the size of your file positions (in bytes)?"
8923                         . ./myread
8924                         fpossize="$ans"
8925                 fi
8926                 $rm -f try.c try
8927         fi
8928         ;;
8929 esac
8930
8931 case "$vendorprefix" in
8932 '')     d_vendorbin="$undef"
8933         vendorbin=''
8934         vendorbinexp=''
8935         ;;
8936 *)      d_vendorbin="$define"
8937         : determine where vendor-supplied executables go.
8938         case "$vendorbin" in
8939         '') dflt=$vendorprefix/bin ;;
8940         *)      dflt="$vendorbin" ;;
8941         esac
8942         fn=d~+
8943         rp='Pathname for the vendor-supplied executables directory?'
8944         . ./getfile
8945         vendorbin="$ans"
8946         vendorbinexp="$ansexp"
8947         ;;
8948 esac
8949 : Change installation prefix, if necessary.
8950 if $test X"$prefix" != X"$installprefix"; then
8951         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8952 else
8953         installvendorbin="$vendorbinexp"
8954 fi
8955
8956 case "$vendorprefix" in
8957 '')     vendorhtml1dir=''
8958         vendorhtml1direxp=''
8959         ;;
8960 *)      : determine where vendor-supplied html pages go.
8961         : There is no standard location, so try to copy the previously-selected
8962         : directory structure for the core html pages.
8963         : XXX Better default suggestions would be welcome.
8964         case "$vendorhtml1dir" in
8965         '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8966         *)      dflt=$vendorhtml1dir ;;
8967         esac
8968         case "$dflt" in
8969         ''|' ') dflt=none ;;
8970         esac
8971         fn=dn+~
8972         rp='Pathname for the vendor-supplied html pages?'
8973         . ./getfile
8974         vendorhtml1dir="$ans"
8975         vendorhtml1direxp="$ansexp"
8976         ;;
8977 esac
8978 : Use ' ' for none so value is preserved next time through Configure
8979 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8980 : Change installation prefix, if necessary.
8981 if $test X"$prefix" != X"$installprefix"; then
8982         installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
8983 else
8984         installvendorhtml1dir="$vendorhtml1direxp"
8985 fi
8986
8987 case "$vendorprefix" in
8988 '')     vendorhtml3dir=''
8989         vendorhtml3direxp=''
8990         ;;
8991 *)      : determine where vendor-supplied module html pages go.
8992         : There is no standard location, so try to copy the previously-selected
8993         : directory structure for the core html pages.
8994         : XXX Better default suggestions would be welcome.
8995         case "$vendorhtml3dir" in
8996         '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8997         *)      dflt=$vendorhtml3dir ;;
8998         esac
8999         case "$dflt" in
9000         ''|' ') dflt=none ;;
9001         esac
9002         fn=dn+~
9003         rp='Pathname for the vendor-supplied html pages?'
9004         . ./getfile
9005         vendorhtml3dir="$ans"
9006         vendorhtml3direxp="$ansexp"
9007         ;;
9008 esac
9009 : Use ' ' for none so value is preserved next time through Configure
9010 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9011 : Change installation prefix, if necessary.
9012 if $test X"$prefix" != X"$installprefix"; then
9013         installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9014 else
9015         installvendorhtml3dir="$vendorhtml3direxp"
9016 fi
9017
9018 case "$vendorprefix" in
9019 '')     vendorman1dir=''
9020         vendorman1direxp=''
9021         ;;
9022 *)      : determine where vendor-supplied manual pages go.
9023         case "$vendorman1dir" in
9024         '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9025         *)      dflt=$vendorman1dir ;;
9026         esac
9027         case "$dflt" in
9028         ''|' ') dflt=none ;;
9029         esac
9030         fn=nd~+
9031         rp='Pathname for the vendor-supplied manual section 1 pages?'
9032         . ./getfile
9033         vendorman1dir="$ans"
9034         vendorman1direxp="$ansexp"
9035         ;;
9036 esac
9037 : Use ' ' for none so value is preserved next time through Configure
9038 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9039 : Change installation prefix, if necessary.
9040 if $test X"$prefix" != X"$installprefix"; then
9041         installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9042 else
9043         installvendorman1dir="$vendorman1direxp"
9044 fi
9045
9046 case "$vendorprefix" in
9047 '')     vendorman3dir=''
9048         vendorman3direxp=''
9049         ;;
9050 *)      : determine where vendor-supplied module manual pages go.
9051         case "$vendorman3dir" in
9052         '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9053         *)      dflt=$vendorman3dir ;;
9054         esac
9055         case "$dflt" in
9056         ''|' ') dflt=none ;;
9057         esac
9058         fn=nd~+
9059         rp='Pathname for the vendor-supplied manual section 3 pages?'
9060         . ./getfile
9061         vendorman3dir="$ans"
9062         vendorman3direxp="$ansexp"
9063         ;;
9064 esac
9065 : Use ' ' for none so value is preserved next time through Configure
9066 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9067 : Change installation prefix, if necessary.
9068 if $test X"$prefix" != X"$installprefix"; then
9069         installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9070 else
9071         installvendorman3dir="$vendorman3direxp"
9072 fi
9073
9074 case "$vendorprefix" in
9075 '')     d_vendorscript="$undef"
9076         vendorscript=''
9077         vendorscriptexp=''
9078         ;;
9079 *)      d_vendorscript="$define"
9080         : determine where vendor-supplied scripts go.
9081         case "$vendorscript" in
9082         '')     dflt=$vendorprefix/script
9083                 $test -d $dflt || dflt=$vendorbin ;;
9084         *)  dflt="$vendorscript" ;;
9085         esac
9086         $cat <<EOM
9087
9088 The installation process will create a directory for 
9089 vendor-supplied scripts.
9090
9091 EOM
9092         fn=d~+
9093         rp='Pathname for the vendor-supplied scripts directory?'
9094         . ./getfile
9095         vendorscript="$ans"
9096         vendorscriptexp="$ansexp"
9097         ;;
9098 esac
9099 : Change installation prefix, if necessary.
9100 if $test X"$prefix" != X"$installprefix"; then
9101         installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9102 else
9103         installvendorscript="$vendorscriptexp"
9104 fi
9105
9106 : see if qgcvt exists
9107 set qgcvt d_qgcvt
9108 eval $inlibc
9109
9110 echo " "
9111
9112 if $test X"$d_longdbl" = X"$define"; then
9113
9114 echo "Checking how to print long doubles..." >&4
9115
9116 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9117         $cat >try.c <<'EOCP'
9118 #include <sys/types.h>
9119 #include <stdio.h>
9120 int main() {
9121   double d = 123.456;
9122   printf("%.3f\n", d);
9123 }
9124 EOCP
9125         set try
9126         if eval $compile; then
9127                 yyy=`$run ./try`
9128                 case "$yyy" in
9129                 123.456)
9130                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9131                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9132                         echo "We will use %f."
9133                         ;;
9134                 esac
9135         fi
9136 fi
9137
9138 if $test X"$sPRIfldbl" = X; then
9139         $cat >try.c <<'EOCP'
9140 #include <sys/types.h>
9141 #include <stdio.h>
9142 int main() {
9143   long double d = 123.456;
9144   printf("%.3Lf\n", d);
9145 }
9146 EOCP
9147         set try
9148         if eval $compile; then
9149                 yyy=`$run ./try`
9150                 case "$yyy" in
9151                 123.456)
9152                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9153                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9154                         echo "We will use %Lf."
9155                         ;;
9156                 esac
9157         fi
9158 fi
9159
9160 if $test X"$sPRIfldbl" = X; then
9161         $cat >try.c <<'EOCP'
9162 #include <sys/types.h>
9163 #include <stdio.h>
9164 int main() {
9165   long double d = 123.456;
9166   printf("%.3llf\n", d);
9167 }
9168 EOCP
9169         set try
9170         if eval $compile; then
9171                 yyy=`$run ./try`
9172                 case "$yyy" in
9173                 123.456)
9174                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9175                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9176                         echo "We will use %llf."
9177                         ;;
9178                 esac
9179         fi
9180 fi
9181
9182 if $test X"$sPRIfldbl" = X; then
9183         $cat >try.c <<'EOCP'
9184 #include <sys/types.h>
9185 #include <stdio.h>
9186 int main() {
9187   long double d = 123.456;
9188   printf("%.3lf\n", d);
9189 }
9190 EOCP
9191         set try
9192         if eval $compile; then
9193                 yyy=`$run ./try`
9194                 case "$yyy" in
9195                 123.456)
9196                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9197                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9198                         echo "We will use %lf."
9199                         ;;
9200                 esac
9201         fi
9202 fi
9203
9204 if $test X"$sPRIfldbl" = X; then
9205         echo "Cannot figure out how to print long doubles." >&4
9206 else
9207         sSCNfldbl=$sPRIfldbl    # expect consistency
9208 fi
9209
9210 $rm -f try try.*
9211
9212 fi # d_longdbl
9213
9214 case "$sPRIfldbl" in
9215 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
9216         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
9217         d_SCNfldbl="$undef";
9218         ;;
9219 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
9220         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
9221         d_SCNfldbl="$define";
9222         ;;
9223 esac
9224
9225 : Check how to convert floats to strings.
9226
9227 if test "X$d_Gconvert" = X; then
9228
9229 echo " "
9230 echo "Checking for an efficient way to convert floats to strings."
9231 echo " " > try.c
9232 case "$uselongdouble" in
9233 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9234 esac
9235 case "$d_longdbl" in
9236 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9237 esac
9238 case "$d_PRIgldbl" in
9239 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
9240 esac
9241 $cat >>try.c <<EOP
9242 #ifdef TRY_gconvert
9243 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9244 char *myname = "gconvert";
9245 #endif
9246 #ifdef TRY_gcvt
9247 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9248 char *myname = "gcvt";
9249 #endif
9250 #ifdef TRY_qgcvt
9251 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9252 char *myname = "qgcvt";
9253 #define DOUBLETYPE long double
9254 #endif
9255 #ifdef TRY_sprintf
9256 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9257 #ifdef HAS_PRIgldbl
9258 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9259 #else
9260 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9261 #endif
9262 #else
9263 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9264 #endif
9265 char *myname = "sprintf";
9266 #endif
9267
9268 #ifndef DOUBLETYPE
9269 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9270 #define DOUBLETYPE long double
9271 #else
9272 #define DOUBLETYPE double
9273 #endif
9274 #endif
9275
9276 #include <stdio.h>
9277
9278 #define I_STDLIB $i_stdlib
9279 #ifdef I_STDLIB
9280 #include <stdlib.h>
9281 #endif
9282
9283 int
9284 checkit(expect, got)
9285 char *expect;
9286 char *got;
9287 {
9288     if (strcmp(expect, got)) {
9289                 printf("%s oddity:  Expected %s, got %s\n",
9290                         myname, expect, got);
9291                 exit(1);
9292         }
9293 }
9294
9295 int main()
9296
9297         char buf[64]; 
9298         buf[63] = '\0';
9299
9300         /* This must be 1st test on (which?) platform */
9301         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9302         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9303         checkit("0.1", buf);
9304
9305         Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
9306         checkit("0.01", buf);
9307
9308         Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
9309         checkit("0.001", buf);
9310
9311         Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
9312         checkit("0.0001", buf);
9313
9314         Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9315         if (strlen(buf) > 5)
9316             checkit("9e-005", buf); /* for Microsoft ?? */
9317         else
9318             checkit("9e-05", buf);
9319
9320         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
9321         checkit("1", buf);
9322
9323         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
9324         checkit("1.1", buf);
9325
9326         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
9327         checkit("1.01", buf);
9328
9329         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
9330         checkit("1.001", buf);
9331
9332         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
9333         checkit("1.0001", buf);
9334
9335         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
9336         checkit("1.00001", buf);
9337
9338         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
9339         checkit("1.000001", buf);
9340
9341         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
9342         checkit("0", buf);
9343
9344         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
9345         checkit("-1", buf);
9346
9347         /* Some Linux gcvt's give 1.e+5 here. */
9348         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
9349         checkit("100000", buf);
9350         
9351         /* Some Linux gcvt's give -1.e+5 here. */
9352         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
9353         checkit("-100000", buf);
9354
9355         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
9356         checkit("123.456", buf);
9357
9358         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9359         Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9360         /* 34 should be enough to scare even long double
9361          * places into using the e notation. */
9362         if (strlen(buf) > 5)
9363             checkit("1e+034", buf); /* for Microsoft */
9364         else
9365             checkit("1e+34", buf);
9366
9367         /* For Perl, if you add additional tests here, also add them to
9368          * t/base/num.t for benefit of platforms not using Configure or
9369          * overriding d_Gconvert */
9370
9371         exit(0);
9372 }
9373 EOP
9374 : first add preferred functions to our list
9375 xxx_list=""
9376 for xxx_convert in $gconvert_preference; do
9377     case $xxx_convert in
9378     gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9379     *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9380     esac 
9381 done
9382 : then add any others
9383 for xxx_convert in gconvert gcvt sprintf; do
9384     case "$xxx_list" in
9385     *$xxx_convert*) ;;
9386     *) xxx_list="$xxx_list $xxx_convert" ;;
9387     esac 
9388 done
9389
9390 case "$d_longdbl$uselongdouble" in
9391 "$define$define")
9392     : again, add prefered functions to our list first
9393     xxx_ld_list=""
9394     for xxx_convert in $gconvert_ld_preference; do
9395         case $xxx_convert in
9396         qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9397         *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9398         esac
9399     done
9400     : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9401     for xxx_convert in qgcvt sprintf $xxx_list; do
9402         case "$xxx_ld_list" in
9403         $xxx_convert*|*" $xxx_convert"*) ;;
9404         *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9405         esac
9406     done
9407     : if sprintf cannot do long doubles, move it to the end
9408     if test "$d_PRIgldbl" != "$define"; then
9409         xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9410     fi
9411     : if no qgcvt, remove it
9412     if test "$d_qgcvt" != "$define"; then
9413         xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9414     fi
9415     : use the ld_list
9416     xxx_list="$xxx_ld_list"
9417     ;;
9418 esac
9419
9420 for xxx_convert in $xxx_list; do
9421         echo "Trying $xxx_convert..."
9422         $rm -f try try$_o
9423         set try -DTRY_$xxx_convert
9424         if eval $compile; then
9425                 echo "$xxx_convert() found." >&4
9426                 if $run ./try; then
9427                         echo "I'll use $xxx_convert to convert floats into a string." >&4
9428                         break;
9429                 else
9430                         echo "...But $xxx_convert didn't work as I expected."
9431                         xxx_convert=''
9432                 fi
9433         else
9434                 echo "$xxx_convert NOT found." >&4
9435         fi
9436 done
9437
9438 if test X$xxx_convert = X; then
9439     echo "*** WHOA THERE!!! ***" >&4
9440     echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
9441     xxx_convert=sprintf
9442 fi
9443
9444 case "$xxx_convert" in
9445 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9446 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9447 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9448 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9449    "$define$define$define")
9450       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9451    "$define$define$undef")
9452       d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9453    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9454    esac
9455    ;;  
9456 esac
9457
9458 fi
9459
9460 : see if _fwalk exists
9461 set fwalk d__fwalk
9462 eval $inlibc
9463
9464 : Initialize h_fcntl
9465 h_fcntl=false
9466
9467 : Initialize h_sysfile
9468 h_sysfile=false
9469
9470 : access call always available on UNIX
9471 set access d_access
9472 eval $inlibc
9473
9474 : locate the flags for 'access()'
9475 case "$d_access" in
9476 "$define")
9477         echo " "
9478         $cat >access.c <<EOCP
9479 #include <sys/types.h>
9480 #ifdef I_FCNTL
9481 #include <fcntl.h>
9482 #endif
9483 #ifdef I_SYS_FILE
9484 #include <sys/file.h>
9485 #endif
9486 #ifdef I_UNISTD
9487 #include <unistd.h>
9488 #endif
9489 #$i_stdlib I_STDLIB
9490 #ifdef I_STDLIB
9491 #include <stdlib.h>
9492 #endif
9493 int main() {
9494         exit(R_OK);
9495 }
9496 EOCP
9497         : check sys/file.h first, no particular reason here
9498         if $test `./findhdr sys/file.h` && \
9499                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9500                 h_sysfile=true;
9501                 echo "<sys/file.h> defines the *_OK access constants." >&4
9502         elif $test `./findhdr fcntl.h` && \
9503                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9504                 h_fcntl=true;
9505                 echo "<fcntl.h> defines the *_OK access constants." >&4
9506         elif $test `./findhdr unistd.h` && \
9507                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9508                 echo "<unistd.h> defines the *_OK access constants." >&4
9509         else
9510                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9511         fi
9512         ;;
9513 esac
9514 $rm -f access*
9515
9516 : see if accessx exists
9517 set accessx d_accessx
9518 eval $inlibc
9519
9520 : see if aintl exists
9521 set aintl d_aintl
9522 eval $inlibc
9523
9524 : see if alarm exists
9525 set alarm d_alarm
9526 eval $inlibc
9527
9528 : see if POSIX threads are available
9529 set pthread.h i_pthread
9530 eval $inhdr
9531
9532 : define a fucntion to check prototypes
9533 $cat > protochk <<EOSH
9534 $startsh
9535 cc="$cc"
9536 optimize="$optimize"
9537 ccflags="$ccflags"
9538 prototype="$prototype"
9539 define="$define"
9540 rm=$rm
9541 usethreads=$usethreads
9542 i_pthread=$i_pthread
9543 pthread_h_first=$pthread_h_first
9544 EOSH
9545
9546 $cat >> protochk <<'EOSH'
9547
9548 $rm -f try.c
9549 foo="$1"
9550 shift
9551 while test $# -ge 2; do
9552         case "$1" in
9553                 $define) echo "#include <$2>" >> try.c ;;
9554                 literal) echo "$2" >> try.c ;;
9555         esac
9556     # Extra magic for the benefit of systems that need pthread.h
9557     # to be included early to correctly detect threadsafe functions.
9558     # Such functions must guarantee themselves, though, that the usethreads
9559     # and i_pthread have been defined, before calling protochk.
9560     if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9561         echo "#include <pthread.h>" >> try.c
9562         pthread_h_done=yes
9563     fi
9564     shift 2
9565 done
9566 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
9567 cat >> try.c <<'EOCP'
9568 #ifdef CAN_PROTOTYPE
9569 #define _(args) args
9570 #else
9571 #define _(args) ()
9572 #endif
9573 EOCP
9574 echo "$foo" >> try.c
9575 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9576 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9577 status=$?
9578 $rm -f try.[co]
9579 exit $status
9580 EOSH
9581 chmod +x protochk
9582 $eunicefix protochk
9583
9584 hasproto='varname=$1; func=$2; shift; shift;
9585 while $test $# -ge 2; do
9586         case "$1" in
9587         $define) echo "#include <$2>";;
9588         esac ;
9589     shift 2;
9590 done > try.c;
9591 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9592 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9593         echo "$func() prototype found.";
9594         val="$define";
9595 else
9596         echo "$func() prototype NOT found.";
9597         val="$undef";
9598 fi;
9599 set $varname;
9600 eval $setvar;
9601 $rm -f try.c tryout.c'
9602
9603 : see if sys/types.h has to be included
9604 set sys/types.h i_systypes
9605 eval $inhdr
9606
9607 : see if sys/select.h has to be included
9608 set sys/select.h i_sysselct
9609 eval $inhdr
9610
9611 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9612 while $test $# -ge 2; do
9613         case "$1" in
9614         $define) echo "#include <$2>";;
9615         esac ;
9616     shift 2;
9617 done > try.c;
9618 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9619 set try;
9620 if eval $compile; then
9621         val="$define";
9622 else
9623         val="$undef";
9624 fi;
9625 set $varname;
9626 eval $setvar;
9627 $rm -f try.c try.o'
9628
9629 : see if we should include time.h, sys/time.h, or both
9630 echo " "
9631 if test "X$timeincl" = X; then
9632         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9633         $echo $n "I'm now running the test program...$c"
9634         $cat >try.c <<EOCP
9635 #include <sys/types.h>
9636 #ifdef I_TIME
9637 #include <time.h>
9638 #endif
9639 #ifdef I_SYSTIME
9640 #ifdef SYSTIMEKERNEL
9641 #define KERNEL
9642 #endif
9643 #include <sys/time.h>
9644 #endif
9645 #ifdef I_SYSSELECT
9646 #include <sys/select.h>
9647 #endif
9648 #$i_stdlib I_STDLIB
9649 #ifdef I_STDLIB
9650 #include <stdlib.h>
9651 #endif
9652 int main()
9653 {
9654         struct tm foo;
9655 #ifdef S_TIMEVAL
9656         struct timeval bar;
9657 #endif
9658 #ifdef S_TIMEZONE
9659         struct timezone tzp;
9660 #endif
9661         if (foo.tm_sec == foo.tm_sec)
9662                 exit(0);
9663 #ifdef S_TIMEVAL
9664         if (bar.tv_sec == bar.tv_sec)
9665                 exit(0);
9666 #endif
9667         exit(1);
9668 }
9669 EOCP
9670         flags=''
9671         for s_timezone in '-DS_TIMEZONE' ''; do
9672         sysselect=''
9673         for s_timeval in '-DS_TIMEVAL' ''; do
9674         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9675         for i_time in '' '-DI_TIME'; do
9676         for i_systime in '-DI_SYSTIME' ''; do
9677                 case "$flags" in
9678                 '') $echo $n ".$c"
9679                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9680                         if eval $compile; then
9681                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9682                                 shift
9683                                 flags="$*"
9684                                 echo " "
9685                                 $echo $n "Succeeded with $flags$c"
9686                         fi
9687                         ;;
9688                 esac
9689         done
9690         done
9691         done
9692         done
9693         done
9694         timeincl=''
9695         echo " "
9696         case "$flags" in
9697         *SYSTIMEKERNEL*) i_systimek="$define"
9698                 timeincl=`./findhdr sys/time.h`
9699                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9700         *) i_systimek="$undef";;
9701         esac
9702         case "$flags" in
9703         *I_TIME*) i_time="$define"
9704                 timeincl=`./findhdr time.h`" $timeincl"
9705                 echo "We'll include <time.h>." >&4;;
9706         *) i_time="$undef";;
9707         esac
9708         case "$flags" in
9709         *I_SYSTIME*) i_systime="$define"
9710                 timeincl=`./findhdr sys/time.h`" $timeincl"
9711                 echo "We'll include <sys/time.h>." >&4;;
9712         *) i_systime="$undef";;
9713         esac
9714         $rm -f try.c try
9715 fi
9716 : see if struct tm knows about tm_zone
9717 case "$i_systime$i_time" in
9718 *$define*) 
9719         echo " "
9720         echo "Checking to see if your struct tm has tm_zone field..." >&4
9721         set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9722         eval $hasfield
9723         ;;
9724 *)      val="$undef"
9725         set d_tm_tm_zone
9726         eval $setvar
9727         ;;
9728 esac
9729 case "$d_tm_tm_zone" in
9730 "$define")      echo "Yes, it does."   ;;
9731 *)              echo "No, it doesn't." ;;
9732 esac
9733 : see if struct tm knows about tm_gmtoff
9734 case "$i_systime$i_time" in
9735 *$define*) 
9736         echo " "
9737         echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9738         set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9739         eval $hasfield
9740         ;;
9741 *)      val="$undef"
9742         set d_tm_tm_gmtoff
9743         eval $setvar
9744         ;;
9745 esac
9746 case "$d_tm_tm_gmtoff" in
9747 "$define")      echo "Yes, it does."   ;;
9748 *)              echo "No, it doesn't." ;;
9749 esac
9750
9751 : see if asctime_r exists
9752 set asctime_r d_asctime_r
9753 eval $inlibc
9754 case "$d_asctime_r" in
9755 "$define")
9756         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9757         case "$d_asctime_r_proto:$usethreads" in
9758         ":define")      d_asctime_r_proto=define
9759                 set d_asctime_r_proto asctime_r $hdrs
9760                 eval $hasproto ;;
9761         *)      ;;
9762         esac
9763         case "$d_asctime_r_proto" in
9764         define)
9765         case "$asctime_r_proto" in
9766         ''|0) try='char* asctime_r(const struct tm*, char*);'
9767         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9768         esac
9769         case "$asctime_r_proto" in
9770         ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9771         ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9772         esac
9773         case "$asctime_r_proto" in
9774         ''|0) try='int asctime_r(const struct tm*, char*);'
9775         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9776         esac
9777         case "$asctime_r_proto" in
9778         ''|0) try='int asctime_r(const struct tm*, char*, int);'
9779         ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9780         esac
9781         case "$asctime_r_proto" in
9782         ''|0)   d_asctime_r=undef
9783                 asctime_r_proto=0
9784                 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9785         * )     case "$asctime_r_proto" in
9786                 REENTRANT_PROTO*) ;;
9787                 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9788                 esac
9789                 echo "Prototype: $try" ;;
9790         esac
9791         ;;
9792         *)      case "$usethreads" in
9793                 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9794                 esac
9795                 d_asctime_r=undef
9796                 asctime_r_proto=0
9797                 ;;
9798         esac
9799         ;;
9800 *)      asctime_r_proto=0
9801         ;;
9802 esac
9803
9804 : see if atolf exists
9805 set atolf d_atolf
9806 eval $inlibc
9807
9808 : see if atoll exists
9809 set atoll d_atoll
9810 eval $inlibc
9811
9812 : Look for GNU-cc style attribute checking
9813 echo " "
9814 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9815 $cat >attrib.c <<'EOCP'
9816 #include <stdio.h>
9817 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9818 EOCP
9819 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9820         if $contains 'warning' attrib.out >/dev/null 2>&1; then
9821                 echo "Your C compiler doesn't fully support __attribute__."
9822                 val="$undef"
9823         else
9824                 echo "Your C compiler supports __attribute__."
9825                 val="$define"
9826         fi
9827 else
9828         echo "Your C compiler doesn't seem to understand __attribute__ at all."
9829         val="$undef"
9830 fi
9831 set d_attribut
9832 eval $setvar
9833 $rm -f attrib*
9834
9835 : see if bcmp exists
9836 set bcmp d_bcmp
9837 eval $inlibc
9838
9839 : see if bcopy exists
9840 set bcopy d_bcopy
9841 eval $inlibc
9842
9843 : see if this is a unistd.h system
9844 set unistd.h i_unistd
9845 eval $inhdr
9846
9847 : see if getpgrp exists
9848 set getpgrp d_getpgrp
9849 eval $inlibc
9850
9851 case "$d_getpgrp" in
9852 "$define")
9853         echo " "
9854         echo "Checking to see which flavor of getpgrp is in use..."
9855         $cat >try.c <<EOP
9856 #$i_unistd I_UNISTD
9857 #include <sys/types.h>
9858 #ifdef I_UNISTD
9859 #  include <unistd.h>
9860 #endif
9861 #$i_stdlib I_STDLIB
9862 #ifdef I_STDLIB
9863 #include <stdlib.h>
9864 #endif
9865 int main()
9866 {
9867         if (getuid() == 0) {
9868                 printf("(I see you are running Configure as super-user...)\n");
9869                 setuid(1);
9870         }
9871 #ifdef TRY_BSD_PGRP
9872         if (getpgrp(1) == 0)
9873                 exit(0);
9874 #else
9875         if (getpgrp() > 0)
9876                 exit(0);
9877 #endif
9878         exit(1);
9879 }
9880 EOP
9881         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9882                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9883                 val="$define"
9884         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9885                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9886                 val="$undef"
9887         else
9888                 echo "I can't seem to compile and run the test program."
9889                 if ./usg; then
9890                         xxx="a USG one, i.e. you use getpgrp()."
9891                 else
9892                         # SVR4 systems can appear rather BSD-ish.
9893                         case "$i_unistd" in
9894                         $undef)
9895                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
9896                                 val="$define"
9897                                 ;;
9898                         $define)
9899                                 xxx="probably a USG one, i.e. you use getpgrp()."
9900                                 val="$undef"
9901                                 ;;
9902                         esac
9903                 fi
9904                 echo "Assuming your getpgrp is $xxx" >&4
9905         fi
9906         ;;
9907 *) val="$undef";;
9908 esac
9909 set d_bsdgetpgrp
9910 eval $setvar
9911 $rm -f try try.*
9912
9913 : see if setpgrp exists
9914 set setpgrp d_setpgrp
9915 eval $inlibc
9916
9917 case "$d_setpgrp" in
9918 "$define")
9919         echo " "
9920         echo "Checking to see which flavor of setpgrp is in use..."
9921         $cat >try.c <<EOP
9922 #$i_unistd I_UNISTD
9923 #include <sys/types.h>
9924 #ifdef I_UNISTD
9925 #  include <unistd.h>
9926 #endif
9927 #$i_stdlib I_STDLIB
9928 #ifdef I_STDLIB
9929 #include <stdlib.h>
9930 #endif
9931 int main()
9932 {
9933         if (getuid() == 0) {
9934                 printf("(I see you are running Configure as super-user...)\n");
9935                 setuid(1);
9936         }
9937 #ifdef TRY_BSD_PGRP
9938         if (-1 == setpgrp(1, 1))
9939                 exit(0);
9940 #else
9941         if (setpgrp() != -1)
9942                 exit(0);
9943 #endif
9944         exit(1);
9945 }
9946 EOP
9947         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9948                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9949                 val="$define"
9950         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9951                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9952                 val="$undef"
9953         else
9954                 echo "(I can't seem to compile and run the test program.)"
9955                 if ./usg; then
9956                         xxx="a USG one, i.e. you use setpgrp()."
9957                 else
9958                         # SVR4 systems can appear rather BSD-ish.
9959                         case "$i_unistd" in
9960                         $undef)
9961                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9962                                 val="$define"
9963                                 ;;
9964                         $define)
9965                                 xxx="probably a USG one, i.e. you use setpgrp()."
9966                                 val="$undef"
9967                                 ;;
9968                         esac
9969                 fi
9970                 echo "Assuming your setpgrp is $xxx" >&4
9971         fi
9972         ;;
9973 *) val="$undef";;
9974 esac
9975 set d_bsdsetpgrp
9976 eval $setvar
9977 $rm -f try try.*
9978 : see if bzero exists
9979 set bzero d_bzero
9980 eval $inlibc
9981
9982 : see if signal is declared as pointer to function returning int or void
9983 echo " "
9984 xxx=`./findhdr signal.h`
9985 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9986 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
9987         echo "You have int (*signal())() instead of void." >&4
9988         val="$undef"
9989 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
9990         echo "You have void (*signal())()." >&4
9991         val="$define"
9992 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9993         echo "You have int (*signal())() instead of void." >&4
9994         val="$undef"
9995 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9996         echo "You have void (*signal())()." >&4
9997         val="$define"
9998 else
9999         case "$d_voidsig" in
10000         '')
10001         echo "I can't determine whether signal handler returns void or int..." >&4
10002                 dflt=void
10003                 rp="What type does your signal handler return?"
10004                 . ./myread
10005                 case "$ans" in
10006                 v*) val="$define";;
10007                 *) val="$undef";;
10008                 esac;;
10009         "$define")
10010                 echo "As you already told me, signal handler returns void." >&4
10011                 val="$define"
10012                 ;;
10013         *)      echo "As you already told me, signal handler returns int." >&4
10014                 val="$undef"
10015                 ;;
10016         esac
10017 fi
10018 set d_voidsig
10019 eval $setvar
10020 case "$d_voidsig" in
10021 "$define") signal_t="void";;
10022 *) signal_t="int";;
10023 esac
10024 $rm -f $$.tmp
10025
10026 : check for ability to cast large floats to 32-bit ints.
10027 echo " "
10028 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10029 if $test "$intsize" -ge 4; then
10030         xxx=int
10031 else
10032         xxx=long
10033 fi
10034 $cat >try.c <<EOCP
10035 #include <stdio.h>
10036 #$i_stdlib I_STDLIB
10037 #ifdef I_STDLIB
10038 #include <stdlib.h>
10039 #endif
10040 #include <sys/types.h>
10041 #include <signal.h>
10042 $signal_t blech(s) int s; { exit(3); }
10043 int main()
10044 {
10045         $xxx i32;
10046         double f, g;
10047         int result = 0;
10048         char str[16];
10049         signal(SIGFPE, blech);
10050
10051         /* Don't let compiler optimize the test away.  Store the number 
10052            in a writable string for gcc to pass to sscanf under HP/UX.
10053         */
10054         sprintf(str, "2147483647");
10055         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10056         g = 10 * f;
10057         i32  = ($xxx) g;
10058
10059         /* x86 processors will probably give 0x8000 0000, which is a
10060        sign change.  We don't want that.  We want to mimic SPARC
10061            behavior here, which is to preserve the sign and give
10062            back 0x7fff ffff.
10063         */
10064         if (i32 != ($xxx) f)
10065                 result |= 1;
10066         exit(result);
10067 }
10068 EOCP
10069 set try
10070 if eval $compile_ok; then
10071         $run ./try
10072         yyy=$?
10073 else
10074         echo "(I can't seem to compile the test program--assuming it can't)"
10075         yyy=1
10076 fi
10077 case "$yyy" in
10078 0)      val="$define"
10079         echo "Yup, it can."
10080         ;;
10081 *)      val="$undef"
10082         echo "Nope, it can't."
10083         ;;
10084 esac
10085 set d_casti32
10086 eval $setvar
10087 $rm -f try try.*
10088
10089 : check for ability to cast negative floats to unsigned
10090 echo " "
10091 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10092 $cat >try.c <<EOCP
10093 #include <stdio.h>
10094 #$i_stdlib I_STDLIB
10095 #ifdef I_STDLIB
10096 #include <stdlib.h>
10097 #endif
10098 #include <sys/types.h>
10099 #include <signal.h>
10100 $signal_t blech(s) int s; { exit(7); }
10101 $signal_t blech_in_list(s) int s; { exit(4); }
10102 unsigned long dummy_long(p) unsigned long p; { return p; }
10103 unsigned int dummy_int(p) unsigned int p; { return p; }
10104 unsigned short dummy_short(p) unsigned short p; { return p; }
10105 int main()
10106 {
10107         double f;
10108         unsigned long along;
10109         unsigned int aint;
10110         unsigned short ashort;
10111         int result = 0;
10112         char str[16];
10113         
10114         /* Frustrate gcc-2.7.2's optimizer which failed this test with
10115            a direct f = -123. assignment.  gcc-2.8.0 reportedly
10116            optimized the whole file away
10117         */
10118         /* Store the number in a writable string for gcc to pass to 
10119            sscanf under HP/UX.
10120         */
10121         sprintf(str, "-123");
10122         sscanf(str, "%lf", &f);  /* f = -123.; */
10123
10124         signal(SIGFPE, blech);
10125         along = (unsigned long)f;
10126         aint = (unsigned int)f;
10127         ashort = (unsigned short)f;
10128         if (along != (unsigned long)-123)
10129                 result |= 1;
10130         if (aint != (unsigned int)-123)
10131                 result |= 1;
10132         if (ashort != (unsigned short)-123)
10133                 result |= 1;
10134         sprintf(str, "1073741824.");
10135         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10136         f = f + f;
10137         along = 0;
10138         along = (unsigned long)f;
10139         if (along != 0x80000000)
10140                 result |= 2;
10141         f -= 1.;
10142         along = 0;
10143         along = (unsigned long)f;
10144         if (along != 0x7fffffff)
10145                 result |= 1;
10146         f += 2.;
10147         along = 0;
10148         along = (unsigned long)f;
10149         if (along != 0x80000001)
10150                 result |= 2;
10151         if (result)
10152                 exit(result);
10153         signal(SIGFPE, blech_in_list);
10154         sprintf(str, "123.");
10155         sscanf(str, "%lf", &f);  /* f = 123.; */
10156         along = dummy_long((unsigned long)f);
10157         aint = dummy_int((unsigned int)f);
10158         ashort = dummy_short((unsigned short)f);
10159         if (along != (unsigned long)123)
10160                 result |= 4;
10161         if (aint != (unsigned int)123)
10162                 result |= 4;
10163         if (ashort != (unsigned short)123)
10164                 result |= 4;
10165         exit(result);
10166
10167 }
10168 EOCP
10169 set try
10170 if eval $compile_ok; then
10171         $run ./try
10172         castflags=$?
10173 else
10174         echo "(I can't seem to compile the test program--assuming it can't)"
10175         castflags=7
10176 fi
10177 case "$castflags" in
10178 0)      val="$define"
10179         echo "Yup, it can."
10180         ;;
10181 *)      val="$undef"
10182         echo "Nope, it can't."
10183         ;;
10184 esac
10185 set d_castneg
10186 eval $setvar
10187 $rm -f try.*
10188
10189 : see if vprintf exists
10190 echo " "
10191 if set vprintf val -f d_vprintf; eval $csym; $val; then
10192         echo 'vprintf() found.' >&4
10193         val="$define"
10194         $cat >try.c <<EOF
10195 #include <varargs.h>
10196 #$i_stdlib I_STDLIB
10197 #ifdef I_STDLIB
10198 #include <stdlib.h>
10199 #endif
10200
10201 int main() { xxx("foo"); }
10202
10203 xxx(va_alist)
10204 va_dcl
10205 {
10206         va_list args;
10207         char buf[10];
10208
10209         va_start(args);
10210         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10211 }
10212 EOF
10213         set try
10214         if eval $compile && $run ./try; then
10215                 echo "Your vsprintf() returns (int)." >&4
10216                 val2="$undef"
10217         else
10218                 echo "Your vsprintf() returns (char*)." >&4
10219                 val2="$define"
10220         fi
10221 else
10222         echo 'vprintf() NOT found.' >&4
10223                 val="$undef"
10224                 val2="$undef"
10225 fi
10226 $rm -f try try.*
10227 set d_vprintf
10228 eval $setvar
10229 val=$val2
10230 set d_charvspr
10231 eval $setvar
10232
10233 : see if chown exists
10234 set chown d_chown
10235 eval $inlibc
10236
10237 : see if chroot exists
10238 set chroot d_chroot
10239 eval $inlibc
10240
10241 : see if chsize exists
10242 set chsize d_chsize
10243 eval $inlibc
10244
10245 : see if class exists
10246 set class d_class
10247 eval $inlibc
10248
10249 hasstruct='varname=$1; struct=$2; shift; shift;
10250 while $test $# -ge 2; do
10251         case "$1" in
10252         $define) echo "#include <$2>";;
10253         esac ;
10254     shift 2;
10255 done > try.c;
10256 echo "int main () { struct $struct foo; }" >> try.c;
10257 set try;
10258 if eval $compile; then
10259         val="$define";
10260 else
10261         val="$undef";
10262 fi;
10263 set $varname;
10264 eval $setvar;
10265 $rm -f try.c try.o'
10266
10267 socketlib=''
10268 sockethdr=''
10269 : see whether socket exists
10270 echo " "
10271 $echo $n "Hmm... $c" >&4
10272 if set socket val -f d_socket; eval $csym; $val; then
10273         echo "Looks like you have Berkeley networking support." >&4
10274         d_socket="$define"
10275         if set setsockopt val -f; eval $csym; $val; then
10276                 d_oldsock="$undef"
10277         else
10278                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10279                 d_oldsock="$define"
10280         fi
10281 else
10282         if $contains socklib libc.list >/dev/null 2>&1; then
10283                 echo "Looks like you have Berkeley networking support." >&4
10284                 d_socket="$define"
10285                 : we will have to assume that it supports the 4.2 BSD interface
10286                 d_oldsock="$undef"
10287         else
10288                 echo "You don't have Berkeley networking in libc$_a..." >&4
10289                 if test "X$d_socket" = "X$define"; then
10290                    echo "...but you seem to believe that you have sockets." >&4
10291                 else
10292                         for net in net socket
10293                         do
10294                                 if test -f /usr/lib/lib$net$_a; then
10295                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
10296                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10297                                         if $contains socket libc.list >/dev/null 2>&1; then
10298                                                 d_socket="$define"
10299                                                 socketlib="-l$net"
10300                                                 case "$net" in
10301                                                 net)
10302                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
10303                                                         sockethdr="-I/usr/netinclude"
10304                                                         ;;
10305                                                 esac
10306                                                 echo "Found Berkeley sockets interface in lib$net." >&4 
10307                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
10308                                                         d_oldsock="$undef"
10309                                                 else
10310                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10311                                                         d_oldsock="$define"
10312                                                 fi
10313                                                 break
10314                                         fi
10315                                 fi
10316                         done
10317                         if test "X$d_socket" != "X$define"; then
10318                            echo "or anywhere else I see." >&4
10319                            d_socket="$undef"
10320                            d_oldsock="$undef"
10321                         fi
10322                 fi
10323         fi
10324 fi
10325
10326 : see if socketpair exists
10327 set socketpair d_sockpair
10328 eval $inlibc
10329
10330
10331 echo " "
10332 echo "Checking the availability of certain socket constants..." >&4
10333 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10334         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10335         $cat >try.c <<EOF
10336 #include <sys/types.h>
10337 #include <sys/socket.h>
10338 int main() {
10339     int i = $ENUM;
10340 }
10341 EOF
10342         val="$undef"
10343         set try; if eval $compile; then
10344                 val="$define"
10345         fi
10346         set d_${enum}; eval $setvar
10347         $rm -f try.c try
10348 done
10349
10350 : see if this is a sys/uio.h system
10351 set sys/uio.h i_sysuio
10352 eval $inhdr
10353
10354
10355 echo " "
10356 echo "Checking to see if your system supports struct cmsghdr..." >&4
10357 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10358 eval $hasstruct
10359 case "$d_cmsghdr_s" in
10360 "$define")      echo "Yes, it does."   ;;
10361 *)              echo "No, it doesn't." ;;
10362 esac
10363
10364
10365 : check for const keyword
10366 echo " "
10367 echo 'Checking to see if your C compiler knows about "const"...' >&4
10368 $cat >const.c <<'EOCP'
10369 typedef struct spug { int drokk; } spug;
10370 int main()
10371 {
10372         const char *foo;
10373         const spug y;
10374 }
10375 EOCP
10376 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10377         val="$define"
10378         echo "Yup, it does."
10379 else
10380         val="$undef"
10381         echo "Nope, it doesn't."
10382 fi
10383 set d_const
10384 eval $setvar
10385
10386 : see if copysignl exists
10387 set copysignl d_copysignl
10388 eval $inlibc
10389
10390 : see if crypt exists
10391 echo " "
10392 set crypt d_crypt
10393 eval $inlibc
10394 case "$d_crypt" in
10395 $define) cryptlib='' ;;
10396 *)      if set crypt val -f d_crypt; eval $csym; $val; then
10397                 echo 'crypt() found.' >&4
10398                 val="$define"
10399                 cryptlib=''
10400         else
10401                 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10402                 if $test -z "$cryptlib"; then
10403                         cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10404                 else
10405                         cryptlib=-lcrypt
10406                 fi
10407                 if $test -z "$cryptlib"; then
10408                         cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10409                 else
10410                         cryptlib=-lcrypt
10411                 fi
10412                 if $test -z "$cryptlib"; then
10413                         cryptlib=`./loc libcrypt$_a "" $libpth`
10414                 else
10415                         cryptlib=-lcrypt
10416                 fi
10417                 if $test -z "$cryptlib"; then
10418                         echo 'crypt() NOT found.' >&4
10419                         val="$undef"
10420                 else
10421                         val="$define"
10422                 fi
10423         fi
10424         set d_crypt
10425         eval $setvar
10426         ;;
10427 esac
10428
10429 : see if this is a crypt.h system
10430 set crypt.h i_crypt
10431 eval $inhdr
10432
10433 : see if crypt_r exists
10434 set crypt_r d_crypt_r
10435 eval $inlibc
10436 case "$d_crypt_r" in
10437 "$define")
10438         hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10439         case "$d_crypt_r_proto:$usethreads" in
10440         ":define")      d_crypt_r_proto=define
10441                 set d_crypt_r_proto crypt_r $hdrs
10442                 eval $hasproto ;;
10443         *)      ;;
10444         esac
10445         case "$d_crypt_r_proto" in
10446         define)
10447         case "$crypt_r_proto" in
10448         ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10449         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10450         esac
10451         case "$crypt_r_proto" in
10452         ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10453         ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10454         esac
10455         case "$crypt_r_proto" in
10456         ''|0)   d_crypt_r=undef
10457                 crypt_r_proto=0
10458                 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10459         * )     case "$crypt_r_proto" in
10460                 REENTRANT_PROTO*) ;;
10461                 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10462                 esac
10463                 echo "Prototype: $try" ;;
10464         esac
10465         ;;
10466         *)      case "$usethreads" in
10467                 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10468                 esac
10469                 d_crypt_r=undef
10470                 crypt_r_proto=0
10471                 ;;
10472         esac
10473         ;;
10474 *)      crypt_r_proto=0
10475         ;;
10476 esac
10477
10478 : get csh whereabouts
10479 case "$csh" in
10480 'csh') val="$undef" ;;
10481 *) val="$define" ;;
10482 esac
10483 set d_csh
10484 eval $setvar
10485 : Respect a hint or command line value for full_csh.
10486 case "$full_csh" in
10487 '') full_csh=$csh ;;
10488 esac
10489
10490 : see if ctermid_r exists
10491 set ctermid_r d_ctermid_r
10492 eval $inlibc
10493 case "$d_ctermid_r" in
10494 "$define")
10495         hdrs="$i_systypes sys/types.h define stdio.h "
10496         case "$d_ctermid_r_proto:$usethreads" in
10497         ":define")      d_ctermid_r_proto=define
10498                 set d_ctermid_r_proto ctermid_r $hdrs
10499                 eval $hasproto ;;
10500         *)      ;;
10501         esac
10502         case "$d_ctermid_r_proto" in
10503         define)
10504         case "$ctermid_r_proto" in
10505         ''|0) try='char* ctermid_r(char*);'
10506         ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10507         esac
10508         case "$ctermid_r_proto" in
10509         ''|0)   d_ctermid_r=undef
10510                 ctermid_r_proto=0
10511                 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10512         * )     case "$ctermid_r_proto" in
10513                 REENTRANT_PROTO*) ;;
10514                 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10515                 esac
10516                 echo "Prototype: $try" ;;
10517         esac
10518         ;;
10519         *)      case "$usethreads" in
10520                 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10521                 esac
10522                 d_ctermid_r=undef
10523                 ctermid_r_proto=0
10524                 ;;
10525         esac
10526         ;;
10527 *)      ctermid_r_proto=0
10528         ;;
10529 esac
10530
10531 : see if ctime_r exists
10532 set ctime_r d_ctime_r
10533 eval $inlibc
10534 case "$d_ctime_r" in
10535 "$define")
10536         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10537         case "$d_ctime_r_proto:$usethreads" in
10538         ":define")      d_ctime_r_proto=define
10539                 set d_ctime_r_proto ctime_r $hdrs
10540                 eval $hasproto ;;
10541         *)      ;;
10542         esac
10543         case "$d_ctime_r_proto" in
10544         define)
10545         case "$ctime_r_proto" in
10546         ''|0) try='char* ctime_r(const time_t*, char*);'
10547         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10548         esac
10549         case "$ctime_r_proto" in
10550         ''|0) try='char* ctime_r(const time_t*, char*, int);'
10551         ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10552         esac
10553         case "$ctime_r_proto" in
10554         ''|0) try='int ctime_r(const time_t*, char*);'
10555         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10556         esac
10557         case "$ctime_r_proto" in
10558         ''|0) try='int ctime_r(const time_t*, char*, int);'
10559         ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10560         esac
10561         case "$ctime_r_proto" in
10562         ''|0)   d_ctime_r=undef
10563                 ctime_r_proto=0
10564                 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10565         * )     case "$ctime_r_proto" in
10566                 REENTRANT_PROTO*) ;;
10567                 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10568                 esac
10569                 echo "Prototype: $try" ;;
10570         esac
10571         ;;
10572         *)      case "$usethreads" in
10573                 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10574                 esac
10575                 d_ctime_r=undef
10576                 ctime_r_proto=0
10577                 ;;
10578         esac
10579         ;;
10580 *)      ctime_r_proto=0
10581         ;;
10582 esac
10583
10584 : see if cuserid exists
10585 set cuserid d_cuserid
10586 eval $inlibc
10587
10588 : see if this is a limits.h system
10589 set limits.h i_limits
10590 eval $inhdr
10591
10592 : see if this is a float.h system
10593 set float.h i_float
10594 eval $inhdr
10595
10596 : See if number of significant digits in a double precision number is known
10597 echo " "
10598 $cat >dbl_dig.c <<EOM
10599 #$i_limits I_LIMITS
10600 #$i_float I_FLOAT
10601 #ifdef I_LIMITS
10602 #include <limits.h>
10603 #endif
10604 #ifdef I_FLOAT
10605 #include <float.h>
10606 #endif
10607 #ifdef DBL_DIG
10608 printf("Contains DBL_DIG");
10609 #endif
10610 EOM
10611 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10612 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10613         echo "DBL_DIG found." >&4
10614         val="$define"
10615 else
10616         echo "DBL_DIG NOT found." >&4
10617         val="$undef"
10618 fi
10619 $rm -f dbl_dig.?
10620 set d_dbl_dig
10621 eval $setvar
10622
10623 : see if dbm.h is available
10624 : see if dbmclose exists
10625 set dbmclose d_dbmclose
10626 eval $inlibc
10627
10628 case "$d_dbmclose" in
10629 $define)
10630         set dbm.h i_dbm
10631         eval $inhdr
10632         case "$i_dbm" in
10633         $define)
10634                 val="$undef"
10635                 set i_rpcsvcdbm
10636                 eval $setvar
10637                 ;;
10638         *)      set rpcsvc/dbm.h i_rpcsvcdbm
10639                 eval $inhdr
10640                 ;;
10641         esac
10642         ;;
10643 *)      echo "We won't be including <dbm.h>"
10644         val="$undef"
10645         set i_dbm
10646         eval $setvar
10647         val="$undef"
10648         set i_rpcsvcdbm
10649         eval $setvar
10650         ;;
10651 esac
10652
10653 : see if prototype for dbminit is available
10654 echo " "
10655 set d_dbminitproto dbminit $i_dbm dbm.h
10656 eval $hasproto
10657
10658 : see if difftime exists
10659 set difftime d_difftime
10660 eval $inlibc
10661
10662 : see if this is a dirent system
10663 echo " "
10664 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10665         val="$define"
10666         echo "<dirent.h> found." >&4
10667 else
10668         val="$undef"
10669         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10670                 echo "<sys/dir.h> found." >&4
10671                 echo " "
10672         else
10673                 xinc=`./findhdr sys/ndir.h`
10674         fi
10675         echo "<dirent.h> NOT found." >&4
10676 fi
10677 set i_dirent
10678 eval $setvar
10679
10680 : Look for type of directory structure.
10681 echo " "
10682 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10683
10684 case "$direntrytype" in
10685 ''|' ')
10686         case "$i_dirent" in
10687         $define) guess1='struct dirent' ;;
10688         *) guess1='struct direct'  ;;
10689         esac
10690         ;;
10691 *)      guess1="$direntrytype"
10692         ;;
10693 esac
10694
10695 case "$guess1" in
10696 'struct dirent') guess2='struct direct' ;;
10697 *) guess2='struct dirent' ;;
10698 esac
10699                 
10700 if $contains "$guess1" try.c >/dev/null 2>&1; then
10701         direntrytype="$guess1"
10702         echo "Your directory entries are $direntrytype." >&4
10703 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10704         direntrytype="$guess2"
10705         echo "Your directory entries seem to be $direntrytype." >&4
10706 else
10707         echo "I don't recognize your system's directory entries." >&4
10708         rp="What type is used for directory entries on this system?"
10709         dflt="$guess1"
10710         . ./myread
10711         direntrytype="$ans"
10712 fi
10713 $rm -f try.c
10714
10715
10716 : see if the directory entry stores field length
10717 echo " "
10718 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10719 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10720         echo "Good, your directory entry keeps length information in d_namlen." >&4
10721         val="$define"
10722 else
10723         echo "Your directory entry does not know about the d_namlen field." >&4
10724         val="$undef"
10725 fi
10726 set d_dirnamlen
10727 eval $setvar
10728 $rm -f try.c
10729
10730 : see if this is an sysdir system
10731 set sys/dir.h i_sysdir
10732 eval $inhdr
10733
10734 : see if this is an sysndir system
10735 set sys/ndir.h i_sysndir
10736 eval $inhdr
10737
10738 : Look for dirfd
10739 echo " "
10740 $cat >dirfd.c <<EOM
10741 #include <stdio.h>
10742 #$i_stdlib I_STDLIB
10743 #ifdef I_STDLIB
10744 #include <stdlib.h>
10745 #endif
10746 #$i_dirent I_DIRENT             /**/
10747 #$i_sysdir I_SYS_DIR            /**/
10748 #$i_sysndir I_SYS_NDIR          /**/
10749 #$i_systypes I_SYS_TYPES        /**/
10750 #if defined(I_SYS_TYPES)
10751 #include <sys/types.h>
10752 #endif
10753 #if defined(I_DIRENT)
10754 #include <dirent.h>
10755 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10756 #include <sys/dir.h>
10757 #endif
10758 #else
10759 #ifdef I_SYS_NDIR
10760 #include <sys/ndir.h>
10761 #else
10762 #ifdef I_SYS_DIR
10763 #ifdef hp9000s500
10764 #include <ndir.h>       /* may be wrong in the future */
10765 #else
10766 #include <sys/dir.h>
10767 #endif
10768 #endif
10769 #endif
10770 #endif 
10771 int main() {
10772         DIR *dirp = opendir(".");
10773         if (dirfd(dirp) >= 0)
10774                 exit(0);
10775         else
10776                 exit(1);
10777 }
10778 EOM
10779 set dirfd
10780 if eval $compile; then
10781         val="$define"
10782 fi
10783 case "$val" in
10784 $define)        echo "dirfd() found." >&4       ;;
10785 *)              echo "dirfd() NOT found." >&4   ;;
10786 esac
10787 set d_dirfd
10788 eval $setvar
10789 $rm -f dirfd*
10790
10791 : see if dlerror exists
10792 xxx_runnm="$runnm"
10793 runnm=false
10794 set dlerror d_dlerror
10795 eval $inlibc
10796 runnm="$xxx_runnm"
10797
10798 : see if dlfcn is available
10799 set dlfcn.h i_dlfcn
10800 eval $inhdr
10801
10802 case "$usedl" in
10803 $define|y|true)
10804         $cat << EOM
10805
10806 On a few systems, the dynamically loaded modules that perl generates and uses
10807 will need a different extension than shared libs. The default will probably
10808 be appropriate.
10809
10810 EOM
10811         case "$dlext" in
10812         '')     dflt="$so" ;;
10813         *)      dflt="$dlext" ;;
10814         esac
10815         rp='What is the extension of dynamically loaded modules'
10816         . ./myread
10817         dlext="$ans"
10818         ;;
10819 *)
10820         dlext="none"
10821         ;;
10822 esac
10823
10824 : Check if dlsym need a leading underscore
10825 echo " "
10826 val="$undef"
10827
10828 case "$dlsrc" in
10829 dl_dlopen.xs)
10830         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10831         $cat >dyna.c <<'EOM'
10832 fred () { }
10833 EOM
10834
10835 $cat >fred.c<<EOM
10836
10837 #include <stdio.h>
10838 #$i_stdlib I_STDLIB
10839 #ifdef I_STDLIB
10840 #include <stdlib.h>
10841 #endif
10842 #$i_dlfcn I_DLFCN
10843 #ifdef I_DLFCN
10844 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
10845 #else
10846 #include <sys/types.h>
10847 #include <nlist.h>
10848 #include <link.h>
10849 #endif
10850
10851 extern int fred() ;
10852
10853 int main()
10854 {
10855     void * handle ;
10856     void * symbol ;
10857 #ifndef RTLD_LAZY
10858     int mode = 1 ;
10859 #else
10860     int mode = RTLD_LAZY ;
10861 #endif
10862     handle = dlopen("./dyna.$dlext", mode) ;
10863     if (handle == NULL) {
10864         printf ("1\n") ;
10865         fflush (stdout) ;
10866         exit(0);
10867     }
10868     symbol = dlsym(handle, "fred") ;
10869     if (symbol == NULL) {
10870         /* try putting a leading underscore */
10871         symbol = dlsym(handle, "_fred") ;
10872         if (symbol == NULL) {
10873             printf ("2\n") ;
10874             fflush (stdout) ;
10875             exit(0);
10876         }
10877         printf ("3\n") ;
10878     }
10879     else
10880         printf ("4\n") ;
10881     fflush (stdout) ;
10882     exit(0);
10883 }
10884 EOM
10885         : Call the object file tmp-dyna.o in case dlext=o.
10886         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
10887                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
10888                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
10889                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10890                 xxx=`$run ./fred`
10891                 case $xxx in
10892                 1)      echo "Test program failed using dlopen." >&4
10893                         echo "Perhaps you should not use dynamic loading." >&4;;
10894                 2)      echo "Test program failed using dlsym." >&4
10895                         echo "Perhaps you should not use dynamic loading." >&4;;
10896                 3)      echo "dlsym needs a leading underscore" >&4
10897                         val="$define" ;;
10898                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
10899                 esac
10900         else
10901                 echo "I can't compile and run the test program." >&4
10902                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10903         fi
10904         ;;
10905 esac
10906                 
10907 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10908
10909 set d_dlsymun
10910 eval $setvar
10911
10912 : see if drand48_r exists
10913 set drand48_r d_drand48_r
10914 eval $inlibc
10915 case "$d_drand48_r" in
10916 "$define")
10917         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10918         case "$d_drand48_r_proto:$usethreads" in
10919         ":define")      d_drand48_r_proto=define
10920                 set d_drand48_r_proto drand48_r $hdrs
10921                 eval $hasproto ;;
10922         *)      ;;
10923         esac
10924         case "$d_drand48_r_proto" in
10925         define)
10926         case "$drand48_r_proto" in
10927         ''|0) try='int drand48_r(struct drand48_data*, double*);'
10928         ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10929         esac
10930         case "$drand48_r_proto" in
10931         ''|0)   d_drand48_r=undef
10932                 drand48_r_proto=0
10933                 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10934         * )     case "$drand48_r_proto" in
10935                 REENTRANT_PROTO*) ;;
10936                 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10937                 esac
10938                 echo "Prototype: $try" ;;
10939         esac
10940         ;;
10941         *)      case "$usethreads" in
10942                 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10943                 esac
10944                 d_drand48_r=undef
10945                 drand48_r_proto=0
10946                 ;;
10947         esac
10948         ;;
10949 *)      drand48_r_proto=0
10950         ;;
10951 esac
10952
10953 : see if prototype for drand48 is available
10954 echo " "
10955 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10956 eval $hasproto
10957
10958 : see if dup2 exists
10959 set dup2 d_dup2
10960 eval $inlibc
10961
10962 : see if eaccess exists
10963 set eaccess d_eaccess
10964 eval $inlibc
10965
10966 : see if endgrent exists
10967 set endgrent d_endgrent
10968 eval $inlibc
10969
10970 : see if this is an grp system
10971 set grp.h i_grp
10972 eval $inhdr
10973
10974 case "$i_grp" in
10975 $define)
10976         xxx=`./findhdr grp.h`
10977         $cppstdin $cppflags $cppminus < $xxx >$$.h
10978
10979         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10980                 val="$define"
10981         else
10982                 val="$undef"
10983         fi
10984         set d_grpasswd
10985         eval $setvar
10986
10987         $rm -f $$.h
10988         ;;
10989 *)
10990         val="$undef";
10991         set d_grpasswd; eval $setvar
10992         ;;
10993 esac
10994
10995 : see if endgrent_r exists
10996 set endgrent_r d_endgrent_r
10997 eval $inlibc
10998 case "$d_endgrent_r" in
10999 "$define")
11000         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11001         case "$d_endgrent_r_proto:$usethreads" in
11002         ":define")      d_endgrent_r_proto=define
11003                 set d_endgrent_r_proto endgrent_r $hdrs
11004                 eval $hasproto ;;
11005         *)      ;;
11006         esac
11007         case "$d_endgrent_r_proto" in
11008         define)
11009         case "$endgrent_r_proto" in
11010         ''|0) try='int endgrent_r(FILE**);'
11011         ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11012         esac
11013         case "$endgrent_r_proto" in
11014         ''|0) try='void endgrent_r(FILE**);'
11015         ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11016         esac
11017         case "$endgrent_r_proto" in
11018         ''|0)   d_endgrent_r=undef
11019                 endgrent_r_proto=0
11020                 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11021         * )     case "$endgrent_r_proto" in
11022                 REENTRANT_PROTO*) ;;
11023                 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11024                 esac
11025                 echo "Prototype: $try" ;;
11026         esac
11027         ;;
11028         *)      case "$usethreads" in
11029                 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11030                 esac
11031                 d_endgrent_r=undef
11032                 endgrent_r_proto=0
11033                 ;;
11034         esac
11035         ;;
11036 *)      endgrent_r_proto=0
11037         ;;
11038 esac
11039
11040 : see if endhostent exists
11041 set endhostent d_endhent
11042 eval $inlibc
11043
11044 : see if this is a netdb.h system
11045 set netdb.h i_netdb
11046 eval $inhdr
11047
11048 : see if endhostent_r exists
11049 set endhostent_r d_endhostent_r
11050 eval $inlibc
11051 case "$d_endhostent_r" in
11052 "$define")
11053         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11054         case "$d_endhostent_r_proto:$usethreads" in
11055         ":define")      d_endhostent_r_proto=define
11056                 set d_endhostent_r_proto endhostent_r $hdrs
11057                 eval $hasproto ;;
11058         *)      ;;
11059         esac
11060         case "$d_endhostent_r_proto" in
11061         define)
11062         case "$endhostent_r_proto" in
11063         ''|0) try='int endhostent_r(struct hostent_data*);'
11064         ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11065         esac
11066         case "$endhostent_r_proto" in
11067         ''|0) try='void endhostent_r(struct hostent_data*);'
11068         ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11069         esac
11070         case "$endhostent_r_proto" in
11071         ''|0)   d_endhostent_r=undef
11072                 endhostent_r_proto=0
11073                 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11074         * )     case "$endhostent_r_proto" in
11075                 REENTRANT_PROTO*) ;;
11076                 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11077                 esac
11078                 echo "Prototype: $try" ;;
11079         esac
11080         ;;
11081         *)      case "$usethreads" in
11082                 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11083                 esac
11084                 d_endhostent_r=undef
11085                 endhostent_r_proto=0
11086                 ;;
11087         esac
11088         ;;
11089 *)      endhostent_r_proto=0
11090         ;;
11091 esac
11092
11093 : see if endnetent exists
11094 set endnetent d_endnent
11095 eval $inlibc
11096
11097 : see if endnetent_r exists
11098 set endnetent_r d_endnetent_r
11099 eval $inlibc
11100 case "$d_endnetent_r" in
11101 "$define")
11102         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11103         case "$d_endnetent_r_proto:$usethreads" in
11104         ":define")      d_endnetent_r_proto=define
11105                 set d_endnetent_r_proto endnetent_r $hdrs
11106                 eval $hasproto ;;
11107         *)      ;;
11108         esac
11109         case "$d_endnetent_r_proto" in
11110         define)
11111         case "$endnetent_r_proto" in
11112         ''|0) try='int endnetent_r(struct netent_data*);'
11113         ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11114         esac
11115         case "$endnetent_r_proto" in
11116         ''|0) try='void endnetent_r(struct netent_data*);'
11117         ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11118         esac
11119         case "$endnetent_r_proto" in
11120         ''|0)   d_endnetent_r=undef
11121                 endnetent_r_proto=0
11122                 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11123         * )     case "$endnetent_r_proto" in
11124                 REENTRANT_PROTO*) ;;
11125                 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11126                 esac
11127                 echo "Prototype: $try" ;;
11128         esac
11129         ;;
11130         *)      case "$usethreads" in
11131                 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11132                 esac
11133                 d_endnetent_r=undef
11134                 endnetent_r_proto=0
11135                 ;;
11136         esac
11137         ;;
11138 *)      endnetent_r_proto=0
11139         ;;
11140 esac
11141
11142 : see if endprotoent exists
11143 set endprotoent d_endpent
11144 eval $inlibc
11145
11146 : see if endprotoent_r exists
11147 set endprotoent_r d_endprotoent_r
11148 eval $inlibc
11149 case "$d_endprotoent_r" in
11150 "$define")
11151         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11152         case "$d_endprotoent_r_proto:$usethreads" in
11153         ":define")      d_endprotoent_r_proto=define
11154                 set d_endprotoent_r_proto endprotoent_r $hdrs
11155                 eval $hasproto ;;
11156         *)      ;;
11157         esac
11158         case "$d_endprotoent_r_proto" in
11159         define)
11160         case "$endprotoent_r_proto" in
11161         ''|0) try='int endprotoent_r(struct protoent_data*);'
11162         ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11163         esac
11164         case "$endprotoent_r_proto" in
11165         ''|0) try='void endprotoent_r(struct protoent_data*);'
11166         ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11167         esac
11168         case "$endprotoent_r_proto" in
11169         ''|0)   d_endprotoent_r=undef
11170                 endprotoent_r_proto=0
11171                 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11172         * )     case "$endprotoent_r_proto" in
11173                 REENTRANT_PROTO*) ;;
11174                 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11175                 esac
11176                 echo "Prototype: $try" ;;
11177         esac
11178         ;;
11179         *)      case "$usethreads" in
11180                 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11181                 esac
11182                 d_endprotoent_r=undef
11183                 endprotoent_r_proto=0
11184                 ;;
11185         esac
11186         ;;
11187 *)      endprotoent_r_proto=0
11188         ;;
11189 esac
11190
11191 : see if endpwent exists
11192 set endpwent d_endpwent
11193 eval $inlibc
11194
11195 : see if this is a pwd.h system
11196 set pwd.h i_pwd
11197 eval $inhdr
11198
11199 case "$i_pwd" in
11200 $define)
11201         xxx=`./findhdr pwd.h`
11202         $cppstdin $cppflags $cppminus < $xxx >$$.h
11203
11204         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11205                 val="$define"
11206         else
11207                 val="$undef"
11208         fi
11209         set d_pwquota
11210         eval $setvar
11211
11212         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11213                 val="$define"
11214         else
11215                 val="$undef"
11216         fi
11217         set d_pwage
11218         eval $setvar
11219
11220         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11221                 val="$define"
11222         else
11223                 val="$undef"
11224         fi
11225         set d_pwchange
11226         eval $setvar
11227
11228         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11229                 val="$define"
11230         else
11231                 val="$undef"
11232         fi
11233         set d_pwclass
11234         eval $setvar
11235
11236         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11237                 val="$define"
11238         else
11239                 val="$undef"
11240         fi
11241         set d_pwexpire
11242         eval $setvar
11243
11244         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11245                 val="$define"
11246         else
11247                 val="$undef"
11248         fi
11249         set d_pwcomment
11250         eval $setvar
11251
11252         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11253                 val="$define"
11254         else
11255                 val="$undef"
11256         fi
11257         set d_pwgecos
11258         eval $setvar
11259
11260         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11261                 val="$define"
11262         else
11263                 val="$undef"
11264         fi
11265         set d_pwpasswd
11266         eval $setvar
11267
11268         $rm -f $$.h
11269         ;;
11270 *)
11271         val="$undef"; 
11272         set d_pwquota; eval $setvar
11273         set d_pwage; eval $setvar
11274         set d_pwchange; eval $setvar
11275         set d_pwclass; eval $setvar
11276         set d_pwexpire; eval $setvar
11277         set d_pwcomment; eval $setvar
11278         set d_pwgecos; eval $setvar
11279         set d_pwpasswd; eval $setvar
11280         ;;
11281 esac
11282
11283 : see if endpwent_r exists
11284 set endpwent_r d_endpwent_r
11285 eval $inlibc
11286 case "$d_endpwent_r" in
11287 "$define")
11288         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11289         case "$d_endpwent_r_proto:$usethreads" in
11290         ":define")      d_endpwent_r_proto=define
11291                 set d_endpwent_r_proto endpwent_r $hdrs
11292                 eval $hasproto ;;
11293         *)      ;;
11294         esac
11295         case "$d_endpwent_r_proto" in
11296         define)
11297         case "$endpwent_r_proto" in
11298         ''|0) try='int endpwent_r(FILE**);'
11299         ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11300         esac
11301         case "$endpwent_r_proto" in
11302         ''|0) try='void endpwent_r(FILE**);'
11303         ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11304         esac
11305         case "$endpwent_r_proto" in
11306         ''|0)   d_endpwent_r=undef
11307                 endpwent_r_proto=0
11308                 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11309         * )     case "$endpwent_r_proto" in
11310                 REENTRANT_PROTO*) ;;
11311                 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11312                 esac
11313                 echo "Prototype: $try" ;;
11314         esac
11315         ;;
11316         *)      case "$usethreads" in
11317                 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11318                 esac
11319                 d_endpwent_r=undef
11320                 endpwent_r_proto=0
11321                 ;;
11322         esac
11323         ;;
11324 *)      endpwent_r_proto=0
11325         ;;
11326 esac
11327
11328 : see if endservent exists
11329 set endservent d_endsent
11330 eval $inlibc
11331
11332 : see if endservent_r exists
11333 set endservent_r d_endservent_r
11334 eval $inlibc
11335 case "$d_endservent_r" in
11336 "$define")
11337         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11338         case "$d_endservent_r_proto:$usethreads" in
11339         ":define")      d_endservent_r_proto=define
11340                 set d_endservent_r_proto endservent_r $hdrs
11341                 eval $hasproto ;;
11342         *)      ;;
11343         esac
11344         case "$d_endservent_r_proto" in
11345         define)
11346         case "$endservent_r_proto" in
11347         ''|0) try='int endservent_r(struct servent_data*);'
11348         ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11349         esac
11350         case "$endservent_r_proto" in
11351         ''|0) try='void endservent_r(struct servent_data*);'
11352         ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11353         esac
11354         case "$endservent_r_proto" in
11355         ''|0)   d_endservent_r=undef
11356                 endservent_r_proto=0
11357                 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11358         * )     case "$endservent_r_proto" in
11359                 REENTRANT_PROTO*) ;;
11360                 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11361                 esac
11362                 echo "Prototype: $try" ;;
11363         esac
11364         ;;
11365         *)      case "$usethreads" in
11366                 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11367                 esac
11368                 d_endservent_r=undef
11369                 endservent_r_proto=0
11370                 ;;
11371         esac
11372         ;;
11373 *)      endservent_r_proto=0
11374         ;;
11375 esac
11376
11377 : Locate the flags for 'open()'
11378 echo " "
11379 $cat >try.c <<EOCP
11380 #include <sys/types.h>
11381 #ifdef I_FCNTL
11382 #include <fcntl.h>
11383 #endif
11384 #ifdef I_SYS_FILE
11385 #include <sys/file.h>
11386 #endif
11387 #$i_stdlib I_STDLIB
11388 #ifdef I_STDLIB
11389 #include <stdlib.h>
11390 #endif
11391 int main() {
11392         if(O_RDONLY);
11393 #ifdef O_TRUNC
11394         exit(0);
11395 #else
11396         exit(1);
11397 #endif
11398 }
11399 EOCP
11400 : check sys/file.h first to get FREAD on Sun
11401 if $test `./findhdr sys/file.h` && \
11402                 set try -DI_SYS_FILE && eval $compile; then
11403         h_sysfile=true;
11404         echo "<sys/file.h> defines the O_* constants..." >&4
11405         if $run ./try; then
11406                 echo "and you have the 3 argument form of open()." >&4
11407                 val="$define"
11408         else
11409                 echo "but not the 3 argument form of open().  Oh, well." >&4
11410                 val="$undef"
11411         fi
11412 elif $test `./findhdr fcntl.h` && \
11413                 set try -DI_FCNTL && eval $compile; then
11414         h_fcntl=true;
11415         echo "<fcntl.h> defines the O_* constants..." >&4
11416         if $run ./try; then
11417                 echo "and you have the 3 argument form of open()." >&4
11418                 val="$define"
11419         else
11420                 echo "but not the 3 argument form of open().  Oh, well." >&4
11421                 val="$undef"
11422         fi
11423 else
11424         val="$undef"
11425         echo "I can't find the O_* constant definitions!  You got problems." >&4
11426 fi
11427 set d_open3
11428 eval $setvar
11429 $rm -f try try.*
11430
11431 : see which of string.h or strings.h is needed
11432 echo " "
11433 strings=`./findhdr string.h`
11434 if $test "$strings" && $test -r "$strings"; then
11435         echo "Using <string.h> instead of <strings.h>." >&4
11436         val="$define"
11437 else
11438         val="$undef"
11439         strings=`./findhdr strings.h`
11440         if $test "$strings" && $test -r "$strings"; then
11441                 echo "Using <strings.h> instead of <string.h>." >&4
11442         else
11443                 echo "No string header found -- You'll surely have problems." >&4
11444         fi
11445 fi
11446 set i_string
11447 eval $setvar
11448 case "$i_string" in
11449 "$undef") strings=`./findhdr strings.h`;;
11450 *)        strings=`./findhdr string.h`;;
11451 esac
11452
11453 : see if this is a sys/file.h system
11454 val=''
11455 set sys/file.h val
11456 eval $inhdr
11457
11458 : do we need to include sys/file.h ?
11459 case "$val" in
11460 "$define")
11461         echo " "
11462         if $h_sysfile; then
11463                 val="$define"
11464                 echo "We'll be including <sys/file.h>." >&4
11465         else
11466                 val="$undef"
11467                 echo "We won't be including <sys/file.h>." >&4
11468         fi
11469         ;;
11470 *)
11471         h_sysfile=false
11472         ;;
11473 esac
11474 set i_sysfile
11475 eval $setvar
11476
11477 : see if fcntl.h is there
11478 val=''
11479 set fcntl.h val
11480 eval $inhdr
11481
11482 : see if we can include fcntl.h
11483 case "$val" in
11484 "$define")
11485         echo " "
11486         if $h_fcntl; then
11487                 val="$define"
11488                 echo "We'll be including <fcntl.h>." >&4
11489         else
11490                 val="$undef"
11491                 if $h_sysfile; then
11492         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11493                 else
11494                         echo "We won't be including <fcntl.h>." >&4
11495                 fi
11496         fi
11497         ;;
11498 *)
11499         h_fcntl=false
11500         val="$undef"
11501         ;;
11502 esac
11503 set i_fcntl
11504 eval $setvar
11505
11506 : check for non-blocking I/O stuff
11507 case "$h_sysfile" in
11508 true) echo "#include <sys/file.h>" > head.c;;
11509 *)
11510        case "$h_fcntl" in
11511        true) echo "#include <fcntl.h>" > head.c;;
11512        *) echo "#include <sys/fcntl.h>" > head.c;;
11513        esac
11514        ;;
11515 esac
11516 echo " "
11517 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11518 case "$o_nonblock" in
11519 '')
11520         $cat head.c > try.c
11521         $cat >>try.c <<EOCP
11522 #include <stdio.h>
11523 #$i_stdlib I_STDLIB
11524 #ifdef I_STDLIB
11525 #include <stdlib.h>
11526 #endif
11527 #$i_fcntl I_FCNTL
11528 #ifdef I_FCNTL
11529 #include <fcntl.h>
11530 #endif
11531 int main() {
11532 #ifdef O_NONBLOCK
11533         printf("O_NONBLOCK\n");
11534         exit(0);
11535 #endif
11536 #ifdef O_NDELAY
11537         printf("O_NDELAY\n");
11538         exit(0);
11539 #endif
11540 #ifdef FNDELAY
11541         printf("FNDELAY\n");
11542         exit(0);
11543 #endif
11544         exit(0);
11545 }
11546 EOCP
11547         set try
11548         if eval $compile_ok; then
11549                 o_nonblock=`$run ./try`
11550                 case "$o_nonblock" in
11551                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11552                 *) echo "Seems like we can use $o_nonblock.";;
11553                 esac
11554         else
11555                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11556         fi
11557         ;;
11558 *) echo "Using $hint value $o_nonblock.";;
11559 esac
11560 $rm -f try try.* .out core
11561
11562 echo " "
11563 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11564 case "$eagain" in
11565 '')
11566         $cat head.c > try.c
11567         $cat >>try.c <<EOCP
11568 #include <errno.h>
11569 #include <sys/types.h>
11570 #include <signal.h>
11571 #include <stdio.h> 
11572 #$i_stdlib I_STDLIB
11573 #ifdef I_STDLIB
11574 #include <stdlib.h>
11575 #endif
11576 #$i_fcntl I_FCNTL
11577 #ifdef I_FCNTL
11578 #include <fcntl.h>
11579 #endif
11580 #define MY_O_NONBLOCK $o_nonblock
11581 #ifndef errno  /* XXX need better Configure test */
11582 extern int errno;
11583 #endif
11584 #$i_unistd I_UNISTD
11585 #ifdef I_UNISTD
11586 #include <unistd.h>
11587 #endif
11588 #$i_string I_STRING
11589 #ifdef I_STRING
11590 #include <string.h>
11591 #else
11592 #include <strings.h>
11593 #endif
11594 $signal_t blech(x) int x; { exit(3); }
11595 EOCP
11596         $cat >> try.c <<'EOCP'
11597 int main()
11598 {
11599         int pd[2];
11600         int pu[2];
11601         char buf[1];
11602         char string[100];
11603
11604         pipe(pd);       /* Down: child -> parent */
11605         pipe(pu);       /* Up: parent -> child */
11606         if (0 != fork()) {
11607                 int ret;
11608                 close(pd[1]);   /* Parent reads from pd[0] */
11609                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
11610 #ifdef F_SETFL
11611                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11612                         exit(1);
11613 #else
11614                 exit(4);
11615 #endif
11616                 signal(SIGALRM, blech);
11617                 alarm(5);
11618                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
11619                         exit(2);
11620                 sprintf(string, "%d\n", ret);
11621                 write(2, string, strlen(string));
11622                 alarm(0);
11623 #ifdef EAGAIN
11624                 if (errno == EAGAIN) {
11625                         printf("EAGAIN\n");
11626                         goto ok;
11627                 }
11628 #endif
11629 #ifdef EWOULDBLOCK
11630                 if (errno == EWOULDBLOCK)
11631                         printf("EWOULDBLOCK\n");
11632 #endif
11633         ok:
11634                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
11635                 sleep(2);                               /* Give it time to close our pipe */
11636                 alarm(5);
11637                 ret = read(pd[0], buf, 1);      /* Should read EOF */
11638                 alarm(0);
11639                 sprintf(string, "%d\n", ret);
11640                 write(4, string, strlen(string));
11641                 exit(0);
11642         }
11643
11644         close(pd[0]);                   /* We write to pd[1] */
11645         close(pu[1]);                   /* We read from pu[0] */
11646         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
11647         close(pd[1]);                   /* Pipe pd is now fully closed! */
11648         exit(0);                                /* Bye bye, thank you for playing! */
11649 }
11650 EOCP
11651         set try
11652         if eval $compile_ok; then
11653                 echo "$startsh" >mtry
11654                 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11655                 chmod +x mtry
11656                 ./mtry >/dev/null 2>&1
11657                 case $? in
11658                 0) eagain=`$cat try.out`;;
11659                 1) echo "Could not perform non-blocking setting!";;
11660                 2) echo "I did a successful read() for something that was not there!";;
11661                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11662                 4) echo "Could not find F_SETFL!";;
11663                 *) echo "Something terribly wrong happened during testing.";;
11664                 esac
11665                 rd_nodata=`$cat try.ret`
11666                 echo "A read() system call with no data present returns $rd_nodata."
11667                 case "$rd_nodata" in
11668                 0|-1) ;;
11669                 *)
11670                         echo "(That's peculiar, fixing that to be -1.)"
11671                         rd_nodata=-1
11672                         ;;
11673                 esac
11674                 case "$eagain" in
11675                 '')
11676                         echo "Forcing errno EAGAIN on read() with no data available."
11677                         eagain=EAGAIN
11678                         ;;
11679                 *)
11680                         echo "Your read() sets errno to $eagain when no data is available."
11681                         ;;
11682                 esac
11683                 status=`$cat try.err`
11684                 case "$status" in
11685                 0) echo "And it correctly returns 0 to signal EOF.";;
11686                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11687                 *) echo "However, your read() returns '$status' on EOF??";;
11688                 esac
11689                 val="$define"
11690                 if test "$status" = "$rd_nodata"; then
11691                         echo "WARNING: you can't distinguish between EOF and no data!"
11692                         val="$undef"
11693                 fi
11694         else
11695                 echo "I can't compile the test program--assuming errno EAGAIN will do."
11696                 eagain=EAGAIN
11697         fi
11698         set d_eofnblk
11699         eval $setvar
11700         ;;
11701 *)
11702         echo "Using $hint value $eagain."
11703         echo "Your read() returns $rd_nodata when no data is present."
11704         case "$d_eofnblk" in
11705         "$define") echo "And you can see EOF because read() returns 0.";;
11706         "$undef") echo "But you can't see EOF status from read() returned value.";;
11707         *)
11708                 echo "(Assuming you can't see EOF status from read anyway.)"
11709                 d_eofnblk=$undef
11710                 ;;
11711         esac
11712         ;;
11713 esac
11714 $rm -f try try.* .out core head.c mtry
11715
11716 : see if _ptr and _cnt from stdio act std
11717 echo " "
11718
11719 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11720         echo "(Looks like you have stdio.h from BSD.)"
11721         case "$stdio_ptr" in
11722         '') stdio_ptr='((fp)->_p)'
11723                 ptr_lval=$define
11724                 ;;
11725         *)      ptr_lval=$d_stdio_ptr_lval;;
11726         esac
11727         case "$stdio_cnt" in
11728         '') stdio_cnt='((fp)->_r)'
11729                 cnt_lval=$define
11730                 ;;
11731         *)      cnt_lval=$d_stdio_cnt_lval;;
11732         esac
11733         case "$stdio_base" in
11734         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11735         esac
11736         case "$stdio_bufsiz" in
11737         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11738         esac
11739 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11740         echo "(Looks like you have stdio.h from Linux.)"
11741         case "$stdio_ptr" in
11742         '') stdio_ptr='((fp)->_IO_read_ptr)'
11743                 ptr_lval=$define
11744                 ;;
11745         *)      ptr_lval=$d_stdio_ptr_lval;;
11746         esac
11747         case "$stdio_cnt" in
11748         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11749                 cnt_lval=$undef
11750                 ;;
11751         *)      cnt_lval=$d_stdio_cnt_lval;;
11752         esac
11753         case "$stdio_base" in
11754         '') stdio_base='((fp)->_IO_read_base)';;
11755         esac
11756         case "$stdio_bufsiz" in
11757         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11758         esac
11759 else
11760         case "$stdio_ptr" in
11761         '') stdio_ptr='((fp)->_ptr)'
11762                 ptr_lval=$define
11763                 ;;
11764         *)      ptr_lval=$d_stdio_ptr_lval;;
11765         esac
11766         case "$stdio_cnt" in
11767         '') stdio_cnt='((fp)->_cnt)'
11768                 cnt_lval=$define
11769                 ;;
11770         *)      cnt_lval=$d_stdio_cnt_lval;;
11771         esac
11772         case "$stdio_base" in
11773         '') stdio_base='((fp)->_base)';;
11774         esac
11775         case "$stdio_bufsiz" in
11776         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11777         esac
11778 fi
11779
11780 : test whether _ptr and _cnt really work
11781 echo "Checking how std your stdio is..." >&4
11782 $cat >try.c <<EOP
11783 #include <stdio.h>
11784 #$i_stdlib I_STDLIB
11785 #ifdef I_STDLIB
11786 #include <stdlib.h>
11787 #endif
11788 #define FILE_ptr(fp)    $stdio_ptr
11789 #define FILE_cnt(fp)    $stdio_cnt
11790 int main() {
11791         FILE *fp = fopen("try.c", "r");
11792         char c = getc(fp);
11793         if (
11794                 18 <= FILE_cnt(fp) &&
11795                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11796         )
11797                 exit(0);
11798         exit(1);
11799 }
11800 EOP
11801 val="$undef"
11802 set try
11803 if eval $compile && $to try.c; then
11804         if $run ./try; then
11805                 echo "Your stdio acts pretty std."
11806                 val="$define"
11807         else
11808                 echo "Your stdio isn't very std."
11809         fi
11810 else
11811         echo "Your stdio doesn't appear very std."
11812 fi
11813 $rm -f try.c try
11814
11815 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11816 # direct buffer manipulation no longer works.  The Configure tests
11817 # should be changed to correctly detect this, but until then,
11818 # the following check should at least let perl compile and run.
11819 # (This quick fix should be updated before 5.8.1.)
11820 # To be defensive, reject all unknown versions, and all versions  > 2.2.9.
11821 # A. Dougherty, June 3, 2002.
11822 case "$d_gnulibc" in
11823 $define)
11824         case "$gnulibc_version" in
11825         2.[01]*)  ;;
11826         2.2) ;;
11827         2.2.[0-9]) ;;
11828         *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11829                 val="$undef"
11830                 ;;
11831         esac
11832         ;;
11833 esac
11834 set d_stdstdio
11835 eval $setvar
11836
11837 : Can _ptr be used as an lvalue?
11838 case "$d_stdstdio$ptr_lval" in
11839 $define$define) val=$define ;;
11840 *) val=$undef ;;
11841 esac
11842 set d_stdio_ptr_lval
11843 eval $setvar
11844
11845 : Can _cnt be used as an lvalue?
11846 case "$d_stdstdio$cnt_lval" in
11847 $define$define) val=$define ;;
11848 *) val=$undef ;;
11849 esac
11850 set d_stdio_cnt_lval
11851 eval $setvar
11852
11853
11854 : test whether setting _ptr sets _cnt as a side effect
11855 d_stdio_ptr_lval_sets_cnt="$undef"
11856 d_stdio_ptr_lval_nochange_cnt="$undef"
11857 case "$d_stdio_ptr_lval$d_stdstdio" in
11858 $define$define)
11859         echo "Checking to see what happens if we set the stdio ptr..." >&4
11860 $cat >try.c <<EOP
11861 #include <stdio.h>
11862 /* Can we scream? */
11863 /* Eat dust sed :-) */
11864 /* In the buffer space, no one can hear you scream. */
11865 #$i_stdlib I_STDLIB
11866 #ifdef I_STDLIB
11867 #include <stdlib.h>
11868 #endif
11869 #define FILE_ptr(fp)    $stdio_ptr
11870 #define FILE_cnt(fp)    $stdio_cnt
11871 #include <sys/types.h>
11872 int main() {
11873         FILE *fp = fopen("try.c", "r");
11874         int c;
11875         char *ptr;
11876         size_t cnt;
11877         if (!fp) {
11878             puts("Fail even to read");
11879             exit(1);
11880         }
11881         c = getc(fp); /* Read away the first # */
11882         if (c == EOF) {
11883             puts("Fail even to read");
11884             exit(1);
11885         }
11886         if (!(
11887                 18 <= FILE_cnt(fp) &&
11888                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11889         )) {
11890                 puts("Fail even to read");
11891                 exit (1);
11892         }
11893         ptr = (char*) FILE_ptr(fp);
11894         cnt = (size_t)FILE_cnt(fp);
11895
11896         FILE_ptr(fp) += 42;
11897
11898         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11899                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11900                 exit (1);
11901         }
11902         if (FILE_cnt(fp) <= 20) {
11903                 printf ("Fail (<20 chars to test)");
11904                 exit (1);
11905         }
11906         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11907                 puts("Fail compare");
11908                 exit (1);
11909         }
11910         if (cnt == FILE_cnt(fp)) {
11911                 puts("Pass_unchanged");
11912                 exit (0);
11913         }       
11914         if (FILE_cnt(fp) == (cnt - 42)) {
11915                 puts("Pass_changed");
11916                 exit (0);
11917         }
11918         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11919         return 1;
11920
11921 }
11922 EOP
11923         set try
11924         if eval $compile && $to try.c; then
11925                 case `$run ./try` in
11926                 Pass_changed)
11927                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11928                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11929                 Pass_unchanged)
11930                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11931                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11932                 Fail*)
11933                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11934                 *)
11935                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11936         esac
11937         else
11938                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11939         fi
11940         $rm -f try.c try
11941         ;;
11942 esac
11943
11944 : see if _base is also standard
11945 val="$undef"
11946 case "$d_stdstdio" in
11947 $define)
11948         $cat >try.c <<EOP
11949 #include <stdio.h>
11950 #$i_stdlib I_STDLIB
11951 #ifdef I_STDLIB
11952 #include <stdlib.h>
11953 #endif
11954 #define FILE_base(fp)   $stdio_base
11955 #define FILE_bufsiz(fp) $stdio_bufsiz
11956 int main() {
11957         FILE *fp = fopen("try.c", "r");
11958         char c = getc(fp);
11959         if (
11960                 19 <= FILE_bufsiz(fp) &&
11961                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11962         )
11963                 exit(0);
11964         exit(1);
11965 }
11966 EOP
11967         set try
11968         if eval $compile && $to try.c; then
11969                 if $run ./try; then
11970                         echo "And its _base field acts std."
11971                         val="$define"
11972                 else
11973                         echo "But its _base field isn't std."
11974                 fi
11975         else
11976                 echo "However, it seems to be lacking the _base field."
11977         fi
11978         $rm -f try.c try
11979         ;;
11980 esac
11981 set d_stdiobase
11982 eval $setvar
11983
11984 : see if fast_stdio exists
11985 val="$undef"
11986 case "$d_stdstdio:$d_stdio_ptr_lval" in
11987 "$define:$define")
11988         case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
11989         *$define*)
11990                 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
11991                 val="$define"
11992                 ;;
11993         esac
11994         ;;
11995 esac
11996 set d_faststdio
11997 eval $setvar
11998
11999
12000
12001 : see if fchdir exists
12002 set fchdir d_fchdir
12003 eval $inlibc
12004
12005 : see if fchmod exists
12006 set fchmod d_fchmod
12007 eval $inlibc
12008
12009 : see if fchown exists
12010 set fchown d_fchown
12011 eval $inlibc
12012
12013 : see if this is an fcntl system
12014 set fcntl d_fcntl
12015 eval $inlibc
12016
12017 echo " "
12018 : See if fcntl-based locking works.
12019 $cat >try.c <<EOCP
12020 #$i_stdlib I_STDLIB
12021 #ifdef I_STDLIB
12022 #include <stdlib.h>
12023 #endif
12024 #include <unistd.h>
12025 #include <fcntl.h>
12026 #include <signal.h>
12027 $signal_t blech(x) int x; { exit(3); }
12028 int main() {
12029 #if defined(F_SETLK) && defined(F_SETLKW)
12030      struct flock flock;
12031      int retval, fd;
12032      fd = open("try.c", O_RDONLY);
12033      flock.l_type = F_RDLCK;
12034      flock.l_whence = SEEK_SET;
12035      flock.l_start = flock.l_len = 0;
12036      signal(SIGALRM, blech);
12037      alarm(10);
12038      retval = fcntl(fd, F_SETLK, &flock);
12039      close(fd);
12040      (retval < 0 ? exit(2) : exit(0));
12041 #else
12042      exit(2);
12043 #endif
12044 }
12045 EOCP
12046 echo "Checking if fcntl-based file locking works... "
12047 case "$d_fcntl" in
12048 "$define")
12049         set try
12050         if eval $compile_ok; then
12051                 if $run ./try; then
12052                         echo "Yes, it seems to work."
12053                         val="$define"
12054                 else
12055                         echo "Nope, it didn't work."
12056                         val="$undef"
12057                         case "$?" in
12058                         3) $cat >&4 <<EOM
12059 ***
12060 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12061 *** This is (almost) impossible.
12062 *** If your NFS lock daemons are not feeling well, something like
12063 *** this may happen, please investigate.  Cannot continue, aborting.
12064 ***
12065 EOM
12066                                 exit 1
12067                                 ;;
12068                         esac
12069                 fi
12070         else
12071                 echo "I'm unable to compile the test program, so I'll assume not."
12072                 val="$undef"
12073         fi
12074         ;;
12075 *) val="$undef";
12076         echo "Nope, since you don't even have fcntl()."
12077         ;;
12078 esac
12079 set d_fcntl_can_lock
12080 eval $setvar
12081 $rm -f try*
12082
12083
12084 : check for fd_set items
12085 $cat <<EOM
12086
12087 Checking to see how well your C compiler handles fd_set and friends ...
12088 EOM
12089 $cat >try.c <<EOCP
12090 #$i_stdlib I_STDLIB
12091 #ifdef I_STDLIB
12092 #include <stdlib.h>
12093 #endif
12094 #$i_systime I_SYS_TIME
12095 #$i_sysselct I_SYS_SELECT
12096 #$d_socket HAS_SOCKET
12097 #include <sys/types.h>
12098 #ifdef HAS_SOCKET
12099 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12100 #endif
12101 #ifdef I_SYS_TIME
12102 #include <sys/time.h>
12103 #endif
12104 #ifdef I_SYS_SELECT
12105 #include <sys/select.h>
12106 #endif
12107 int main() {
12108         fd_set fds;
12109
12110 #ifdef TRYBITS
12111         if(fds.fds_bits);
12112 #endif
12113
12114 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12115         exit(0);
12116 #else
12117         exit(1);
12118 #endif
12119 }
12120 EOCP
12121 set try -DTRYBITS
12122 if eval $compile; then
12123         d_fds_bits="$define"
12124         d_fd_set="$define"
12125         echo "Well, your system knows about the normal fd_set typedef..." >&4
12126         if $run ./try; then
12127                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12128                 d_fd_macros="$define"
12129         else
12130                 $cat >&4 <<'EOM'
12131 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
12132 EOM
12133                 d_fd_macros="$undef"
12134         fi
12135 else
12136         $cat <<'EOM'
12137 Hmm, your compiler has some difficulty with fd_set.  Checking further...
12138 EOM
12139         set try
12140         if eval $compile; then
12141                 d_fds_bits="$undef"
12142                 d_fd_set="$define"
12143                 echo "Well, your system has some sort of fd_set available..." >&4
12144                 if $run ./try; then
12145                         echo "and you have the normal fd_set macros." >&4
12146                         d_fd_macros="$define"
12147                 else
12148                         $cat <<'EOM'
12149 but not the normal fd_set macros!  Gross!  More work for me...
12150 EOM
12151                         d_fd_macros="$undef"
12152                 fi
12153         else
12154         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
12155                 d_fd_set="$undef"
12156                 d_fds_bits="$undef"
12157                 d_fd_macros="$undef"
12158         fi
12159 fi
12160 $rm -f try try.*
12161
12162 : see if fgetpos exists
12163 set fgetpos d_fgetpos
12164 eval $inlibc
12165
12166 : see if finite exists
12167 set finite d_finite
12168 eval $inlibc
12169
12170 : see if finitel exists
12171 set finitel d_finitel
12172 eval $inlibc
12173
12174 : see if flock exists
12175 set flock d_flock
12176 eval $inlibc
12177
12178 : see if prototype for flock is available
12179 echo " "
12180 set d_flockproto flock $i_sysfile sys/file.h
12181 eval $hasproto
12182
12183 : see if fork exists
12184 set fork d_fork
12185 eval $inlibc
12186
12187 : see if fp_class exists
12188 set fp_class d_fp_class
12189 eval $inlibc
12190
12191 : see if pathconf exists
12192 set pathconf d_pathconf
12193 eval $inlibc
12194
12195 : see if fpathconf exists
12196 set fpathconf d_fpathconf
12197 eval $inlibc
12198
12199 : see if fpclass exists
12200 set fpclass d_fpclass
12201 eval $inlibc
12202
12203 : see if fpclassify exists
12204 set fpclassify d_fpclassify
12205 eval $inlibc
12206
12207 : see if fpclassl exists
12208 set fpclassl d_fpclassl
12209 eval $inlibc
12210
12211
12212 : check for fpos64_t
12213 echo " "
12214 echo "Checking to see if you have fpos64_t..." >&4
12215 $cat >try.c <<EOCP
12216 #include <stdio.h>
12217 int main() { fpos64_t x = 7; }
12218 EOCP
12219 set try
12220 if eval $compile; then
12221         val="$define"
12222         echo "You have fpos64_t."
12223 else
12224         val="$undef"
12225         echo "You do not have fpos64_t."
12226         case "$fpossize" in
12227         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12228         esac
12229 fi
12230 $rm -f try.* try
12231 set d_fpos64_t
12232 eval $setvar
12233
12234 : see if frexpl exists
12235 set frexpl d_frexpl
12236 eval $inlibc
12237
12238 : see if this is a sys/param system
12239 set sys/param.h i_sysparam
12240 eval $inhdr
12241
12242 : see if this is a sys/mount.h system
12243 set sys/mount.h i_sysmount
12244 eval $inhdr
12245
12246
12247 echo " "
12248 echo "Checking to see if your system supports struct fs_data..." >&4
12249 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12250 eval $hasstruct
12251 case "$d_fs_data_s" in
12252 "$define")      echo "Yes, it does."   ;;
12253 *)              echo "No, it doesn't." ;;
12254 esac
12255
12256 : see if fseeko exists
12257 set fseeko d_fseeko
12258 eval $inlibc
12259 case "$longsize" in
12260 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12261 esac
12262
12263 : see if fsetpos exists
12264 set fsetpos d_fsetpos
12265 eval $inlibc
12266
12267
12268 : see if fstatfs exists
12269 set fstatfs d_fstatfs
12270 eval $inlibc
12271
12272
12273 : see if statvfs exists
12274 set statvfs d_statvfs
12275 eval $inlibc
12276
12277 : see if fstatvfs exists
12278 set fstatvfs d_fstatvfs
12279 eval $inlibc
12280
12281
12282 : see if fsync exists
12283 set fsync d_fsync
12284 eval $inlibc
12285
12286 : see if ftello exists
12287 set ftello d_ftello
12288 eval $inlibc
12289 case "$longsize" in
12290 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12291 esac
12292
12293 : see if getcwd exists
12294 set getcwd d_getcwd
12295 eval $inlibc
12296
12297 : see if getespwnam exists
12298 set getespwnam d_getespwnam
12299 eval $inlibc
12300
12301
12302 : see if getfsstat exists
12303 set getfsstat d_getfsstat
12304 eval $inlibc
12305
12306 : see if getgrent exists
12307 set getgrent d_getgrent
12308 eval $inlibc
12309
12310 : see if getgrent_r exists
12311 set getgrent_r d_getgrent_r
12312 eval $inlibc
12313 case "$d_getgrent_r" in
12314 "$define")
12315         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12316         case "$d_getgrent_r_proto:$usethreads" in
12317         ":define")      d_getgrent_r_proto=define
12318                 set d_getgrent_r_proto getgrent_r $hdrs
12319                 eval $hasproto ;;
12320         *)      ;;
12321         esac
12322         case "$d_getgrent_r_proto" in
12323         define)
12324         case "$getgrent_r_proto" in
12325         ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12326         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12327         esac
12328         case "$getgrent_r_proto" in
12329         ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12330         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12331         esac
12332         case "$getgrent_r_proto" in
12333         ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12334         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12335         esac
12336         case "$getgrent_r_proto" in
12337         ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12338         ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12339         esac
12340         case "$getgrent_r_proto" in
12341         ''|0) try='int getgrent_r(struct group*, char*, int);'
12342         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12343         esac
12344         case "$getgrent_r_proto" in
12345         ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12346         ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12347         esac
12348         case "$getgrent_r_proto" in
12349         ''|0)   d_getgrent_r=undef
12350                 getgrent_r_proto=0
12351                 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12352         * )     case "$getgrent_r_proto" in
12353                 REENTRANT_PROTO*) ;;
12354                 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12355                 esac
12356                 echo "Prototype: $try" ;;
12357         esac
12358         ;;
12359         *)      case "$usethreads" in
12360                 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12361                 esac
12362                 d_getgrent_r=undef
12363                 getgrent_r_proto=0
12364                 ;;
12365         esac
12366         ;;
12367 *)      getgrent_r_proto=0
12368         ;;
12369 esac
12370
12371 : see if getgrgid_r exists
12372 set getgrgid_r d_getgrgid_r
12373 eval $inlibc
12374 case "$d_getgrgid_r" in
12375 "$define")
12376         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12377         case "$d_getgrgid_r_proto:$usethreads" in
12378         ":define")      d_getgrgid_r_proto=define
12379                 set d_getgrgid_r_proto getgrgid_r $hdrs
12380                 eval $hasproto ;;
12381         *)      ;;
12382         esac
12383         case "$d_getgrgid_r_proto" in
12384         define)
12385         case "$getgrgid_r_proto" in
12386         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12387         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12388         esac
12389         case "$getgrgid_r_proto" in
12390         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12391         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12392         esac
12393         case "$getgrgid_r_proto" in
12394         ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12395         ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12396         esac
12397         case "$getgrgid_r_proto" in
12398         ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12399         ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12400         esac
12401         case "$getgrgid_r_proto" in
12402         ''|0)   d_getgrgid_r=undef
12403                 getgrgid_r_proto=0
12404                 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12405         * )     case "$getgrgid_r_proto" in
12406                 REENTRANT_PROTO*) ;;
12407                 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12408                 esac
12409                 echo "Prototype: $try" ;;
12410         esac
12411         ;;
12412         *)      case "$usethreads" in
12413                 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12414                 esac
12415                 d_getgrgid_r=undef
12416                 getgrgid_r_proto=0
12417                 ;;
12418         esac
12419         ;;
12420 *)      getgrgid_r_proto=0
12421         ;;
12422 esac
12423
12424 : see if getgrnam_r exists
12425 set getgrnam_r d_getgrnam_r
12426 eval $inlibc
12427 case "$d_getgrnam_r" in
12428 "$define")
12429         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12430         case "$d_getgrnam_r_proto:$usethreads" in
12431         ":define")      d_getgrnam_r_proto=define
12432                 set d_getgrnam_r_proto getgrnam_r $hdrs
12433                 eval $hasproto ;;
12434         *)      ;;
12435         esac
12436         case "$d_getgrnam_r_proto" in
12437         define)
12438         case "$getgrnam_r_proto" in
12439         ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12440         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12441         esac
12442         case "$getgrnam_r_proto" in
12443         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12444         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12445         esac
12446         case "$getgrnam_r_proto" in
12447         ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12448         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12449         esac
12450         case "$getgrnam_r_proto" in
12451         ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12452         ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12453         esac
12454         case "$getgrnam_r_proto" in
12455         ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12456         ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12457         esac
12458         case "$getgrnam_r_proto" in
12459         ''|0)   d_getgrnam_r=undef
12460                 getgrnam_r_proto=0
12461                 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12462         * )     case "$getgrnam_r_proto" in
12463                 REENTRANT_PROTO*) ;;
12464                 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12465                 esac
12466                 echo "Prototype: $try" ;;
12467         esac
12468         ;;
12469         *)      case "$usethreads" in
12470                 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12471                 esac
12472                 d_getgrnam_r=undef
12473                 getgrnam_r_proto=0
12474                 ;;
12475         esac
12476         ;;
12477 *)      getgrnam_r_proto=0
12478         ;;
12479 esac
12480
12481 : see if gethostbyaddr exists
12482 set gethostbyaddr d_gethbyaddr
12483 eval $inlibc
12484
12485 : see if gethostbyname exists
12486 set gethostbyname d_gethbyname
12487 eval $inlibc
12488
12489 : see if gethostent exists
12490 set gethostent d_gethent
12491 eval $inlibc
12492
12493 : see how we will look up host name
12494 echo " "
12495 call=''
12496 if set gethostname val -f d_gethname; eval $csym; $val; then
12497         echo 'gethostname() found.' >&4
12498         d_gethname="$define"
12499         call=gethostname
12500 fi
12501 if set uname val -f d_uname; eval $csym; $val; then
12502         if ./xenix; then
12503                 $cat <<'EOM'
12504 uname() was found, but you're running xenix, and older versions of xenix
12505 have a broken uname(). If you don't really know whether your xenix is old
12506 enough to have a broken system call, use the default answer.
12507
12508 EOM
12509                 dflt=y
12510                 case "$d_uname" in
12511                 "$define") dflt=n;;
12512                 esac
12513                 rp='Is your uname() broken?'
12514                 . ./myread
12515                 case "$ans" in
12516                 n*) d_uname="$define"; call=uname;;
12517                 esac
12518         else
12519                 echo 'uname() found.' >&4
12520                 d_uname="$define"
12521                 case "$call" in
12522                 '') call=uname ;;
12523                 esac
12524         fi
12525 fi
12526 case "$d_gethname" in
12527 '') d_gethname="$undef";;
12528 esac
12529 case "$d_uname" in
12530 '') d_uname="$undef";;
12531 esac
12532 case "$d_uname$d_gethname" in
12533 *define*)
12534         dflt=n
12535         cat <<EOM
12536  
12537 Every now and then someone has a $call() that lies about the hostname
12538 but can't be fixed for political or economic reasons.  If you wish, I can
12539 pretend $call() isn't there and maybe compute hostname at run-time
12540 thanks to the '$phostname' command.
12541
12542 EOM
12543         rp="Shall I ignore $call() from now on?"
12544         . ./myread
12545         case "$ans" in
12546         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12547         esac;;
12548 esac
12549 case "$phostname" in
12550 '') aphostname='';;
12551 *) case "$aphostname" in
12552         /*) ;;
12553         *) set X $phostname
12554                 shift
12555                 file=$1
12556                 shift
12557                 file=`./loc $file $file $pth`
12558                 aphostname=`echo $file $*`
12559                 ;;
12560         esac
12561         ;;
12562 esac
12563 case "$d_uname$d_gethname" in
12564 *define*) ;;
12565 *)
12566         case "$phostname" in
12567         '')
12568                 echo "There will be no way for $package to get your hostname." >&4;;
12569         *)
12570         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12571                 ;;
12572         esac;;
12573 esac
12574 case "$d_phostname" in
12575 '') d_phostname="$undef";;
12576 esac
12577
12578 : see if gethostbyaddr_r exists
12579 set gethostbyaddr_r d_gethostbyaddr_r
12580 eval $inlibc
12581 case "$d_gethostbyaddr_r" in
12582 "$define")
12583         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12584         case "$d_gethostbyaddr_r_proto:$usethreads" in
12585         ":define")      d_gethostbyaddr_r_proto=define
12586                 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12587                 eval $hasproto ;;
12588         *)      ;;
12589         esac
12590         case "$d_gethostbyaddr_r_proto" in
12591         define)
12592         case "$gethostbyaddr_r_proto" in
12593         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12594         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12595         esac
12596         case "$gethostbyaddr_r_proto" in
12597         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12598         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12599         esac
12600         case "$gethostbyaddr_r_proto" in
12601         ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12602         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12603         esac
12604         case "$gethostbyaddr_r_proto" in
12605         ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12606         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12607         esac
12608         case "$gethostbyaddr_r_proto" in
12609         ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12610         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12611         esac
12612         case "$gethostbyaddr_r_proto" in
12613         ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12614         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12615         esac
12616         case "$gethostbyaddr_r_proto" in
12617         ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12618         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12619         esac
12620         case "$gethostbyaddr_r_proto" in
12621         ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12622         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12623         esac
12624         case "$gethostbyaddr_r_proto" in
12625         ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12626         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12627         esac
12628         case "$gethostbyaddr_r_proto" in
12629         ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12630         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12631         esac
12632         case "$gethostbyaddr_r_proto" in
12633         ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12634         ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12635         esac
12636         case "$gethostbyaddr_r_proto" in
12637         ''|0)   d_gethostbyaddr_r=undef
12638                 gethostbyaddr_r_proto=0
12639                 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12640         * )     case "$gethostbyaddr_r_proto" in
12641                 REENTRANT_PROTO*) ;;
12642                 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12643                 esac
12644                 echo "Prototype: $try" ;;
12645         esac
12646         ;;
12647         *)      case "$usethreads" in
12648                 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12649                 esac
12650                 d_gethostbyaddr_r=undef
12651                 gethostbyaddr_r_proto=0
12652                 ;;
12653         esac
12654         ;;
12655 *)      gethostbyaddr_r_proto=0
12656         ;;
12657 esac
12658
12659 : see if gethostbyname_r exists
12660 set gethostbyname_r d_gethostbyname_r
12661 eval $inlibc
12662 case "$d_gethostbyname_r" in
12663 "$define")
12664         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12665         case "$d_gethostbyname_r_proto:$usethreads" in
12666         ":define")      d_gethostbyname_r_proto=define
12667                 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12668                 eval $hasproto ;;
12669         *)      ;;
12670         esac
12671         case "$d_gethostbyname_r_proto" in
12672         define)
12673         case "$gethostbyname_r_proto" in
12674         ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12675         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12676         esac
12677         case "$gethostbyname_r_proto" in
12678         ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12679         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12680         esac
12681         case "$gethostbyname_r_proto" in
12682         ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12683         ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12684         esac
12685         case "$gethostbyname_r_proto" in
12686         ''|0)   d_gethostbyname_r=undef
12687                 gethostbyname_r_proto=0
12688                 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12689         * )     case "$gethostbyname_r_proto" in
12690                 REENTRANT_PROTO*) ;;
12691                 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12692                 esac
12693                 echo "Prototype: $try" ;;
12694         esac
12695         ;;
12696         *)      case "$usethreads" in
12697                 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12698                 esac
12699                 d_gethostbyname_r=undef
12700                 gethostbyname_r_proto=0
12701                 ;;
12702         esac
12703         ;;
12704 *)      gethostbyname_r_proto=0
12705         ;;
12706 esac
12707
12708 : see if gethostent_r exists
12709 set gethostent_r d_gethostent_r
12710 eval $inlibc
12711 case "$d_gethostent_r" in
12712 "$define")
12713         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12714         case "$d_gethostent_r_proto:$usethreads" in
12715         ":define")      d_gethostent_r_proto=define
12716                 set d_gethostent_r_proto gethostent_r $hdrs
12717                 eval $hasproto ;;
12718         *)      ;;
12719         esac
12720         case "$d_gethostent_r_proto" in
12721         define)
12722         case "$gethostent_r_proto" in
12723         ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12724         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12725         esac
12726         case "$gethostent_r_proto" in
12727         ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12728         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12729         esac
12730         case "$gethostent_r_proto" in
12731         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12732         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12733         esac
12734         case "$gethostent_r_proto" in
12735         ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12736         ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12737         esac
12738         case "$gethostent_r_proto" in
12739         ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12740         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12741         esac
12742         case "$gethostent_r_proto" in
12743         ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12744         ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12745         esac
12746         case "$gethostent_r_proto" in
12747         ''|0)   d_gethostent_r=undef
12748                 gethostent_r_proto=0
12749                 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12750         * )     case "$gethostent_r_proto" in
12751                 REENTRANT_PROTO*) ;;
12752                 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12753                 esac
12754                 echo "Prototype: $try" ;;
12755         esac
12756         ;;
12757         *)      case "$usethreads" in
12758                 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12759                 esac
12760                 d_gethostent_r=undef
12761                 gethostent_r_proto=0
12762                 ;;
12763         esac
12764         ;;
12765 *)      gethostent_r_proto=0
12766         ;;
12767 esac
12768
12769 : see if prototypes for various gethostxxx netdb.h functions are available
12770 echo " "
12771 set d_gethostprotos gethostent $i_netdb netdb.h
12772 eval $hasproto
12773
12774 : see if getitimer exists
12775 set getitimer d_getitimer
12776 eval $inlibc
12777
12778 : see if getlogin exists
12779 set getlogin d_getlogin
12780 eval $inlibc
12781
12782 : see if getlogin_r exists
12783 set getlogin_r d_getlogin_r
12784 eval $inlibc
12785 case "$d_getlogin_r" in
12786 "$define")
12787         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12788         case "$d_getlogin_r_proto:$usethreads" in
12789         ":define")      d_getlogin_r_proto=define
12790                 set d_getlogin_r_proto getlogin_r $hdrs
12791                 eval $hasproto ;;
12792         *)      ;;
12793         esac
12794         case "$d_getlogin_r_proto" in
12795         define)
12796         case "$getlogin_r_proto" in
12797         ''|0) try='int getlogin_r(char*, size_t);'
12798         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12799         esac
12800         case "$getlogin_r_proto" in
12801         ''|0) try='int getlogin_r(char*, int);'
12802         ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12803         esac
12804         case "$getlogin_r_proto" in
12805         ''|0) try='char* getlogin_r(char*, size_t);'
12806         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12807         esac
12808         case "$getlogin_r_proto" in
12809         ''|0) try='char* getlogin_r(char*, int);'
12810         ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12811         esac
12812         case "$getlogin_r_proto" in
12813         ''|0)   d_getlogin_r=undef
12814                 getlogin_r_proto=0
12815                 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12816         * )     case "$getlogin_r_proto" in
12817                 REENTRANT_PROTO*) ;;
12818                 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12819                 esac
12820                 echo "Prototype: $try" ;;
12821         esac
12822         ;;
12823         *)      case "$usethreads" in
12824                 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12825                 esac
12826                 d_getlogin_r=undef
12827                 getlogin_r_proto=0
12828                 ;;
12829         esac
12830         ;;
12831 *)      getlogin_r_proto=0
12832         ;;
12833 esac
12834
12835 : see if getmnt exists
12836 set getmnt d_getmnt
12837 eval $inlibc
12838
12839 : see if getmntent exists
12840 set getmntent d_getmntent
12841 eval $inlibc
12842
12843 : see if getnetbyaddr exists
12844 set getnetbyaddr d_getnbyaddr
12845 eval $inlibc
12846
12847 : see if getnetbyname exists
12848 set getnetbyname d_getnbyname
12849 eval $inlibc
12850
12851 : see if getnetent exists
12852 set getnetent d_getnent
12853 eval $inlibc
12854
12855 : see if getnetbyaddr_r exists
12856 set getnetbyaddr_r d_getnetbyaddr_r
12857 eval $inlibc
12858 case "$d_getnetbyaddr_r" in
12859 "$define")
12860         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12861         case "$d_getnetbyaddr_r_proto:$usethreads" in
12862         ":define")      d_getnetbyaddr_r_proto=define
12863                 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12864                 eval $hasproto ;;
12865         *)      ;;
12866         esac
12867         case "$d_getnetbyaddr_r_proto" in
12868         define)
12869         case "$getnetbyaddr_r_proto" in
12870         ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12871         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12872         esac
12873         case "$getnetbyaddr_r_proto" in
12874         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12875         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12876         esac
12877         case "$getnetbyaddr_r_proto" in
12878         ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12879         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12880         esac
12881         case "$getnetbyaddr_r_proto" in
12882         ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12883         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12884         esac
12885         case "$getnetbyaddr_r_proto" in
12886         ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12887         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12888         esac
12889         case "$getnetbyaddr_r_proto" in
12890         ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12891         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12892         esac
12893         case "$getnetbyaddr_r_proto" in
12894         ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12895         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12896         esac
12897         case "$getnetbyaddr_r_proto" in
12898         ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12899         ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12900         esac
12901         case "$getnetbyaddr_r_proto" in
12902         ''|0)   d_getnetbyaddr_r=undef
12903                 getnetbyaddr_r_proto=0
12904                 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12905         * )     case "$getnetbyaddr_r_proto" in
12906                 REENTRANT_PROTO*) ;;
12907                 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12908                 esac
12909                 echo "Prototype: $try" ;;
12910         esac
12911         ;;
12912         *)      case "$usethreads" in
12913                 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12914                 esac
12915                 d_getnetbyaddr_r=undef
12916                 getnetbyaddr_r_proto=0
12917                 ;;
12918         esac
12919         ;;
12920 *)      getnetbyaddr_r_proto=0
12921         ;;
12922 esac
12923
12924 : see if getnetbyname_r exists
12925 set getnetbyname_r d_getnetbyname_r
12926 eval $inlibc
12927 case "$d_getnetbyname_r" in
12928 "$define")
12929         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12930         case "$d_getnetbyname_r_proto:$usethreads" in
12931         ":define")      d_getnetbyname_r_proto=define
12932                 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12933                 eval $hasproto ;;
12934         *)      ;;
12935         esac
12936         case "$d_getnetbyname_r_proto" in
12937         define)
12938         case "$getnetbyname_r_proto" in
12939         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12940         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12941         esac
12942         case "$getnetbyname_r_proto" in
12943         ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12944         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12945         esac
12946         case "$getnetbyname_r_proto" in
12947         ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12948         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12949         esac
12950         case "$getnetbyname_r_proto" in
12951         ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12952         ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12953         esac
12954         case "$getnetbyname_r_proto" in
12955         ''|0)   d_getnetbyname_r=undef
12956                 getnetbyname_r_proto=0
12957                 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12958         * )     case "$getnetbyname_r_proto" in
12959                 REENTRANT_PROTO*) ;;
12960                 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12961                 esac
12962                 echo "Prototype: $try" ;;
12963         esac
12964         ;;
12965         *)      case "$usethreads" in
12966                 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12967                 esac
12968                 d_getnetbyname_r=undef
12969                 getnetbyname_r_proto=0
12970                 ;;
12971         esac
12972         ;;
12973 *)      getnetbyname_r_proto=0
12974         ;;
12975 esac
12976
12977 : see if getnetent_r exists
12978 set getnetent_r d_getnetent_r
12979 eval $inlibc
12980 case "$d_getnetent_r" in
12981 "$define")
12982         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12983         case "$d_getnetent_r_proto:$usethreads" in
12984         ":define")      d_getnetent_r_proto=define
12985                 set d_getnetent_r_proto getnetent_r $hdrs
12986                 eval $hasproto ;;
12987         *)      ;;
12988         esac
12989         case "$d_getnetent_r_proto" in
12990         define)
12991         case "$getnetent_r_proto" in
12992         ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12993         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12994         esac
12995         case "$getnetent_r_proto" in
12996         ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12997         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12998         esac
12999         case "$getnetent_r_proto" in
13000         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13001         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13002         esac
13003         case "$getnetent_r_proto" in
13004         ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13005         ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13006         esac
13007         case "$getnetent_r_proto" in
13008         ''|0) try='int getnetent_r(struct netent*, char*, int);'
13009         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13010         esac
13011         case "$getnetent_r_proto" in
13012         ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13013         ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13014         esac
13015         case "$getnetent_r_proto" in
13016         ''|0)   d_getnetent_r=undef
13017                 getnetent_r_proto=0
13018                 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13019         * )     case "$getnetent_r_proto" in
13020                 REENTRANT_PROTO*) ;;
13021                 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13022                 esac
13023                 echo "Prototype: $try" ;;
13024         esac
13025         ;;
13026         *)      case "$usethreads" in
13027                 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13028                 esac
13029                 d_getnetent_r=undef
13030                 getnetent_r_proto=0
13031                 ;;
13032         esac
13033         ;;
13034 *)      getnetent_r_proto=0
13035         ;;
13036 esac
13037
13038 : see if prototypes for various getnetxxx netdb.h functions are available
13039 echo " "
13040 set d_getnetprotos getnetent $i_netdb netdb.h
13041 eval $hasproto
13042
13043 : see if getpagesize exists
13044 set getpagesize d_getpagsz
13045 eval $inlibc
13046
13047
13048 : see if getprotobyname exists
13049 set getprotobyname d_getpbyname
13050 eval $inlibc
13051
13052 : see if getprotobynumber exists
13053 set getprotobynumber d_getpbynumber
13054 eval $inlibc
13055
13056 : see if getprotoent exists
13057 set getprotoent d_getpent
13058 eval $inlibc
13059
13060 : see if getpgid exists
13061 set getpgid d_getpgid
13062 eval $inlibc
13063
13064 : see if getpgrp2 exists
13065 set getpgrp2 d_getpgrp2
13066 eval $inlibc
13067
13068 : see if getppid exists
13069 set getppid d_getppid
13070 eval $inlibc
13071
13072 : see if getpriority exists
13073 set getpriority d_getprior
13074 eval $inlibc
13075
13076 : see if getprotobyname_r exists
13077 set getprotobyname_r d_getprotobyname_r
13078 eval $inlibc
13079 case "$d_getprotobyname_r" in
13080 "$define")
13081         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13082         case "$d_getprotobyname_r_proto:$usethreads" in
13083         ":define")      d_getprotobyname_r_proto=define
13084                 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13085                 eval $hasproto ;;
13086         *)      ;;
13087         esac
13088         case "$d_getprotobyname_r_proto" in
13089         define)
13090         case "$getprotobyname_r_proto" in
13091         ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13092         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13093         esac
13094         case "$getprotobyname_r_proto" in
13095         ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13096         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13097         esac
13098         case "$getprotobyname_r_proto" in
13099         ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13100         ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13101         esac
13102         case "$getprotobyname_r_proto" in
13103         ''|0)   d_getprotobyname_r=undef
13104                 getprotobyname_r_proto=0
13105                 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13106         * )     case "$getprotobyname_r_proto" in
13107                 REENTRANT_PROTO*) ;;
13108                 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13109                 esac
13110                 echo "Prototype: $try" ;;
13111         esac
13112         ;;
13113         *)      case "$usethreads" in
13114                 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13115                 esac
13116                 d_getprotobyname_r=undef
13117                 getprotobyname_r_proto=0
13118                 ;;
13119         esac
13120         ;;
13121 *)      getprotobyname_r_proto=0
13122         ;;
13123 esac
13124
13125 : see if getprotobynumber_r exists
13126 set getprotobynumber_r d_getprotobynumber_r
13127 eval $inlibc
13128 case "$d_getprotobynumber_r" in
13129 "$define")
13130         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13131         case "$d_getprotobynumber_r_proto:$usethreads" in
13132         ":define")      d_getprotobynumber_r_proto=define
13133                 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13134                 eval $hasproto ;;
13135         *)      ;;
13136         esac
13137         case "$d_getprotobynumber_r_proto" in
13138         define)
13139         case "$getprotobynumber_r_proto" in
13140         ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13141         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13142         esac
13143         case "$getprotobynumber_r_proto" in
13144         ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13145         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13146         esac
13147         case "$getprotobynumber_r_proto" in
13148         ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13149         ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13150         esac
13151         case "$getprotobynumber_r_proto" in
13152         ''|0)   d_getprotobynumber_r=undef
13153                 getprotobynumber_r_proto=0
13154                 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13155         * )     case "$getprotobynumber_r_proto" in
13156                 REENTRANT_PROTO*) ;;
13157                 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13158                 esac
13159                 echo "Prototype: $try" ;;
13160         esac
13161         ;;
13162         *)      case "$usethreads" in
13163                 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13164                 esac
13165                 d_getprotobynumber_r=undef
13166                 getprotobynumber_r_proto=0
13167                 ;;
13168         esac
13169         ;;
13170 *)      getprotobynumber_r_proto=0
13171         ;;
13172 esac
13173
13174 : see if getprotoent_r exists
13175 set getprotoent_r d_getprotoent_r
13176 eval $inlibc
13177 case "$d_getprotoent_r" in
13178 "$define")
13179         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13180         case "$d_getprotoent_r_proto:$usethreads" in
13181         ":define")      d_getprotoent_r_proto=define
13182                 set d_getprotoent_r_proto getprotoent_r $hdrs
13183                 eval $hasproto ;;
13184         *)      ;;
13185         esac
13186         case "$d_getprotoent_r_proto" in
13187         define)
13188         case "$getprotoent_r_proto" in
13189         ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13190         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13191         esac
13192         case "$getprotoent_r_proto" in
13193         ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13194         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13195         esac
13196         case "$getprotoent_r_proto" in
13197         ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13198         ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13199         esac
13200         case "$getprotoent_r_proto" in
13201         ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13202         ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13203         esac
13204         case "$getprotoent_r_proto" in
13205         ''|0)   d_getprotoent_r=undef
13206                 getprotoent_r_proto=0
13207                 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13208         * )     case "$getprotoent_r_proto" in
13209                 REENTRANT_PROTO*) ;;
13210                 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13211                 esac
13212                 echo "Prototype: $try" ;;
13213         esac
13214         ;;
13215         *)      case "$usethreads" in
13216                 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13217                 esac
13218                 d_getprotoent_r=undef
13219                 getprotoent_r_proto=0
13220                 ;;
13221         esac
13222         ;;
13223 *)      getprotoent_r_proto=0
13224         ;;
13225 esac
13226
13227 : see if prototypes for various getprotoxxx netdb.h functions are available
13228 echo " "
13229 set d_getprotoprotos getprotoent $i_netdb netdb.h
13230 eval $hasproto
13231
13232 : see if getprpwnam exists
13233 set getprpwnam d_getprpwnam
13234 eval $inlibc
13235
13236 : see if getpwent exists
13237 set getpwent d_getpwent
13238 eval $inlibc
13239
13240 : see if getpwent_r exists
13241 set getpwent_r d_getpwent_r
13242 eval $inlibc
13243 case "$d_getpwent_r" in
13244 "$define")
13245         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13246         case "$d_getpwent_r_proto:$usethreads" in
13247         ":define")      d_getpwent_r_proto=define
13248                 set d_getpwent_r_proto getpwent_r $hdrs
13249                 eval $hasproto ;;
13250         *)      ;;
13251         esac
13252         case "$d_getpwent_r_proto" in
13253         define)
13254         case "$getpwent_r_proto" in
13255         ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13256         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13257         esac
13258         case "$getpwent_r_proto" in
13259         ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13260         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13261         esac
13262         case "$getpwent_r_proto" in
13263         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13264         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13265         esac
13266         case "$getpwent_r_proto" in
13267         ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13268         ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13269         esac
13270         case "$getpwent_r_proto" in
13271         ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13272         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13273         esac
13274         case "$getpwent_r_proto" in
13275         ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13276         ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13277         esac
13278         case "$getpwent_r_proto" in
13279         ''|0)   d_getpwent_r=undef
13280                 getpwent_r_proto=0
13281                 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13282         * )     case "$getpwent_r_proto" in
13283                 REENTRANT_PROTO*) ;;
13284                 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13285                 esac
13286                 echo "Prototype: $try" ;;
13287         esac
13288         ;;
13289         *)      case "$usethreads" in
13290                 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13291                 esac
13292                 d_getpwent_r=undef
13293                 getpwent_r_proto=0
13294                 ;;
13295         esac
13296         ;;
13297 *)      getpwent_r_proto=0
13298         ;;
13299 esac
13300
13301 : see if getpwnam_r exists
13302 set getpwnam_r d_getpwnam_r
13303 eval $inlibc
13304 case "$d_getpwnam_r" in
13305 "$define")
13306         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13307         case "$d_getpwnam_r_proto:$usethreads" in
13308         ":define")      d_getpwnam_r_proto=define
13309                 set d_getpwnam_r_proto getpwnam_r $hdrs
13310                 eval $hasproto ;;
13311         *)      ;;
13312         esac
13313         case "$d_getpwnam_r_proto" in
13314         define)
13315         case "$getpwnam_r_proto" in
13316         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13317         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13318         esac
13319         case "$getpwnam_r_proto" in
13320         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13321         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13322         esac
13323         case "$getpwnam_r_proto" in
13324         ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13325         ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13326         esac
13327         case "$getpwnam_r_proto" in
13328         ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13329         ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13330         esac
13331         case "$getpwnam_r_proto" in
13332         ''|0)   d_getpwnam_r=undef
13333                 getpwnam_r_proto=0
13334                 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13335         * )     case "$getpwnam_r_proto" in
13336                 REENTRANT_PROTO*) ;;
13337                 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13338                 esac
13339                 echo "Prototype: $try" ;;
13340         esac
13341         ;;
13342         *)      case "$usethreads" in
13343                 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13344                 esac
13345                 d_getpwnam_r=undef
13346                 getpwnam_r_proto=0
13347                 ;;
13348         esac
13349         ;;
13350 *)      getpwnam_r_proto=0
13351         ;;
13352 esac
13353
13354 : see if getpwuid_r exists
13355 set getpwuid_r d_getpwuid_r
13356 eval $inlibc
13357 case "$d_getpwuid_r" in
13358 "$define")
13359         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13360         case "$d_getpwuid_r_proto:$usethreads" in
13361         ":define")      d_getpwuid_r_proto=define
13362                 set d_getpwuid_r_proto getpwuid_r $hdrs
13363                 eval $hasproto ;;
13364         *)      ;;
13365         esac
13366         case "$d_getpwuid_r_proto" in
13367         define)
13368         case "$getpwuid_r_proto" in
13369         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13370         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13371         esac
13372         case "$getpwuid_r_proto" in
13373         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13374         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13375         esac
13376         case "$getpwuid_r_proto" in
13377         ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13378         ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13379         esac
13380         case "$getpwuid_r_proto" in
13381         ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13382         ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13383         esac
13384         case "$getpwuid_r_proto" in
13385         ''|0)   d_getpwuid_r=undef
13386                 getpwuid_r_proto=0
13387                 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13388         * )     case "$getpwuid_r_proto" in
13389                 REENTRANT_PROTO*) ;;
13390                 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13391                 esac
13392                 echo "Prototype: $try" ;;
13393         esac
13394         ;;
13395         *)      case "$usethreads" in
13396                 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13397                 esac
13398                 d_getpwuid_r=undef
13399                 getpwuid_r_proto=0
13400                 ;;
13401         esac
13402         ;;
13403 *)      getpwuid_r_proto=0
13404         ;;
13405 esac
13406
13407
13408 : see if getservbyname exists
13409 set getservbyname d_getsbyname
13410 eval $inlibc
13411
13412 : see if getservbyport exists
13413 set getservbyport d_getsbyport
13414 eval $inlibc
13415
13416 : see if getservent exists
13417 set getservent d_getsent
13418 eval $inlibc
13419
13420 : see if getservbyname_r exists
13421 set getservbyname_r d_getservbyname_r
13422 eval $inlibc
13423 case "$d_getservbyname_r" in
13424 "$define")
13425         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13426         case "$d_getservbyname_r_proto:$usethreads" in
13427         ":define")      d_getservbyname_r_proto=define
13428                 set d_getservbyname_r_proto getservbyname_r $hdrs
13429                 eval $hasproto ;;
13430         *)      ;;
13431         esac
13432         case "$d_getservbyname_r_proto" in
13433         define)
13434         case "$getservbyname_r_proto" in
13435         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13436         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13437         esac
13438         case "$getservbyname_r_proto" in
13439         ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13440         ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13441         esac
13442         case "$getservbyname_r_proto" in
13443         ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13444         ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13445         esac
13446         case "$getservbyname_r_proto" in
13447         ''|0)   d_getservbyname_r=undef
13448                 getservbyname_r_proto=0
13449                 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13450         * )     case "$getservbyname_r_proto" in
13451                 REENTRANT_PROTO*) ;;
13452                 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13453                 esac
13454                 echo "Prototype: $try" ;;
13455         esac
13456         ;;
13457         *)      case "$usethreads" in
13458                 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13459                 esac
13460                 d_getservbyname_r=undef
13461                 getservbyname_r_proto=0
13462                 ;;
13463         esac
13464         ;;
13465 *)      getservbyname_r_proto=0
13466         ;;
13467 esac
13468
13469 : see if getservbyport_r exists
13470 set getservbyport_r d_getservbyport_r
13471 eval $inlibc
13472 case "$d_getservbyport_r" in
13473 "$define")
13474         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13475         case "$d_getservbyport_r_proto:$usethreads" in
13476         ":define")      d_getservbyport_r_proto=define
13477                 set d_getservbyport_r_proto getservbyport_r $hdrs
13478                 eval $hasproto ;;
13479         *)      ;;
13480         esac
13481         case "$d_getservbyport_r_proto" in
13482         define)
13483         case "$getservbyport_r_proto" in
13484         ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13485         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13486         esac
13487         case "$getservbyport_r_proto" in
13488         ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13489         ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13490         esac
13491         case "$getservbyport_r_proto" in
13492         ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13493         ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13494         esac
13495         case "$getservbyport_r_proto" in
13496         ''|0)   d_getservbyport_r=undef
13497                 getservbyport_r_proto=0
13498                 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13499         * )     case "$getservbyport_r_proto" in
13500                 REENTRANT_PROTO*) ;;
13501                 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13502                 esac
13503                 echo "Prototype: $try" ;;
13504         esac
13505         ;;
13506         *)      case "$usethreads" in
13507                 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13508                 esac
13509                 d_getservbyport_r=undef
13510                 getservbyport_r_proto=0
13511                 ;;
13512         esac
13513         ;;
13514 *)      getservbyport_r_proto=0
13515         ;;
13516 esac
13517
13518 : see if getservent_r exists
13519 set getservent_r d_getservent_r
13520 eval $inlibc
13521 case "$d_getservent_r" in
13522 "$define")
13523         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13524         case "$d_getservent_r_proto:$usethreads" in
13525         ":define")      d_getservent_r_proto=define
13526                 set d_getservent_r_proto getservent_r $hdrs
13527                 eval $hasproto ;;
13528         *)      ;;
13529         esac
13530         case "$d_getservent_r_proto" in
13531         define)
13532         case "$getservent_r_proto" in
13533         ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13534         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13535         esac
13536         case "$getservent_r_proto" in
13537         ''|0) try='int getservent_r(struct servent*, char*, int);'
13538         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13539         esac
13540         case "$getservent_r_proto" in
13541         ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13542         ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13543         esac
13544         case "$getservent_r_proto" in
13545         ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13546         ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13547         esac
13548         case "$getservent_r_proto" in
13549         ''|0)   d_getservent_r=undef
13550                 getservent_r_proto=0
13551                 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13552         * )     case "$getservent_r_proto" in
13553                 REENTRANT_PROTO*) ;;
13554                 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13555                 esac
13556                 echo "Prototype: $try" ;;
13557         esac
13558         ;;
13559         *)      case "$usethreads" in
13560                 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13561                 esac
13562                 d_getservent_r=undef
13563                 getservent_r_proto=0
13564                 ;;
13565         esac
13566         ;;
13567 *)      getservent_r_proto=0
13568         ;;
13569 esac
13570
13571 : see if prototypes for various getservxxx netdb.h functions are available
13572 echo " "
13573 set d_getservprotos getservent $i_netdb netdb.h
13574 eval $hasproto
13575
13576 : see if getspnam exists
13577 set getspnam d_getspnam
13578 eval $inlibc
13579
13580 : see if this is a shadow.h system
13581 set shadow.h i_shadow
13582 eval $inhdr
13583
13584 : see if getspnam_r exists
13585 set getspnam_r d_getspnam_r
13586 eval $inlibc
13587 case "$d_getspnam_r" in
13588 "$define")
13589         hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13590         case "$d_getspnam_r_proto:$usethreads" in
13591         ":define")      d_getspnam_r_proto=define
13592                 set d_getspnam_r_proto getspnam_r $hdrs
13593                 eval $hasproto ;;
13594         *)      ;;
13595         esac
13596         case "$d_getspnam_r_proto" in
13597         define)
13598         case "$getspnam_r_proto" in
13599         ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13600         ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13601         esac
13602         case "$getspnam_r_proto" in
13603         ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13604         ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13605         esac
13606         case "$getspnam_r_proto" in
13607         ''|0)   d_getspnam_r=undef
13608                 getspnam_r_proto=0
13609                 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13610         * )     case "$getspnam_r_proto" in
13611                 REENTRANT_PROTO*) ;;
13612                 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13613                 esac
13614                 echo "Prototype: $try" ;;
13615         esac
13616         ;;
13617         *)      case "$usethreads" in
13618                 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13619                 esac
13620                 d_getspnam_r=undef
13621                 getspnam_r_proto=0
13622                 ;;
13623         esac
13624         ;;
13625 *)      getspnam_r_proto=0
13626         ;;
13627 esac
13628
13629 : see if gettimeofday or ftime exists
13630 set gettimeofday d_gettimeod
13631 eval $inlibc
13632 case "$d_gettimeod" in
13633 "$undef")
13634         set ftime d_ftime 
13635         eval $inlibc
13636         ;;
13637 *)
13638         val="$undef"; set d_ftime; eval $setvar
13639         ;;
13640 esac
13641 case "$d_gettimeod$d_ftime" in
13642 "$undef$undef")
13643         echo " "
13644         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13645         ;;
13646 esac
13647
13648 : see if gmtime_r exists
13649 set gmtime_r d_gmtime_r
13650 eval $inlibc
13651 case "$d_gmtime_r" in
13652 "$define")
13653         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13654         case "$d_gmtime_r_proto:$usethreads" in
13655         ":define")      d_gmtime_r_proto=define
13656                 set d_gmtime_r_proto gmtime_r $hdrs
13657                 eval $hasproto ;;
13658         *)      ;;
13659         esac
13660         case "$d_gmtime_r_proto" in
13661         define)
13662         case "$gmtime_r_proto" in
13663         ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13664         ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13665         esac
13666         case "$gmtime_r_proto" in
13667         ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13668         ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13669         esac
13670         case "$gmtime_r_proto" in
13671         ''|0)   d_gmtime_r=undef
13672                 gmtime_r_proto=0
13673                 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13674         * )     case "$gmtime_r_proto" in
13675                 REENTRANT_PROTO*) ;;
13676                 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13677                 esac
13678                 echo "Prototype: $try" ;;
13679         esac
13680         ;;
13681         *)      case "$usethreads" in
13682                 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13683                 esac
13684                 d_gmtime_r=undef
13685                 gmtime_r_proto=0
13686                 ;;
13687         esac
13688         ;;
13689 *)      gmtime_r_proto=0
13690         ;;
13691 esac
13692
13693 : see if hasmntopt exists
13694 set hasmntopt d_hasmntopt
13695 eval $inlibc
13696
13697 : see if this is a netinet/in.h or sys/in.h system
13698 set netinet/in.h i_niin sys/in.h i_sysin
13699 eval $inhdr
13700
13701 : see if arpa/inet.h has to be included
13702 set arpa/inet.h i_arpainet
13703 eval $inhdr
13704
13705 : see if htonl --and friends-- exists
13706 val=''
13707 set htonl val
13708 eval $inlibc
13709
13710 : Maybe they are macros.
13711 case "$val" in
13712 $undef)
13713         $cat >htonl.c <<EOM
13714 #include <stdio.h>
13715 #include <sys/types.h>
13716 #$i_niin I_NETINET_IN
13717 #$i_sysin I_SYS_IN
13718 #$i_arpainet I_ARPA_INET
13719 #ifdef I_NETINET_IN
13720 #include <netinet/in.h>
13721 #endif
13722 #ifdef I_SYS_IN
13723 #include <sys/in.h>
13724 #endif
13725 #ifdef I_ARPA_INET
13726 #include <arpa/inet.h>
13727 #endif
13728 #ifdef htonl
13729 printf("Defined as a macro.");
13730 #endif
13731 EOM
13732         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13733         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13734                 val="$define"
13735                 echo "But it seems to be defined as a macro." >&4
13736         fi
13737         $rm -f htonl.?
13738         ;;
13739 esac
13740 set d_htonl
13741 eval $setvar
13742
13743 : see if ilogbl exists
13744 set ilogbl d_ilogbl
13745 eval $inlibc
13746
13747 : index or strchr
13748 echo " "
13749 if set index val -f; eval $csym; $val; then
13750         if set strchr val -f d_strchr; eval $csym; $val; then
13751                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13752                         val="$define"
13753                         vali="$undef"
13754                         echo "strchr() found." >&4
13755                 else
13756                         val="$undef"
13757                         vali="$define"
13758                         echo "index() found." >&4
13759                 fi
13760         else
13761                 val="$undef"
13762                 vali="$define"
13763                 echo "index() found." >&4
13764         fi
13765 else
13766         if set strchr val -f d_strchr; eval $csym; $val; then
13767                 val="$define"
13768                 vali="$undef"
13769                 echo "strchr() found." >&4
13770         else
13771                 echo "No index() or strchr() found!" >&4
13772                 val="$undef"
13773                 vali="$undef"
13774         fi
13775 fi
13776 set d_strchr; eval $setvar
13777 val="$vali"
13778 set d_index; eval $setvar
13779
13780 : check whether inet_aton exists
13781 set inet_aton d_inetaton
13782 eval $inlibc
13783
13784 : Look for isascii
13785 echo " "
13786 $cat >isascii.c <<EOCP
13787 #include <stdio.h>
13788 #include <ctype.h>
13789 #$i_stdlib I_STDLIB
13790 #ifdef I_STDLIB
13791 #include <stdlib.h>
13792 #endif
13793 int main() {
13794         int c = 'A';
13795         if (isascii(c))
13796                 exit(0);
13797         else
13798                 exit(1);
13799 }
13800 EOCP
13801 set isascii
13802 if eval $compile; then
13803         echo "isascii() found." >&4
13804         val="$define"
13805 else
13806         echo "isascii() NOT found." >&4
13807         val="$undef"
13808 fi
13809 set d_isascii
13810 eval $setvar
13811 $rm -f isascii*
13812
13813 : see if isfinite exists
13814 set isfinite d_isfinite
13815 eval $inlibc
13816
13817 : see if isinf exists
13818 set isinf d_isinf
13819 eval $inlibc
13820
13821 : see if isnan exists
13822 set isnan d_isnan
13823 eval $inlibc
13824
13825 : see if isnanl exists
13826 set isnanl d_isnanl
13827 eval $inlibc
13828
13829 : see if killpg exists
13830 set killpg d_killpg
13831 eval $inlibc
13832
13833 : see if lchown exists
13834 echo " "
13835 $cat > try.c <<'EOCP'
13836 /* System header to define __stub macros and hopefully few prototypes,
13837     which can conflict with char lchown(); below.  */
13838 #include <assert.h>
13839 /* Override any gcc2 internal prototype to avoid an error.  */
13840 /* We use char because int might match the return type of a gcc2
13841    builtin and then its argument prototype would still apply.  */
13842 char lchown();
13843 int main() {
13844     /*  The GNU C library defines this for functions which it implements
13845         to always fail with ENOSYS.  Some functions are actually named
13846         something starting with __ and the normal name is an alias.  */
13847 #if defined (__stub_lchown) || defined (__stub___lchown)
13848 choke me
13849 #else
13850 lchown();
13851 #endif
13852 ; return 0; }
13853 EOCP
13854 set try
13855 if eval $compile; then
13856     $echo "lchown() found." >&4
13857     val="$define"
13858 else
13859     $echo "lchown() NOT found." >&4
13860     val="$undef"
13861 fi
13862 set d_lchown
13863 eval $setvar
13864
13865 : See if number of significant digits in a double precision number is known
13866 echo " "
13867 $cat >ldbl_dig.c <<EOM
13868 #$i_limits I_LIMITS
13869 #$i_float I_FLOAT
13870 #ifdef I_LIMITS
13871 #include <limits.h>
13872 #endif
13873 #ifdef I_FLOAT
13874 #include <float.h>
13875 #endif
13876 #ifdef LDBL_DIG
13877 printf("Contains LDBL_DIG");
13878 #endif
13879 EOM
13880 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13881 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13882         echo "LDBL_DIG found." >&4
13883         val="$define"
13884 else
13885         echo "LDBL_DIG NOT found." >&4
13886         val="$undef"
13887 fi
13888 $rm -f ldbl_dig.?
13889 set d_ldbl_dig
13890 eval $setvar
13891
13892 : see if link exists
13893 set link d_link
13894 eval $inlibc
13895
13896 : see if localtime_r exists
13897 set localtime_r d_localtime_r
13898 eval $inlibc
13899 case "$d_localtime_r" in
13900 "$define")
13901         hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13902         case "$d_localtime_r_proto:$usethreads" in
13903         ":define")      d_localtime_r_proto=define
13904                 set d_localtime_r_proto localtime_r $hdrs
13905                 eval $hasproto ;;
13906         *)      ;;
13907         esac
13908         case "$d_localtime_r_proto" in
13909         define)
13910         case "$localtime_r_proto" in
13911         ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13912         ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13913         esac
13914         case "$localtime_r_proto" in
13915         ''|0) try='int localtime_r(const time_t*, struct tm*);'
13916         ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13917         esac
13918         case "$localtime_r_proto" in
13919         ''|0)   d_localtime_r=undef
13920                 localtime_r_proto=0
13921                 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13922         * )     case "$localtime_r_proto" in
13923                 REENTRANT_PROTO*) ;;
13924                 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13925                 esac
13926                 echo "Prototype: $try" ;;
13927         esac
13928         ;;
13929         *)      case "$usethreads" in
13930                 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13931                 esac
13932                 d_localtime_r=undef
13933                 localtime_r_proto=0
13934                 ;;
13935         esac
13936         ;;
13937 *)      localtime_r_proto=0
13938         ;;
13939 esac
13940
13941 : see if localeconv exists
13942 set localeconv d_locconv
13943 eval $inlibc
13944
13945 : see if lockf exists
13946 set lockf d_lockf
13947 eval $inlibc
13948
13949 : see if prototype for lseek is available
13950 echo " "
13951 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13952 eval $hasproto
13953
13954 : see if lstat exists
13955 set lstat d_lstat
13956 eval $inlibc
13957
13958 : see if madvise exists
13959 set madvise d_madvise
13960 eval $inlibc
13961
13962 : see if mblen exists
13963 set mblen d_mblen
13964 eval $inlibc
13965
13966 : see if mbstowcs exists
13967 set mbstowcs d_mbstowcs
13968 eval $inlibc
13969
13970 : see if mbtowc exists
13971 set mbtowc d_mbtowc
13972 eval $inlibc
13973
13974 : see if memchr exists
13975 set memchr d_memchr
13976 eval $inlibc
13977
13978 : see if memcmp exists
13979 set memcmp d_memcmp
13980 eval $inlibc
13981
13982 : see if memcpy exists
13983 set memcpy d_memcpy
13984 eval $inlibc
13985
13986 : see if memmove exists
13987 set memmove d_memmove
13988 eval $inlibc
13989
13990 : see if memset exists
13991 set memset d_memset
13992 eval $inlibc
13993
13994 : see if mkdir exists
13995 set mkdir d_mkdir
13996 eval $inlibc
13997
13998 : see if mkdtemp exists
13999 set mkdtemp d_mkdtemp
14000 eval $inlibc
14001
14002 : see if mkfifo exists
14003 set mkfifo d_mkfifo
14004 eval $inlibc
14005
14006 : see if mkstemp exists
14007 set mkstemp d_mkstemp
14008 eval $inlibc
14009
14010 : see if mkstemps exists
14011 set mkstemps d_mkstemps
14012 eval $inlibc
14013
14014 : see if mktime exists
14015 set mktime d_mktime
14016 eval $inlibc
14017
14018 : see if this is a sys/mman.h system
14019 set sys/mman.h i_sysmman
14020 eval $inhdr
14021
14022 : see if mmap exists
14023 set mmap d_mmap
14024 eval $inlibc
14025 : see what shmat returns
14026 : default to something harmless
14027 mmaptype='void *'
14028 case "$i_sysmman$d_mmap" in
14029 "$define$define")
14030         $cat >mmap.c <<'END'
14031 #include <sys/mman.h>
14032 void *mmap();
14033 END
14034         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14035                 mmaptype='void *'
14036         else
14037                 mmaptype='caddr_t'
14038         fi
14039         echo "and it returns ($mmaptype)." >&4
14040         ;;
14041 esac
14042
14043
14044
14045 : see if sqrtl exists
14046 set sqrtl d_sqrtl
14047 eval $inlibc
14048
14049 : see if scalbnl exists
14050 set scalbnl d_scalbnl
14051 eval $inlibc
14052
14053 : see if modfl exists
14054 set modfl d_modfl
14055 eval $inlibc
14056
14057 : see if prototype for modfl is available
14058 echo " "
14059 set d_modflproto modfl math.h
14060 eval $hasproto
14061
14062 d_modfl_pow32_bug="$undef"
14063
14064 case "$d_longdbl$d_modfl" in
14065 $define$define)
14066         $cat <<EOM
14067 Checking to see whether your modfl() is okay for large values...
14068 EOM
14069 $cat >try.c <<EOCP
14070 #include <math.h> 
14071 #include <stdio.h>
14072 EOCP
14073 if $test "X$d_modflproto" != "X$define"; then
14074         $cat >>try.c <<EOCP
14075 /* Sigh. many current glibcs provide the function, but do not prototype it.  */ 
14076 long double modfl (long double, long double *);
14077 EOCP
14078 fi
14079 $cat >>try.c <<EOCP
14080 int main() {
14081     long double nv = 4294967303.15;
14082     long double v, w;
14083     v = modfl(nv, &w);         
14084 #ifdef __GLIBC__
14085     printf("glibc");
14086 #endif
14087     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14088     return 0;
14089 }
14090 EOCP
14091         case "$osname:$gccversion" in
14092         aix:)   saveccflags="$ccflags"
14093                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14094         esac
14095         set try
14096         if eval $compile; then
14097                 foo=`$run ./try`
14098                 case "$foo" in
14099                 *" 4294967303.150000 1.150000 4294967302.000000")
14100                         echo >&4 "Your modfl() is broken for large values."
14101                         d_modfl_pow32_bug="$define"
14102                         case "$foo" in
14103                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14104                         ;;
14105                         esac
14106                         ;;
14107                 *" 4294967303.150000 0.150000 4294967303.000000")
14108                         echo >&4 "Your modfl() seems okay for large values."
14109                         ;;
14110                 *)      echo >&4 "I don't understand your modfl() at all."
14111                         d_modfl="$undef"
14112                         ;;
14113                 esac
14114                 $rm -f try.* try core core.try.*
14115         else
14116                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14117                 d_modfl="$undef"
14118         fi
14119         case "$osname:$gccversion" in
14120         aix:)   ccflags="$saveccflags" ;; # restore
14121         esac
14122         ;;
14123 esac
14124
14125 if $test "$uselongdouble" = "$define"; then
14126     message=""
14127     if $test "$d_sqrtl" != "$define"; then
14128         message="$message sqrtl"
14129     fi
14130     if $test "$d_modfl" != "$define"; then
14131         if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14132             echo "You have both aintl and copysignl, so I can emulate modfl."
14133         else
14134             message="$message modfl"
14135         fi
14136     fi
14137     if $test "$d_frexpl" != "$define"; then
14138         if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14139             echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14140         else
14141             message="$message frexpl"
14142         fi
14143     fi
14144
14145     if $test "$message" != ""; then
14146         $cat <<EOM >&4
14147
14148 *** You requested the use of long doubles but you do not seem to have
14149 *** the following mathematical functions needed for long double support:
14150 ***    $message
14151 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14152 *** Cannot continue, aborting.
14153
14154 EOM
14155
14156         exit 1
14157     fi
14158 fi
14159
14160 : see if mprotect exists
14161 set mprotect d_mprotect
14162 eval $inlibc
14163
14164 : see if msgctl exists
14165 set msgctl d_msgctl
14166 eval $inlibc
14167
14168 : see if msgget exists
14169 set msgget d_msgget
14170 eval $inlibc
14171
14172 : see if msgsnd exists
14173 set msgsnd d_msgsnd
14174 eval $inlibc
14175
14176 : see if msgrcv exists
14177 set msgrcv d_msgrcv
14178 eval $inlibc
14179
14180 : see how much of the 'msg*(2)' library is present.
14181 h_msg=true
14182 echo " "
14183 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14184 *"$undef"*) h_msg=false;;
14185 esac
14186 case "$osname" in
14187 freebsd)
14188     case "`ipcs 2>&1`" in
14189     "SVID messages"*"not configured"*)
14190         echo "Your $osname does not have the msg*(2) configured." >&4
14191         h_msg=false
14192         val="$undef"
14193         set msgctl d_msgctl
14194         eval $setvar
14195         set msgget d_msgget
14196         eval $setvar
14197         set msgsnd d_msgsnd
14198         eval $setvar
14199         set msgrcv d_msgrcv
14200         eval $setvar
14201         ;;
14202     esac
14203     ;;
14204 esac
14205 : we could also check for sys/ipc.h ...
14206 if $h_msg && $test `./findhdr sys/msg.h`; then
14207         echo "You have the full msg*(2) library." >&4
14208         val="$define"
14209 else
14210         echo "You don't have the full msg*(2) library." >&4
14211         val="$undef"
14212 fi
14213 set d_msg
14214 eval $setvar
14215
14216
14217 echo " "
14218 echo "Checking to see if your system supports struct msghdr..." >&4
14219 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14220 eval $hasstruct
14221 case "$d_msghdr_s" in
14222 "$define")      echo "Yes, it does."   ;;
14223 *)              echo "No, it doesn't." ;;
14224 esac
14225
14226
14227 : see if msync exists
14228 set msync d_msync
14229 eval $inlibc
14230
14231 : see if munmap exists
14232 set munmap d_munmap
14233 eval $inlibc
14234
14235 : see if nice exists
14236 set nice d_nice
14237 eval $inlibc
14238
14239 : see if this is a langinfo.h system
14240 set langinfo.h i_langinfo
14241 eval $inhdr
14242
14243 : see if nl_langinfo exists
14244 set nl_langinfo d_nl_langinfo
14245 eval $inlibc
14246
14247 : check for length of character
14248 echo " "
14249 case "$charsize" in
14250 '')
14251         echo "Checking to see how big your characters are (hey, you never know)..." >&4
14252         $cat >try.c <<EOCP
14253 #include <stdio.h>
14254 #$i_stdlib I_STDLIB
14255 #ifdef I_STDLIB
14256 #include <stdlib.h>
14257 #endif
14258 int main()
14259 {
14260     printf("%d\n", (int)sizeof(char));
14261     exit(0);
14262 }
14263 EOCP
14264         set try
14265         if eval $compile_ok; then
14266                 dflt=`$run ./try`
14267         else
14268                 dflt='1'
14269                 echo "(I can't seem to compile the test program.  Guessing...)"
14270         fi
14271         ;;
14272 *)
14273         dflt="$charsize"
14274         ;;
14275 esac
14276 rp="What is the size of a character (in bytes)?"
14277 . ./myread
14278 charsize="$ans"
14279 $rm -f try.c try
14280
14281 : check for volatile keyword
14282 echo " "
14283 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14284 $cat >try.c <<'EOCP'
14285 int main()
14286 {
14287         typedef struct _goo_struct goo_struct;
14288         goo_struct * volatile goo = ((goo_struct *)0);
14289         struct _goo_struct {
14290                 long long_int;
14291                 int reg_int;
14292                 char char_var;
14293         };
14294         typedef unsigned short foo_t;
14295         char *volatile foo;
14296         volatile int bar;
14297         volatile foo_t blech;
14298         foo = foo;
14299 }
14300 EOCP
14301 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14302         val="$define"
14303         echo "Yup, it does."
14304 else
14305         val="$undef"
14306         echo "Nope, it doesn't."
14307 fi
14308 set d_volatile
14309 eval $setvar
14310 $rm -f try.*
14311
14312
14313 echo " "
14314 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14315
14316 case "$use64bitint:$d_quad:$quadtype" in
14317 define:define:?*)
14318         ivtype="$quadtype"
14319         uvtype="$uquadtype"
14320         ivsize=8
14321         uvsize=8
14322         ;;
14323 *)      ivtype="long"
14324         uvtype="unsigned long"
14325         ivsize=$longsize
14326         uvsize=$longsize
14327         ;;
14328 esac
14329
14330 case "$uselongdouble:$d_longdbl" in
14331 define:define)
14332         nvtype="long double"
14333         nvsize=$longdblsize
14334         ;;
14335 *)      nvtype=double
14336         nvsize=$doublesize
14337         ;;
14338 esac
14339
14340 $echo "(IV will be "$ivtype", $ivsize bytes)"
14341 $echo "(UV will be "$uvtype", $uvsize bytes)"
14342 $echo "(NV will be "$nvtype", $nvsize bytes)"
14343
14344 $cat >try.c <<EOCP
14345 #$i_inttypes I_INTTYPES
14346 #ifdef I_INTTYPES
14347 #include <inttypes.h>
14348 #endif
14349 #include <stdio.h>
14350 int main() {
14351 #ifdef INT8
14352    int8_t i =  INT8_MAX;
14353   uint8_t u = UINT8_MAX;
14354   printf("int8_t\n");
14355 #endif
14356 #ifdef INT16
14357    int16_t i =  INT16_MAX;
14358   uint16_t i = UINT16_MAX;
14359   printf("int16_t\n");
14360 #endif
14361 #ifdef INT32
14362    int32_t i =  INT32_MAX;
14363   uint32_t u = UINT32_MAX;
14364   printf("int32_t\n");
14365 #endif
14366 }
14367 EOCP
14368
14369 case "$i8type" in
14370 '')     case "$charsize" in
14371         1)      i8type=char
14372                 u8type="unsigned char"
14373                 i8size=$charsize
14374                 u8size=$charsize
14375                 ;;
14376         esac
14377         ;;
14378 esac
14379 case "$i8type" in
14380 '')     set try -DINT8
14381         if eval $compile; then
14382                 case "`$run ./try`" in
14383                 int8_t) i8type=int8_t
14384                         u8type=uint8_t
14385                         i8size=1
14386                         u8size=1
14387                         ;;
14388                 esac
14389         fi
14390         ;;
14391 esac
14392 case "$i8type" in
14393 '')     if $test $charsize -ge 1; then
14394                 i8type=char
14395                 u8type="unsigned char"
14396                 i8size=$charsize
14397                 u8size=$charsize
14398         fi
14399         ;;
14400 esac
14401
14402 case "$i16type" in
14403 '')     case "$shortsize" in
14404         2)      i16type=short
14405                 u16type="unsigned short"
14406                 i16size=$shortsize
14407                 u16size=$shortsize
14408                 ;;
14409         esac
14410         ;;
14411 esac
14412 case "$i16type" in
14413 '')     set try -DINT16
14414         if eval $compile; then
14415                 case "`$run ./try`" in
14416                 int16_t)
14417                         i16type=int16_t
14418                         u16type=uint16_t
14419                         i16size=2
14420                         u16size=2
14421                         ;;
14422                 esac
14423         fi
14424         ;;
14425 esac
14426 case "$i16type" in
14427 '')     if $test $shortsize -ge 2; then
14428                 i16type=short
14429                 u16type="unsigned short"
14430                 i16size=$shortsize
14431                 u16size=$shortsize
14432         fi
14433         ;;
14434 esac
14435
14436 case "$i32type" in
14437 '')     case "$longsize" in
14438         4)      i32type=long
14439                 u32type="unsigned long"
14440                 i32size=$longsize
14441                 u32size=$longsize
14442                 ;;
14443         *)      case "$intsize" in
14444                 4)      i32type=int
14445                         u32type="unsigned int"
14446                         i32size=$intsize
14447                         u32size=$intsize
14448                         ;;
14449                 esac
14450                 ;;
14451         esac
14452         ;;
14453 esac
14454 case "$i32type" in
14455 '')     set try -DINT32
14456         if eval $compile; then
14457                 case "`$run ./try`" in
14458                 int32_t)
14459                         i32type=int32_t
14460                         u32type=uint32_t
14461                         i32size=4
14462                         u32size=4
14463                         ;;
14464                 esac
14465         fi
14466         ;;
14467 esac
14468 case "$i32type" in
14469 '')     if $test $intsize -ge 4; then
14470                 i32type=int
14471                 u32type="unsigned int"
14472                 i32size=$intsize
14473                 u32size=$intsize
14474         fi
14475         ;;
14476 esac
14477
14478 case "$i64type" in
14479 '')     case "$d_quad:$quadtype" in
14480         define:?*)
14481                 i64type="$quadtype"
14482                 u64type="$uquadtype"
14483                 i64size=8
14484                 u64size=8
14485                 ;;
14486         esac
14487         ;;
14488 esac
14489
14490 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14491 : volatile so that the compiler has to store it out to memory.
14492 if test X"$d_volatile" = X"$define"; then
14493         volatile=volatile
14494 fi
14495 $cat <<EOP >try.c
14496 #include <stdio.h>
14497 #$i_stdlib I_STDLIB
14498 #ifdef I_STDLIB
14499 #include <stdlib.h>
14500 #endif
14501 #include <sys/types.h>
14502 #include <signal.h>
14503 #ifdef SIGFPE
14504 $volatile int bletched = 0;
14505 $signal_t blech(s) int s; { bletched = 1; }
14506 #endif
14507 int main() {
14508     $uvtype u = 0;
14509     $nvtype d;
14510     int     n = 8 * $uvsize;
14511     int     i;
14512 #ifdef SIGFPE
14513     signal(SIGFPE, blech);
14514 #endif
14515
14516     for (i = 0; i < n; i++) {
14517       u = u << 1 | ($uvtype)1;
14518       d = ($nvtype)u;
14519       if (($uvtype)d != u)
14520         break;
14521       if (d <= 0)
14522         break;
14523       d = ($nvtype)(u - 1);
14524       if (($uvtype)d != (u - 1))
14525         break;
14526 #ifdef SIGFPE
14527       if (bletched) {
14528         break;
14529 #endif
14530       } 
14531     }
14532     printf("%d\n", ((i == n) ? -n : i));
14533     exit(0);
14534 }
14535 EOP
14536 set try
14537
14538 d_nv_preserves_uv="$undef"
14539 if eval $compile; then
14540         nv_preserves_uv_bits="`$run ./try`"
14541 fi
14542 case "$nv_preserves_uv_bits" in
14543 \-[1-9]*)       
14544         nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14545         $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
14546         d_nv_preserves_uv="$define"
14547         ;;
14548 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
14549         d_nv_preserves_uv="$undef" ;;
14550 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
14551         nv_preserves_uv_bits="$undef" ;;
14552 esac
14553
14554 $rm -f try.* try
14555
14556
14557 : check for off64_t
14558 echo " "
14559 echo "Checking to see if you have off64_t..." >&4
14560 $cat >try.c <<EOCP
14561 #include <sys/types.h>
14562 #include <unistd.h>
14563 int main() { off64_t x = 7; }
14564 EOCP
14565 set try
14566 if eval $compile; then
14567         val="$define"
14568         echo "You have off64_t."
14569 else
14570         val="$undef"
14571         echo "You do not have off64_t."
14572         case "$lseeksize" in
14573         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14574         esac
14575 fi
14576 $rm -f try.* try
14577 set d_off64_t
14578 eval $setvar
14579
14580 : how to create joinable pthreads
14581 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14582         echo " "
14583         echo "Checking what constant to use for creating joinable pthreads..." >&4 
14584         $cat >try.c <<'EOCP'
14585 #include <pthread.h>
14586 int main() {
14587     int detachstate = JOINABLE;
14588 }
14589 EOCP
14590         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14591         if eval $compile; then
14592                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14593                 val="$undef" # Yes, undef.
14594                 set d_old_pthread_create_joinable
14595                 eval $setvar
14596                 val=""
14597                 set old_pthread_create_joinable
14598                 eval $setvar
14599         else
14600                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14601                 if eval $compile; then
14602                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14603                         val="$define"
14604                         set d_old_pthread_create_joinable
14605                         eval $setvar
14606                         val=PTHREAD_CREATE_UNDETACHED
14607                         set old_pthread_create_joinable
14608                         eval $setvar
14609                 else            
14610                         set try -DJOINABLE=__UNDETACHED
14611                         if eval $compile; then
14612                                 echo "You seem to use __UNDETACHED." >&4
14613                                 val="$define"
14614                                 set d_old_pthread_create_joinable
14615                                 eval $setvar
14616                                 val=__UNDETACHED
14617                                 set old_pthread_create_joinable
14618                                 eval $setvar
14619                         else
14620                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
14621                                 val="$define"
14622                                 set d_old_pthread_create_joinable
14623                                 eval $setvar
14624                                 val=0
14625                                 set old_pthread_create_joinable
14626                                 eval $setvar
14627                         fi
14628                 fi
14629         fi
14630         $rm -f try try.*
14631 else
14632     d_old_pthread_create_joinable="$undef"
14633     old_pthread_create_joinable=""
14634 fi
14635
14636 : see if pause exists
14637 set pause d_pause
14638 eval $inlibc
14639
14640 : see if pipe exists
14641 set pipe d_pipe
14642 eval $inlibc
14643
14644 : see if poll exists
14645 set poll d_poll
14646 eval $inlibc
14647
14648 : see if readlink exists
14649 set readlink d_readlink
14650 eval $inlibc
14651
14652 echo " "
14653 procselfexe=''
14654 val="$undef"
14655 case "$d_readlink" in
14656 "$define")
14657         if $issymlink /proc/self/exe ; then
14658                 $ls -l /proc/self/exe > reflect
14659                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14660                         echo "You have Linux-like /proc/self/exe."
14661                         procselfexe='"/proc/self/exe"'
14662                         val="$define"
14663                 fi
14664         fi
14665         if $issymlink /proc/curproc/file ; then
14666                 $ls -l /proc/curproc/file > reflect
14667                 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14668                         echo "You have BSD-like /proc/curproc/file."
14669                         procselfexe='"/proc/curproc/file"'
14670                         val="$define"
14671                 fi
14672         fi
14673         ;;
14674 esac
14675 $rm -f reflect
14676 set d_procselfexe
14677 eval $setvar
14678
14679 : see whether the pthread_atfork exists
14680 $cat >try.c <<EOP
14681 #include <pthread.h>
14682 #include <stdio.h>
14683 int main() {
14684 #ifdef  PTHREAD_ATFORK
14685         pthread_atfork(NULL,NULL,NULL);
14686 #endif
14687 }
14688 EOP
14689
14690 : see if pthread_atfork exists
14691 set try -DPTHREAD_ATFORK
14692 if eval $compile; then
14693     val="$define"
14694 else
14695     val="$undef"
14696 fi
14697 case "$usethreads" in
14698 $define)
14699         case "$val" in
14700         $define) echo 'pthread_atfork found.' >&4        ;;
14701         *)       echo 'pthread_atfork NOT found.' >&4    ;;
14702         esac
14703 esac
14704 set d_pthread_atfork
14705 eval $setvar
14706
14707 : see if pthread_attr_setscope exists
14708 set pthread_attr_setscope d_pthread_attr_setscope
14709 eval $inlibc
14710
14711
14712 : see whether the various POSIXish _yields exist
14713 $cat >try.c <<EOP
14714 #include <pthread.h>
14715 #include <stdio.h>
14716 int main() {
14717 #ifdef SCHED_YIELD
14718         sched_yield();
14719 #else
14720 #ifdef PTHREAD_YIELD
14721         pthread_yield();
14722 #else
14723 #ifdef PTHREAD_YIELD_NULL
14724         pthread_yield(NULL);
14725 #endif
14726 #endif
14727 #endif
14728 }
14729 EOP
14730 : see if sched_yield exists
14731 set try -DSCHED_YIELD
14732 if eval $compile; then
14733     val="$define"
14734     sched_yield='sched_yield()'
14735 else
14736     val="$undef"
14737 fi
14738 case "$usethreads" in
14739 $define)
14740         case "$val" in
14741         $define) echo 'sched_yield() found.' >&4        ;;
14742         *)       echo 'sched_yield() NOT found.' >&4    ;;
14743         esac
14744 esac
14745 set d_sched_yield
14746 eval $setvar
14747
14748 : see if pthread_yield exists
14749 set try -DPTHREAD_YIELD
14750 if eval $compile; then
14751     val="$define"
14752     case "$sched_yield" in
14753     '') sched_yield='pthread_yield()' ;;
14754     esac
14755 else
14756     set try -DPTHREAD_YIELD_NULL
14757     if eval $compile; then
14758         val="$define"
14759         case "$sched_yield" in
14760         '') sched_yield='pthread_yield(NULL)' ;;
14761         esac
14762     else
14763         val="$undef"
14764     fi
14765 fi
14766 case "$usethreads" in
14767 $define)
14768         case "$val" in
14769         $define) echo 'pthread_yield() found.' >&4      ;;
14770         *)       echo 'pthread_yield() NOT found.' >&4  ;;
14771         esac
14772         ;;
14773 esac
14774 set d_pthread_yield
14775 eval $setvar
14776
14777 case "$sched_yield" in
14778 '') sched_yield=undef ;;
14779 esac
14780
14781 $rm -f try try.*
14782
14783 : see if random_r exists
14784 set random_r d_random_r
14785 eval $inlibc
14786 case "$d_random_r" in
14787 "$define")
14788         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14789         case "$d_random_r_proto:$usethreads" in
14790         ":define")      d_random_r_proto=define
14791                 set d_random_r_proto random_r $hdrs
14792                 eval $hasproto ;;
14793         *)      ;;
14794         esac
14795         case "$d_random_r_proto" in
14796         define)
14797         case "$random_r_proto" in
14798         ''|0) try='int random_r(int*, struct random_data*);'
14799         ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14800         esac
14801         case "$random_r_proto" in
14802         ''|0) try='int random_r(long*, struct random_data*);'
14803         ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14804         esac
14805         case "$random_r_proto" in
14806         ''|0) try='int random_r(struct random_data*, int32_t*);'
14807         ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14808         esac
14809         case "$random_r_proto" in
14810         ''|0)   d_random_r=undef
14811                 random_r_proto=0
14812                 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14813         * )     case "$random_r_proto" in
14814                 REENTRANT_PROTO*) ;;
14815                 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14816                 esac
14817                 echo "Prototype: $try" ;;
14818         esac
14819         ;;
14820         *)      case "$usethreads" in
14821                 define) echo "random_r has no prototype, not using it." >&4 ;;
14822                 esac
14823                 d_random_r=undef
14824                 random_r_proto=0
14825                 ;;
14826         esac
14827         ;;
14828 *)      random_r_proto=0
14829         ;;
14830 esac
14831
14832 : see if readdir and friends exist
14833 set readdir d_readdir
14834 eval $inlibc
14835 set seekdir d_seekdir
14836 eval $inlibc
14837 set telldir d_telldir
14838 eval $inlibc
14839 set rewinddir d_rewinddir
14840 eval $inlibc
14841
14842 : see if readdir64_r exists
14843 set readdir64_r d_readdir64_r
14844 eval $inlibc
14845 case "$d_readdir64_r" in
14846 "$define")
14847         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14848         case "$d_readdir64_r_proto:$usethreads" in
14849         ":define")      d_readdir64_r_proto=define
14850                 set d_readdir64_r_proto readdir64_r $hdrs
14851                 eval $hasproto ;;
14852         *)      ;;
14853         esac
14854         case "$d_readdir64_r_proto" in
14855         define)
14856         case "$readdir64_r_proto" in
14857         ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14858         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14859         esac
14860         case "$readdir64_r_proto" in
14861         ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14862         ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14863         esac
14864         case "$readdir64_r_proto" in
14865         ''|0)   d_readdir64_r=undef
14866                 readdir64_r_proto=0
14867                 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14868         * )     case "$readdir64_r_proto" in
14869                 REENTRANT_PROTO*) ;;
14870                 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14871                 esac
14872                 echo "Prototype: $try" ;;
14873         esac
14874         ;;
14875         *)      case "$usethreads" in
14876                 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14877                 esac
14878                 d_readdir64_r=undef
14879                 readdir64_r_proto=0
14880                 ;;
14881         esac
14882         ;;
14883 *)      readdir64_r_proto=0
14884         ;;
14885 esac
14886
14887 : see if readdir_r exists
14888 set readdir_r d_readdir_r
14889 eval $inlibc
14890 case "$d_readdir_r" in
14891 "$define")
14892         hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14893         case "$d_readdir_r_proto:$usethreads" in
14894         ":define")      d_readdir_r_proto=define
14895                 set d_readdir_r_proto readdir_r $hdrs
14896                 eval $hasproto ;;
14897         *)      ;;
14898         esac
14899         case "$d_readdir_r_proto" in
14900         define)
14901         case "$readdir_r_proto" in
14902         ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14903         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14904         esac
14905         case "$readdir_r_proto" in
14906         ''|0) try='int readdir_r(DIR*, struct dirent*);'
14907         ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14908         esac
14909         case "$readdir_r_proto" in
14910         ''|0)   d_readdir_r=undef
14911                 readdir_r_proto=0
14912                 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14913         * )     case "$readdir_r_proto" in
14914                 REENTRANT_PROTO*) ;;
14915                 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14916                 esac
14917                 echo "Prototype: $try" ;;
14918         esac
14919         ;;
14920         *)      case "$usethreads" in
14921                 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14922                 esac
14923                 d_readdir_r=undef
14924                 readdir_r_proto=0
14925                 ;;
14926         esac
14927         ;;
14928 *)      readdir_r_proto=0
14929         ;;
14930 esac
14931
14932 : see if readv exists
14933 set readv d_readv
14934 eval $inlibc
14935
14936 : see if recvmsg exists
14937 set recvmsg d_recvmsg
14938 eval $inlibc
14939
14940 : see if rename exists
14941 set rename d_rename
14942 eval $inlibc
14943
14944 : see if rmdir exists
14945 set rmdir d_rmdir
14946 eval $inlibc
14947
14948 : see if memory.h is available.
14949 val=''
14950 set memory.h val
14951 eval $inhdr
14952
14953 : See if it conflicts with string.h
14954 case "$val" in
14955 $define)
14956         case "$strings" in
14957         '') ;;
14958         *)
14959                 $cppstdin $cppflags $cppminus < $strings > mem.h
14960                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14961                         echo " "
14962                         echo "We won't be including <memory.h>."
14963                         val="$undef"
14964                 fi
14965                 $rm -f mem.h
14966                 ;;
14967         esac
14968 esac
14969 set i_memory
14970 eval $setvar
14971
14972 : can bcopy handle overlapping blocks?
14973 echo " "
14974 val="$undef"
14975 case "$d_memmove" in
14976 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14977 *)      case "$d_bcopy" in
14978         "$define")
14979                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14980                 $cat >try.c <<EOCP
14981 #$i_memory I_MEMORY
14982 #$i_stdlib I_STDLIB
14983 #$i_string I_STRING
14984 #$i_unistd I_UNISTD
14985 EOCP
14986         $cat >>try.c <<'EOCP'
14987 #include <stdio.h>
14988 #ifdef I_MEMORY
14989 #  include <memory.h>
14990 #endif
14991 #ifdef I_STDLIB
14992 #  include <stdlib.h>
14993 #endif
14994 #ifdef I_STRING
14995 #  include <string.h>
14996 #else
14997 #  include <strings.h>
14998 #endif
14999 #ifdef I_UNISTD
15000 #  include <unistd.h>  /* Needed for NetBSD */
15001 #endif
15002 int main()
15003 {
15004 char buf[128], abc[128];
15005 char *b;
15006 int len;
15007 int off;
15008 int align;
15009
15010 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15011    try to store the string in read-only memory. */
15012 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15013
15014 for (align = 7; align >= 0; align--) {
15015         for (len = 36; len; len--) {
15016                 b = buf+align;
15017                 bcopy(abc, b, len);
15018                 for (off = 1; off <= len; off++) {
15019                         bcopy(b, b+off, len);
15020                         bcopy(b+off, b, len);
15021                         if (bcmp(b, abc, len))
15022                                 exit(1);
15023                 }
15024         }
15025 }
15026 exit(0);
15027 }
15028 EOCP
15029                 set try
15030                 if eval $compile_ok; then
15031                         if ./try 2>/dev/null; then
15032                                 echo "Yes, it can."
15033                                 val="$define"
15034                         else
15035                                 echo "It can't, sorry."
15036                         fi
15037                 else
15038                         echo "(I can't compile the test program, so we'll assume not...)"
15039                 fi
15040                 ;;
15041         esac
15042         $rm -f try.* try core
15043         ;;
15044 esac
15045 set d_safebcpy
15046 eval $setvar
15047
15048 : can memcpy handle overlapping blocks?
15049 echo " "
15050 val="$undef"
15051 case "$d_memmove" in
15052 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15053 *)      case "$d_memcpy" in
15054         "$define")
15055                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15056                 $cat >try.c <<EOCP
15057 #$i_memory I_MEMORY
15058 #$i_stdlib I_STDLIB
15059 #$i_string I_STRING
15060 #$i_unistd I_UNISTD
15061 EOCP
15062         $cat >>try.c <<'EOCP'
15063 #include <stdio.h>
15064 #ifdef I_MEMORY
15065 #  include <memory.h>
15066 #endif
15067 #ifdef I_STDLIB
15068 #  include <stdlib.h>
15069 #endif
15070 #ifdef I_STRING
15071 #  include <string.h>
15072 #else
15073 #  include <strings.h>
15074 #endif
15075 #ifdef I_UNISTD
15076 #  include <unistd.h>  /* Needed for NetBSD */
15077 #endif
15078 int main()
15079 {
15080 char buf[128], abc[128];
15081 char *b;
15082 int len;
15083 int off;
15084 int align;
15085
15086 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15087    try to store the string in read-only memory. */
15088 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15089
15090 for (align = 7; align >= 0; align--) {
15091         for (len = 36; len; len--) {
15092                 b = buf+align;
15093                 memcpy(b, abc, len);
15094                 for (off = 1; off <= len; off++) {
15095                         memcpy(b+off, b, len);
15096                         memcpy(b, b+off, len);
15097                         if (memcmp(b, abc, len))
15098                                 exit(1);
15099                 }
15100         }
15101 }
15102 exit(0);
15103 }
15104 EOCP
15105                 set try
15106                 if eval $compile_ok; then
15107                         if ./try 2>/dev/null; then
15108                                 echo "Yes, it can."
15109                                 val="$define"
15110                         else
15111                                 echo "It can't, sorry."
15112                         fi
15113                 else
15114                         echo "(I can't compile the test program, so we'll assume not...)"
15115                 fi
15116                 ;;
15117         esac
15118         $rm -f try.* try core
15119         ;;
15120 esac
15121 set d_safemcpy
15122 eval $setvar
15123
15124 : can memcmp be trusted to compare relative magnitude?
15125 val="$undef"
15126 case "$d_memcmp" in
15127 "$define")
15128         echo " "
15129         echo "Checking if your memcmp() can compare relative magnitude..." >&4
15130         $cat >try.c <<EOCP
15131 #$i_memory I_MEMORY
15132 #$i_stdlib I_STDLIB
15133 #$i_string I_STRING
15134 #$i_unistd I_UNISTD
15135 EOCP
15136         $cat >>try.c <<'EOCP'
15137 #include <stdio.h>
15138 #ifdef I_MEMORY
15139 #  include <memory.h>
15140 #endif
15141 #ifdef I_STDLIB
15142 #  include <stdlib.h>
15143 #endif
15144 #ifdef I_STRING
15145 #  include <string.h>
15146 #else
15147 #  include <strings.h>
15148 #endif
15149 #ifdef I_UNISTD
15150 #  include <unistd.h>  /* Needed for NetBSD */
15151 #endif
15152 int main()
15153 {
15154 char a = -1;
15155 char b = 0;
15156 if ((a < b) && memcmp(&a, &b, 1) < 0)
15157         exit(1);
15158 exit(0);
15159 }
15160 EOCP
15161         set try
15162         if eval $compile_ok; then
15163                 if $run ./try 2>/dev/null; then
15164                         echo "Yes, it can."
15165                         val="$define"
15166                 else
15167                         echo "No, it can't (it uses signed chars)."
15168                 fi
15169         else
15170                 echo "(I can't compile the test program, so we'll assume not...)"
15171         fi
15172         ;;
15173 esac
15174 $rm -f try.* try core
15175 set d_sanemcmp
15176 eval $setvar
15177
15178 : see if prototype for sbrk is available
15179 echo " "
15180 set d_sbrkproto sbrk $i_unistd unistd.h
15181 eval $hasproto
15182
15183 : see if select exists
15184 set select d_select
15185 eval $inlibc
15186
15187 : see if semctl exists
15188 set semctl d_semctl
15189 eval $inlibc
15190
15191 : see if semget exists
15192 set semget d_semget
15193 eval $inlibc
15194
15195 : see if semop exists
15196 set semop d_semop
15197 eval $inlibc
15198
15199 : see how much of the 'sem*(2)' library is present.
15200 h_sem=true
15201 echo " "
15202 case "$d_semctl$d_semget$d_semop" in
15203 *"$undef"*) h_sem=false;;
15204 esac
15205 case "$osname" in
15206 freebsd)
15207     case "`ipcs 2>&1`" in
15208     "SVID messages"*"not configured"*)
15209         echo "Your $osname does not have the sem*(2) configured." >&4
15210         h_sem=false
15211         val="$undef"
15212         set semctl d_semctl
15213         eval $setvar
15214         set semget d_semget
15215         eval $setvar
15216         set semop d_semop
15217         eval $setvar
15218         ;;
15219     esac
15220     ;;
15221 esac
15222 : we could also check for sys/ipc.h ...
15223 if $h_sem && $test `./findhdr sys/sem.h`; then
15224         echo "You have the full sem*(2) library." >&4
15225         val="$define"
15226 else
15227         echo "You don't have the full sem*(2) library." >&4
15228         val="$undef"
15229 fi
15230 set d_sem
15231 eval $setvar
15232
15233 : see whether sys/sem.h defines union semun
15234 echo " "
15235 $cat > try.c <<'END'
15236 #include <sys/types.h>
15237 #include <sys/ipc.h>
15238 #include <sys/sem.h>
15239 int main () { union semun semun; semun.buf = 0; }
15240 END
15241 set try
15242 if eval $compile; then
15243     echo "You have union semun in <sys/sem.h>." >&4
15244     val="$define"
15245 else
15246     echo "You do not have union semun in <sys/sem.h>." >&4
15247     val="$undef"
15248 fi
15249 $rm -f try try.c
15250 set d_union_semun
15251 eval $setvar
15252
15253 : see how to do semctl IPC_STAT
15254 case "$d_sem" in
15255 $define)
15256     echo " "
15257     $cat > try.h <<END
15258 #ifndef S_IRUSR
15259 #   ifdef S_IREAD
15260 #       define S_IRUSR S_IREAD
15261 #       define S_IWUSR S_IWRITE
15262 #       define S_IXUSR S_IEXEC
15263 #   else
15264 #       define S_IRUSR 0400
15265 #       define S_IWUSR 0200
15266 #       define S_IXUSR 0100
15267 #   endif
15268 #   define S_IRGRP (S_IRUSR>>3)
15269 #   define S_IWGRP (S_IWUSR>>3)
15270 #   define S_IXGRP (S_IXUSR>>3)
15271 #   define S_IROTH (S_IRUSR>>6)
15272 #   define S_IWOTH (S_IWUSR>>6)
15273 #   define S_IXOTH (S_IXUSR>>6)
15274 #endif
15275 #ifndef S_IRWXU
15276 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15277 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15278 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15279 #endif
15280 END
15281     : see whether semctl IPC_STAT can use union semun
15282     val="$undef"
15283     case "$d_semctl_semun" in
15284     '')
15285       $cat > try.c <<END
15286 #include <sys/types.h>
15287 #include <sys/ipc.h>
15288 #include <sys/sem.h>
15289 #include <sys/stat.h>
15290 #include <stdio.h>
15291 #include <errno.h>
15292 #include "try.h"
15293 #ifndef errno
15294 extern int errno;
15295 #endif
15296 #$d_union_semun HAS_UNION_SEMUN
15297 int main() {
15298     union semun
15299 #ifndef HAS_UNION_SEMUN
15300     {
15301         int val;
15302         struct semid_ds *buf;
15303         unsigned short *array;
15304     }
15305 #endif
15306     arg;
15307     int sem, st;
15308
15309 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15310     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15311     if (sem > -1) {
15312         struct semid_ds argbuf;
15313         arg.buf = &argbuf;
15314 #       ifdef IPC_STAT
15315         st = semctl(sem, 0, IPC_STAT, arg);
15316         if (st == 0)
15317             printf("semun\n");
15318         else
15319 #       endif /* IPC_STAT */
15320             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15321 #       ifdef IPC_RMID
15322         if (semctl(sem, 0, IPC_RMID, arg) != 0)
15323 #       endif /* IPC_RMID */
15324             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15325     } else
15326 #endif /* IPC_PRIVATE && ... */
15327         printf("semget failed: errno = %d\n", errno);
15328   return 0;
15329 }
15330 END
15331       set try
15332       if eval $compile; then
15333           xxx=`$run ./try`
15334           case "$xxx" in
15335           semun) val="$define" ;;
15336           esac
15337       fi
15338       $rm -f try try.c
15339       ;;
15340     esac
15341     set d_semctl_semun
15342     eval $setvar
15343     case "$d_semctl_semun" in
15344     $define)
15345         echo "You can use union semun for semctl IPC_STAT." >&4
15346         also='also'
15347         ;;
15348     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
15349         also=''
15350         ;;
15351     esac
15352
15353     : see whether semctl IPC_STAT can use struct semid_ds pointer
15354     val="$undef"
15355     case "$d_semctl_semid_ds" in
15356     '')
15357       $cat > try.c <<'END'
15358 #include <sys/types.h>
15359 #include <sys/ipc.h>
15360 #include <sys/sem.h>
15361 #include <sys/stat.h>
15362 #include "try.h"
15363 #include <stdio.h>
15364 #include <errno.h>
15365 #ifndef errno
15366 extern int errno;
15367 #endif
15368 int main() {
15369     struct semid_ds arg;
15370     int sem, st;
15371
15372 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
15373     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15374     if (sem > -1) {
15375 #       ifdef IPC_STAT
15376         st = semctl(sem, 0, IPC_STAT, &arg);
15377         if (st == 0)
15378             printf("semid_ds\n");
15379         else
15380 #       endif /* IPC_STAT */
15381             printf("semctl IPC_STAT failed: errno = %d\n", errno);
15382 #       ifdef IPC_RMID
15383         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15384 #       endif /* IPC_RMID */
15385             printf("semctl IPC_RMID failed: errno = %d\n", errno);
15386     } else
15387 #endif /* IPC_PRIVATE && ... */
15388         printf("semget failed: errno = %d\n", errno);
15389
15390     return 0;
15391 }
15392 END
15393       set try
15394       if eval $compile; then
15395           xxx=`$run ./try`
15396           case "$xxx" in
15397           semid_ds) val="$define" ;;
15398           esac
15399       fi
15400       $rm -f try try.c
15401       ;;
15402     esac
15403     set d_semctl_semid_ds
15404     eval $setvar
15405     case "$d_semctl_semid_ds" in
15406     $define)
15407         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15408         ;;
15409     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15410         ;;
15411     esac
15412     $rm -f try.h
15413     ;;
15414 *)  val="$undef"
15415
15416     # We do not have the full sem*(2) library, so assume we can not
15417     # use either.
15418
15419     set d_semctl_semun
15420     eval $setvar
15421
15422     set d_semctl_semid_ds
15423     eval $setvar
15424     ;;
15425 esac
15426
15427 : see if sendmsg exists
15428 set sendmsg d_sendmsg
15429 eval $inlibc
15430
15431 : see if setegid exists
15432 set setegid d_setegid
15433 eval $inlibc
15434
15435 : see if seteuid exists
15436 set seteuid d_seteuid
15437 eval $inlibc
15438
15439 : see if setgrent exists
15440 set setgrent d_setgrent
15441 eval $inlibc
15442
15443 : see if setgrent_r exists
15444 set setgrent_r d_setgrent_r
15445 eval $inlibc
15446 case "$d_setgrent_r" in
15447 "$define")
15448         hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15449         case "$d_setgrent_r_proto:$usethreads" in
15450         ":define")      d_setgrent_r_proto=define
15451                 set d_setgrent_r_proto setgrent_r $hdrs
15452                 eval $hasproto ;;
15453         *)      ;;
15454         esac
15455         case "$d_setgrent_r_proto" in
15456         define)
15457         case "$setgrent_r_proto" in
15458         ''|0) try='int setgrent_r(FILE**);'
15459         ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15460         esac
15461         case "$setgrent_r_proto" in
15462         ''|0) try='void setgrent_r(FILE**);'
15463         ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15464         esac
15465         case "$setgrent_r_proto" in
15466         ''|0)   d_setgrent_r=undef
15467                 setgrent_r_proto=0
15468                 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15469         * )     case "$setgrent_r_proto" in
15470                 REENTRANT_PROTO*) ;;
15471                 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15472                 esac
15473                 echo "Prototype: $try" ;;
15474         esac
15475         ;;
15476         *)      case "$usethreads" in
15477                 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15478                 esac
15479                 d_setgrent_r=undef
15480                 setgrent_r_proto=0
15481                 ;;
15482         esac
15483         ;;
15484 *)      setgrent_r_proto=0
15485         ;;
15486 esac
15487
15488 : see if sethostent exists
15489 set sethostent d_sethent
15490 eval $inlibc
15491
15492 : see if sethostent_r exists
15493 set sethostent_r d_sethostent_r
15494 eval $inlibc
15495 case "$d_sethostent_r" in
15496 "$define")
15497         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15498         case "$d_sethostent_r_proto:$usethreads" in
15499         ":define")      d_sethostent_r_proto=define
15500                 set d_sethostent_r_proto sethostent_r $hdrs
15501                 eval $hasproto ;;
15502         *)      ;;
15503         esac
15504         case "$d_sethostent_r_proto" in
15505         define)
15506         case "$sethostent_r_proto" in
15507         ''|0) try='int sethostent_r(int, struct hostent_data*);'
15508         ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15509         esac
15510         case "$sethostent_r_proto" in
15511         ''|0) try='void sethostent_r(int, struct hostent_data*);'
15512         ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15513         esac
15514         case "$sethostent_r_proto" in
15515         ''|0)   d_sethostent_r=undef
15516                 sethostent_r_proto=0
15517                 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15518         * )     case "$sethostent_r_proto" in
15519                 REENTRANT_PROTO*) ;;
15520                 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15521                 esac
15522                 echo "Prototype: $try" ;;
15523         esac
15524         ;;
15525         *)      case "$usethreads" in
15526                 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15527                 esac
15528                 d_sethostent_r=undef
15529                 sethostent_r_proto=0
15530                 ;;
15531         esac
15532         ;;
15533 *)      sethostent_r_proto=0
15534         ;;
15535 esac
15536
15537 : see if setitimer exists
15538 set setitimer d_setitimer
15539 eval $inlibc
15540
15541 : see if setlinebuf exists
15542 set setlinebuf d_setlinebuf
15543 eval $inlibc
15544
15545 : see if setlocale exists
15546 set setlocale d_setlocale
15547 eval $inlibc
15548
15549 : see if locale.h is available
15550 set locale.h i_locale
15551 eval $inhdr
15552
15553 : see if setlocale_r exists
15554 set setlocale_r d_setlocale_r
15555 eval $inlibc
15556 case "$d_setlocale_r" in
15557 "$define")
15558         hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15559         case "$d_setlocale_r_proto:$usethreads" in
15560         ":define")      d_setlocale_r_proto=define
15561                 set d_setlocale_r_proto setlocale_r $hdrs
15562                 eval $hasproto ;;
15563         *)      ;;
15564         esac
15565         case "$d_setlocale_r_proto" in
15566         define)
15567         case "$setlocale_r_proto" in
15568         ''|0) try='int setlocale_r(int, const char*, char*, int);'
15569         ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15570         esac
15571         case "$setlocale_r_proto" in
15572         ''|0)   d_setlocale_r=undef
15573                 setlocale_r_proto=0
15574                 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15575         * )     case "$setlocale_r_proto" in
15576                 REENTRANT_PROTO*) ;;
15577                 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15578                 esac
15579                 echo "Prototype: $try" ;;
15580         esac
15581         ;;
15582         *)      case "$usethreads" in
15583                 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15584                 esac
15585                 d_setlocale_r=undef
15586                 setlocale_r_proto=0
15587                 ;;
15588         esac
15589         ;;
15590 *)      setlocale_r_proto=0
15591         ;;
15592 esac
15593
15594 : see if setnetent exists
15595 set setnetent d_setnent
15596 eval $inlibc
15597
15598 : see if setnetent_r exists
15599 set setnetent_r d_setnetent_r
15600 eval $inlibc
15601 case "$d_setnetent_r" in
15602 "$define")
15603         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15604         case "$d_setnetent_r_proto:$usethreads" in
15605         ":define")      d_setnetent_r_proto=define
15606                 set d_setnetent_r_proto setnetent_r $hdrs
15607                 eval $hasproto ;;
15608         *)      ;;
15609         esac
15610         case "$d_setnetent_r_proto" in
15611         define)
15612         case "$setnetent_r_proto" in
15613         ''|0) try='int setnetent_r(int, struct netent_data*);'
15614         ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15615         esac
15616         case "$setnetent_r_proto" in
15617         ''|0) try='void setnetent_r(int, struct netent_data*);'
15618         ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15619         esac
15620         case "$setnetent_r_proto" in
15621         ''|0)   d_setnetent_r=undef
15622                 setnetent_r_proto=0
15623                 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15624         * )     case "$setnetent_r_proto" in
15625                 REENTRANT_PROTO*) ;;
15626                 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15627                 esac
15628                 echo "Prototype: $try" ;;
15629         esac
15630         ;;
15631         *)      case "$usethreads" in
15632                 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15633                 esac
15634                 d_setnetent_r=undef
15635                 setnetent_r_proto=0
15636                 ;;
15637         esac
15638         ;;
15639 *)      setnetent_r_proto=0
15640         ;;
15641 esac
15642
15643 : see if setprotoent exists
15644 set setprotoent d_setpent
15645 eval $inlibc
15646
15647 : see if setpgid exists
15648 set setpgid d_setpgid
15649 eval $inlibc
15650
15651 : see if setpgrp2 exists
15652 set setpgrp2 d_setpgrp2
15653 eval $inlibc
15654
15655 : see if setpriority exists
15656 set setpriority d_setprior
15657 eval $inlibc
15658
15659 : see if setproctitle exists
15660 set setproctitle d_setproctitle
15661 eval $inlibc
15662
15663 : see if setprotoent_r exists
15664 set setprotoent_r d_setprotoent_r
15665 eval $inlibc
15666 case "$d_setprotoent_r" in
15667 "$define")
15668         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15669         case "$d_setprotoent_r_proto:$usethreads" in
15670         ":define")      d_setprotoent_r_proto=define
15671                 set d_setprotoent_r_proto setprotoent_r $hdrs
15672                 eval $hasproto ;;
15673         *)      ;;
15674         esac
15675         case "$d_setprotoent_r_proto" in
15676         define)
15677         case "$setprotoent_r_proto" in
15678         ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15679         ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15680         esac
15681         case "$setprotoent_r_proto" in
15682         ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15683         ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15684         esac
15685         case "$setprotoent_r_proto" in
15686         ''|0)   d_setprotoent_r=undef
15687                 setprotoent_r_proto=0
15688                 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15689         * )     case "$setprotoent_r_proto" in
15690                 REENTRANT_PROTO*) ;;
15691                 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15692                 esac
15693                 echo "Prototype: $try" ;;
15694         esac
15695         ;;
15696         *)      case "$usethreads" in
15697                 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15698                 esac
15699                 d_setprotoent_r=undef
15700                 setprotoent_r_proto=0
15701                 ;;
15702         esac
15703         ;;
15704 *)      setprotoent_r_proto=0
15705         ;;
15706 esac
15707
15708 : see if setpwent exists
15709 set setpwent d_setpwent
15710 eval $inlibc
15711
15712 : see if setpwent_r exists
15713 set setpwent_r d_setpwent_r
15714 eval $inlibc
15715 case "$d_setpwent_r" in
15716 "$define")
15717         hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15718         case "$d_setpwent_r_proto:$usethreads" in
15719         ":define")      d_setpwent_r_proto=define
15720                 set d_setpwent_r_proto setpwent_r $hdrs
15721                 eval $hasproto ;;
15722         *)      ;;
15723         esac
15724         case "$d_setpwent_r_proto" in
15725         define)
15726         case "$setpwent_r_proto" in
15727         ''|0) try='int setpwent_r(FILE**);'
15728         ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15729         esac
15730         case "$setpwent_r_proto" in
15731         ''|0) try='void setpwent_r(FILE**);'
15732         ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15733         esac
15734         case "$setpwent_r_proto" in
15735         ''|0)   d_setpwent_r=undef
15736                 setpwent_r_proto=0
15737                 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15738         * )     case "$setpwent_r_proto" in
15739                 REENTRANT_PROTO*) ;;
15740                 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15741                 esac
15742                 echo "Prototype: $try" ;;
15743         esac
15744         ;;
15745         *)      case "$usethreads" in
15746                 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15747                 esac
15748                 d_setpwent_r=undef
15749                 setpwent_r_proto=0
15750                 ;;
15751         esac
15752         ;;
15753 *)      setpwent_r_proto=0
15754         ;;
15755 esac
15756
15757 : see if setregid exists
15758 set setregid d_setregid
15759 eval $inlibc
15760 set setresgid d_setresgid
15761 eval $inlibc
15762
15763 : see if setreuid exists
15764 set setreuid d_setreuid
15765 eval $inlibc
15766 set setresuid d_setresuid
15767 eval $inlibc
15768
15769 : see if setrgid exists
15770 set setrgid d_setrgid
15771 eval $inlibc
15772
15773 : see if setruid exists
15774 set setruid d_setruid
15775 eval $inlibc
15776
15777 : see if setservent exists
15778 set setservent d_setsent
15779 eval $inlibc
15780
15781 : see if setservent_r exists
15782 set setservent_r d_setservent_r
15783 eval $inlibc
15784 case "$d_setservent_r" in
15785 "$define")
15786         hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15787         case "$d_setservent_r_proto:$usethreads" in
15788         ":define")      d_setservent_r_proto=define
15789                 set d_setservent_r_proto setservent_r $hdrs
15790                 eval $hasproto ;;
15791         *)      ;;
15792         esac
15793         case "$d_setservent_r_proto" in
15794         define)
15795         case "$setservent_r_proto" in
15796         ''|0) try='int setservent_r(int, struct servent_data*);'
15797         ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15798         esac
15799         case "$setservent_r_proto" in
15800         ''|0) try='void setservent_r(int, struct servent_data*);'
15801         ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15802         esac
15803         case "$setservent_r_proto" in
15804         ''|0)   d_setservent_r=undef
15805                 setservent_r_proto=0
15806                 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15807         * )     case "$setservent_r_proto" in
15808                 REENTRANT_PROTO*) ;;
15809                 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15810                 esac
15811                 echo "Prototype: $try" ;;
15812         esac
15813         ;;
15814         *)      case "$usethreads" in
15815                 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15816                 esac
15817                 d_setservent_r=undef
15818                 setservent_r_proto=0
15819                 ;;
15820         esac
15821         ;;
15822 *)      setservent_r_proto=0
15823         ;;
15824 esac
15825
15826 : see if setsid exists
15827 set setsid d_setsid
15828 eval $inlibc
15829
15830 : see if setvbuf exists
15831 set setvbuf d_setvbuf
15832 eval $inlibc
15833
15834 : see if sfio.h is available
15835 set sfio.h i_sfio
15836 eval $inhdr
15837
15838
15839 : see if sfio library is available
15840 case "$i_sfio" in
15841 $define)
15842         val=''
15843         set sfreserve val
15844         eval $inlibc
15845         ;;
15846 *)
15847         val="$undef"
15848         ;;
15849 esac
15850 : Ok, but do we want to use it.
15851 case "$val" in
15852 $define)
15853         case "$usesfio" in
15854         true|$define|[yY]*) dflt='y';;
15855         *) dflt='n';;
15856         esac
15857         echo "$package can use the sfio library, but it is experimental."
15858         case "$useperlio" in
15859         "$undef")
15860             echo "For sfio also the PerlIO abstraction layer is needed."
15861             echo "Earlier you said you wouldn't want that."
15862             ;;
15863         esac
15864         rp="You seem to have sfio available, do you want to try using it?"
15865         . ./myread
15866         case "$ans" in
15867         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
15868                 useperlio="$define"
15869                 val="$define"
15870                 ;;
15871         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
15872                 val="$undef"
15873                 ;;
15874         esac
15875         ;;
15876 *)      case "$usesfio" in
15877         true|$define|[yY]*)
15878                 echo "Sorry, cannot find sfio on this machine." >&4
15879                 echo "Ignoring your setting of usesfio=$usesfio." >&4
15880                 val="$undef"
15881                 ;;
15882         esac
15883         ;;
15884 esac
15885 set d_sfio
15886 eval $setvar
15887 case "$d_sfio" in
15888 $define) usesfio='true';;
15889 *) usesfio='false';;
15890 esac
15891 case "$d_sfio" in
15892 $define) ;;
15893 *)      : Remove sfio from list of libraries to use
15894         case "$libs" in
15895         *-lsfio*)
15896                 echo "Removing unneeded -lsfio from library list" >&4
15897                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15898                 shift
15899                 libs="$*"
15900                 echo "libs = $libs" >&4
15901                 ;;
15902         esac
15903 ;;
15904 esac
15905
15906
15907 : see if shmctl exists
15908 set shmctl d_shmctl
15909 eval $inlibc
15910
15911 : see if shmget exists
15912 set shmget d_shmget
15913 eval $inlibc
15914
15915 : see if shmat exists
15916 set shmat d_shmat
15917 eval $inlibc
15918 : see what shmat returns
15919 case "$d_shmat" in
15920 "$define")
15921         $cat >shmat.c <<'END'
15922 #include <sys/shm.h>
15923 void *shmat();
15924 END
15925         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15926                 shmattype='void *'
15927         else
15928                 shmattype='char *'
15929         fi
15930         echo "and it returns ($shmattype)." >&4
15931         : see if a prototype for shmat is available
15932         xxx=`./findhdr sys/shm.h`
15933         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15934         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15935                 val="$define"
15936         else
15937                 val="$undef"
15938         fi
15939         $rm -f shmat.[co]
15940         ;;
15941 *)
15942         val="$undef"
15943         ;;
15944 esac
15945 set d_shmatprototype
15946 eval $setvar
15947
15948 : see if shmdt exists
15949 set shmdt d_shmdt
15950 eval $inlibc
15951
15952 : see how much of the 'shm*(2)' library is present.
15953 h_shm=true
15954 echo " "
15955 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15956 *"$undef"*) h_shm=false;;
15957 esac
15958 case "$osname" in
15959 freebsd)
15960     case "`ipcs 2>&1`" in
15961     "SVID shared memory"*"not configured"*)
15962         echo "Your $osname does not have the shm*(2) configured." >&4
15963         h_shm=false
15964         val="$undef"
15965         set shmctl d_shmctl
15966         evat $setvar
15967         set shmget d_shmget
15968         evat $setvar
15969         set shmat d_shmat
15970         evat $setvar
15971         set shmdt d_shmdt
15972         evat $setvar
15973         ;;
15974     esac
15975     ;;
15976 esac
15977 : we could also check for sys/ipc.h ...
15978 if $h_shm && $test `./findhdr sys/shm.h`; then
15979         echo "You have the full shm*(2) library." >&4
15980         val="$define"
15981 else
15982         echo "You don't have the full shm*(2) library." >&4
15983         val="$undef"
15984 fi
15985 set d_shm
15986 eval $setvar
15987
15988 echo " "
15989 : see if we have sigaction
15990 if set sigaction val -f d_sigaction; eval $csym; $val; then
15991         echo 'sigaction() found.' >&4
15992         $cat > try.c <<EOP
15993 #include <stdio.h>
15994 #include <sys/types.h>
15995 #include <signal.h>
15996 #$i_stdlib I_STDLIB
15997 #ifdef I_STDLIB
15998 #include <stdlib.h>
15999 #endif
16000 int main()
16001 {
16002     struct sigaction act, oact;
16003     act.sa_flags = 0;
16004     oact.sa_handler = 0;
16005     /* so that act and oact are used */
16006     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
16007 }
16008 EOP
16009         set try
16010         if eval $compile_ok; then
16011                 val="$define"
16012         else
16013                 echo "But you don't seem to have a useable struct sigaction." >&4
16014                 val="$undef"
16015         fi
16016 else
16017         echo 'sigaction NOT found.' >&4
16018         val="$undef"
16019 fi
16020 set d_sigaction; eval $setvar
16021 $rm -f try try$_o try.c
16022
16023 : see if sigprocmask exists
16024 set sigprocmask d_sigprocmask
16025 eval $inlibc
16026
16027 : see if sigsetjmp exists
16028 echo " "
16029 case "$d_sigsetjmp" in
16030 '')
16031         $cat >try.c <<EOP
16032 #include <setjmp.h>
16033 #$i_stdlib I_STDLIB
16034 #ifdef I_STDLIB
16035 #include <stdlib.h>
16036 #endif
16037 sigjmp_buf env;
16038 int set = 1;
16039 int main()
16040 {
16041         if (sigsetjmp(env,1))
16042                 exit(set);
16043         set = 0;
16044         siglongjmp(env, 1);
16045         exit(1);
16046 }
16047 EOP
16048         set try
16049         if eval $compile; then
16050                 if $run ./try >/dev/null 2>&1; then
16051                         echo "POSIX sigsetjmp found." >&4
16052                         val="$define"
16053                 else
16054                         $cat >&4 <<EOM
16055 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16056 I'll ignore them.
16057 EOM
16058                         val="$undef"
16059                 fi
16060         else
16061                 echo "sigsetjmp not found." >&4
16062                 val="$undef"
16063         fi
16064         ;;
16065 *) val="$d_sigsetjmp"
16066         case "$d_sigsetjmp" in
16067         $define) echo "POSIX sigsetjmp found." >&4;;
16068         $undef) echo "sigsetjmp not found." >&4;;
16069         esac
16070         ;;
16071 esac
16072 set d_sigsetjmp
16073 eval $setvar
16074 $rm -f try.c try
16075
16076 : see if sockatmark exists
16077 set sockatmark d_sockatmark
16078 eval $inlibc
16079
16080 : see if prototype for sockatmark is available
16081 echo " "
16082 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16083 eval $hasproto
16084
16085 : see if socks5_init exists
16086 set socks5_init d_socks5_init
16087 eval $inlibc
16088
16089 : see if srand48_r exists
16090 set srand48_r d_srand48_r
16091 eval $inlibc
16092 case "$d_srand48_r" in
16093 "$define")
16094         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16095         case "$d_srand48_r_proto:$usethreads" in
16096         ":define")      d_srand48_r_proto=define
16097                 set d_srand48_r_proto srand48_r $hdrs
16098                 eval $hasproto ;;
16099         *)      ;;
16100         esac
16101         case "$d_srand48_r_proto" in
16102         define)
16103         case "$srand48_r_proto" in
16104         ''|0) try='int srand48_r(long, struct drand48_data*);'
16105         ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16106         esac
16107         case "$srand48_r_proto" in
16108         ''|0)   d_srand48_r=undef
16109                 srand48_r_proto=0
16110                 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16111         * )     case "$srand48_r_proto" in
16112                 REENTRANT_PROTO*) ;;
16113                 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16114                 esac
16115                 echo "Prototype: $try" ;;
16116         esac
16117         ;;
16118         *)      case "$usethreads" in
16119                 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16120                 esac
16121                 d_srand48_r=undef
16122                 srand48_r_proto=0
16123                 ;;
16124         esac
16125         ;;
16126 *)      srand48_r_proto=0
16127         ;;
16128 esac
16129
16130 : see if srandom_r exists
16131 set srandom_r d_srandom_r
16132 eval $inlibc
16133 case "$d_srandom_r" in
16134 "$define")
16135         hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16136         case "$d_srandom_r_proto:$usethreads" in
16137         ":define")      d_srandom_r_proto=define
16138                 set d_srandom_r_proto srandom_r $hdrs
16139                 eval $hasproto ;;
16140         *)      ;;
16141         esac
16142         case "$d_srandom_r_proto" in
16143         define)
16144         case "$srandom_r_proto" in
16145         ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16146         ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16147         esac
16148         case "$srandom_r_proto" in
16149         ''|0)   d_srandom_r=undef
16150                 srandom_r_proto=0
16151                 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16152         * )     case "$srandom_r_proto" in
16153                 REENTRANT_PROTO*) ;;
16154                 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16155                 esac
16156                 echo "Prototype: $try" ;;
16157         esac
16158         ;;
16159         *)      case "$usethreads" in
16160                 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16161                 esac
16162                 d_srandom_r=undef
16163                 srandom_r_proto=0
16164                 ;;
16165         esac
16166         ;;
16167 *)      srandom_r_proto=0
16168         ;;
16169 esac
16170
16171 : see if prototype for setresgid is available
16172 echo " "
16173 set d_sresgproto setresgid $i_unistd unistd.h
16174 eval $hasproto
16175
16176 : see if prototype for setresuid is available
16177 echo " "
16178 set d_sresuproto setresuid $i_unistd unistd.h
16179 eval $hasproto
16180
16181 : see if sys/stat.h is available
16182 set sys/stat.h i_sysstat
16183 eval $inhdr
16184
16185
16186 : see if stat knows about block sizes
16187 echo " "
16188 echo "Checking to see if your struct stat has st_blocks field..." >&4
16189 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16190 eval $hasfield
16191
16192
16193 : see if this is a sys/vfs.h system
16194 set sys/vfs.h i_sysvfs
16195 eval $inhdr
16196
16197
16198 : see if this is a sys/statfs.h system
16199 set sys/statfs.h i_sysstatfs
16200 eval $inhdr
16201
16202
16203 echo " "
16204 echo "Checking to see if your system supports struct statfs..." >&4
16205 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
16206 eval $hasstruct
16207 case "$d_statfs_s" in
16208 "$define")      echo "Yes, it does."   ;;
16209 *)              echo "No, it doesn't." ;;
16210 esac
16211
16212
16213
16214 : see if struct statfs knows about f_flags
16215 case "$d_statfs_s" in
16216 define) 
16217         echo " "
16218         echo "Checking to see if your struct statfs has f_flags field..." >&4
16219         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
16220         eval $hasfield
16221         ;;
16222 *)      val="$undef"
16223         set d_statfs_f_flags
16224         eval $setvar
16225         ;;
16226 esac
16227 case "$d_statfs_f_flags" in
16228 "$define")      echo "Yes, it does."   ;;
16229 *)              echo "No, it doesn't." ;;
16230 esac
16231
16232 $cat >&4 <<EOM
16233 Checking how to access stdio streams by file descriptor number...
16234 EOM
16235 case "$stdio_stream_array" in
16236 '')     $cat >try.c <<EOCP
16237 #include <stdio.h>
16238 int main() {
16239   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16240     printf("yes\n");
16241 }
16242 EOCP
16243         for s in _iob __iob __sF
16244         do
16245                 set try -DSTDIO_STREAM_ARRAY=$s
16246                 if eval $compile; then
16247                         case "`$run ./try`" in
16248                         yes)    stdio_stream_array=$s; break ;;
16249                         esac
16250                 fi
16251         done
16252         $rm -f try.* try$exe_ext
16253 esac
16254 case "$stdio_stream_array" in
16255 '')     $cat >&4 <<EOM
16256 I can't figure out how to access stdio streams by file descriptor number.
16257 EOM
16258         d_stdio_stream_array="$undef"
16259         ;;
16260 *)      $cat >&4 <<EOM
16261 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16262 EOM
16263         d_stdio_stream_array="$define"
16264         ;;
16265 esac
16266
16267 : see if strcoll exists
16268 set strcoll d_strcoll
16269 eval $inlibc
16270
16271 : check for structure copying
16272 echo " "
16273 echo "Checking to see if your C compiler can copy structs..." >&4
16274 $cat >try.c <<'EOCP'
16275 int main()
16276 {
16277         struct blurfl {
16278                 int dyick;
16279         } foo, bar;
16280
16281         foo = bar;
16282 }
16283 EOCP
16284 if $cc -c try.c >/dev/null 2>&1 ; then
16285         val="$define"
16286         echo "Yup, it can."
16287 else
16288         val="$undef"
16289         echo "Nope, it can't."
16290 fi
16291 set d_strctcpy
16292 eval $setvar
16293 $rm -f try.*
16294
16295 : see if strerror and/or sys_errlist[] exist
16296 echo " "
16297 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16298     if set strerror val -f d_strerror; eval $csym; $val; then
16299                 echo 'strerror() found.' >&4
16300                 d_strerror="$define"
16301                 d_strerrm='strerror(e)'
16302                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16303                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
16304                         d_syserrlst="$define"
16305                 else
16306                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16307                         d_syserrlst="$undef"
16308                 fi
16309     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16310                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16311                 echo 'strerror() found in string header.' >&4
16312                 d_strerror="$define"
16313                 d_strerrm='strerror(e)'
16314                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
16315                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16316                                 d_syserrlst="$define"
16317                 else
16318                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
16319                         d_syserrlst="$undef"
16320                 fi
16321     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16322                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16323                 d_strerror="$undef"
16324                 d_syserrlst="$define"
16325                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16326     else
16327                 echo 'strerror() and sys_errlist[] NOT found.' >&4
16328                 d_strerror="$undef"
16329                 d_syserrlst="$undef"
16330                 d_strerrm='"unknown"'
16331     fi
16332 fi
16333
16334 : see if strerror_r exists
16335 set strerror_r d_strerror_r
16336 eval $inlibc
16337 case "$d_strerror_r" in
16338 "$define")
16339         hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16340         case "$d_strerror_r_proto:$usethreads" in
16341         ":define")      d_strerror_r_proto=define
16342                 set d_strerror_r_proto strerror_r $hdrs
16343                 eval $hasproto ;;
16344         *)      ;;
16345         esac
16346         case "$d_strerror_r_proto" in
16347         define)
16348         case "$strerror_r_proto" in
16349         ''|0) try='int strerror_r(int, char*, size_t);'
16350         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16351         esac
16352         case "$strerror_r_proto" in
16353         ''|0) try='int strerror_r(int, char*, int);'
16354         ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16355         esac
16356         case "$strerror_r_proto" in
16357         ''|0) try='char* strerror_r(int, char*, size_t);'
16358         ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16359         esac
16360         case "$strerror_r_proto" in
16361         ''|0)   d_strerror_r=undef
16362                 strerror_r_proto=0
16363                 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16364         * )     case "$strerror_r_proto" in
16365                 REENTRANT_PROTO*) ;;
16366                 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16367                 esac
16368                 echo "Prototype: $try" ;;
16369         esac
16370         ;;
16371         *)      case "$usethreads" in
16372                 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16373                 esac
16374                 d_strerror_r=undef
16375                 strerror_r_proto=0
16376                 ;;
16377         esac
16378         ;;
16379 *)      strerror_r_proto=0
16380         ;;
16381 esac
16382
16383 : see if strftime exists
16384 set strftime d_strftime
16385 eval $inlibc
16386
16387 : see if strtod exists
16388 set strtod d_strtod
16389 eval $inlibc
16390
16391 : see if strtol exists
16392 set strtol d_strtol
16393 eval $inlibc
16394
16395 : see if strtold exists
16396 set strtold d_strtold
16397 eval $inlibc
16398
16399 : see if strtoll exists
16400 set strtoll d_strtoll
16401 eval $inlibc
16402
16403 case "$d_longlong-$d_strtoll" in
16404 "$define-$define")
16405         $cat <<EOM
16406 Checking whether your strtoll() works okay...
16407 EOM
16408         $cat >try.c <<'EOCP'
16409 #include <errno.h>
16410 #ifdef __hpux
16411 #define strtoll __strtoll
16412 #endif
16413 #ifdef __EMX__
16414 #define strtoll _strtoll
16415 #endif
16416 #include <stdio.h>
16417 extern long long int strtoll(char *s, char **, int); 
16418 static int bad = 0;
16419 int check(char *s, long long ell, int een) {
16420         long long gll;
16421         errno = 0;
16422         gll = strtoll(s, 0, 10);
16423         if (!((gll == ell) && (errno == een)))
16424                 bad++;
16425 }
16426 int main() {
16427         check(" 1",                                      1LL, 0);
16428         check(" 0",                                      0LL, 0);
16429         check("-1",                                     -1LL, 0);
16430         check("-9223372036854775808", -9223372036854775808LL, 0);
16431         check("-9223372036854775808", -9223372036854775808LL, 0);
16432         check(" 9223372036854775807",  9223372036854775807LL, 0);
16433         check("-9223372036854775808", -9223372036854775808LL, 0);
16434         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
16435         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16436         if (!bad)
16437                 printf("ok\n");
16438 }
16439 EOCP
16440         set try
16441         if eval $compile; then
16442                 yyy=`$run ./try`
16443                 case "$yyy" in
16444                 ok) echo "Your strtoll() seems to be working okay." ;;
16445                 *) cat <<EOM >&4
16446 Your strtoll() doesn't seem to be working okay.
16447 EOM
16448                    d_strtoll="$undef"
16449                    ;;
16450                 esac
16451         else
16452                 echo "(I can't seem to compile the test program--assuming it doesn't)"
16453                 d_strtoll="$undef"
16454         fi
16455         ;;
16456 esac
16457
16458 : see if strtoq exists
16459 set strtoq d_strtoq
16460 eval $inlibc
16461
16462 : see if strtoul exists
16463 set strtoul d_strtoul
16464 eval $inlibc
16465
16466 case "$d_strtoul" in
16467 "$define")
16468         $cat <<EOM
16469 Checking whether your strtoul() works okay...
16470 EOM
16471         $cat >try.c <<'EOCP'
16472 #include <errno.h>
16473 #include <stdio.h>
16474 extern unsigned long int strtoul(char *s, char **, int); 
16475 static int bad = 0;
16476 void check(char *s, unsigned long eul, int een) {
16477         unsigned long gul;
16478         errno = 0;
16479         gul = strtoul(s, 0, 10);
16480         if (!((gul == eul) && (errno == een)))
16481                 bad++;
16482 }
16483 int main() {
16484         check(" 1", 1L, 0);
16485         check(" 0", 0L, 0);
16486 EOCP
16487         case "$longsize" in
16488         8)
16489             $cat >>try.c <<'EOCP'
16490         check("18446744073709551615", 18446744073709551615UL, 0);
16491         check("18446744073709551616", 18446744073709551615UL, ERANGE);
16492 #if 0 /* strtoul() for /^-/ strings is undefined. */
16493         check("-1", 18446744073709551615UL, 0);
16494         check("-18446744073709551614", 2, 0);
16495         check("-18446744073709551615", 1, 0);
16496         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16497         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16498 #endif
16499 EOCP
16500                 ;;
16501         4)
16502                     $cat >>try.c <<'EOCP'
16503         check("4294967295", 4294967295UL, 0);
16504         check("4294967296", 4294967295UL, ERANGE);
16505 #if 0 /* strtoul() for /^-/ strings is undefined. */
16506         check("-1", 4294967295UL, 0);
16507         check("-4294967294", 2, 0);
16508         check("-4294967295", 1, 0);
16509         check("-4294967296", 4294967295UL, ERANGE);
16510         check("-4294967297", 4294967295UL, ERANGE);
16511 #endif
16512 EOCP
16513                 ;;
16514         *)
16515 : Should we write these tests to be more portable by sprintf-ing
16516 : ~0 and then manipulating that char string as input for strtol?
16517                 ;;
16518         esac
16519         $cat >>try.c <<'EOCP'
16520         if (!bad)
16521                 printf("ok\n");
16522         return 0;
16523 }
16524 EOCP
16525         set try
16526         if eval $compile; then
16527                 case "`$run ./try`" in
16528                 ok) echo "Your strtoul() seems to be working okay." ;;
16529                 *) cat <<EOM >&4
16530 Your strtoul() doesn't seem to be working okay.
16531 EOM
16532                    d_strtoul="$undef"
16533                    ;;
16534                 esac
16535         fi
16536         ;;
16537 esac
16538
16539 : see if strtoull exists
16540 set strtoull d_strtoull
16541 eval $inlibc
16542
16543 case "$d_longlong-$d_strtoull" in
16544 "$define-$define")
16545         $cat <<EOM
16546 Checking whether your strtoull() works okay...
16547 EOM
16548         $cat >try.c <<'EOCP'
16549 #include <errno.h>
16550 #ifdef __hpux
16551 #define strtoull __strtoull
16552 #endif
16553 #include <stdio.h>
16554 extern unsigned long long int strtoull(char *s, char **, int); 
16555 static int bad = 0;
16556 int check(char *s, long long eull, int een) {
16557         long long gull;
16558         errno = 0;
16559         gull = strtoull(s, 0, 10);
16560         if (!((gull == eull) && (errno == een)))
16561                 bad++;
16562 }
16563 int main() {
16564         check(" 1",                                        1LL, 0);
16565         check(" 0",                                        0LL, 0);
16566         check("18446744073709551615",  18446744073709551615ULL, 0);
16567         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16568 #if 0 /* strtoull() for /^-/ strings is undefined. */
16569         check("-1",                    18446744073709551615ULL, 0);
16570         check("-18446744073709551614",                     2LL, 0);
16571         check("-18446744073709551615",                     1LL, 0);
16572         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16573         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16574 #endif
16575         if (!bad)
16576                 printf("ok\n");
16577 }
16578 EOCP
16579         set try
16580         if eval $compile; then
16581                 case "`$run ./try`" in
16582                 ok) echo "Your strtoull() seems to be working okay." ;;
16583                 *) cat <<EOM >&4
16584 Your strtoull() doesn't seem to be working okay.
16585 EOM
16586                    d_strtoull="$undef"
16587                    ;;
16588                 esac
16589         fi
16590         ;;
16591 esac
16592
16593 : see if strtouq exists
16594 set strtouq d_strtouq
16595 eval $inlibc
16596
16597 case "$d_strtouq" in
16598 "$define")
16599         $cat <<EOM
16600 Checking whether your strtouq() works okay...
16601 EOM
16602         $cat >try.c <<'EOCP'
16603 #include <errno.h>
16604 #include <stdio.h>
16605 extern unsigned long long int strtouq(char *s, char **, int); 
16606 static int bad = 0;
16607 void check(char *s, unsigned long long eull, int een) {
16608         unsigned long long gull;
16609         errno = 0;
16610         gull = strtouq(s, 0, 10);
16611         if (!((gull == eull) && (errno == een)))
16612                 bad++;
16613 }
16614 int main() {
16615         check(" 1",                                        1LL, 0);
16616         check(" 0",                                        0LL, 0);
16617         check("18446744073709551615",  18446744073709551615ULL, 0);
16618         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
16619 #if 0 /* strtouq() for /^-/ strings is undefined. */
16620         check("-1",                    18446744073709551615ULL, 0);
16621         check("-18446744073709551614",                     2LL, 0);
16622         check("-18446744073709551615",                     1LL, 0);
16623         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16624         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16625 #endif
16626         if (!bad)
16627                 printf("ok\n");
16628         return 0;
16629 }
16630 EOCP
16631         set try
16632         if eval $compile; then
16633                 case "`$run ./try`" in
16634                 ok) echo "Your strtouq() seems to be working okay." ;;
16635                 *) cat <<EOM >&4
16636 Your strtouq() doesn't seem to be working okay.
16637 EOM
16638                    d_strtouq="$undef"
16639                    ;;
16640                 esac
16641         fi
16642         ;;
16643 esac
16644
16645 : see if strxfrm exists
16646 set strxfrm d_strxfrm
16647 eval $inlibc
16648
16649 : see if symlink exists
16650 set symlink d_symlink
16651 eval $inlibc
16652
16653 : see if syscall exists
16654 set syscall d_syscall
16655 eval $inlibc
16656
16657 : see if prototype for syscall is available
16658 echo " "
16659 set d_syscallproto syscall $i_unistd unistd.h
16660 eval $hasproto
16661
16662 : see if sysconf exists
16663 set sysconf d_sysconf
16664 eval $inlibc
16665
16666 : see if system exists
16667 set system d_system
16668 eval $inlibc
16669
16670 : see if tcgetpgrp exists
16671 set tcgetpgrp d_tcgetpgrp
16672 eval $inlibc
16673
16674 : see if tcsetpgrp exists
16675 set tcsetpgrp d_tcsetpgrp
16676 eval $inlibc
16677
16678 : see if prototype for telldir is available
16679 echo " "
16680 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16681 eval $hasproto
16682
16683 : see if time exists
16684 echo " "
16685 if test "X$d_time" = X -o X"$timetype" = X; then
16686     if set time val -f d_time; eval $csym; $val; then
16687                 echo 'time() found.' >&4
16688                 val="$define"
16689                 rp="What is the type returned by time() on this system?"
16690                 set time_t timetype long stdio.h sys/types.h
16691                 eval $typedef_ask
16692     else
16693                 echo 'time() not found, hope that will do.' >&4
16694                 val="$undef"
16695                 timetype='int';
16696     fi
16697     set d_time
16698     eval $setvar
16699 fi
16700
16701 : see if this is a sys/times.h system
16702 set sys/times.h i_systimes
16703 eval $inhdr
16704
16705 : see if times exists
16706 echo " "
16707 if set times val -f d_times; eval $csym; $val; then
16708         echo 'times() found.' >&4
16709         d_times="$define"
16710         inc=''
16711         case "$i_systimes" in
16712         "$define") inc='sys/times.h';;
16713         esac
16714         rp="What is the type returned by times() on this system?"
16715         set clock_t clocktype long stdio.h sys/types.h $inc
16716         eval $typedef_ask
16717 else
16718         echo 'times() NOT found, hope that will do.' >&4
16719         d_times="$undef"
16720         clocktype='int'
16721 fi
16722
16723 : see if tmpnam_r exists
16724 set tmpnam_r d_tmpnam_r
16725 eval $inlibc
16726 case "$d_tmpnam_r" in
16727 "$define")
16728         hdrs="$i_systypes sys/types.h define stdio.h "
16729         case "$d_tmpnam_r_proto:$usethreads" in
16730         ":define")      d_tmpnam_r_proto=define
16731                 set d_tmpnam_r_proto tmpnam_r $hdrs
16732                 eval $hasproto ;;
16733         *)      ;;
16734         esac
16735         case "$d_tmpnam_r_proto" in
16736         define)
16737         case "$tmpnam_r_proto" in
16738         ''|0) try='char* tmpnam_r(char*);'
16739         ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16740         esac
16741         case "$tmpnam_r_proto" in
16742         ''|0)   d_tmpnam_r=undef
16743                 tmpnam_r_proto=0
16744                 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16745         * )     case "$tmpnam_r_proto" in
16746                 REENTRANT_PROTO*) ;;
16747                 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16748                 esac
16749                 echo "Prototype: $try" ;;
16750         esac
16751         ;;
16752         *)      case "$usethreads" in
16753                 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16754                 esac
16755                 d_tmpnam_r=undef
16756                 tmpnam_r_proto=0
16757                 ;;
16758         esac
16759         ;;
16760 *)      tmpnam_r_proto=0
16761         ;;
16762 esac
16763
16764 : see if truncate exists
16765 set truncate d_truncate
16766 eval $inlibc
16767
16768 : see if ttyname_r exists
16769 set ttyname_r d_ttyname_r
16770 eval $inlibc
16771 case "$d_ttyname_r" in
16772 "$define")
16773         hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16774         case "$d_ttyname_r_proto:$usethreads" in
16775         ":define")      d_ttyname_r_proto=define
16776                 set d_ttyname_r_proto ttyname_r $hdrs
16777                 eval $hasproto ;;
16778         *)      ;;
16779         esac
16780         case "$d_ttyname_r_proto" in
16781         define)
16782         case "$ttyname_r_proto" in
16783         ''|0) try='int ttyname_r(int, char*, size_t);'
16784         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16785         esac
16786         case "$ttyname_r_proto" in
16787         ''|0) try='int ttyname_r(int, char*, int);'
16788         ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16789         esac
16790         case "$ttyname_r_proto" in
16791         ''|0) try='char* ttyname_r(int, char*, int);'
16792         ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16793         esac
16794         case "$ttyname_r_proto" in
16795         ''|0)   d_ttyname_r=undef
16796                 ttyname_r_proto=0
16797                 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16798         * )     case "$ttyname_r_proto" in
16799                 REENTRANT_PROTO*) ;;
16800                 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16801                 esac
16802                 echo "Prototype: $try" ;;
16803         esac
16804         ;;
16805         *)      case "$usethreads" in
16806                 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16807                 esac
16808                 d_ttyname_r=undef
16809                 ttyname_r_proto=0
16810                 ;;
16811         esac
16812         ;;
16813 *)      ttyname_r_proto=0
16814         ;;
16815 esac
16816
16817 : see if tzname[] exists
16818 echo " "
16819 if set tzname val -a d_tzname; eval $csym; $val; then
16820         val="$define"
16821         echo 'tzname[] found.' >&4
16822 else
16823         val="$undef"
16824         echo 'tzname[] NOT found.' >&4
16825 fi
16826 set d_tzname
16827 eval $setvar
16828
16829 case "$osname" in
16830 next|rhapsody|darwin) multiarch="$define" ;;
16831 esac
16832 case "$multiarch" in
16833 ''|[nN]*) multiarch="$undef" ;;
16834 esac
16835
16836 : check for ordering of bytes in a UV
16837 echo " "
16838 case "$usecrosscompile$multiarch" in
16839 *$define*)
16840         $cat <<EOM
16841 You seem to be either cross-compiling or doing a multiarchitecture build,
16842 skipping the byteorder check.
16843
16844 EOM
16845         byteorder='ffff'
16846         ;;
16847 *)
16848         case "$byteorder" in
16849         '')
16850                 $cat <<'EOM'
16851 In the following, larger digits indicate more significance.  A big-endian
16852 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16853 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16854 machines may have weird orders like 3412.  A Cray will report 87654321,
16855 an Alpha will report 12345678. If the test program works the default is
16856 probably right.
16857 I'm now running the test program...
16858 EOM
16859                 $cat >try.c <<EOCP
16860 #include <stdio.h>
16861 #$i_stdlib I_STDLIB
16862 #ifdef I_STDLIB
16863 #include <stdlib.h>
16864 #endif
16865 #include <sys/types.h>
16866 typedef $uvtype UV;
16867 int main()
16868 {
16869         int i;
16870         union {
16871                 UV l;
16872                 char c[$uvsize];
16873         } u;
16874
16875         if ($uvsize > 4)
16876                 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16877         else
16878                 u.l = (UV)0x04030201;
16879         for (i = 0; i < $uvsize; i++)
16880                 printf("%c", u.c[i]+'0');
16881         printf("\n");
16882         exit(0);
16883 }
16884 EOCP
16885                 xxx_prompt=y
16886                 set try
16887                 if eval $compile && ./try > /dev/null; then
16888                         dflt=`$run ./try`
16889                         case "$dflt" in
16890                         [1-4][1-4][1-4][1-4]|12345678|87654321)
16891                                 echo "(The test program ran ok.)"
16892                                 echo "byteorder=$dflt"
16893                                 xxx_prompt=n
16894                         ;;
16895                         ????|????????) echo "(The test program ran ok.)" ;;
16896                         *) echo "(The test program didn't run right for some reason.)" ;;
16897                         esac
16898                 else
16899                         dflt='4321'
16900                         cat <<'EOM'
16901 (I can't seem to compile the test program.  Guessing big-endian...)
16902 EOM
16903                 fi
16904                 case "$xxx_prompt" in
16905                 y)
16906                         rp="What is the order of bytes in $uvtype?"
16907                         . ./myread
16908                         byteorder="$ans"
16909                         ;;
16910                 *)      byteorder=$dflt
16911                         ;;
16912                 esac
16913                 ;;
16914         esac
16915         $rm -f try.c try
16916         ;;
16917 esac
16918
16919
16920 $cat <<EOM
16921
16922 Checking to see whether you can access character data unalignedly...
16923 EOM
16924 case "$d_u32align" in
16925 '')   $cat >try.c <<EOCP
16926 #include <stdio.h>
16927 #$i_stdlib I_STDLIB
16928 #ifdef I_STDLIB
16929 #include <stdlib.h>
16930 #endif
16931 #define U32 $u32type
16932 #define BYTEORDER 0x$byteorder
16933 #define U8 $u8type
16934 #include <signal.h>
16935 #ifdef SIGBUS
16936 $signal_t bletch(s) int s; { exit(4); }
16937 #endif
16938 int main() {
16939 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16940     U8 buf[8];
16941     U32 *up;
16942     int i;
16943
16944     if (sizeof(U32) != 4) {
16945         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16946         exit(1);
16947     }
16948
16949     fflush(stdout);
16950
16951 #ifdef SIGBUS
16952     signal(SIGBUS, bletch);
16953 #endif
16954
16955     buf[0] = 0;
16956     buf[1] = 0;
16957     buf[2] = 0;
16958     buf[3] = 1;
16959     buf[4] = 0;
16960     buf[5] = 0;
16961     buf[6] = 0;
16962     buf[7] = 1;
16963
16964     for (i = 0; i < 4; i++) {
16965         up = (U32*)(buf + i);
16966         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
16967                (*up == 1 << (8*(3-i)))  /* little-endian */
16968               )
16969            )
16970         {
16971             printf("read failed (%x)\n", *up);
16972             exit(2);
16973         }
16974     }
16975
16976     /* write test */
16977     for (i = 0; i < 4; i++) {
16978         up = (U32*)(buf + i);
16979         *up = 0xBeef;
16980         if (*up != 0xBeef) {
16981             printf("write failed (%x)\n", *up);
16982             exit(3);
16983         }
16984     }
16985
16986     exit(0);
16987 #else
16988     printf("1\n");
16989     exit(1);
16990 #endif
16991     return 0;
16992 }
16993 EOCP
16994 set try
16995 if eval $compile_ok; then
16996         echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
16997         $run ./try 2>&1 >/dev/null
16998         case "$?" in
16999         0)      cat >&4 <<EOM
17000 You can access character data pretty unalignedly.
17001 EOM
17002                 d_u32align="$undef"
17003                 ;;
17004         *)      cat >&4 <<EOM
17005 It seems that you must access character data in an aligned manner.
17006 EOM
17007                 d_u32align="$define"
17008                 ;;
17009         esac
17010 else
17011         rp='Can you access character data at unaligned addresses?'
17012         dflt='n'
17013         . ./myread
17014         case "$ans" in
17015         [yY]*)  d_u32align="$undef"  ;;
17016         *)      d_u32align="$define" ;;
17017         esac
17018 fi
17019 $rm -f core core.try.* try.core
17020 ;;
17021 esac
17022
17023 : see if ualarm exists
17024 set ualarm d_ualarm
17025 eval $inlibc
17026
17027 : see if umask exists
17028 set umask d_umask
17029 eval $inlibc
17030
17031 : see if unordered exists
17032 set unordered d_unordered
17033 eval $inlibc
17034
17035 : see if usleep exists
17036 set usleep d_usleep
17037 eval $inlibc
17038
17039 : see if prototype for usleep is available
17040 echo " "
17041 set d_usleepproto usleep $i_unistd unistd.h
17042 eval $hasproto
17043
17044 : see if ustat exists
17045 set ustat d_ustat
17046 eval $inlibc
17047
17048 : backward compatibility for d_hvfork
17049 if test X$d_hvfork != X; then
17050         d_vfork="$d_hvfork"
17051         d_hvfork=''
17052 fi
17053 : see if there is a vfork
17054 val=''
17055 set vfork val
17056 eval $inlibc
17057
17058 : Ok, but do we want to use it. vfork is reportedly unreliable in 
17059 : perl on Solaris 2.x, and probably elsewhere.
17060 case "$val" in
17061 $define)
17062         echo " "
17063         case "$usevfork" in
17064         false) dflt='n';;
17065         *) dflt='y';;
17066         esac
17067         cat <<'EOM'
17068  
17069 Perl can only use a vfork() that doesn't suffer from strict
17070 restrictions on calling functions or modifying global data in
17071 the child.  For example, glibc-2.1 contains such a vfork()
17072 that is unsuitable.  If your system provides a proper fork()
17073 call, chances are that you do NOT want perl to use vfork().
17074
17075 EOM
17076         rp="Do you still want to use vfork()?"
17077         . ./myread
17078         case "$ans" in
17079         y|Y) ;;
17080         *)
17081                 echo "Ok, we won't use vfork()."
17082                 val="$undef"
17083                 ;;
17084         esac
17085         ;;
17086 esac
17087 set d_vfork
17088 eval $setvar
17089 case "$d_vfork" in
17090 $define) usevfork='true';;
17091 *) usevfork='false';;
17092 esac
17093
17094 : see if closedir exists
17095 set closedir d_closedir
17096 eval $inlibc
17097
17098 case "$d_closedir" in
17099 "$define")
17100         echo " "
17101         echo "Checking whether closedir() returns a status..." >&4
17102         cat > try.c <<EOM
17103 #$i_dirent I_DIRENT             /**/
17104 #$i_sysdir I_SYS_DIR            /**/
17105 #$i_sysndir I_SYS_NDIR          /**/
17106 #$i_systypes I_SYS_TYPES        /**/
17107
17108 #if defined(I_SYS_TYPES)
17109 #include <sys/types.h>
17110 #endif
17111 #if defined(I_DIRENT)
17112 #include <dirent.h>
17113 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17114 #include <sys/dir.h>
17115 #endif
17116 #else
17117 #ifdef I_SYS_NDIR
17118 #include <sys/ndir.h>
17119 #else
17120 #ifdef I_SYS_DIR
17121 #ifdef hp9000s500
17122 #include <ndir.h>       /* may be wrong in the future */
17123 #else
17124 #include <sys/dir.h>
17125 #endif
17126 #endif
17127 #endif
17128 #endif 
17129 int main() { return closedir(opendir(".")); }
17130 EOM
17131         set try
17132         if eval $compile_ok; then
17133                 if $run ./try > /dev/null 2>&1 ; then
17134                         echo "Yes, it does."
17135                         val="$undef"
17136                 else
17137                         echo "No, it doesn't."
17138                         val="$define"
17139                 fi
17140         else
17141                 echo "(I can't seem to compile the test program--assuming it doesn't)"
17142                 val="$define"
17143         fi
17144         ;;
17145 *)
17146         val="$undef";
17147         ;;
17148 esac
17149 set d_void_closedir
17150 eval $setvar
17151 $rm -f try try.*
17152 : see if there is a wait4
17153 set wait4 d_wait4
17154 eval $inlibc
17155
17156 : see if waitpid exists
17157 set waitpid d_waitpid
17158 eval $inlibc
17159
17160 : see if wcstombs exists
17161 set wcstombs d_wcstombs
17162 eval $inlibc
17163
17164 : see if wctomb exists
17165 set wctomb d_wctomb
17166 eval $inlibc
17167
17168 : see if writev exists
17169 set writev d_writev
17170 eval $inlibc
17171
17172 : preserve RCS keywords in files with variable substitution, grrr
17173 Date='$Date'
17174 Id='$Id'
17175 Log='$Log'
17176 RCSfile='$RCSfile'
17177 Revision='$Revision'
17178
17179 : check for alignment requirements
17180 echo " "
17181 case "$usecrosscompile$multiarch" in
17182 *$define*)
17183         $cat <<EOM
17184 You seem to be either cross-compiling or doing a multiarchitecture build,
17185 skipping the memory alignment check.
17186
17187 EOM
17188         case "$alignbytes" in
17189         '') alignbytes=8 ;;
17190         esac
17191         ;;
17192 *)
17193         case "$alignbytes" in
17194         '') echo "Checking alignment constraints..." >&4
17195                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17196                         $cat >try.c <<'EOCP'
17197 typedef long double NV;
17198 EOCP
17199                 else
17200                         $cat >try.c <<'EOCP'
17201 typedef double NV;
17202 EOCP
17203                 fi
17204                 $cat >>try.c <<'EOCP'
17205 #include <stdio.h>
17206 struct foobar {
17207         char foo;
17208         NV bar;
17209 } try_algn;
17210 int main()
17211 {
17212     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17213     return(0);
17214 }
17215 EOCP
17216                 set try
17217                 if eval $compile_ok; then
17218                         dflt=`$run ./try`
17219                 else
17220                         dflt='8'
17221                         echo "(I can't seem to compile the test program...)"
17222                 fi
17223                 ;;
17224         *) dflt="$alignbytes"
17225                 ;;
17226         esac
17227         rp="Doubles must be aligned on a how-many-byte boundary?"
17228         . ./myread
17229         alignbytes="$ans"
17230         $rm -f try.c try
17231         ;;
17232 esac
17233
17234
17235 : set the base revision
17236 baserev=5.0
17237
17238 : how do we concatenate cpp tokens here?
17239 echo " "
17240 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17241 $cat >cpp_stuff.c <<'EOCP'
17242 #define RCAT(a,b)a/**/b
17243 #define ACAT(a,b)a ## b
17244 RCAT(Rei,ser)
17245 ACAT(Cir,cus)
17246 EOCP
17247 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17248 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17249         echo "Oh!  Smells like ANSI's been here." >&4
17250         echo "We can catify or stringify, separately or together!"
17251         cpp_stuff=42
17252 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17253         echo "Ah, yes!  The good old days!" >&4
17254         echo "However, in the good old days we don't know how to stringify and"
17255         echo "catify at the same time."
17256         cpp_stuff=1
17257 else
17258         $cat >&4 <<EOM
17259 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17260 You're going to have to edit the values of CAT[2-5] in config.h...
17261 EOM
17262         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17263 fi
17264 $rm -f cpp_stuff.*
17265
17266 : see if this is a db.h system
17267 set db.h i_db
17268 eval $inhdr
17269
17270 case "$i_db" in
17271 $define)
17272         : Check db version.
17273         echo " "
17274         echo "Checking Berkeley DB version ..." >&4
17275         $cat >try.c <<EOCP
17276 #$d_const HASCONST
17277 #ifndef HASCONST
17278 #define const
17279 #endif
17280 #include <sys/types.h>
17281 #include <stdio.h>
17282 #$i_stdlib I_STDLIB
17283 #ifdef I_STDLIB
17284 #include <stdlib.h>
17285 #endif
17286 #include <db.h>
17287 int main(int argc, char *argv[])
17288 {
17289 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17290     int Major, Minor, Patch ;
17291     unsigned long Version ;
17292     (void)db_version(&Major, &Minor, &Patch) ;
17293     if (argc == 2) {
17294         printf("%d %d %d %d %d %d\n",
17295                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17296                Major, Minor, Patch);
17297         exit(0);
17298     }
17299     printf("You have Berkeley DB Version 2 or greater.\n");
17300
17301     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17302                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17303     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17304                 Major, Minor, Patch) ;
17305
17306     /* check that db.h & libdb are compatible */
17307     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17308         printf("db.h and libdb are incompatible.\n") ;
17309         exit(3);        
17310     }
17311
17312     printf("db.h and libdb are compatible.\n") ;
17313
17314     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17315                 + DB_VERSION_PATCH ;
17316
17317     /* needs to be >= 2.3.4 */
17318     if (Version < 2003004) {
17319     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17320         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17321         exit(2);        
17322     }
17323
17324     exit(0);
17325 #else
17326 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17327     if (argc == 2) {
17328         printf("1 0 0\n");
17329         exit(0);
17330     }
17331     printf("You have Berkeley DB Version 1.\n");
17332     exit(0);    /* DB version < 2: the coast is clear. */
17333 #else
17334     exit(1);    /* <db.h> not Berkeley DB? */
17335 #endif
17336 #endif
17337 }
17338 EOCP
17339         set try
17340         if eval $compile_ok && $run ./try; then
17341                 echo 'Looks OK.' >&4
17342                 set `$run ./try 1`
17343                 db_version_major=$1
17344                 db_version_minor=$2
17345                 db_version_patch=$3
17346         else
17347                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
17348                 i_db=$undef
17349                 case " $libs " in
17350                 *"-ldb "*)
17351                         : Remove db from list of libraries to use
17352                         echo "Removing unusable -ldb from library list" >&4
17353                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17354                         shift
17355                         libs="$*"
17356                         echo "libs = $libs" >&4
17357                         ;;
17358                 esac
17359         fi
17360         $rm -f try.*
17361         ;;
17362 esac
17363
17364 case "$i_db" in
17365 define)
17366         : Check the return type needed for hash 
17367         echo " "
17368         echo "Checking return type needed for hash for Berkeley DB ..." >&4
17369         $cat >try.c <<EOCP
17370 #$d_const HASCONST
17371 #ifndef HASCONST
17372 #define const
17373 #endif
17374 #include <sys/types.h>
17375 #include <db.h>
17376
17377 #ifndef DB_VERSION_MAJOR
17378 u_int32_t hash_cb (ptr, size)
17379 const void *ptr;
17380 size_t size;
17381 {
17382 }
17383 HASHINFO info;
17384 int main()
17385 {
17386         info.hash = hash_cb;
17387 }
17388 #endif
17389 EOCP
17390         if $cc $ccflags -c try.c >try.out 2>&1 ; then
17391                 if $contains warning try.out >>/dev/null 2>&1 ; then
17392                         db_hashtype='int'
17393                 else
17394                         db_hashtype='u_int32_t'
17395                 fi
17396         else
17397                 : XXX Maybe we should just give up here.
17398                 db_hashtype=u_int32_t
17399                 $cat try.out >&4
17400                 echo "Help:  I can't seem to compile the db test program." >&4
17401                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17402         fi
17403         $rm -f try.*
17404         echo "Your version of Berkeley DB uses $db_hashtype for hash."
17405         ;;
17406 *)      db_hashtype=u_int32_t
17407         ;;
17408 esac
17409 case "$i_db" in
17410 define)
17411         : Check the return type needed for prefix 
17412         echo " "
17413         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17414         cat >try.c <<EOCP
17415 #$d_const HASCONST
17416 #ifndef HASCONST
17417 #define const
17418 #endif
17419 #include <sys/types.h>
17420 #include <db.h>
17421
17422 #ifndef DB_VERSION_MAJOR
17423 size_t prefix_cb (key1, key2)
17424 const DBT *key1;
17425 const DBT *key2;
17426 {
17427 }
17428 BTREEINFO info;
17429 int main()
17430 {
17431         info.prefix = prefix_cb;
17432 }
17433 #endif
17434 EOCP
17435         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
17436                 if $contains warning try.out >>/dev/null 2>&1 ; then
17437                         db_prefixtype='int'
17438                 else
17439                         db_prefixtype='size_t'
17440                 fi
17441         else
17442                 db_prefixtype='size_t'
17443                 : XXX Maybe we should just give up here.
17444                 $cat try.out >&4
17445                 echo "Help:  I can't seem to compile the db test program." >&4
17446                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17447         fi
17448         $rm -f try.*
17449         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17450         ;;
17451 *)      db_prefixtype='size_t'
17452         ;;
17453 esac
17454
17455
17456 : How can we generate normalized random numbers ?
17457 echo " "
17458 echo "Looking for a random number function..." >&4
17459 case "$randfunc" in
17460 '')
17461         if set drand48 val -f; eval $csym; $val; then
17462                 dflt="drand48"
17463                 echo "Good, found drand48()." >&4
17464         elif set random val -f; eval $csym; $val; then
17465                 dflt="random"
17466                 echo "OK, found random()." >&4
17467         else
17468                 dflt="rand"
17469                 echo "Yick, looks like I have to use rand()." >&4
17470         fi
17471         echo " "
17472         ;;
17473 *)
17474         dflt="$randfunc"
17475         ;;
17476 esac
17477 cont=true
17478
17479 case "$ccflags" in
17480 *-Dmy_rand=*|*-Dmy_srand=*)
17481         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17482         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17483         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17484         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17485         ;;
17486 esac
17487
17488 while $test "$cont"; do
17489         rp="Use which function to generate random numbers?"
17490         . ./myread
17491         if $test "$ans" = "$dflt"; then
17492                 : null
17493         else
17494                 randbits=''
17495         fi
17496         randfunc="$ans"
17497         if set $ans val -f; eval $csym; $val; then
17498                 cont=''
17499         else
17500                 dflt=y
17501                 rp="I cannot find function $ans. Use that name anyway?"
17502                 . ./myread
17503                 dflt=rand
17504                 case "$ans" in
17505                         [yY]*) cont='';;
17506                 esac
17507         fi
17508         case "$cont" in
17509         '')
17510                 case "$randfunc" in
17511                 drand48)
17512                         drand01="drand48()"
17513                         seedfunc="srand48"
17514                         randbits=48
17515                         randseedtype=long
17516                         ;;
17517                 rand|random)
17518                         case "$randbits" in
17519                         '')
17520 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17521                                 $cat >try.c <<EOCP
17522 #$i_unistd I_UNISTD
17523 #$i_stdlib I_STDLIB
17524 #include <stdio.h>
17525 #ifdef I_UNISTD
17526 #  include <unistd.h>
17527 #endif
17528 #ifdef I_STDLIB
17529 #  include <stdlib.h>
17530 #endif
17531 int main()
17532 {
17533         register int i;
17534         register unsigned long tmp;
17535         register unsigned long max = 0L;
17536
17537         for (i = 1000; i; i--) {
17538                 tmp = (unsigned long) $randfunc();
17539                 if (tmp > max) max = tmp;
17540         }
17541         for (i = 0; max; i++)
17542                 max /= 2;
17543         printf("%d\n",i);
17544 }
17545 EOCP
17546                                 set try
17547                                 if eval $compile_ok; then
17548                                         dflt=`try`
17549                                 else
17550                                         dflt='?'
17551                                         echo "(I can't seem to compile the test program...)"
17552                                 fi
17553                                 ;;
17554                         *)
17555                                 dflt="$randbits"
17556                                 ;;
17557                         esac
17558                         rp="How many bits does your $randfunc() function produce?"
17559                         . ./myread
17560                         randbits="$ans"
17561                         $rm -f try.c try
17562                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17563                         seedfunc="s$randfunc"
17564                         randseedtype=unsigned
17565                         ;;
17566                 *)
17567                         dflt="31"
17568                         rp="How many bits does your $randfunc() function produce?"
17569                         . ./myread
17570                         randbits="$ans"
17571                         seedfunc="s$randfunc"
17572                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17573                         if set $seedfunc val -f; eval $csym; $val; then
17574                                 echo "(Using $seedfunc() to seed random generator)"
17575                         else
17576                                 echo "(Warning: no $seedfunc() to seed random generator)"
17577                                 seedfunc=rand
17578                         fi
17579                         randseedtype=unsigned
17580                         ;;
17581                 esac
17582                 ;;
17583         esac
17584 done
17585
17586 echo " "
17587 echo "Determining whether or not we are on an EBCDIC system..." >&4
17588 $cat >try.c <<'EOM'
17589 int main()
17590 {
17591   if ('M'==0xd4) return 0;
17592   return 1;
17593 }
17594 EOM
17595
17596 val=$undef
17597 set try
17598 if eval $compile_ok; then
17599         if $run ./try; then
17600                 echo "You seem to speak EBCDIC." >&4
17601                 val="$define"
17602         else
17603                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17604         fi
17605 else
17606         echo "I'm unable to compile the test program." >&4
17607         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17608 fi
17609 $rm -f try try.*
17610 set ebcdic
17611 eval $setvar
17612
17613 echo " "
17614 $cat >&4 <<EOM
17615 Checking how to flush all pending stdio output...
17616 EOM
17617 # I only know how to find the first 32 possibly open files on SunOS.
17618 # See also hints/sunos_4_1.sh and util.c  --AD
17619 case "$osname" in
17620 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17621 esac
17622 $cat >>try.c <<EOCP
17623 #include <stdio.h>
17624 #$i_stdlib I_STDLIB
17625 #ifdef I_STDLIB
17626 #include <stdlib.h>
17627 #endif
17628 #$i_unistd I_UNISTD
17629 #ifdef I_UNISTD
17630 # include <unistd.h>
17631 #endif
17632 #$d_sysconf HAS_SYSCONF
17633 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17634 #ifdef HAS_STDIO_STREAM_ARRAY
17635 # define STDIO_STREAM_ARRAY $stdio_stream_array
17636 #endif
17637 int main() {
17638   FILE* p;
17639   unlink("try.out");
17640   p = fopen("try.out", "w");
17641 #ifdef TRY_FPUTC
17642   fputc('x', p);
17643 #else
17644 # ifdef TRY_FPRINTF
17645   fprintf(p, "x");
17646 # endif
17647 #endif
17648 #ifdef TRY_FFLUSH_NULL
17649   fflush(NULL);
17650 #endif
17651 #ifdef TRY_FFLUSH_ALL
17652   {
17653     long open_max = -1;
17654 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17655     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17656 # else
17657 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17658     open_max = sysconf(_SC_OPEN_MAX);
17659 #  else
17660 #   ifdef FOPEN_MAX
17661     open_max = FOPEN_MAX;
17662 #   else
17663 #    ifdef OPEN_MAX
17664     open_max = OPEN_MAX;
17665 #    else
17666 #     ifdef _NFILE
17667     open_max = _NFILE;
17668 #     endif
17669 #    endif
17670 #   endif
17671 #  endif
17672 # endif 
17673 # ifdef HAS_STDIO_STREAM_ARRAY
17674     if (open_max > 0) {
17675       long i;
17676       for (i = 0; i < open_max; i++)
17677             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17678                 STDIO_STREAM_ARRAY[i]._file < open_max &&
17679                 STDIO_STREAM_ARRAY[i]._flag)
17680                 fflush(&STDIO_STREAM_ARRAY[i]);
17681     }   
17682   }
17683 # endif
17684 #endif
17685   _exit(42);
17686 }
17687 EOCP
17688 : first we have to find out how _not_ to flush
17689 $to try.c
17690 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17691     output=''
17692     set try -DTRY_FPUTC
17693     if eval $compile; then
17694             $run ./try 2>/dev/null
17695             code="$?"
17696             $from try.out
17697             if $test ! -s try.out -a "X$code" = X42; then
17698                 output=-DTRY_FPUTC
17699             fi
17700     fi
17701     case "$output" in
17702     '')
17703             set try -DTRY_FPRINTF
17704             if eval $compile; then
17705                     $run ./try 2>/dev/null
17706                     code="$?"
17707                     $from try.out
17708                     if $test ! -s try.out -a "X$code" = X42; then
17709                         output=-DTRY_FPRINTF
17710                     fi
17711             fi
17712         ;;
17713     esac
17714 fi
17715 : check for fflush NULL behaviour
17716 case "$fflushNULL" in
17717 '')     set try -DTRY_FFLUSH_NULL $output
17718         if eval $compile; then
17719                 $run ./try 2>/dev/null
17720                 code="$?"
17721                 $from try.out
17722                 if $test -s try.out -a "X$code" = X42; then
17723                         fflushNULL="`$cat try.out`"
17724                 else
17725                         if $test "X$code" != X42; then
17726                                 $cat >&4 <<EOM
17727 (If this test failed, don't worry, we'll try another method shortly.)
17728 EOM
17729                         fi
17730                 fi
17731         fi
17732         $rm -f core try.core core.try.*
17733         case "$fflushNULL" in
17734         x)      $cat >&4 <<EOM
17735 Your fflush(NULL) works okay for output streams.
17736 Let's see if it clobbers input pipes...
17737 EOM
17738 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17739 # bug that improperly flushes the input end of pipes.  So we avoid the
17740 # autoflush on fork/system/exec support for now. :-(
17741 $cat >tryp.c <<EOCP
17742 #include <stdio.h>
17743 int
17744 main(int argc, char **argv)
17745 {
17746     char buf[1024];
17747     int i;
17748     char *bp = buf;
17749     while (1) {
17750         while ((i = getc(stdin)) != -1
17751                && (*bp++ = i) != '\n'
17752                && bp < &buf[1024])
17753         /* DO NOTHING */ ;
17754         *bp = '\0';
17755         fprintf(stdout, "%s", buf);
17756         fflush(NULL);
17757         if (i == -1)
17758             return 0;
17759         bp = buf;
17760     }
17761 }
17762 EOCP
17763                 fflushNULL="$define"
17764                 set tryp
17765                 if eval $compile; then
17766                     $rm -f tryp.out
17767                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17768                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
17769                        $cat >&4 <<EOM
17770 fflush(NULL) seems to behave okay with input streams.
17771 EOM
17772                         fflushNULL="$define"
17773                     else
17774                         $cat >&4 <<EOM
17775 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
17776 EOM
17777                         fflushNULL="$undef"
17778                     fi
17779                 fi
17780                 $rm -f core tryp.c tryp.core core.tryp.*
17781                 ;;
17782         '')     $cat >&4 <<EOM
17783 Your fflush(NULL) isn't working (contrary to ANSI C).
17784 EOM
17785                 fflushNULL="$undef"
17786                 ;;
17787         *)      $cat >&4 <<EOM
17788 Cannot figure out whether your fflush(NULL) works or not.
17789 I'm assuming it doesn't (contrary to ANSI C).
17790 EOM
17791                 fflushNULL="$undef"
17792                 ;;
17793         esac
17794         ;;
17795 $define|true|[yY]*)
17796         fflushNULL="$define"
17797         ;;
17798 *)
17799         fflushNULL="$undef"
17800         ;;
17801 esac
17802 : check explicit looping only if NULL did not work, and if the pipe
17803 : bug does not show up on an explicit flush too
17804 case "$fflushNULL" in
17805 "$undef")
17806         $cat >tryp.c <<EOCP
17807 #include <stdio.h>
17808 int
17809 main(int argc, char **argv)
17810 {
17811     char buf[1024];
17812     int i;
17813     char *bp = buf;
17814     while (1) {
17815         while ((i = getc(stdin)) != -1
17816                && (*bp++ = i) != '\n'
17817                && bp < &buf[1024])
17818         /* DO NOTHING */ ;
17819         *bp = '\0';
17820         fprintf(stdout, "%s", buf);
17821         fflush(stdin);
17822         if (i == -1)
17823             return 0;
17824         bp = buf;
17825     }
17826 }
17827 EOCP
17828         set tryp
17829         if eval $compile; then
17830             $rm -f tryp.out
17831             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17832             if cmp tryp.c tryp.out >/dev/null 2>&1; then
17833                $cat >&4 <<EOM
17834 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17835 EOM
17836                 : now check for fflushall behaviour
17837                 case "$fflushall" in
17838                 '')     set try -DTRY_FFLUSH_ALL $output
17839                         if eval $compile; then
17840                                 $cat >&4 <<EOM
17841 (Now testing the other method--but note that this also may fail.)
17842 EOM
17843                                 $run ./try 2>/dev/null
17844                                 code=$?
17845                                 $from try.out
17846                                 if $test -s try.out -a "X$code" = X42; then
17847                                         fflushall="`$cat try.out`"
17848                                 fi
17849                         fi
17850                         $rm -f core try.core core.try.*
17851                         case "$fflushall" in
17852                         x)      $cat >&4 <<EOM
17853 Whew. Flushing explicitly all the stdio streams works.
17854 EOM
17855                                 fflushall="$define"
17856                                 ;;
17857                         '')     $cat >&4 <<EOM
17858 Sigh. Flushing explicitly all the stdio streams doesn't work.
17859 EOM
17860                                 fflushall="$undef"
17861                                 ;;
17862                         *)      $cat >&4 <<EOM
17863 Cannot figure out whether flushing stdio streams explicitly works or not.
17864 I'm assuming it doesn't.
17865 EOM
17866                                 fflushall="$undef"
17867                                 ;;
17868                         esac
17869                         ;;
17870                 "$define"|true|[yY]*)
17871                         fflushall="$define"
17872                         ;;
17873                 *)
17874                         fflushall="$undef"
17875                         ;;
17876                 esac
17877             else
17878                 $cat >&4 <<EOM
17879 All is futile.  Even fflush(stdin) clobbers input pipes!
17880 EOM
17881                 fflushall="$undef"
17882             fi
17883         else
17884             fflushall="$undef"
17885         fi
17886         $rm -f core tryp.c tryp.core core.tryp.*
17887         ;;
17888 *)      fflushall="$undef"
17889         ;;
17890 esac
17891
17892 case "$fflushNULL$fflushall" in
17893 undefundef)
17894         $cat <<EOM
17895 OK, I give up.  I cannot figure out how to flush pending stdio output.
17896 We won't be flushing handles at all before fork/exec/popen.
17897 EOM
17898         ;;
17899 esac
17900 $rm -f try.* try$exe_ext
17901
17902 : Store the full pathname to the ar program for use in the C program
17903 : Respect a hint or command line value for full_ar.
17904 case "$full_ar" in
17905 '') full_ar=$ar ;;
17906 esac
17907
17908 : Store the full pathname to the sed program for use in the C program
17909 full_sed=$sed
17910
17911 : see what type gids are declared as in the kernel
17912 echo " "
17913 echo "Looking for the type for group ids returned by getgid()."
17914 set gid_t gidtype xxx stdio.h sys/types.h
17915 eval $typedef
17916 case "$gidtype" in
17917 xxx)
17918         xxx=`./findhdr sys/user.h`
17919         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17920         case $1 in
17921         unsigned) dflt="$1 $2" ;;
17922         *) dflt="$1" ;;
17923         esac
17924         ;;
17925 *) dflt="$gidtype";;
17926 esac
17927 case "$gidtype" in
17928 gid_t) echo "gid_t found." ;;
17929 *)      rp="What is the type for group ids returned by getgid()?"
17930         . ./myread
17931         gidtype="$ans"
17932         ;;
17933 esac
17934
17935 echo " "
17936 case "$gidtype" in
17937 *_t) zzz="$gidtype"     ;;
17938 *)   zzz="gid"          ;;
17939 esac
17940 echo "Checking the size of $zzz..." >&4 
17941 cat > try.c <<EOCP
17942 #include <sys/types.h>
17943 #include <stdio.h>
17944 #$i_stdlib I_STDLIB
17945 #ifdef I_STDLIB
17946 #include <stdlib.h>
17947 #endif
17948 int main() {
17949     printf("%d\n", (int)sizeof($gidtype));
17950     exit(0);
17951 }
17952 EOCP
17953 set try
17954 if eval $compile_ok; then
17955         yyy=`$run ./try`
17956         case "$yyy" in
17957         '')     gidsize=4
17958                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17959                 ;;
17960         *)      gidsize=$yyy
17961                 echo "Your $zzz is $gidsize bytes long."
17962                 ;;
17963         esac
17964 else
17965         gidsize=4
17966         echo "(I can't compile the test program--guessing $gidsize.)" >&4
17967 fi
17968
17969
17970 echo " "
17971 case "$gidtype" in
17972 *_t) zzz="$gidtype"     ;;
17973 *)   zzz="gid"          ;;
17974 esac
17975 echo "Checking the sign of $zzz..." >&4 
17976 cat > try.c <<EOCP
17977 #include <sys/types.h>
17978 #include <stdio.h>
17979 int main() {
17980         $gidtype foo = -1;
17981         if (foo < 0)
17982                 printf("-1\n");
17983         else
17984                 printf("1\n");
17985 }
17986 EOCP
17987 set try
17988 if eval $compile; then
17989         yyy=`$run ./try`
17990         case "$yyy" in
17991         '')     gidsign=1
17992                 echo "(I can't execute the test program--guessing unsigned.)" >&4
17993                 ;;
17994         *)      gidsign=$yyy
17995                 case "$gidsign" in
17996                  1) echo "Your $zzz is unsigned." ;;
17997                 -1) echo "Your $zzz is signed."   ;;
17998                 esac
17999                 ;;
18000         esac
18001 else
18002         gidsign=1
18003         echo "(I can't compile the test program--guessing unsigned.)" >&4
18004 fi
18005
18006
18007 echo " "
18008
18009 if $test X"$quadtype" != X; then
18010
18011 echo "Checking how to print 64-bit integers..." >&4
18012
18013 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18014         $cat >try.c <<'EOCP'
18015 #include <sys/types.h>
18016 #include <stdio.h>
18017 int main() {
18018   int q = 12345678901;
18019   printf("%ld\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='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18028                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18029                         echo "We will use %d."
18030                         ;;
18031                 esac
18032         fi
18033 fi
18034
18035 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18036         $cat >try.c <<'EOCP'
18037 #include <sys/types.h>
18038 #include <stdio.h>
18039 int main() {
18040   long q = 12345678901;
18041   printf("%ld\n", q);
18042 }
18043 EOCP
18044         set try
18045         if eval $compile; then
18046                 yyy=`$run ./try`
18047                 case "$yyy" in
18048                 12345678901)
18049                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18050                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18051                         echo "We will use %ld."
18052                         ;;
18053                 esac
18054         fi
18055 fi
18056
18057 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18058         $cat >try.c <<'EOCP'
18059 #include <sys/types.h>
18060 #include <inttypes.h>
18061 #include <stdio.h>
18062 int main() {
18063   int64_t q = 12345678901;
18064   printf("%" PRId64 "\n", q);
18065 }
18066 EOCP
18067         set try
18068         if eval $compile; then
18069                 yyy=`$run ./try`
18070                 case "$yyy" in
18071                 12345678901)
18072                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18073                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18074                         echo "We will use the C9X style."
18075                         ;;
18076                 esac
18077         fi
18078 fi
18079
18080 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18081         $cat >try.c <<EOCP
18082 #include <sys/types.h>
18083 #include <stdio.h>
18084 int main() {
18085   $quadtype q = 12345678901;
18086   printf("%Ld\n", q);
18087 }
18088 EOCP
18089         set try
18090         if eval $compile; then
18091                 yyy=`$run ./try`
18092                 case "$yyy" in
18093                 12345678901)
18094                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18095                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18096                         echo "We will use %Ld."
18097                         ;;
18098                 esac
18099         fi
18100 fi
18101
18102 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18103         $cat >try.c <<'EOCP'
18104 #include <sys/types.h>
18105 #include <stdio.h>
18106 int main() {
18107   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18108   printf("%lld\n", q);
18109 }
18110 EOCP
18111         set try
18112         if eval $compile; then
18113                 yyy=`$run ./try`
18114                 case "$yyy" in
18115                 12345678901)
18116                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18117                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18118                         echo "We will use the %lld style."
18119                         ;;
18120                 esac
18121         fi
18122 fi
18123
18124 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18125         $cat >try.c <<EOCP
18126 #include <sys/types.h>
18127 #include <stdio.h>
18128 int main() {
18129   $quadtype q = 12345678901;
18130   printf("%qd\n", q);
18131 }
18132 EOCP
18133         set try
18134         if eval $compile; then
18135                 yyy=`$run ./try`
18136                 case "$yyy" in
18137                 12345678901)
18138                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18139                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18140                         echo "We will use %qd."
18141                         ;;
18142                 esac
18143         fi
18144 fi
18145
18146 if $test X"$sPRId64" = X; then
18147         echo "Cannot figure out how to print 64-bit integers." >&4
18148 fi
18149
18150 $rm -f try try.*
18151
18152 fi
18153
18154 case "$sPRId64" in
18155 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
18156         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
18157         ;;
18158 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
18159         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
18160         ;;
18161 esac
18162
18163
18164 echo " "
18165 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18166
18167 if $test X"$ivsize" = X8; then
18168         ivdformat="$sPRId64"
18169         uvuformat="$sPRIu64"
18170         uvoformat="$sPRIo64"
18171         uvxformat="$sPRIx64"
18172         uvXUformat="$sPRIXU64"
18173 else
18174         if $test X"$ivsize" = X"$longsize"; then
18175                 ivdformat='"ld"'
18176                 uvuformat='"lu"'
18177                 uvoformat='"lo"'
18178                 uvxformat='"lx"'
18179                 uvXUformat='"lX"'
18180         else
18181                 if $test X"$ivsize" = X"$intsize"; then
18182                         ivdformat='"d"'
18183                         uvuformat='"u"'
18184                         uvoformat='"o"'
18185                         uvxformat='"x"'
18186                         uvXUformat='"X"'
18187                 else
18188                         : far out
18189                         if $test X"$ivsize" = X"$shortsize"; then
18190                                 ivdformat='"hd"'
18191                                 uvuformat='"hu"'
18192                                 uvoformat='"ho"'
18193                                 uvxformat='"hx"'
18194                                 uvXUformat='"hX"'
18195                         fi
18196                 fi
18197         fi
18198 fi
18199
18200 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18201         nveformat="$sPRIeldbl"
18202         nvfformat="$sPRIfldbl"
18203         nvgformat="$sPRIgldbl"
18204         nvEUformat="$sPRIEUldbl"
18205         nvFUformat="$sPRIFUldbl"
18206         nvGUformat="$sPRIGUldbl"
18207 else
18208         nveformat='"e"'
18209         nvfformat='"f"'
18210         nvgformat='"g"'
18211         nvEUformat='"E"'
18212         nvFUformat='"F"'
18213         nvGUformat='"G"'
18214 fi
18215
18216 case "$ivdformat" in
18217 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18218     exit 1
18219     ;;
18220 esac
18221
18222
18223 echo " "
18224 $echo "Checking the format string to be used for gids..." >&4
18225
18226 case "$gidsign" in
18227 -1)     if $test X"$gidsize" = X"$ivsize"; then
18228                 gidformat="$ivdformat"
18229         else
18230                 if $test X"$gidsize" = X"$longsize"; then
18231                         gidformat='"ld"'
18232                 else
18233                         if $test X"$gidsize" = X"$intsize"; then
18234                                 gidformat='"d"'
18235                         else
18236                                 if $test X"$gidsize" = X"$shortsize"; then
18237                                         gidformat='"hd"'
18238                                 fi
18239                         fi
18240                 fi
18241         fi
18242         ;;
18243 *)      if $test X"$gidsize" = X"$uvsize"; then
18244                 gidformat="$uvuformat"
18245         else
18246                 if $test X"$gidsize" = X"$longsize"; then
18247                         gidformat='"lu"'
18248                 else
18249                         if $test X"$gidsize" = X"$intsize"; then
18250                                 gidformat='"u"'
18251                         else
18252                                 if $test X"$gidsize" = X"$shortsize"; then
18253                                         gidformat='"hu"'
18254                                 fi
18255                         fi
18256                 fi
18257         fi
18258         ;;
18259 esac
18260
18261 : see if getgroups exists
18262 set getgroups d_getgrps
18263 eval $inlibc
18264
18265 : see if setgroups exists
18266 set setgroups d_setgrps
18267 eval $inlibc
18268
18269
18270 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18271 echo " "
18272 case "$d_getgrps$d_setgrps" in
18273 *define*)
18274         case "$groupstype" in
18275         '') dflt="$gidtype" ;;
18276         *)  dflt="$groupstype" ;;
18277         esac
18278         $cat <<EOM
18279 What type of pointer is the second argument to getgroups() and setgroups()?
18280 Usually this is the same as group ids, $gidtype, but not always.
18281
18282 EOM
18283         rp='What type pointer is the second argument to getgroups() and setgroups()?'
18284         . ./myread
18285         groupstype="$ans"
18286         ;;
18287 *)  groupstype="$gidtype";;
18288 esac
18289
18290 echo " "
18291 echo "Checking if your $make program sets \$(MAKE)..." >&4
18292 case "$make_set_make" in
18293 '')
18294         $sed 's/^X //' > testmake.mak << 'EOF'
18295 Xall:
18296 X       @echo 'maketemp="$(MAKE)"'
18297 EOF
18298         case "`$make -f testmake.mak 2>/dev/null`" in
18299         *maketemp=*) make_set_make='#' ;;
18300         *)      make_set_make="MAKE=$make" ;;
18301         esac
18302         $rm -f testmake.mak
18303         ;;
18304 esac
18305 case "$make_set_make" in
18306 '#') echo "Yup, it does.";;
18307 *) echo "Nope, it doesn't.";;
18308 esac
18309
18310 : see what type is used for mode_t
18311 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18312 set mode_t modetype int stdio.h sys/types.h
18313 eval $typedef_ask
18314
18315 : see if stdarg is available
18316 echo " "
18317 if $test `./findhdr stdarg.h`; then
18318         echo "<stdarg.h> found." >&4
18319         valstd="$define"
18320 else
18321         echo "<stdarg.h> NOT found." >&4
18322         valstd="$undef"
18323 fi
18324
18325 : see if varags is available
18326 echo " "
18327 if $test `./findhdr varargs.h`; then
18328         echo "<varargs.h> found." >&4
18329 else
18330         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18331 fi
18332
18333 : set up the varargs testing programs
18334 $cat > varargs.c <<EOP
18335 #ifdef I_STDARG
18336 #include <stdarg.h>
18337 #endif
18338 #ifdef I_VARARGS
18339 #include <varargs.h>
18340 #endif
18341
18342 #ifdef I_STDARG
18343 int f(char *p, ...)
18344 #else
18345 int f(va_alist)
18346 va_dcl
18347 #endif
18348 {
18349         va_list ap;
18350 #ifndef I_STDARG
18351         char *p;
18352 #endif
18353 #ifdef I_STDARG
18354         va_start(ap,p);
18355 #else
18356         va_start(ap);
18357         p = va_arg(ap, char *);
18358 #endif
18359         va_end(ap);
18360 }
18361 EOP
18362 $cat > varargs <<EOP
18363 $startsh
18364 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18365         echo "true"
18366 else
18367         echo "false"
18368 fi
18369 $rm -f varargs$_o
18370 EOP
18371 chmod +x varargs
18372
18373 : now check which varargs header should be included
18374 echo " "
18375 i_varhdr=''
18376 case "$valstd" in
18377 "$define")
18378         if `./varargs I_STDARG`; then
18379                 val='stdarg.h'
18380         elif `./varargs I_VARARGS`; then
18381                 val='varargs.h'
18382         fi
18383         ;;
18384 *)
18385         if `./varargs I_VARARGS`; then
18386                 val='varargs.h'
18387         fi
18388         ;;
18389 esac
18390 case "$val" in
18391 '')
18392 echo "I could not find the definition for va_dcl... You have problems..." >&4
18393         val="$undef"; set i_stdarg; eval $setvar
18394         val="$undef"; set i_varargs; eval $setvar
18395         ;;
18396 *) 
18397         set i_varhdr
18398         eval $setvar
18399         case "$i_varhdr" in
18400         stdarg.h)
18401                 val="$define"; set i_stdarg; eval $setvar
18402                 val="$undef"; set i_varargs; eval $setvar
18403                 ;;
18404         varargs.h)
18405                 val="$undef"; set i_stdarg; eval $setvar
18406                 val="$define"; set i_varargs; eval $setvar
18407                 ;;
18408         esac
18409         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18410 esac
18411 $rm -f varargs*
18412
18413 : see if we need va_copy
18414 echo " "
18415 case "$i_stdarg" in
18416 "$define")
18417         $cat >try.c <<EOCP
18418 #include <stdarg.h>
18419 #include <stdio.h>
18420 #$i_stdlib I_STDLIB
18421 #ifdef I_STDLIB
18422 #include <stdlib.h>
18423 #endif
18424 #include <signal.h>
18425
18426 int
18427 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18428 {
18429   return vfprintf(f, fmt, *valp);
18430 }
18431  
18432 int    
18433 myvfprintf(FILE *f, const  char *fmt, va_list val)
18434 {
18435   return ivfprintf(f, fmt, &val);
18436 }
18437       
18438 int
18439 myprintf(char *fmt, ...) 
18440 {
18441   va_list val;
18442   va_start(val, fmt);
18443   return myvfprintf(stdout, fmt, val); 
18444 }         
18445
18446 int
18447 main(int ac, char **av)
18448 {
18449   signal(SIGSEGV, exit);
18450
18451   myprintf("%s%cs all right, then\n", "that", '\'');                            
18452   exit(0);      
18453 }
18454 EOCP
18455         set try
18456         if eval $compile && $run ./try 2>&1 >/dev/null; then
18457                 case "`$run ./try`" in
18458                 "that's all right, then")
18459                         okay=yes
18460                         ;;
18461                 esac
18462         fi
18463         case "$okay" in
18464         yes)    echo "It seems that you don't need va_copy()." >&4
18465                 need_va_copy="$undef"
18466                 ;;
18467         *)      echo "It seems that va_copy() or similar will be needed." >&4
18468                 need_va_copy="$define"
18469                 ;;
18470         esac
18471         $rm -f try.* core core.* *.core *.core.*
18472         ;;
18473 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18474         ;;
18475 esac
18476
18477 : see what type is used for size_t
18478 rp="What is the type used for the length parameter for string functions?"
18479 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18480 eval $typedef_ask
18481
18482 : check for type of arguments to gethostbyaddr. 
18483 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18484         case "$d_gethbyaddr" in
18485         $define)
18486                 $cat <<EOM
18487
18488 Checking to see what type of arguments are accepted by gethostbyaddr().
18489 EOM
18490                 hdrs="$define sys/types.h
18491                         $d_socket sys/socket.h 
18492                         $i_niin netinet/in.h 
18493                         $i_netdb netdb.h
18494                         $i_unistd unistd.h"
18495                 : The first arg can 'char *' or 'void *'
18496                 : The second arg is some of integral type
18497                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18498                         for yyy in size_t long int; do
18499                                 case "$netdb_host_type" in
18500                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18501                                         if ./protochk "$try" $hdrs; then
18502                                                 echo "Your system accepts $xxx for the first arg."
18503                                                 echo "...and $yyy for the second arg."
18504                                                 netdb_host_type="$xxx"
18505                                                 netdb_hlen_type="$yyy"
18506                                         fi
18507                                         ;;
18508                                 esac
18509                         done
18510                 done
18511                 : In case none of those worked, prompt the user.
18512                 case "$netdb_host_type" in
18513                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
18514                         dflt='char *'
18515                         . ./myread
18516                         netdb_host_type=$ans
18517                         rp='What is the type for the 2nd argument to gethostbyaddr?'
18518                         dflt="$sizetype"
18519                         . ./myread
18520                         netdb_hlen_type=$ans
18521                         ;;
18522                 esac
18523                 ;;
18524         *)      : no gethostbyaddr, so pick harmless defaults
18525                 netdb_host_type='char *'
18526                 netdb_hlen_type="$sizetype"
18527                 ;;
18528         esac
18529         # Remove the "const" if needed. -- but then we'll have a 
18530         # prototype clash!
18531         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18532 fi
18533
18534 : check for type of argument to gethostbyname. 
18535 if test "X$netdb_name_type" = X ; then
18536         case "$d_gethbyname" in
18537         $define)
18538                 $cat <<EOM
18539
18540 Checking to see what type of argument is accepted by gethostbyname().
18541 EOM
18542                 hdrs="$define sys/types.h
18543                         $d_socket sys/socket.h 
18544                         $i_niin netinet/in.h 
18545                         $i_netdb netdb.h
18546                         $i_unistd unistd.h"
18547                 for xxx in "const char *" "char *"; do
18548                         case "$netdb_name_type" in
18549                         '')     try="extern struct hostent *gethostbyname($xxx);"
18550                                 if ./protochk "$try" $hdrs; then
18551                                         echo "Your system accepts $xxx."
18552                                         netdb_name_type="$xxx"
18553                                 fi
18554                                 ;;
18555                         esac
18556                 done
18557                 : In case none of those worked, prompt the user.
18558                 case "$netdb_name_type" in
18559                 '')     rp='What is the type for the 1st argument to gethostbyname?'
18560                         dflt='char *'
18561                         . ./myread
18562                         netdb_name_type=$ans
18563                         ;;
18564                 esac
18565                 ;;
18566         *)      : no gethostbyname, so pick harmless default
18567                 netdb_name_type='char *'
18568                 ;;
18569         esac
18570 fi
18571
18572 : check for type of 1st argument to getnetbyaddr. 
18573 if test "X$netdb_net_type" = X ; then
18574         case "$d_getnbyaddr" in
18575         $define)
18576                 $cat <<EOM
18577
18578 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18579 EOM
18580                 hdrs="$define sys/types.h
18581                         $d_socket sys/socket.h 
18582                         $i_niin netinet/in.h 
18583                         $i_netdb netdb.h
18584                         $i_unistd unistd.h"
18585                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18586                         case "$netdb_net_type" in
18587                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
18588                                 if ./protochk "$try" $hdrs; then
18589                                         echo "Your system accepts $xxx."
18590                                         netdb_net_type="$xxx"
18591                                 fi
18592                                 ;;
18593                         esac
18594                 done
18595                 : In case none of those worked, prompt the user.
18596                 case "$netdb_net_type" in
18597                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
18598                         dflt='long'
18599                         . ./myread
18600                         netdb_net_type=$ans
18601                         ;;
18602                 esac
18603                 ;;
18604         *)      : no getnetbyaddr, so pick harmless default
18605                 netdb_net_type='long'
18606                 ;;
18607         esac
18608 fi
18609 : locate the preferred pager for this system
18610 fn=f/
18611 case "$pager" in
18612 '')
18613         dflt=''
18614         case "$pg" in
18615         /*) dflt=$pg;;
18616         [a-zA-Z]:/*) dflt=$pg;;
18617         esac
18618         case "$more" in
18619         /*) dflt=$more;;
18620         [a-zA-Z]:/*) dflt=$more;;
18621         esac
18622         case "$less" in
18623         /*) dflt=$less;;
18624         [a-zA-Z]:/*) dflt=$less;;
18625         esac
18626         case "$dflt" in
18627         '') dflt=/usr/ucb/more;;
18628         esac
18629         ;;
18630 *)      dflt="$pager"
18631         : Instruct ./getfile to trust the hinted or previous pager value,
18632         : even if it does not begin with a slash.  For example, on os2,
18633         : pager might be cmd /c more.  See comments in UU/getfile.
18634         fn="f/($pager)"
18635         ;;
18636 esac
18637 echo " "
18638 rp='What pager is used on your system?'
18639 . ./getfile
18640 pager="$ans"
18641
18642 : see what type pids are declared as in the kernel
18643 rp="What is the type of process ids on this system?"
18644 set pid_t pidtype int stdio.h sys/types.h
18645 eval $typedef_ask
18646
18647 : see if ar generates random libraries by itself
18648 echo " "
18649 echo "Checking how to generate random libraries on your machine..." >&4
18650 echo 'int bar1() { return bar2(); }' > bar1.c
18651 echo 'int bar2() { return 2; }' > bar2.c
18652 $cat > foo.c <<EOP
18653 #$i_stdlib I_STDLIB
18654 #ifdef I_STDLIB
18655 #include <stdlib.h>
18656 #endif
18657 int main() { printf("%d\n", bar1()); exit(0); }
18658 EOP
18659 $cc $ccflags -c bar1.c >/dev/null 2>&1
18660 $cc $ccflags -c bar2.c >/dev/null 2>&1
18661 $cc $ccflags -c foo.c >/dev/null 2>&1
18662 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18663 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18664         $run ./foobar >/dev/null 2>&1; then
18665         echo "$ar appears to generate random libraries itself."
18666         orderlib=false
18667         ranlib=":"
18668 elif $ar ts bar$_a >/dev/null 2>&1 &&
18669         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18670         $run ./foobar >/dev/null 2>&1; then
18671                 echo "a table of contents needs to be added with '$ar ts'."
18672                 orderlib=false
18673                 ranlib="$ar ts"
18674 else
18675         case "$ranlib" in
18676         :) ranlib='';;
18677         '')
18678                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18679                 $test -f $ranlib || ranlib=''
18680                 ;;
18681         esac
18682         if $test -n "$ranlib"; then
18683                 echo "your system has '$ranlib'; we'll use that."
18684                 orderlib=false
18685         else
18686                 echo "your system doesn't seem to support random libraries"
18687                 echo "so we'll use lorder and tsort to order the libraries."
18688                 orderlib=true
18689                 ranlib=":"
18690         fi
18691 fi
18692 $rm -f foo* bar* 
18693
18694 : check for type of arguments to select. 
18695 case "$selecttype" in
18696 '') case "$d_select" in
18697         $define)
18698                 echo " "
18699                 $cat <<EOM
18700 Checking to see what type of arguments are accepted by select().
18701 EOM
18702                 hdrs="$define sys/types.h
18703                         $i_systime sys/time.h 
18704                         $i_sysselct sys/select.h
18705                         $d_socket sys/socket.h"
18706                 : The first arg can be int, unsigned, or size_t
18707                 : The last arg may or may not be 'const'
18708                 val=''
18709                 : void pointer has been seen but using that
18710                 : breaks the selectminbits test
18711                 for xxx in 'fd_set *' 'int *'; do
18712                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18713                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
18714                                         case "$val" in
18715                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18716                                                 if ./protochk "$try" $hdrs; then
18717                                                         echo "Your system accepts $xxx."
18718                                                         val="$xxx"
18719                                                 fi
18720                                                 ;;
18721                                         esac
18722                                 done
18723                         done
18724                 done
18725                 case "$val" in
18726                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18727                         case "$d_fd_set" in
18728                                 $define) dflt="fd_set *" ;;
18729                                 *)              dflt="int *" ;;
18730                         esac
18731                         . ./myread
18732                         val=$ans
18733                         ;;
18734                 esac
18735                 selecttype="$val"
18736                 ;;
18737         *)      : no select, so pick a harmless default
18738                 selecttype='int *'
18739                 ;;
18740         esac
18741         ;;
18742 esac
18743
18744 : check for the select 'width'
18745 case "$selectminbits" in
18746 '') safebits=`expr $ptrsize \* 8`
18747     case "$d_select" in
18748         $define)
18749                 $cat <<EOM
18750
18751 Checking to see on how many bits at a time your select() operates...
18752 EOM
18753                 $cat >try.c <<EOCP
18754 #include <sys/types.h>
18755 #$i_time I_TIME
18756 #$i_systime I_SYS_TIME
18757 #$i_systimek I_SYS_TIME_KERNEL
18758 #ifdef I_TIME
18759 #   include <time.h>
18760 #endif
18761 #ifdef I_SYS_TIME
18762 #   ifdef I_SYS_TIME_KERNEL
18763 #       define KERNEL
18764 #   endif
18765 #   include <sys/time.h>
18766 #   ifdef I_SYS_TIME_KERNEL
18767 #       undef KERNEL
18768 #   endif
18769 #endif
18770 #$i_sysselct I_SYS_SELECT
18771 #ifdef I_SYS_SELECT
18772 #include <sys/select.h>
18773 #endif
18774 #$d_socket HAS_SOCKET
18775 #ifdef HAS_SOCKET
18776 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18777 #endif
18778 #include <stdio.h>
18779 #$i_stdlib I_STDLIB
18780 #ifdef I_STDLIB
18781 #include <stdlib.h>
18782 #endif
18783 $selecttype b;
18784 #define S sizeof(*(b))
18785 #define MINBITS 64
18786 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18787 #define NBITS  (NBYTES * 8)
18788 int main() {
18789     char *s = malloc(NBYTES);
18790     struct timeval t;
18791     int i;
18792     FILE* fp;
18793     int fd;
18794
18795     if (!s)
18796         exit(1);
18797     fclose(stdin);
18798     fp = fopen("try.c", "r");
18799     if (fp == 0)
18800       exit(2);
18801     fd = fileno(fp);
18802     if (fd < 0)
18803       exit(3);
18804     b = ($selecttype)s;
18805     for (i = 0; i < NBITS; i++)
18806         FD_SET(i, b);
18807     t.tv_sec  = 0;
18808     t.tv_usec = 0;
18809     select(fd + 1, b, 0, 0, &t);
18810     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18811     free(s);
18812     printf("%d\n", i + 1);
18813     return 0;
18814 }
18815 EOCP
18816                 set try
18817                 if eval $compile_ok; then
18818                         selectminbits=`$run ./try`
18819                         case "$selectminbits" in
18820                         '')     cat >&4 <<EOM
18821 Cannot figure out on how many bits at a time your select() operates.
18822 I'll play safe and guess it is $safebits bits.
18823 EOM
18824                                 selectminbits=$safebits
18825                                 bits="$safebits bits"
18826                                 ;;
18827                         1)      bits="1 bit" ;;
18828                         *)      bits="$selectminbits bits" ;;
18829                         esac
18830                         echo "Your select() operates on $bits at a time." >&4
18831                 else
18832                         rp='What is the minimum number of bits your select() operates on?'
18833                         case "$byteorder" in
18834                         12345678)       dflt=64 ;;
18835                         1234)           dflt=32 ;;
18836                         *)              dflt=1  ;;
18837                         esac
18838                         . ./myread
18839                         val=$ans
18840                         selectminbits="$val"
18841                 fi
18842                 $rm -f try.* try
18843                 ;;
18844         *)      : no select, so pick a harmless default
18845                 selectminbits=$safebits
18846                 ;;
18847         esac
18848         ;;
18849 esac
18850
18851 : Trace out the files included by signal.h, then look for SIGxxx names.
18852 : Remove SIGARRAYSIZE used by HPUX.
18853 : Remove SIGSTKSIZE used by Linux.
18854 : Remove SIGSTKSZ used by Posix.
18855 : Remove SIGTYP void lines used by OS2.
18856 : Some cpps, like os390, dont give the file name anywhere
18857 if [ "X$fieldn" = X ]; then
18858         : Just make some guesses.  We check them later.
18859         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18860 else
18861         xxx=`echo '#include <signal.h>' |
18862         $cppstdin $cppminus $cppflags 2>/dev/null |
18863         $grep '^[       ]*#.*include' | 
18864         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18865 fi
18866 : Check this list of files to be sure we have parsed the cpp output ok.
18867 : This will also avoid potentially non-existent files, such 
18868 : as ../foo/bar.h
18869 xxxfiles=''
18870 for xx in $xxx /dev/null ; do
18871         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18872 done
18873 : If we have found no files, at least try signal.h
18874 case "$xxxfiles" in
18875 '')     xxxfiles=`./findhdr signal.h` ;;
18876 esac
18877 xxx=`awk '
18878 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18879         print substr($2, 4, 20)
18880 }
18881 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18882         print substr($3, 4, 20)
18883 }' $xxxfiles`
18884 : Append some common names just in case the awk scan failed.
18885 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18886 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18887 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18888 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18889 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18890
18891 : generate a few handy files for later
18892 $cat > signal.c <<EOCP
18893 #include <sys/types.h>
18894 #include <signal.h>
18895 #$i_stdlib I_STDLIB
18896 #ifdef I_STDLIB
18897 #include <stdlib.h>
18898 #endif
18899 #include <stdio.h>
18900 int main() {
18901
18902 /* Strange style to avoid deeply-nested #if/#else/#endif */
18903 #ifndef NSIG
18904 #  ifdef _NSIG
18905 #    define NSIG (_NSIG)
18906 #  endif
18907 #endif
18908
18909 #ifndef NSIG
18910 #  ifdef SIGMAX
18911 #    define NSIG (SIGMAX+1)
18912 #  endif
18913 #endif
18914
18915 #ifndef NSIG
18916 #  ifdef SIG_MAX
18917 #    define NSIG (SIG_MAX+1)
18918 #  endif
18919 #endif
18920
18921 #ifndef NSIG
18922 #  ifdef MAXSIG
18923 #    define NSIG (MAXSIG+1)
18924 #  endif
18925 #endif
18926
18927 #ifndef NSIG
18928 #  ifdef MAX_SIG
18929 #    define NSIG (MAX_SIG+1)
18930 #  endif
18931 #endif
18932
18933 #ifndef NSIG
18934 #  ifdef SIGARRAYSIZE
18935 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18936 #  endif
18937 #endif
18938
18939 #ifndef NSIG
18940 #  ifdef _sys_nsig
18941 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
18942 #  endif
18943 #endif
18944
18945 /* Default to some arbitrary number that's big enough to get most
18946    of the common signals.
18947 */
18948 #ifndef NSIG
18949 #    define NSIG 50
18950 #endif
18951
18952 printf("NSIG %d\n", NSIG);
18953
18954 #ifndef JUST_NSIG
18955
18956 EOCP
18957
18958 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18959 {
18960         printf "#ifdef SIG"; printf $1; printf "\n"
18961         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18962         printf $1; printf ");\n"
18963         printf "#endif\n"
18964 }
18965 END {
18966         printf "#endif /* JUST_NSIG */\n";
18967         printf "exit(0);\n}\n";
18968 }
18969 ' >>signal.c
18970 $cat >signal.awk <<'EOP'
18971 BEGIN { ndups = 0 }
18972 $1 ~ /^NSIG$/ { nsig = $2 }
18973 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
18974     if ($2 > maxsig) { maxsig = $2 }
18975     if (sig_name[$2]) {
18976         dup_name[ndups] = $1
18977         dup_num[ndups] = $2
18978         ndups++ 
18979     }
18980     else {
18981         sig_name[$2] = $1
18982         sig_num[$2] = $2
18983     }
18984 }
18985 END { 
18986     if (nsig == 0) {
18987         nsig = maxsig + 1
18988     }
18989     printf("NSIG %d\n", nsig);
18990     for (n = 1; n < nsig; n++) {
18991         if (sig_name[n]) {
18992             printf("%s %d\n", sig_name[n], sig_num[n])
18993         }
18994         else {
18995             printf("NUM%d %d\n", n, n) 
18996         }
18997     }
18998     for (n = 0; n < ndups; n++) {
18999         printf("%s %d\n", dup_name[n], dup_num[n])
19000     }
19001 }
19002 EOP
19003 $cat >signal_cmd <<EOS
19004 $startsh
19005 if $test -s signal.lst; then
19006     echo "Using your existing signal.lst file"
19007         exit 0
19008 fi
19009 xxx="$xxx"
19010 EOS
19011 $cat >>signal_cmd <<'EOS'
19012
19013 set signal
19014 if eval $compile_ok; then
19015         $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19016 else
19017         echo "(I can't seem be able to compile the whole test program)" >&4
19018         echo "(I'll try it in little pieces.)" >&4
19019         set signal -DJUST_NSIG
19020         if eval $compile_ok; then
19021                 $run ./signal$_exe > signal.nsg
19022                 $cat signal.nsg
19023         else
19024                 echo "I can't seem to figure out how many signals you have." >&4
19025                 echo "Guessing 50." >&4
19026                 echo 'NSIG 50' > signal.nsg
19027         fi
19028         : Now look at all the signal names, one at a time.
19029         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19030                 $cat > signal.c <<EOCP
19031 #include <sys/types.h>
19032 #include <signal.h>
19033 #include <stdio.h>
19034 int main() {
19035 printf("$xx %d\n", SIG${xx});
19036 return 0;
19037 }
19038 EOCP
19039                 set signal
19040                 if eval $compile; then
19041                         echo "SIG${xx} found."
19042                         $run ./signal$_exe  >> signal.ls1
19043                 else
19044                         echo "SIG${xx} NOT found."
19045                 fi
19046         done
19047         if $test -s signal.ls1; then
19048                 $cat signal.nsg signal.ls1 |
19049                         $sort -n | $uniq | $awk -f signal.awk >signal.lst
19050         fi
19051
19052 fi
19053 if $test -s signal.lst; then
19054         :
19055 else
19056         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19057         echo 'kill -l' >signal
19058         set X `csh -f <signal`
19059         $rm -f signal
19060         shift
19061         case $# in
19062         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19063         esac
19064         echo $@ | $tr ' ' $trnl | \
19065             $awk '{ printf "%s %d\n", $1, ++s; }
19066                   END { printf "NSIG %d\n", ++s }' >signal.lst
19067 fi
19068 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19069 EOS
19070 chmod a+x signal_cmd
19071 $eunicefix signal_cmd
19072
19073 : generate list of signal names
19074 echo " "
19075 case "$sig_name_init" in
19076 '') doinit=yes ;;
19077 *)  case "$sig_num_init" in
19078     ''|*,*) doinit=yes ;;
19079     esac ;;
19080 esac
19081 case "$doinit" in
19082 yes)
19083         echo "Generating a list of signal names and numbers..." >&4
19084         . ./signal_cmd
19085         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19086         sig_name=`$awk 'BEGIN { printf "ZERO " }
19087                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19088         sig_num=`$awk  'BEGIN { printf "0 " }
19089                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19090         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
19091                              !/^NSIG/   { printf "\"%s\", ", $1 }
19092                              END        { printf "0\n" }' signal.lst`
19093         sig_num_init=`$awk  'BEGIN      { printf "0, " }
19094                              !/^NSIG/   { printf "%d, ", $2}
19095                              END        { printf "0\n"}' signal.lst`
19096         ;;
19097 esac
19098 echo "The following $sig_count signals are available:"
19099 echo " "
19100 echo $sig_name | $awk \
19101 'BEGIN { linelen = 0 }
19102 {
19103         for (i = 1; i <= NF; i++) {
19104                 name = "SIG" $i " "
19105                 linelen = linelen + length(name)
19106                 if (linelen > 70) {
19107                         printf "\n"
19108                         linelen = length(name)
19109                 }
19110                 printf "%s", name
19111         }
19112         printf "\n"
19113 }'
19114 sig_size=`echo $sig_name | awk '{print NF}'`
19115 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
19116
19117 echo " "
19118 case "$sizetype" in
19119 *_t) zzz="$sizetype"    ;;
19120 *)   zzz="filesize"     ;;
19121 esac
19122 echo "Checking the size of $zzz..." >&4 
19123 cat > try.c <<EOCP
19124 #include <sys/types.h>
19125 #include <stdio.h>
19126 #$i_stdlib I_STDLIB
19127 #ifdef I_STDLIB
19128 #include <stdlib.h>
19129 #endif
19130 int main() {
19131     printf("%d\n", (int)sizeof($sizetype));
19132     exit(0);
19133 }
19134 EOCP
19135 set try
19136 if eval $compile_ok; then
19137         yyy=`$run ./try`
19138         case "$yyy" in
19139         '')     sizesize=4
19140                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19141                 ;;
19142         *)      sizesize=$yyy
19143                 echo "Your $zzz size is $sizesize bytes."
19144                 ;;
19145         esac
19146 else
19147         sizesize=4
19148         echo "(I can't compile the test program--guessing $sizesize.)" >&4
19149 fi
19150
19151
19152 : check for socklen_t
19153 echo " "
19154 echo "Checking to see if you have socklen_t..." >&4
19155 $cat >try.c <<EOCP
19156 #include <sys/types.h>
19157 #$d_socket HAS_SOCKET
19158 #ifdef HAS_SOCKET
19159 #include <sys/socket.h>
19160 #endif
19161 int main() { socklen_t x = 16; }
19162 EOCP
19163 set try
19164 if eval $compile; then
19165         val="$define"
19166         echo "You have socklen_t."
19167 else
19168         val="$undef"
19169         echo "You do not have socklen_t."
19170         case "$sizetype" in
19171         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19172         esac
19173 fi
19174 $rm -f try try.*
19175 set d_socklen_t
19176 eval $setvar
19177
19178 : see if this is a socks.h system
19179 set socks.h i_socks
19180 eval $inhdr
19181
19182 : check for type of the size argument to socket calls
19183 case "$d_socket" in
19184 "$define")
19185         $cat <<EOM
19186
19187 Checking to see what type is the last argument of accept().
19188 EOM
19189         yyy=''
19190         case "$d_socklen_t" in
19191         "$define") yyy="$yyy socklen_t"
19192         esac
19193         yyy="$yyy $sizetype int long unsigned"
19194         for xxx in $yyy; do
19195                 case "$socksizetype" in
19196                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
19197                         case "$usesocks" in
19198                         "$define")
19199                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19200                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19201                                         socksizetype="$xxx"
19202                                 fi
19203                                 ;;
19204                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
19205                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
19206                                         socksizetype="$xxx"
19207                                 fi
19208                                 ;;
19209                         esac
19210                         ;;
19211                 esac
19212         done
19213 : In case none of those worked, prompt the user.
19214         case "$socksizetype" in
19215         '')     rp='What is the type for socket address structure sizes?'
19216                 dflt='int'
19217                 . ./myread
19218                 socksizetype=$ans
19219                 ;;
19220         esac
19221         ;;
19222 *)      : no sockets, so pick relatively harmless default
19223         socksizetype='int'
19224         ;;
19225 esac
19226
19227 : see what type is used for signed size_t
19228 set ssize_t ssizetype int stdio.h sys/types.h
19229 eval $typedef
19230 dflt="$ssizetype"
19231 $cat > try.c <<EOM
19232 #include <stdio.h>
19233 #$i_stdlib I_STDLIB
19234 #ifdef I_STDLIB
19235 #include <stdlib.h>
19236 #endif
19237 #include <sys/types.h>
19238 #define Size_t $sizetype
19239 #define SSize_t $dflt
19240 int main()
19241 {
19242         if (sizeof(Size_t) == sizeof(SSize_t))
19243                 printf("$dflt\n");
19244         else if (sizeof(Size_t) == sizeof(int))
19245                 printf("int\n");
19246         else 
19247                 printf("long\n");
19248         exit(0);
19249 }
19250 EOM
19251 echo " "
19252 set try
19253 if eval $compile_ok && $run ./try > /dev/null; then
19254         ssizetype=`$run ./try`
19255         echo "I'll be using $ssizetype for functions returning a byte count." >&4
19256 else
19257         $cat >&4 <<EOM
19258 Help! I can't compile and run the ssize_t test program: please enlighten me!
19259 (This is probably a misconfiguration in your system or libraries, and
19260 you really ought to fix it.  Still, I'll try anyway.)
19261
19262 I need a type that is the same size as $sizetype, but is guaranteed to
19263 be signed.  Common values are ssize_t, int and long.
19264
19265 EOM
19266         rp="What signed type is the same size as $sizetype?"
19267         . ./myread
19268         ssizetype="$ans"
19269 fi
19270 $rm -f try try.*
19271
19272 : see what type of char stdio uses.
19273 echo " "
19274 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19275 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19276         echo "Your stdio uses unsigned chars." >&4
19277         stdchar="unsigned char"
19278 else
19279         echo "Your stdio uses signed chars." >&4
19280         stdchar="char"
19281 fi
19282 $rm -f stdioh
19283
19284
19285
19286 : see what type uids are declared as in the kernel
19287 echo " "
19288 echo "Looking for the type for user ids returned by getuid()."
19289 set uid_t uidtype xxx stdio.h sys/types.h
19290 eval $typedef
19291 case "$uidtype" in
19292 xxx)
19293         xxx=`./findhdr sys/user.h`
19294         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19295         case $1 in
19296         unsigned) dflt="$1 $2" ;;
19297         *) dflt="$1" ;;
19298         esac
19299         ;;
19300 *) dflt="$uidtype";;
19301 esac
19302 case "$uidtype" in
19303 uid_t)  echo "uid_t found." ;;
19304 *)      rp="What is the type for user ids returned by getuid()?"
19305         . ./myread
19306         uidtype="$ans"
19307         ;;
19308 esac
19309
19310 echo " "
19311 case "$uidtype" in
19312 *_t) zzz="$uidtype"     ;;
19313 *)   zzz="uid"          ;;
19314 esac
19315 echo "Checking the size of $zzz..." >&4 
19316 cat > try.c <<EOCP
19317 #include <sys/types.h>
19318 #include <stdio.h>
19319 #$i_stdlib I_STDLIB
19320 #ifdef I_STDLIB
19321 #include <stdlib.h>
19322 #endif
19323 int main() {
19324     printf("%d\n", (int)sizeof($uidtype));
19325     exit(0);
19326 }
19327 EOCP
19328 set try
19329 if eval $compile_ok; then
19330         yyy=`$run ./try`
19331         case "$yyy" in
19332         '')     uidsize=4
19333                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19334                 ;;
19335         *)      uidsize=$yyy
19336                 echo "Your $zzz is $uidsize bytes long."
19337                 ;;
19338         esac
19339 else
19340         uidsize=4
19341         echo "(I can't compile the test program--guessing $uidsize.)" >&4
19342 fi
19343
19344 echo " "
19345 case "$uidtype" in
19346 *_t) zzz="$uidtype"     ;;
19347 *)   zzz="uid"          ;;
19348 esac
19349 echo "Checking the sign of $zzz..." >&4
19350 cat > try.c <<EOCP
19351 #include <sys/types.h>
19352 #include <stdio.h>
19353 int main() {
19354         $uidtype foo = -1;
19355         if (foo < 0)
19356                 printf("-1\n");
19357         else
19358                 printf("1\n");
19359 }
19360 EOCP
19361 set try
19362 if eval $compile; then
19363         yyy=`$run ./try`
19364         case "$yyy" in
19365         '')     uidsign=1
19366                 echo "(I can't execute the test program--guessing unsigned.)" >&4
19367                 ;;
19368         *)      uidsign=$yyy
19369                 case "$uidsign" in
19370                  1) echo "Your $zzz is unsigned." ;;
19371                 -1) echo "Your $zzz is signed."   ;;
19372                 esac
19373                 ;;
19374         esac
19375 else
19376         uidsign=1
19377         echo "(I can't compile the test program--guessing unsigned.)" >&4
19378 fi
19379
19380
19381
19382 echo " "
19383 $echo "Checking the format string to be used for uids..." >&4
19384
19385 case "$uidsign" in
19386 -1)     if $test X"$uidsize" = X"$ivsize"; then
19387                 uidformat="$ivdformat"
19388         else
19389                 if $test X"$uidsize" = X"$longsize"; then
19390                         uidformat='"ld"'
19391                 else
19392                         if $test X"$uidsize" = X"$intsize"; then
19393                                 uidformat='"d"'
19394                         else
19395                                 if $test X"$uidsize" = X"$shortsize"; then
19396                                         uidformat='"hd"'
19397                                 fi
19398                         fi
19399                 fi
19400         fi
19401         ;;
19402 *)      if $test X"$uidsize" = X"$uvsize"; then
19403                 uidformat="$uvuformat"
19404         else
19405                 if $test X"$uidsize" = X"$longsize"; then
19406                         uidformat='"lu"'
19407                 else
19408                         if $test X"$uidsize" = X"$intsize"; then
19409                                 uidformat='"u"'
19410                         else
19411                                 if $test X"$uidsize" = X"$shortsize"; then
19412                                         uidformat='"hu"'
19413                                 fi
19414                         fi
19415                 fi
19416         fi
19417         ;;
19418 esac
19419
19420 : determine compiler compiler
19421 case "$yacc" in
19422 '')
19423         dflt=yacc;;
19424 *)
19425         dflt="$yacc";;
19426 esac
19427 echo " "
19428 comp='yacc'
19429 if $test -f "$byacc$_exe"; then
19430         dflt="$byacc"
19431         comp="byacc or $comp"
19432 fi
19433 if $test -f "$bison$_exe"; then
19434         comp="$comp or bison -y"
19435 fi
19436 rp="Which compiler compiler ($comp) shall I use?"
19437 . ./myread
19438 yacc="$ans"
19439 case "$yacc" in
19440 *bis*)
19441         case "$yacc" in
19442         *-y*) ;;
19443         *)
19444                 yacc="$yacc -y"
19445                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19446                 ;;
19447         esac
19448         ;;
19449 esac
19450
19451 : see if this is a fp.h system
19452 set fp.h i_fp
19453 eval $inhdr
19454
19455 : see if this is a fp_class.h system
19456 set fp_class.h i_fp_class
19457 eval $inhdr
19458
19459 : see if this is a ieeefp.h system
19460 case "$i_ieeefp" in
19461 '' ) set ieeefp.h i_ieeefp
19462      eval $inhdr
19463      ;;
19464 esac
19465
19466 : see if this is a libutil.h system
19467 set libutil.h i_libutil
19468 eval $inhdr
19469
19470 : see if mach cthreads are available
19471 if test "X$usethreads" = "X$define"; then
19472         set mach/cthreads.h i_machcthr
19473         eval $inhdr
19474 else
19475         i_machcthr="$undef"
19476 fi
19477
19478
19479
19480 : see if this is a math.h system
19481 set math.h i_math
19482 eval $inhdr
19483
19484 : see if this is a mntent.h system
19485 set mntent.h i_mntent
19486 eval $inhdr
19487
19488 : see if ndbm.h is available
19489 set ndbm.h t_ndbm
19490 eval $inhdr
19491
19492 case "$t_ndbm" in
19493 $undef)
19494     # Some Linux distributions such as RedHat 7.1 put the
19495     # ndbm.h header in /usr/include/gdbm/ndbm.h.
19496     if $test -f /usr/include/gdbm/ndbm.h; then
19497         echo '<gdbm/ndbm.h> found.'
19498         ccflags="$ccflags -I/usr/include/gdbm"
19499         cppflags="$cppflags -I/usr/include/gdbm"
19500         t_ndbm=$define
19501     fi
19502     ;;
19503 esac
19504
19505 case "$t_ndbm" in
19506 $define)
19507         : see if dbm_open exists
19508         set dbm_open d_dbm_open
19509         eval $inlibc
19510         case "$d_dbm_open" in
19511         $undef)
19512                 t_ndbm="$undef"
19513                 echo "We won't be including <ndbm.h>"
19514                 ;;
19515         esac
19516         ;;
19517 esac
19518 val="$t_ndbm"
19519 set i_ndbm
19520 eval $setvar
19521
19522 : see if net/errno.h is available
19523 val=''
19524 set net/errno.h val
19525 eval $inhdr
19526
19527 : Unfortunately, it causes problems on some systems.  Arrgh.
19528 case "$val" in
19529 $define)
19530         cat > try.c <<'EOM'
19531 #include <stdio.h>
19532 #include <errno.h>
19533 #include <net/errno.h>
19534 int func()
19535 {
19536         return ENOTSOCK;
19537 }
19538 EOM
19539         if $cc $ccflags -c try.c >/dev/null 2>&1; then
19540                 echo "We'll be including <net/errno.h>." >&4
19541         else
19542                 echo "We won't be including <net/errno.h>." >&4
19543                 val="$undef"
19544         fi
19545         $rm -f try.* try
19546         ;;
19547 esac
19548 set i_neterrno
19549 eval $setvar
19550
19551 : see if netinet/tcp.h is available
19552 set netinet/tcp.h i_netinettcp
19553 eval $inhdr
19554
19555 : see if this is a poll.h system
19556 set poll.h i_poll
19557 eval $inhdr
19558
19559 : see if this is a prot.h system
19560 set prot.h i_prot
19561 eval $inhdr
19562
19563 echo " "
19564 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
19565 $cat <<'EOSH' > Cppsym.know
19566 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19567 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19568 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19569 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19570 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19571 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19572 bull c cadmus clipper CMU COFF COMPILER_VERSION
19573 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19574 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19575 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19576 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19577 GLIBC GLIBC_MINOR
19578 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19579 H3050R H3050RX hbullx20 hcx host_mips
19580 hp200 hp300 hp700 HP700 hp800 hp9000
19581 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19582 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19583 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19584 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19585 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19586 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19587 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19588 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19589 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19590 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19591 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19592 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19593 MATH_HAS_NO_SIDE_EFFECTS
19594 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19595 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19596 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19597 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19598 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19599 NetBSD news1500 news1700 news1800 news1900 news3700
19600 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19601 ns32016 ns32332 ns32k nsc32000
19602 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19603 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19604 pc532 pdp11 PGC PIC plexus PORTAR posix
19605 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19606 POSIX_C_SOURCE POSIX_SOURCE POWER
19607 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19608 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19609 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19610 sony sony_news sonyrisc sparc sparclite spectrum
19611 stardent stdc STDC_EXT stratos sun sun3 sun386
19612 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19613 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19614 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19615 sysV68 sysV88 Tek4132 Tek4300 titan
19616 TM3200 TM5400 TM5600
19617 tower tower32 tower32_200 tower32_600 tower32_700
19618 tower32_800 tower32_850 tss
19619 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19620 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19621 unix UNIX95 UNIX99 unixpc unos
19622 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19623 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19624 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19625 USGr4 USGr4_2
19626 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19627 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19628 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19629 z8000
19630 EOSH
19631 # Maybe put other stuff here too.
19632 cat <<EOSH >>Cppsym.know
19633 $osname
19634 EOSH
19635 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19636 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19637 $cat Cppsym.know > Cppsym.c
19638 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19639 $rm -f Cppsym.a Cppsym.b Cppsym.c
19640 cat <<EOSH > Cppsym
19641 $startsh
19642 if $test \$# -gt 0; then
19643     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19644     if $test -s Cppsym.got; then
19645         $rm -f Cppsym.got
19646         exit 0
19647     fi
19648     $rm -f Cppsym.got
19649     exit 1
19650 else
19651     $tr " " "$trnl" | ./Cppsym.try
19652     exit 0
19653 fi
19654 EOSH
19655 chmod +x Cppsym
19656 $eunicefix Cppsym
19657 cat <<EOSH > Cppsym.try
19658 $startsh
19659 cat <<'EOCP' > try.c
19660 #include <stdio.h>
19661 int main() {
19662 EOCP
19663 $awk \\
19664 EOSH
19665 cat <<'EOSH' >> Cppsym.try
19666 'length($1) > 0 {
19667     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
19668     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19669     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19670     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19671 }'       >> try.c
19672 echo 'return 0;}' >> try.c
19673 EOSH
19674 cat <<EOSH >> Cppsym.try
19675 ccflags="$ccflags"
19676 case "$osname-$gccversion" in
19677 irix-) ccflags="\$ccflags -woff 1178" ;;
19678 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19679 esac
19680 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19681 EOSH
19682 chmod +x Cppsym.try
19683 $eunicefix Cppsym.try
19684 ./Cppsym < Cppsym.know > Cppsym.true
19685 : now check the C compiler for additional symbols
19686 postprocess_cc_v=''
19687 case "$osname" in
19688 aix) postprocess_cc_v="|$tr , ' '" ;;
19689 esac
19690 $cat >ccsym <<EOS
19691 $startsh
19692 $cat >tmp.c <<EOF
19693 extern int foo;
19694 EOF
19695 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19696 do
19697         case "\$i" in
19698         -D*) echo "\$i" | $sed 's/^-D//';;
19699         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19700         esac
19701 done
19702 $rm -f try.c
19703 EOS
19704 postprocess_cc_v=''
19705 chmod +x ccsym
19706 $eunicefix ccsym
19707 ./ccsym > ccsym1.raw
19708 if $test -s ccsym1.raw; then
19709        $sort ccsym1.raw | $uniq >ccsym.raw
19710 else
19711        mv ccsym1.raw ccsym.raw
19712 fi
19713
19714 $awk '/\=/ { print $0; next }
19715         { print $0"=1" }' ccsym.raw >ccsym.list
19716 $awk '/\=/ { print $0; next }
19717         { print $0"=1" }' Cppsym.true >ccsym.true
19718 $comm -13 ccsym.true ccsym.list >ccsym.own
19719 $comm -12 ccsym.true ccsym.list >ccsym.com
19720 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19721 also=''
19722 if $test -z ccsym.raw; then
19723         echo "Your C compiler doesn't seem to define any symbols!" >&4
19724         echo " "
19725         echo "However, your C preprocessor defines the following symbols:"
19726         $cat Cppsym.true
19727         ccsymbols=''
19728         cppsymbols=`$cat Cppsym.true`
19729         cppsymbols=`echo $cppsymbols`
19730         cppccsymbols="$cppsymbols"
19731 else
19732         if $test -s ccsym.com; then
19733                 echo "Your C compiler and pre-processor define these symbols:"
19734                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19735                 also='also '
19736                 symbols='ones'
19737                 cppccsymbols=`$cat ccsym.com`
19738                 cppccsymbols=`echo $cppccsymbols`
19739                 $test "$silent" || sleep 1
19740         fi
19741         if $test -s ccsym.cpp; then
19742                 $test "$also" && echo " "
19743                 echo "Your C pre-processor ${also}defines the following symbols:"
19744                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19745                 also='further '
19746                 cppsymbols=`$cat ccsym.cpp`
19747                 cppsymbols=`echo $cppsymbols`
19748                 $test "$silent" || sleep 1
19749         fi
19750         if $test -s ccsym.own; then
19751                 $test "$also" && echo " "
19752                 echo "Your C compiler ${also}defines the following cpp symbols:"
19753                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19754                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19755                 ccsymbols=`$cat ccsym.own`
19756                 ccsymbols=`echo $ccsymbols`
19757                 $test "$silent" || sleep 1
19758         fi
19759 fi
19760
19761 : see if this is a termio system
19762 val="$undef"
19763 val2="$undef"
19764 val3="$undef"
19765 if $test `./findhdr termios.h`; then
19766         set tcsetattr i_termios
19767         eval $inlibc
19768         val3="$i_termios"
19769 fi
19770 echo " "
19771 case "$val3" in
19772 "$define") echo "You have POSIX termios.h... good!" >&4;;
19773 *) if ./Cppsym pyr; then
19774                 case "`/bin/universe`" in
19775                 ucb) if $test `./findhdr sgtty.h`; then
19776                                 val2="$define"
19777                                 echo "<sgtty.h> found." >&4
19778                         else
19779                                 echo "System is pyramid with BSD universe."
19780                                 echo "<sgtty.h> not found--you could have problems." >&4
19781                         fi;;
19782                 *) if $test `./findhdr termio.h`; then
19783                                 val="$define"
19784                                 echo "<termio.h> found." >&4
19785                         else
19786                                 echo "System is pyramid with USG universe."
19787                                 echo "<termio.h> not found--you could have problems." >&4
19788                         fi;;
19789                 esac
19790         elif ./usg; then
19791                 if $test `./findhdr termio.h`; then
19792                         echo "<termio.h> found." >&4
19793                         val="$define"
19794                 elif $test `./findhdr sgtty.h`; then
19795                         echo "<sgtty.h> found." >&4
19796                         val2="$define"
19797                 else
19798 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19799                 fi
19800         else
19801                 if $test `./findhdr sgtty.h`; then
19802                         echo "<sgtty.h> found." >&4
19803                         val2="$define"
19804                 elif $test `./findhdr termio.h`; then
19805                         echo "<termio.h> found." >&4
19806                         val="$define"
19807                 else
19808 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19809                 fi
19810         fi;;
19811 esac
19812 set i_termio; eval $setvar
19813 val=$val2; set i_sgtty; eval $setvar
19814 val=$val3; set i_termios; eval $setvar
19815
19816 : see if stddef is available
19817 set stddef.h i_stddef
19818 eval $inhdr
19819
19820 : see if this is a sunmath.h system
19821 set sunmath.h i_sunmath
19822 eval $inhdr
19823
19824 : see if sys/access.h is available
19825 set sys/access.h i_sysaccess
19826 eval $inhdr
19827
19828 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19829 set sys/filio.h i_sysfilio
19830 eval $inhdr
19831 echo " "
19832 if $test `./findhdr sys/ioctl.h`; then
19833         val="$define"
19834         echo '<sys/ioctl.h> found.' >&4
19835 else
19836         val="$undef"
19837         if $test $i_sysfilio = "$define"; then
19838             echo '<sys/ioctl.h> NOT found.' >&4
19839         else
19840                 $test $i_sgtty = "$define" && xxx="sgtty.h"
19841                 $test $i_termio = "$define" && xxx="termio.h"
19842                 $test $i_termios = "$define" && xxx="termios.h"
19843 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19844         fi
19845 fi
19846 set i_sysioctl
19847 eval $setvar
19848
19849 : see if socket ioctl defs are in sys/sockio.h
19850 echo " "
19851 xxx=`./findhdr sys/sockio.h`
19852 if $test "$xxx"; then
19853         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19854                 val="$define"
19855                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19856         else
19857                 val="$undef"
19858                 echo "No socket ioctls found in <sys/sockio.h>." >&4
19859         fi
19860 else
19861         val="$undef"
19862         $cat <<EOM
19863 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19864 EOM
19865 fi
19866 set i_syssockio
19867 eval $setvar
19868
19869
19870 : see if this is a syslog.h system
19871 set syslog.h i_syslog
19872 eval $inhdr
19873
19874
19875 : see if this is a sys/mode.h system
19876 set sys/mode.h i_sysmode
19877 eval $inhdr
19878
19879 : see if sys/resource.h has to be included
19880 set sys/resource.h i_sysresrc
19881 eval $inhdr
19882
19883 : see if sys/security.h is available
19884 set sys/security.h i_syssecrt
19885 eval $inhdr
19886
19887 : see if this is a sys/statvfs.h system
19888 set sys/statvfs.h i_sysstatvfs
19889 eval $inhdr
19890
19891 : see if this is a sys/un.h system
19892 set sys/un.h i_sysun
19893 eval $inhdr
19894
19895
19896 : see if this is a sys/utsname.h system
19897 set sys/utsname.h i_sysutsname
19898 eval $inhdr
19899
19900 : see if this is a syswait system
19901 set sys/wait.h i_syswait
19902 eval $inhdr
19903
19904 : see if this is a ustat.h system
19905 set ustat.h i_ustat
19906 eval $inhdr
19907
19908 : see if this is an utime system
19909 set utime.h i_utime
19910 eval $inhdr
19911
19912 : see if this is a values.h system
19913 set values.h i_values
19914 eval $inhdr
19915
19916 : see if this is a vfork system
19917 case "$d_vfork" in
19918 "$define")
19919         set vfork.h i_vfork
19920         eval $inhdr
19921         ;;
19922 *)
19923         i_vfork="$undef"
19924         ;;
19925 esac
19926
19927 : see if gdbm.h is available
19928 set gdbm.h t_gdbm
19929 eval $inhdr
19930 case "$t_gdbm" in
19931 $define)
19932         : see if gdbm_open exists
19933         set gdbm_open d_gdbm_open
19934         eval $inlibc
19935         case "$d_gdbm_open" in
19936         $undef)
19937                 t_gdbm="$undef"
19938                 echo "We won't be including <gdbm.h>"
19939                 ;;
19940         esac
19941         ;;
19942 esac
19943 val="$t_gdbm"
19944 set i_gdbm
19945 eval $setvar
19946
19947 echo " "
19948 echo "Looking for extensions..." >&4
19949 : If we are using the old config.sh, known_extensions may contain
19950 : old or inaccurate or duplicate values.
19951 known_extensions=''
19952 nonxs_extensions=''
19953 : We do not use find because it might not be available.
19954 : We do not just use MANIFEST because the user may have dropped
19955 : some additional extensions into the source tree and expect them
19956 : to be built.
19957
19958 : Function to recursively find available extensions, ignoring DynaLoader
19959 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19960 find_extensions='
19961     for xxx in *; do
19962        case "$xxx" in
19963            DynaLoader|dynaload) ;;
19964            *)
19965            if $test -f $xxx/$xxx.xs; then
19966                known_extensions="$known_extensions $1$xxx";
19967            elif $test -f $xxx/Makefile.PL; then
19968                nonxs_extensions="$nonxs_extensions $1$xxx";
19969            else
19970                if $test -d $xxx -a $# -lt 10; then
19971                    set $1$xxx/ $*;
19972                    cd "$xxx";
19973                    eval $find_extensions;
19974                    cd ..;
19975                    shift;
19976                fi;
19977            fi
19978            ;;
19979        esac;
19980     done'
19981 tdir=`pwd`
19982 cd "$rsrc/ext"
19983 set X
19984 shift
19985 eval $find_extensions
19986 # Special case:  Add in threads/shared since it is not picked up by the
19987 # recursive find above (and adding in general recursive finding breaks
19988 # SDBM_File/sdbm).  A.D.  10/25/2001.
19989 known_extensions="$known_extensions threads/shared"
19990 set X $nonxs_extensions
19991 shift
19992 nonxs_extensions="$*"
19993 set X $known_extensions
19994 shift
19995 known_extensions="$*"
19996 cd "$tdir"
19997
19998 : Now see which are supported on this system.
19999 avail_ext=''
20000 for xxx in $known_extensions ; do
20001         case "$xxx" in
20002         DB_File|db_file)
20003                 case "$i_db" in
20004                 $define) avail_ext="$avail_ext $xxx" ;;
20005                 esac
20006                 ;;
20007         GDBM_File|gdbm_fil)
20008                 case "$i_gdbm" in 
20009                 $define) avail_ext="$avail_ext $xxx" ;;
20010                 esac
20011                 ;;
20012         I18N/Langinfo|i18n_lan)
20013                 case "$i_langinfo$d_nl_langinfo" in 
20014                 $define$define) avail_ext="$avail_ext $xxx" ;;
20015                 esac
20016                 ;;
20017         NDBM_File|ndbm_fil)
20018                 case "$i_ndbm" in
20019                 $define)
20020                     case "$osname-$use64bitint" in
20021                     hpux-define)
20022                         case "$libs" in
20023                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20024                         esac
20025                         ;;
20026                     *) avail_ext="$avail_ext $xxx" ;;
20027                     esac
20028                     ;;
20029                 esac
20030                 ;;
20031         ODBM_File|odbm_fil) 
20032                 case "${i_dbm}${i_rpcsvcdbm}" in
20033                 *"${define}"*)
20034                     case "$osname-$use64bitint" in
20035                     hpux-define)
20036                         case "$libs" in
20037                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20038                         esac
20039                         ;;
20040                     *) avail_ext="$avail_ext $xxx" ;;
20041                     esac
20042                     ;;
20043                 esac
20044                 ;;
20045         POSIX|posix)
20046                 case "$useposix" in
20047                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20048                 esac
20049                 ;;
20050         Opcode|opcode)
20051                 case "$useopcode" in
20052                 true|define|y) avail_ext="$avail_ext $xxx" ;;
20053                 esac
20054                 ;;
20055         Socket|socket)
20056                 case "$d_socket" in 
20057                 true|$define|y)
20058                     case "$osname" in
20059                     beos) ;; # not unless BONE
20060                     *) avail_ext="$avail_ext $xxx" ;;
20061                     esac
20062                     ;;
20063                 esac
20064                 ;;
20065         Sys/Syslog|sys/syslog)
20066                 : XXX syslog requires socket
20067                 case "$d_socket" in 
20068                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20069                 esac
20070                 ;;
20071         Thread|thread)
20072                 case "$usethreads" in
20073                 true|$define|y)
20074                         case "$useithreads" in
20075                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20076                         esac
20077                 esac
20078                 ;;
20079         XS/APItest|xs/apitest)
20080                 # This is just for testing.  Skip it unless we have dynamic loading.
20081
20082                 case "$usedl" in
20083                 $define) avail_ext="$avail_ext $xxx" ;;
20084                 esac
20085                 ;;
20086         XS/Typemap|xs/typemap)
20087                 # This is just for testing.  Skip it unless we have dynamic loading.
20088                 case "$usedl" in
20089                 $define) avail_ext="$avail_ext $xxx" ;;
20090                 esac
20091                 ;;
20092         threads|threads/shared)
20093                 # threads and threads::shared are special cases.
20094                 # To stop people from asking "Perl 5.8.0 was supposed
20095                 # to have this new fancy threads implementation but my
20096                 # perl doesn't have it" and from people trying to
20097                 # (re)install the threads module using CPAN.pm and
20098                 # CPAN.pm then offering to reinstall Perl 5.8.0,
20099                 # the threads.pm and threads/shared.pm will always be
20100                 # there, croaking informatively ("you need to rebuild
20101                 # all of Perl with threads, sorry") when threads haven't
20102                 # been compiled in.
20103                 # --jhi
20104                 avail_ext="$avail_ext $xxx"
20105                 ;;
20106         IPC/SysV|ipc/sysv)
20107                 : XXX Do we need a useipcsysv variable here
20108                 case "${d_msg}${d_sem}${d_shm}" in 
20109                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20110                 esac
20111                 ;;
20112         *)      avail_ext="$avail_ext $xxx"
20113                 ;;
20114         esac
20115 done
20116
20117 set X $avail_ext
20118 shift
20119 avail_ext="$*"
20120
20121 case "$onlyextensions" in
20122 '') ;;
20123 *)  keepextensions=''
20124     echo "You have requested that only certains extensions be included..." >&4
20125     for i in $onlyextensions; do
20126         case " $avail_ext " in
20127         *" $i "*)
20128             echo "Keeping extension $i."
20129             keepextensions="$keepextensions $i"
20130             ;;
20131         *) echo "Ignoring extension $i." ;;
20132         esac
20133     done
20134     avail_ext="$keepextensions"
20135     ;;
20136 esac
20137
20138 case "$noextensions" in
20139 '') ;;
20140 *)  keepextensions=''
20141     echo "You have requested that certain extensions be ignored..." >&4
20142     for i in $avail_ext; do
20143         case " $noextensions " in
20144         *" $i "*) echo "Ignoring extension $i." ;;
20145         *) echo "Keeping extension $i.";
20146            keepextensions="$keepextensions $i"
20147            ;;
20148         esac
20149     done
20150     avail_ext="$keepextensions"
20151     ;;
20152 esac
20153
20154 : Now see which nonxs extensions are supported on this system.
20155 : For now assume all are.
20156 nonxs_ext=''
20157 for xxx in $nonxs_extensions ; do
20158         case "$xxx" in
20159         *)      nonxs_ext="$nonxs_ext $xxx"
20160                 ;;
20161         esac
20162 done
20163
20164 set X $nonxs_ext
20165 shift
20166 nonxs_ext="$*"
20167
20168 case $usedl in
20169 $define)
20170         $cat <<EOM
20171 A number of extensions are supplied with $package.  You may choose to
20172 compile these extensions for dynamic loading (the default), compile
20173 them into the $package executable (static loading), or not include
20174 them at all.  Answer "none" to include no extensions.
20175 Note that DynaLoader is always built and need not be mentioned here.
20176
20177 EOM
20178         case "$dynamic_ext" in
20179         '')
20180                 : Exclude those listed in static_ext
20181                 dflt=''
20182                 for xxx in $avail_ext; do
20183                         case " $static_ext " in
20184                         *" $xxx "*) ;;
20185                         *) dflt="$dflt $xxx" ;;
20186                         esac
20187                 done
20188                 set X $dflt
20189                 shift
20190                 dflt="$*"
20191                 ;;
20192         *)      dflt="$dynamic_ext"
20193                 # Perhaps we are reusing an old out-of-date config.sh.
20194                 case "$hint" in
20195                 previous)
20196                         if test X"$dynamic_ext" != X"$avail_ext"; then
20197                                 $cat <<EOM
20198 NOTICE:  Your previous config.sh list may be incorrect. 
20199 The extensions now available to you are 
20200         ${avail_ext}
20201 but the default list from your previous config.sh is
20202         ${dynamic_ext} 
20203
20204 EOM
20205                         fi
20206                         ;;
20207                 esac
20208                 ;;
20209         esac
20210         case "$dflt" in
20211         '')     dflt=none;;
20212         esac
20213         rp="What extensions do you wish to load dynamically?"
20214         . ./myread
20215         case "$ans" in
20216         none) dynamic_ext=' ' ;;
20217         *) dynamic_ext="$ans" ;;
20218         esac
20219
20220         case "$static_ext" in
20221         '')
20222                 : Exclude those already listed in dynamic linking
20223                 dflt=''
20224                 for xxx in $avail_ext; do
20225                         case " $dynamic_ext " in
20226                         *" $xxx "*) ;;
20227                         *) dflt="$dflt $xxx" ;;
20228                         esac
20229                 done
20230                 set X $dflt
20231                 shift
20232                 dflt="$*"
20233                 ;;
20234         *)  dflt="$static_ext" 
20235                 ;;
20236         esac
20237
20238         case "$dflt" in
20239         '')     dflt=none;;
20240         esac
20241         rp="What extensions do you wish to load statically?"
20242         . ./myread
20243         case "$ans" in
20244         none) static_ext=' ' ;;
20245         *) static_ext="$ans" ;;
20246         esac
20247         ;;
20248 *)
20249         $cat <<EOM
20250 A number of extensions are supplied with $package.  Answer "none" 
20251 to include no extensions. 
20252 Note that DynaLoader is always built and need not be mentioned here.
20253
20254 EOM
20255         case "$static_ext" in
20256         '') dflt="$avail_ext" ;;
20257         *)      dflt="$static_ext"
20258                 # Perhaps we are reusing an old out-of-date config.sh.
20259                 case "$hint" in
20260                 previous)
20261                         if test X"$static_ext" != X"$avail_ext"; then
20262                                 $cat <<EOM
20263 NOTICE:  Your previous config.sh list may be incorrect. 
20264 The extensions now available to you are 
20265         ${avail_ext}
20266 but the default list from your previous config.sh is
20267         ${static_ext} 
20268
20269 EOM
20270                         fi
20271                         ;;
20272                 esac
20273                 ;;
20274         esac
20275         : Exclude those that are not xs extensions
20276         case "$dflt" in
20277         '')     dflt=none;;
20278         esac
20279         rp="What extensions do you wish to include?"
20280         . ./myread
20281         case "$ans" in
20282         none) static_ext=' ' ;;
20283         *) static_ext="$ans" ;;
20284         esac
20285         ;;
20286 esac
20287 #        
20288 # Encode is a special case.  If we are building Encode as a static
20289 # extension, we need to explicitly list its subextensions as well.
20290 # For other nested extensions, this is handled automatically by
20291 # the appropriate Makefile.PL.
20292 case " $static_ext " in
20293         *" Encode "*) # Add the subextensions of Encode
20294         cd "$rsrc/ext"
20295         for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20296                 static_ext="$static_ext Encode/$xxx"
20297         done
20298         cd "$tdir"
20299         ;;
20300 esac
20301
20302 set X $dynamic_ext $static_ext $nonxs_ext
20303 shift
20304 extensions="$*"
20305
20306 # Sanity check:  We require an extension suitable for use with
20307 # AnyDBM_File, as well as Fcntl and IO.  (Failure to have these
20308 # should show up as failures in the test suite, but it's helpful to
20309 # catch them now.) The 'extensions' list is normally sorted
20310 # alphabetically, so we need to accept either
20311 #    DB_File ... Fcntl ... IO  ....
20312 # or something like
20313 #    Fcntl ... NDBM_File ... IO  ....
20314 case " $extensions"  in
20315 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20316 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20317 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20318 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20319    echo "WARNING: The Perl you are building will be quite crippled." >& 4
20320    ;;
20321 esac
20322
20323 : Remove libraries needed only for extensions
20324 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20325 : The exception is SunOS 4.x, which needs them.
20326 case "${osname}X${osvers}" in
20327 sunos*X4*)
20328     perllibs="$libs"
20329     ;;
20330 *) case "$usedl" in
20331     $define|true|[yY]*)
20332             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
20333             shift
20334             perllibs="$*"
20335             ;;
20336     *)  perllibs="$libs"
20337             ;;
20338     esac
20339     ;;
20340 esac
20341
20342 : Remove build directory name from cppstdin so it can be used from
20343 : either the present location or the final installed location.
20344 echo " "
20345 : Get out of the UU directory to get correct path name.
20346 cd ..
20347 case "$cppstdin" in
20348 `pwd`/cppstdin)
20349         echo "Stripping down cppstdin path name"
20350         cppstdin=cppstdin
20351         ;;
20352 esac
20353 cd UU
20354
20355 : end of configuration questions
20356 echo " "
20357 echo "End of configuration questions."
20358 echo " "
20359
20360 : back to where it started
20361 if test -d ../UU; then
20362         cd ..
20363 fi
20364
20365 : configuration may be patched via a 'config.arch' file
20366 if $test -f config.arch; then
20367         echo "I see a config.arch file, loading it."
20368         . ./config.arch
20369 fi
20370
20371 : configuration may be patched via a 'config.over' file
20372 if $test -f config.over; then
20373         echo " "
20374         dflt=y
20375         rp='I see a config.over file.  Do you wish to load it?'
20376         . UU/myread
20377         case "$ans" in
20378         n*) echo "OK, I'll ignore it.";;
20379         *)      . ./config.over
20380                 echo "Configuration override changes have been loaded."
20381                 ;;
20382         esac
20383 fi
20384
20385 : in case they want portability, strip down executable paths
20386 case "$d_portable" in
20387 "$define")
20388         echo " "
20389         echo "Stripping down executable paths..." >&4
20390         for file in $loclist $trylist; do
20391                 eval temp=\$$file
20392                 eval $file=`basename $temp`
20393         done
20394         ;;
20395 esac
20396
20397 : create config.sh file
20398 echo " "
20399 echo "Creating config.sh..." >&4
20400 $spitshell <<EOT >config.sh
20401 $startsh
20402 #
20403 # This file was produced by running the Configure script. It holds all the
20404 # definitions figured out by Configure. Should you modify one of these values,
20405 # do not forget to propagate your changes by running "Configure -der". You may
20406 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20407 #
20408
20409 # Package name      : $package
20410 # Source directory  : $src
20411 # Configuration time: $cf_time
20412 # Configured by     : $cf_by
20413 # Target system     : $myuname
20414
20415 Author='$Author'
20416 Date='$Date'
20417 Header='$Header'
20418 Id='$Id'
20419 Locker='$Locker'
20420 Log='$Log'
20421 Mcc='$Mcc'
20422 RCSfile='$RCSfile'
20423 Revision='$Revision'
20424 Source='$Source'
20425 State='$State'
20426 _a='$_a'
20427 _exe='$_exe'
20428 _o='$_o'
20429 afs='$afs'
20430 afsroot='$afsroot'
20431 alignbytes='$alignbytes'
20432 ansi2knr='$ansi2knr'
20433 aphostname='$aphostname'
20434 api_revision='$api_revision'
20435 api_subversion='$api_subversion'
20436 api_version='$api_version'
20437 api_versionstring='$api_versionstring'
20438 ar='$ar'
20439 archlib='$archlib'
20440 archlibexp='$archlibexp'
20441 archname64='$archname64'
20442 archname='$archname'
20443 archobjs='$archobjs'
20444 asctime_r_proto='$asctime_r_proto'
20445 awk='$awk'
20446 baserev='$baserev'
20447 bash='$bash'
20448 bin='$bin'
20449 binexp='$binexp'
20450 bison='$bison'
20451 byacc='$byacc'
20452 byteorder='$byteorder'
20453 c='$c'
20454 castflags='$castflags'
20455 cat='$cat'
20456 cc='$cc'
20457 cccdlflags='$cccdlflags'
20458 ccdlflags='$ccdlflags'
20459 ccflags='$ccflags'
20460 ccflags_uselargefiles='$ccflags_uselargefiles'
20461 ccname='$ccname'
20462 ccsymbols='$ccsymbols'
20463 ccversion='$ccversion'
20464 cf_by='$cf_by'
20465 cf_email='$cf_email'
20466 cf_time='$cf_time'
20467 charsize='$charsize'
20468 chgrp='$chgrp'
20469 chmod='$chmod'
20470 chown='$chown'
20471 clocktype='$clocktype'
20472 comm='$comm'
20473 compress='$compress'
20474 contains='$contains'
20475 cp='$cp'
20476 cpio='$cpio'
20477 cpp='$cpp'
20478 cpp_stuff='$cpp_stuff'
20479 cppccsymbols='$cppccsymbols'
20480 cppflags='$cppflags'
20481 cpplast='$cpplast'
20482 cppminus='$cppminus'
20483 cpprun='$cpprun'
20484 cppstdin='$cppstdin'
20485 cppsymbols='$cppsymbols'
20486 crypt_r_proto='$crypt_r_proto'
20487 cryptlib='$cryptlib'
20488 csh='$csh'
20489 ctermid_r_proto='$ctermid_r_proto'
20490 ctime_r_proto='$ctime_r_proto'
20491 d_Gconvert='$d_Gconvert'
20492 d_PRIEUldbl='$d_PRIEUldbl'
20493 d_PRIFUldbl='$d_PRIFUldbl'
20494 d_PRIGUldbl='$d_PRIGUldbl'
20495 d_PRIXU64='$d_PRIXU64'
20496 d_PRId64='$d_PRId64'
20497 d_PRIeldbl='$d_PRIeldbl'
20498 d_PRIfldbl='$d_PRIfldbl'
20499 d_PRIgldbl='$d_PRIgldbl'
20500 d_PRIi64='$d_PRIi64'
20501 d_PRIo64='$d_PRIo64'
20502 d_PRIu64='$d_PRIu64'
20503 d_PRIx64='$d_PRIx64'
20504 d_SCNfldbl='$d_SCNfldbl'
20505 d__fwalk='$d__fwalk'
20506 d_access='$d_access'
20507 d_accessx='$d_accessx'
20508 d_aintl='$d_aintl'
20509 d_alarm='$d_alarm'
20510 d_archlib='$d_archlib'
20511 d_asctime_r='$d_asctime_r'
20512 d_atolf='$d_atolf'
20513 d_atoll='$d_atoll'
20514 d_attribut='$d_attribut'
20515 d_bcmp='$d_bcmp'
20516 d_bcopy='$d_bcopy'
20517 d_bsd='$d_bsd'
20518 d_bsdgetpgrp='$d_bsdgetpgrp'
20519 d_bsdsetpgrp='$d_bsdsetpgrp'
20520 d_bzero='$d_bzero'
20521 d_casti32='$d_casti32'
20522 d_castneg='$d_castneg'
20523 d_charvspr='$d_charvspr'
20524 d_chown='$d_chown'
20525 d_chroot='$d_chroot'
20526 d_chsize='$d_chsize'
20527 d_class='$d_class'
20528 d_closedir='$d_closedir'
20529 d_cmsghdr_s='$d_cmsghdr_s'
20530 d_const='$d_const'
20531 d_copysignl='$d_copysignl'
20532 d_crypt='$d_crypt'
20533 d_crypt_r='$d_crypt_r'
20534 d_csh='$d_csh'
20535 d_ctermid_r='$d_ctermid_r'
20536 d_ctime_r='$d_ctime_r'
20537 d_cuserid='$d_cuserid'
20538 d_dbl_dig='$d_dbl_dig'
20539 d_dbminitproto='$d_dbminitproto'
20540 d_difftime='$d_difftime'
20541 d_dirfd='$d_dirfd'
20542 d_dirnamlen='$d_dirnamlen'
20543 d_dlerror='$d_dlerror'
20544 d_dlopen='$d_dlopen'
20545 d_dlsymun='$d_dlsymun'
20546 d_dosuid='$d_dosuid'
20547 d_drand48_r='$d_drand48_r'
20548 d_drand48proto='$d_drand48proto'
20549 d_dup2='$d_dup2'
20550 d_eaccess='$d_eaccess'
20551 d_endgrent='$d_endgrent'
20552 d_endgrent_r='$d_endgrent_r'
20553 d_endhent='$d_endhent'
20554 d_endhostent_r='$d_endhostent_r'
20555 d_endnent='$d_endnent'
20556 d_endnetent_r='$d_endnetent_r'
20557 d_endpent='$d_endpent'
20558 d_endprotoent_r='$d_endprotoent_r'
20559 d_endpwent='$d_endpwent'
20560 d_endpwent_r='$d_endpwent_r'
20561 d_endsent='$d_endsent'
20562 d_endservent_r='$d_endservent_r'
20563 d_eofnblk='$d_eofnblk'
20564 d_eunice='$d_eunice'
20565 d_faststdio='$d_faststdio'
20566 d_fchdir='$d_fchdir'
20567 d_fchmod='$d_fchmod'
20568 d_fchown='$d_fchown'
20569 d_fcntl='$d_fcntl'
20570 d_fcntl_can_lock='$d_fcntl_can_lock'
20571 d_fd_macros='$d_fd_macros'
20572 d_fd_set='$d_fd_set'
20573 d_fds_bits='$d_fds_bits'
20574 d_fgetpos='$d_fgetpos'
20575 d_finite='$d_finite'
20576 d_finitel='$d_finitel'
20577 d_flexfnam='$d_flexfnam'
20578 d_flock='$d_flock'
20579 d_flockproto='$d_flockproto'
20580 d_fork='$d_fork'
20581 d_fp_class='$d_fp_class'
20582 d_fpathconf='$d_fpathconf'
20583 d_fpclass='$d_fpclass'
20584 d_fpclassify='$d_fpclassify'
20585 d_fpclassl='$d_fpclassl'
20586 d_fpos64_t='$d_fpos64_t'
20587 d_frexpl='$d_frexpl'
20588 d_fs_data_s='$d_fs_data_s'
20589 d_fseeko='$d_fseeko'
20590 d_fsetpos='$d_fsetpos'
20591 d_fstatfs='$d_fstatfs'
20592 d_fstatvfs='$d_fstatvfs'
20593 d_fsync='$d_fsync'
20594 d_ftello='$d_ftello'
20595 d_ftime='$d_ftime'
20596 d_getcwd='$d_getcwd'
20597 d_getespwnam='$d_getespwnam'
20598 d_getfsstat='$d_getfsstat'
20599 d_getgrent='$d_getgrent'
20600 d_getgrent_r='$d_getgrent_r'
20601 d_getgrgid_r='$d_getgrgid_r'
20602 d_getgrnam_r='$d_getgrnam_r'
20603 d_getgrps='$d_getgrps'
20604 d_gethbyaddr='$d_gethbyaddr'
20605 d_gethbyname='$d_gethbyname'
20606 d_gethent='$d_gethent'
20607 d_gethname='$d_gethname'
20608 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20609 d_gethostbyname_r='$d_gethostbyname_r'
20610 d_gethostent_r='$d_gethostent_r'
20611 d_gethostprotos='$d_gethostprotos'
20612 d_getitimer='$d_getitimer'
20613 d_getlogin='$d_getlogin'
20614 d_getlogin_r='$d_getlogin_r'
20615 d_getmnt='$d_getmnt'
20616 d_getmntent='$d_getmntent'
20617 d_getnbyaddr='$d_getnbyaddr'
20618 d_getnbyname='$d_getnbyname'
20619 d_getnent='$d_getnent'
20620 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20621 d_getnetbyname_r='$d_getnetbyname_r'
20622 d_getnetent_r='$d_getnetent_r'
20623 d_getnetprotos='$d_getnetprotos'
20624 d_getpagsz='$d_getpagsz'
20625 d_getpbyname='$d_getpbyname'
20626 d_getpbynumber='$d_getpbynumber'
20627 d_getpent='$d_getpent'
20628 d_getpgid='$d_getpgid'
20629 d_getpgrp2='$d_getpgrp2'
20630 d_getpgrp='$d_getpgrp'
20631 d_getppid='$d_getppid'
20632 d_getprior='$d_getprior'
20633 d_getprotobyname_r='$d_getprotobyname_r'
20634 d_getprotobynumber_r='$d_getprotobynumber_r'
20635 d_getprotoent_r='$d_getprotoent_r'
20636 d_getprotoprotos='$d_getprotoprotos'
20637 d_getprpwnam='$d_getprpwnam'
20638 d_getpwent='$d_getpwent'
20639 d_getpwent_r='$d_getpwent_r'
20640 d_getpwnam_r='$d_getpwnam_r'
20641 d_getpwuid_r='$d_getpwuid_r'
20642 d_getsbyname='$d_getsbyname'
20643 d_getsbyport='$d_getsbyport'
20644 d_getsent='$d_getsent'
20645 d_getservbyname_r='$d_getservbyname_r'
20646 d_getservbyport_r='$d_getservbyport_r'
20647 d_getservent_r='$d_getservent_r'
20648 d_getservprotos='$d_getservprotos'
20649 d_getspnam='$d_getspnam'
20650 d_getspnam_r='$d_getspnam_r'
20651 d_gettimeod='$d_gettimeod'
20652 d_gmtime_r='$d_gmtime_r'
20653 d_gnulibc='$d_gnulibc'
20654 d_grpasswd='$d_grpasswd'
20655 d_hasmntopt='$d_hasmntopt'
20656 d_htonl='$d_htonl'
20657 d_ilogbl='$d_ilogbl'
20658 d_index='$d_index'
20659 d_inetaton='$d_inetaton'
20660 d_int64_t='$d_int64_t'
20661 d_isascii='$d_isascii'
20662 d_isfinite='$d_isfinite'
20663 d_isinf='$d_isinf'
20664 d_isnan='$d_isnan'
20665 d_isnanl='$d_isnanl'
20666 d_killpg='$d_killpg'
20667 d_lchown='$d_lchown'
20668 d_ldbl_dig='$d_ldbl_dig'
20669 d_link='$d_link'
20670 d_localtime_r='$d_localtime_r'
20671 d_locconv='$d_locconv'
20672 d_lockf='$d_lockf'
20673 d_longdbl='$d_longdbl'
20674 d_longlong='$d_longlong'
20675 d_lseekproto='$d_lseekproto'
20676 d_lstat='$d_lstat'
20677 d_madvise='$d_madvise'
20678 d_mblen='$d_mblen'
20679 d_mbstowcs='$d_mbstowcs'
20680 d_mbtowc='$d_mbtowc'
20681 d_memchr='$d_memchr'
20682 d_memcmp='$d_memcmp'
20683 d_memcpy='$d_memcpy'
20684 d_memmove='$d_memmove'
20685 d_memset='$d_memset'
20686 d_mkdir='$d_mkdir'
20687 d_mkdtemp='$d_mkdtemp'
20688 d_mkfifo='$d_mkfifo'
20689 d_mkstemp='$d_mkstemp'
20690 d_mkstemps='$d_mkstemps'
20691 d_mktime='$d_mktime'
20692 d_mmap='$d_mmap'
20693 d_modfl='$d_modfl'
20694 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20695 d_modflproto='$d_modflproto'
20696 d_mprotect='$d_mprotect'
20697 d_msg='$d_msg'
20698 d_msg_ctrunc='$d_msg_ctrunc'
20699 d_msg_dontroute='$d_msg_dontroute'
20700 d_msg_oob='$d_msg_oob'
20701 d_msg_peek='$d_msg_peek'
20702 d_msg_proxy='$d_msg_proxy'
20703 d_msgctl='$d_msgctl'
20704 d_msgget='$d_msgget'
20705 d_msghdr_s='$d_msghdr_s'
20706 d_msgrcv='$d_msgrcv'
20707 d_msgsnd='$d_msgsnd'
20708 d_msync='$d_msync'
20709 d_munmap='$d_munmap'
20710 d_mymalloc='$d_mymalloc'
20711 d_nice='$d_nice'
20712 d_nl_langinfo='$d_nl_langinfo'
20713 d_nv_preserves_uv='$d_nv_preserves_uv'
20714 d_off64_t='$d_off64_t'
20715 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20716 d_oldpthreads='$d_oldpthreads'
20717 d_oldsock='$d_oldsock'
20718 d_open3='$d_open3'
20719 d_pathconf='$d_pathconf'
20720 d_pause='$d_pause'
20721 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20722 d_phostname='$d_phostname'
20723 d_pipe='$d_pipe'
20724 d_poll='$d_poll'
20725 d_portable='$d_portable'
20726 d_procselfexe='$d_procselfexe'
20727 d_pthread_atfork='$d_pthread_atfork'
20728 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20729 d_pthread_yield='$d_pthread_yield'
20730 d_pwage='$d_pwage'
20731 d_pwchange='$d_pwchange'
20732 d_pwclass='$d_pwclass'
20733 d_pwcomment='$d_pwcomment'
20734 d_pwexpire='$d_pwexpire'
20735 d_pwgecos='$d_pwgecos'
20736 d_pwpasswd='$d_pwpasswd'
20737 d_pwquota='$d_pwquota'
20738 d_qgcvt='$d_qgcvt'
20739 d_quad='$d_quad'
20740 d_random_r='$d_random_r'
20741 d_readdir64_r='$d_readdir64_r'
20742 d_readdir='$d_readdir'
20743 d_readdir_r='$d_readdir_r'
20744 d_readlink='$d_readlink'
20745 d_readv='$d_readv'
20746 d_recvmsg='$d_recvmsg'
20747 d_rename='$d_rename'
20748 d_rewinddir='$d_rewinddir'
20749 d_rmdir='$d_rmdir'
20750 d_safebcpy='$d_safebcpy'
20751 d_safemcpy='$d_safemcpy'
20752 d_sanemcmp='$d_sanemcmp'
20753 d_sbrkproto='$d_sbrkproto'
20754 d_scalbnl='$d_scalbnl'
20755 d_sched_yield='$d_sched_yield'
20756 d_scm_rights='$d_scm_rights'
20757 d_seekdir='$d_seekdir'
20758 d_select='$d_select'
20759 d_sem='$d_sem'
20760 d_semctl='$d_semctl'
20761 d_semctl_semid_ds='$d_semctl_semid_ds'
20762 d_semctl_semun='$d_semctl_semun'
20763 d_semget='$d_semget'
20764 d_semop='$d_semop'
20765 d_sendmsg='$d_sendmsg'
20766 d_setegid='$d_setegid'
20767 d_seteuid='$d_seteuid'
20768 d_setgrent='$d_setgrent'
20769 d_setgrent_r='$d_setgrent_r'
20770 d_setgrps='$d_setgrps'
20771 d_sethent='$d_sethent'
20772 d_sethostent_r='$d_sethostent_r'
20773 d_setitimer='$d_setitimer'
20774 d_setlinebuf='$d_setlinebuf'
20775 d_setlocale='$d_setlocale'
20776 d_setlocale_r='$d_setlocale_r'
20777 d_setnent='$d_setnent'
20778 d_setnetent_r='$d_setnetent_r'
20779 d_setpent='$d_setpent'
20780 d_setpgid='$d_setpgid'
20781 d_setpgrp2='$d_setpgrp2'
20782 d_setpgrp='$d_setpgrp'
20783 d_setprior='$d_setprior'
20784 d_setproctitle='$d_setproctitle'
20785 d_setprotoent_r='$d_setprotoent_r'
20786 d_setpwent='$d_setpwent'
20787 d_setpwent_r='$d_setpwent_r'
20788 d_setregid='$d_setregid'
20789 d_setresgid='$d_setresgid'
20790 d_setresuid='$d_setresuid'
20791 d_setreuid='$d_setreuid'
20792 d_setrgid='$d_setrgid'
20793 d_setruid='$d_setruid'
20794 d_setsent='$d_setsent'
20795 d_setservent_r='$d_setservent_r'
20796 d_setsid='$d_setsid'
20797 d_setvbuf='$d_setvbuf'
20798 d_sfio='$d_sfio'
20799 d_shm='$d_shm'
20800 d_shmat='$d_shmat'
20801 d_shmatprototype='$d_shmatprototype'
20802 d_shmctl='$d_shmctl'
20803 d_shmdt='$d_shmdt'
20804 d_shmget='$d_shmget'
20805 d_sigaction='$d_sigaction'
20806 d_sigprocmask='$d_sigprocmask'
20807 d_sigsetjmp='$d_sigsetjmp'
20808 d_sockatmark='$d_sockatmark'
20809 d_sockatmarkproto='$d_sockatmarkproto'
20810 d_socket='$d_socket'
20811 d_socklen_t='$d_socklen_t'
20812 d_sockpair='$d_sockpair'
20813 d_socks5_init='$d_socks5_init'
20814 d_sqrtl='$d_sqrtl'
20815 d_srand48_r='$d_srand48_r'
20816 d_srandom_r='$d_srandom_r'
20817 d_sresgproto='$d_sresgproto'
20818 d_sresuproto='$d_sresuproto'
20819 d_statblks='$d_statblks'
20820 d_statfs_f_flags='$d_statfs_f_flags'
20821 d_statfs_s='$d_statfs_s'
20822 d_statvfs='$d_statvfs'
20823 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20824 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20825 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20826 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20827 d_stdio_stream_array='$d_stdio_stream_array'
20828 d_stdiobase='$d_stdiobase'
20829 d_stdstdio='$d_stdstdio'
20830 d_strchr='$d_strchr'
20831 d_strcoll='$d_strcoll'
20832 d_strctcpy='$d_strctcpy'
20833 d_strerrm='$d_strerrm'
20834 d_strerror='$d_strerror'
20835 d_strerror_r='$d_strerror_r'
20836 d_strftime='$d_strftime'
20837 d_strtod='$d_strtod'
20838 d_strtol='$d_strtol'
20839 d_strtold='$d_strtold'
20840 d_strtoll='$d_strtoll'
20841 d_strtoq='$d_strtoq'
20842 d_strtoul='$d_strtoul'
20843 d_strtoull='$d_strtoull'
20844 d_strtouq='$d_strtouq'
20845 d_strxfrm='$d_strxfrm'
20846 d_suidsafe='$d_suidsafe'
20847 d_symlink='$d_symlink'
20848 d_syscall='$d_syscall'
20849 d_syscallproto='$d_syscallproto'
20850 d_sysconf='$d_sysconf'
20851 d_sysernlst='$d_sysernlst'
20852 d_syserrlst='$d_syserrlst'
20853 d_system='$d_system'
20854 d_tcgetpgrp='$d_tcgetpgrp'
20855 d_tcsetpgrp='$d_tcsetpgrp'
20856 d_telldir='$d_telldir'
20857 d_telldirproto='$d_telldirproto'
20858 d_time='$d_time'
20859 d_times='$d_times'
20860 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20861 d_tm_tm_zone='$d_tm_tm_zone'
20862 d_tmpnam_r='$d_tmpnam_r'
20863 d_truncate='$d_truncate'
20864 d_ttyname_r='$d_ttyname_r'
20865 d_tzname='$d_tzname'
20866 d_u32align='$d_u32align'
20867 d_ualarm='$d_ualarm'
20868 d_umask='$d_umask'
20869 d_uname='$d_uname'
20870 d_union_semun='$d_union_semun'
20871 d_unordered='$d_unordered'
20872 d_usleep='$d_usleep'
20873 d_usleepproto='$d_usleepproto'
20874 d_ustat='$d_ustat'
20875 d_vendorarch='$d_vendorarch'
20876 d_vendorbin='$d_vendorbin'
20877 d_vendorlib='$d_vendorlib'
20878 d_vendorscript='$d_vendorscript'
20879 d_vfork='$d_vfork'
20880 d_void_closedir='$d_void_closedir'
20881 d_voidsig='$d_voidsig'
20882 d_voidtty='$d_voidtty'
20883 d_volatile='$d_volatile'
20884 d_vprintf='$d_vprintf'
20885 d_wait4='$d_wait4'
20886 d_waitpid='$d_waitpid'
20887 d_wcstombs='$d_wcstombs'
20888 d_wctomb='$d_wctomb'
20889 d_writev='$d_writev'
20890 d_xenix='$d_xenix'
20891 date='$date'
20892 db_hashtype='$db_hashtype'
20893 db_prefixtype='$db_prefixtype'
20894 db_version_major='$db_version_major'
20895 db_version_minor='$db_version_minor'
20896 db_version_patch='$db_version_patch'
20897 defvoidused='$defvoidused'
20898 direntrytype='$direntrytype'
20899 dlext='$dlext'
20900 dlsrc='$dlsrc'
20901 doublesize='$doublesize'
20902 drand01='$drand01'
20903 drand48_r_proto='$drand48_r_proto'
20904 dynamic_ext='$dynamic_ext'
20905 eagain='$eagain'
20906 ebcdic='$ebcdic'
20907 echo='$echo'
20908 egrep='$egrep'
20909 emacs='$emacs'
20910 endgrent_r_proto='$endgrent_r_proto'
20911 endhostent_r_proto='$endhostent_r_proto'
20912 endnetent_r_proto='$endnetent_r_proto'
20913 endprotoent_r_proto='$endprotoent_r_proto'
20914 endpwent_r_proto='$endpwent_r_proto'
20915 endservent_r_proto='$endservent_r_proto'
20916 eunicefix='$eunicefix'
20917 exe_ext='$exe_ext'
20918 expr='$expr'
20919 extensions='$extensions'
20920 extras='$extras'
20921 fflushNULL='$fflushNULL'
20922 fflushall='$fflushall'
20923 find='$find'
20924 firstmakefile='$firstmakefile'
20925 flex='$flex'
20926 fpossize='$fpossize'
20927 fpostype='$fpostype'
20928 freetype='$freetype'
20929 from='$from'
20930 full_ar='$full_ar'
20931 full_csh='$full_csh'
20932 full_sed='$full_sed'
20933 gccansipedantic='$gccansipedantic'
20934 gccosandvers='$gccosandvers'
20935 gccversion='$gccversion'
20936 getgrent_r_proto='$getgrent_r_proto'
20937 getgrgid_r_proto='$getgrgid_r_proto'
20938 getgrnam_r_proto='$getgrnam_r_proto'
20939 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20940 gethostbyname_r_proto='$gethostbyname_r_proto'
20941 gethostent_r_proto='$gethostent_r_proto'
20942 getlogin_r_proto='$getlogin_r_proto'
20943 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20944 getnetbyname_r_proto='$getnetbyname_r_proto'
20945 getnetent_r_proto='$getnetent_r_proto'
20946 getprotobyname_r_proto='$getprotobyname_r_proto'
20947 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20948 getprotoent_r_proto='$getprotoent_r_proto'
20949 getpwent_r_proto='$getpwent_r_proto'
20950 getpwnam_r_proto='$getpwnam_r_proto'
20951 getpwuid_r_proto='$getpwuid_r_proto'
20952 getservbyname_r_proto='$getservbyname_r_proto'
20953 getservbyport_r_proto='$getservbyport_r_proto'
20954 getservent_r_proto='$getservent_r_proto'
20955 getspnam_r_proto='$getspnam_r_proto'
20956 gidformat='$gidformat'
20957 gidsign='$gidsign'
20958 gidsize='$gidsize'
20959 gidtype='$gidtype'
20960 glibpth='$glibpth'
20961 gmake='$gmake'
20962 gmtime_r_proto='$gmtime_r_proto'
20963 gnulibc_version='$gnulibc_version'
20964 grep='$grep'
20965 groupcat='$groupcat'
20966 groupstype='$groupstype'
20967 gzip='$gzip'
20968 h_fcntl='$h_fcntl'
20969 h_sysfile='$h_sysfile'
20970 hint='$hint'
20971 hostcat='$hostcat'
20972 html1dir='$html1dir'
20973 html1direxp='$html1direxp'
20974 html3dir='$html3dir'
20975 html3direxp='$html3direxp'
20976 i16size='$i16size'
20977 i16type='$i16type'
20978 i32size='$i32size'
20979 i32type='$i32type'
20980 i64size='$i64size'
20981 i64type='$i64type'
20982 i8size='$i8size'
20983 i8type='$i8type'
20984 i_arpainet='$i_arpainet'
20985 i_bsdioctl='$i_bsdioctl'
20986 i_crypt='$i_crypt'
20987 i_db='$i_db'
20988 i_dbm='$i_dbm'
20989 i_dirent='$i_dirent'
20990 i_dld='$i_dld'
20991 i_dlfcn='$i_dlfcn'
20992 i_fcntl='$i_fcntl'
20993 i_float='$i_float'
20994 i_fp='$i_fp'
20995 i_fp_class='$i_fp_class'
20996 i_gdbm='$i_gdbm'
20997 i_grp='$i_grp'
20998 i_ieeefp='$i_ieeefp'
20999 i_inttypes='$i_inttypes'
21000 i_langinfo='$i_langinfo'
21001 i_libutil='$i_libutil'
21002 i_limits='$i_limits'
21003 i_locale='$i_locale'
21004 i_machcthr='$i_machcthr'
21005 i_malloc='$i_malloc'
21006 i_math='$i_math'
21007 i_memory='$i_memory'
21008 i_mntent='$i_mntent'
21009 i_ndbm='$i_ndbm'
21010 i_netdb='$i_netdb'
21011 i_neterrno='$i_neterrno'
21012 i_netinettcp='$i_netinettcp'
21013 i_niin='$i_niin'
21014 i_poll='$i_poll'
21015 i_prot='$i_prot'
21016 i_pthread='$i_pthread'
21017 i_pwd='$i_pwd'
21018 i_rpcsvcdbm='$i_rpcsvcdbm'
21019 i_sfio='$i_sfio'
21020 i_sgtty='$i_sgtty'
21021 i_shadow='$i_shadow'
21022 i_socks='$i_socks'
21023 i_stdarg='$i_stdarg'
21024 i_stddef='$i_stddef'
21025 i_stdlib='$i_stdlib'
21026 i_string='$i_string'
21027 i_sunmath='$i_sunmath'
21028 i_sysaccess='$i_sysaccess'
21029 i_sysdir='$i_sysdir'
21030 i_sysfile='$i_sysfile'
21031 i_sysfilio='$i_sysfilio'
21032 i_sysin='$i_sysin'
21033 i_sysioctl='$i_sysioctl'
21034 i_syslog='$i_syslog'
21035 i_sysmman='$i_sysmman'
21036 i_sysmode='$i_sysmode'
21037 i_sysmount='$i_sysmount'
21038 i_sysndir='$i_sysndir'
21039 i_sysparam='$i_sysparam'
21040 i_sysresrc='$i_sysresrc'
21041 i_syssecrt='$i_syssecrt'
21042 i_sysselct='$i_sysselct'
21043 i_syssockio='$i_syssockio'
21044 i_sysstat='$i_sysstat'
21045 i_sysstatfs='$i_sysstatfs'
21046 i_sysstatvfs='$i_sysstatvfs'
21047 i_systime='$i_systime'
21048 i_systimek='$i_systimek'
21049 i_systimes='$i_systimes'
21050 i_systypes='$i_systypes'
21051 i_sysuio='$i_sysuio'
21052 i_sysun='$i_sysun'
21053 i_sysutsname='$i_sysutsname'
21054 i_sysvfs='$i_sysvfs'
21055 i_syswait='$i_syswait'
21056 i_termio='$i_termio'
21057 i_termios='$i_termios'
21058 i_time='$i_time'
21059 i_unistd='$i_unistd'
21060 i_ustat='$i_ustat'
21061 i_utime='$i_utime'
21062 i_values='$i_values'
21063 i_varargs='$i_varargs'
21064 i_varhdr='$i_varhdr'
21065 i_vfork='$i_vfork'
21066 ignore_versioned_solibs='$ignore_versioned_solibs'
21067 inc_version_list='$inc_version_list'
21068 inc_version_list_init='$inc_version_list_init'
21069 incpath='$incpath'
21070 inews='$inews'
21071 installarchlib='$installarchlib'
21072 installbin='$installbin'
21073 installhtml1dir='$installhtml1dir'
21074 installhtml3dir='$installhtml3dir'
21075 installman1dir='$installman1dir'
21076 installman3dir='$installman3dir'
21077 installprefix='$installprefix'
21078 installprefixexp='$installprefixexp'
21079 installprivlib='$installprivlib'
21080 installscript='$installscript'
21081 installsitearch='$installsitearch'
21082 installsitebin='$installsitebin'
21083 installsitehtml1dir='$installsitehtml1dir'
21084 installsitehtml3dir='$installsitehtml3dir'
21085 installsitelib='$installsitelib'
21086 installsiteman1dir='$installsiteman1dir'
21087 installsiteman3dir='$installsiteman3dir'
21088 installsitescript='$installsitescript'
21089 installstyle='$installstyle'
21090 installusrbinperl='$installusrbinperl'
21091 installvendorarch='$installvendorarch'
21092 installvendorbin='$installvendorbin'
21093 installvendorhtml1dir='$installvendorhtml1dir'
21094 installvendorhtml3dir='$installvendorhtml3dir'
21095 installvendorlib='$installvendorlib'
21096 installvendorman1dir='$installvendorman1dir'
21097 installvendorman3dir='$installvendorman3dir'
21098 installvendorscript='$installvendorscript'
21099 intsize='$intsize'
21100 issymlink='$issymlink'
21101 ivdformat='$ivdformat'
21102 ivsize='$ivsize'
21103 ivtype='$ivtype'
21104 known_extensions='$known_extensions'
21105 ksh='$ksh'
21106 ld='$ld'
21107 lddlflags='$lddlflags'
21108 ldflags='$ldflags'
21109 ldflags_uselargefiles='$ldflags_uselargefiles'
21110 ldlibpthname='$ldlibpthname'
21111 less='$less'
21112 lib_ext='$lib_ext'
21113 libc='$libc'
21114 libperl='$libperl'
21115 libpth='$libpth'
21116 libs='$libs'
21117 libsdirs='$libsdirs'
21118 libsfiles='$libsfiles'
21119 libsfound='$libsfound'
21120 libspath='$libspath'
21121 libswanted='$libswanted'
21122 libswanted_uselargefiles='$libswanted_uselargefiles'
21123 line='$line'
21124 lint='$lint'
21125 lkflags='$lkflags'
21126 ln='$ln'
21127 lns='$lns'
21128 localtime_r_proto='$localtime_r_proto'
21129 locincpth='$locincpth'
21130 loclibpth='$loclibpth'
21131 longdblsize='$longdblsize'
21132 longlongsize='$longlongsize'
21133 longsize='$longsize'
21134 lp='$lp'
21135 lpr='$lpr'
21136 ls='$ls'
21137 lseeksize='$lseeksize'
21138 lseektype='$lseektype'
21139 mail='$mail'
21140 mailx='$mailx'
21141 make='$make'
21142 make_set_make='$make_set_make'
21143 mallocobj='$mallocobj'
21144 mallocsrc='$mallocsrc'
21145 malloctype='$malloctype'
21146 man1dir='$man1dir'
21147 man1direxp='$man1direxp'
21148 man1ext='$man1ext'
21149 man3dir='$man3dir'
21150 man3direxp='$man3direxp'
21151 man3ext='$man3ext'
21152 mips_type='$mips_type'
21153 mistrustnm='$mistrustnm'
21154 mkdir='$mkdir'
21155 mmaptype='$mmaptype'
21156 modetype='$modetype'
21157 more='$more'
21158 multiarch='$multiarch'
21159 mv='$mv'
21160 myarchname='$myarchname'
21161 mydomain='$mydomain'
21162 myhostname='$myhostname'
21163 myuname='$myuname'
21164 n='$n'
21165 need_va_copy='$need_va_copy'
21166 netdb_hlen_type='$netdb_hlen_type'
21167 netdb_host_type='$netdb_host_type'
21168 netdb_name_type='$netdb_name_type'
21169 netdb_net_type='$netdb_net_type'
21170 nm='$nm'
21171 nm_opt='$nm_opt'
21172 nm_so_opt='$nm_so_opt'
21173 nonxs_ext='$nonxs_ext'
21174 nroff='$nroff'
21175 nvEUformat='$nvEUformat'
21176 nvFUformat='$nvFUformat'
21177 nvGUformat='$nvGUformat'
21178 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21179 nveformat='$nveformat'
21180 nvfformat='$nvfformat'
21181 nvgformat='$nvgformat'
21182 nvsize='$nvsize'
21183 nvtype='$nvtype'
21184 o_nonblock='$o_nonblock'
21185 obj_ext='$obj_ext'
21186 old_pthread_create_joinable='$old_pthread_create_joinable'
21187 optimize='$optimize'
21188 orderlib='$orderlib'
21189 osname='$osname'
21190 osvers='$osvers'
21191 otherlibdirs='$otherlibdirs'
21192 package='$package'
21193 pager='$pager'
21194 passcat='$passcat'
21195 patchlevel='$patchlevel'
21196 path_sep='$path_sep'
21197 perl5='$perl5'
21198 perl='$perl'
21199 perl_patchlevel='$perl_patchlevel'
21200 perladmin='$perladmin'
21201 perllibs='$perllibs'
21202 perlpath='$perlpath'
21203 pg='$pg'
21204 phostname='$phostname'
21205 pidtype='$pidtype'
21206 plibpth='$plibpth'
21207 pmake='$pmake'
21208 pr='$pr'
21209 prefix='$prefix'
21210 prefixexp='$prefixexp'
21211 privlib='$privlib'
21212 privlibexp='$privlibexp'
21213 procselfexe='$procselfexe'
21214 prototype='$prototype'
21215 ptrsize='$ptrsize'
21216 quadkind='$quadkind'
21217 quadtype='$quadtype'
21218 randbits='$randbits'
21219 randfunc='$randfunc'
21220 random_r_proto='$random_r_proto'
21221 randseedtype='$randseedtype'
21222 ranlib='$ranlib'
21223 rd_nodata='$rd_nodata'
21224 readdir64_r_proto='$readdir64_r_proto'
21225 readdir_r_proto='$readdir_r_proto'
21226 revision='$revision'
21227 rm='$rm'
21228 rmail='$rmail'
21229 run='$run'
21230 runnm='$runnm'
21231 sPRIEUldbl='$sPRIEUldbl'
21232 sPRIFUldbl='$sPRIFUldbl'
21233 sPRIGUldbl='$sPRIGUldbl'
21234 sPRIXU64='$sPRIXU64'
21235 sPRId64='$sPRId64'
21236 sPRIeldbl='$sPRIeldbl'
21237 sPRIfldbl='$sPRIfldbl'
21238 sPRIgldbl='$sPRIgldbl'
21239 sPRIi64='$sPRIi64'
21240 sPRIo64='$sPRIo64'
21241 sPRIu64='$sPRIu64'
21242 sPRIx64='$sPRIx64'
21243 sSCNfldbl='$sSCNfldbl'
21244 sched_yield='$sched_yield'
21245 scriptdir='$scriptdir'
21246 scriptdirexp='$scriptdirexp'
21247 sed='$sed'
21248 seedfunc='$seedfunc'
21249 selectminbits='$selectminbits'
21250 selecttype='$selecttype'
21251 sendmail='$sendmail'
21252 setgrent_r_proto='$setgrent_r_proto'
21253 sethostent_r_proto='$sethostent_r_proto'
21254 setlocale_r_proto='$setlocale_r_proto'
21255 setnetent_r_proto='$setnetent_r_proto'
21256 setprotoent_r_proto='$setprotoent_r_proto'
21257 setpwent_r_proto='$setpwent_r_proto'
21258 setservent_r_proto='$setservent_r_proto'
21259 sh='$sh'
21260 shar='$shar'
21261 sharpbang='$sharpbang'
21262 shmattype='$shmattype'
21263 shortsize='$shortsize'
21264 shrpenv='$shrpenv'
21265 shsharp='$shsharp'
21266 sig_count='$sig_count'
21267 sig_name='$sig_name'
21268 sig_name_init='$sig_name_init'
21269 sig_num='$sig_num'
21270 sig_num_init='$sig_num_init'
21271 sig_size='$sig_size'
21272 signal_t='$signal_t'
21273 sitearch='$sitearch'
21274 sitearchexp='$sitearchexp'
21275 sitebin='$sitebin'
21276 sitebinexp='$sitebinexp'
21277 sitehtml1dir='$sitehtml1dir'
21278 sitehtml1direxp='$sitehtml1direxp'
21279 sitehtml3dir='$sitehtml3dir'
21280 sitehtml3direxp='$sitehtml3direxp'
21281 sitelib='$sitelib'
21282 sitelib_stem='$sitelib_stem'
21283 sitelibexp='$sitelibexp'
21284 siteman1dir='$siteman1dir'
21285 siteman1direxp='$siteman1direxp'
21286 siteman3dir='$siteman3dir'
21287 siteman3direxp='$siteman3direxp'
21288 siteprefix='$siteprefix'
21289 siteprefixexp='$siteprefixexp'
21290 sitescript='$sitescript'
21291 sitescriptexp='$sitescriptexp'
21292 sizesize='$sizesize'
21293 sizetype='$sizetype'
21294 sleep='$sleep'
21295 smail='$smail'
21296 so='$so'
21297 sockethdr='$sockethdr'
21298 socketlib='$socketlib'
21299 socksizetype='$socksizetype'
21300 sort='$sort'
21301 spackage='$spackage'
21302 spitshell='$spitshell'
21303 srand48_r_proto='$srand48_r_proto'
21304 srandom_r_proto='$srandom_r_proto'
21305 src='$src'
21306 ssizetype='$ssizetype'
21307 startperl='$startperl'
21308 startsh='$startsh'
21309 static_ext='$static_ext'
21310 stdchar='$stdchar'
21311 stdio_base='$stdio_base'
21312 stdio_bufsiz='$stdio_bufsiz'
21313 stdio_cnt='$stdio_cnt'
21314 stdio_filbuf='$stdio_filbuf'
21315 stdio_ptr='$stdio_ptr'
21316 stdio_stream_array='$stdio_stream_array'
21317 strerror_r_proto='$strerror_r_proto'
21318 strings='$strings'
21319 submit='$submit'
21320 subversion='$subversion'
21321 sysman='$sysman'
21322 tail='$tail'
21323 tar='$tar'
21324 targetarch='$targetarch'
21325 tbl='$tbl'
21326 tee='$tee'
21327 test='$test'
21328 timeincl='$timeincl'
21329 timetype='$timetype'
21330 tmpnam_r_proto='$tmpnam_r_proto'
21331 to='$to'
21332 touch='$touch'
21333 tr='$tr'
21334 trnl='$trnl'
21335 troff='$troff'
21336 ttyname_r_proto='$ttyname_r_proto'
21337 u16size='$u16size'
21338 u16type='$u16type'
21339 u32size='$u32size'
21340 u32type='$u32type'
21341 u64size='$u64size'
21342 u64type='$u64type'
21343 u8size='$u8size'
21344 u8type='$u8type'
21345 uidformat='$uidformat'
21346 uidsign='$uidsign'
21347 uidsize='$uidsize'
21348 uidtype='$uidtype'
21349 uname='$uname'
21350 uniq='$uniq'
21351 uquadtype='$uquadtype'
21352 use5005threads='$use5005threads'
21353 use64bitall='$use64bitall'
21354 use64bitint='$use64bitint'
21355 usecrosscompile='$usecrosscompile'
21356 usedl='$usedl'
21357 usefaststdio='$usefaststdio'
21358 useithreads='$useithreads'
21359 uselargefiles='$uselargefiles'
21360 uselongdouble='$uselongdouble'
21361 usemorebits='$usemorebits'
21362 usemultiplicity='$usemultiplicity'
21363 usemymalloc='$usemymalloc'
21364 usenm='$usenm'
21365 useopcode='$useopcode'
21366 useperlio='$useperlio'
21367 useposix='$useposix'
21368 usereentrant='$usereentrant'
21369 usesfio='$usesfio'
21370 useshrplib='$useshrplib'
21371 usesocks='$usesocks'
21372 usethreads='$usethreads'
21373 usevendorprefix='$usevendorprefix'
21374 usevfork='$usevfork'
21375 usrinc='$usrinc'
21376 uuname='$uuname'
21377 uvXUformat='$uvXUformat'
21378 uvoformat='$uvoformat'
21379 uvsize='$uvsize'
21380 uvtype='$uvtype'
21381 uvuformat='$uvuformat'
21382 uvxformat='$uvxformat'
21383 vendorarch='$vendorarch'
21384 vendorarchexp='$vendorarchexp'
21385 vendorbin='$vendorbin'
21386 vendorbinexp='$vendorbinexp'
21387 vendorhtml1dir='$vendorhtml1dir'
21388 vendorhtml1direxp='$vendorhtml1direxp'
21389 vendorhtml3dir='$vendorhtml3dir'
21390 vendorhtml3direxp='$vendorhtml3direxp'
21391 vendorlib='$vendorlib'
21392 vendorlib_stem='$vendorlib_stem'
21393 vendorlibexp='$vendorlibexp'
21394 vendorman1dir='$vendorman1dir'
21395 vendorman1direxp='$vendorman1direxp'
21396 vendorman3dir='$vendorman3dir'
21397 vendorman3direxp='$vendorman3direxp'
21398 vendorprefix='$vendorprefix'
21399 vendorprefixexp='$vendorprefixexp'
21400 vendorscript='$vendorscript'
21401 vendorscriptexp='$vendorscriptexp'
21402 version='$version'
21403 version_patchlevel_string='$version_patchlevel_string'
21404 versiononly='$versiononly'
21405 vi='$vi'
21406 voidflags='$voidflags'
21407 xlibpth='$xlibpth'
21408 yacc='$yacc'
21409 yaccflags='$yaccflags'
21410 zcat='$zcat'
21411 zip='$zip'
21412 EOT
21413
21414 : Add in command line options if available
21415 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21416
21417 : add special variables
21418 $test -f $src/patchlevel.h && \
21419 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21420 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21421 echo "PERL_CONFIG_SH=true" >>config.sh
21422
21423 : propagate old symbols
21424 if $test -f UU/config.sh; then
21425         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21426         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21427         $sort | $uniq -u >UU/oldsyms
21428         set X `cat UU/oldsyms`
21429         shift
21430         case $# in
21431         0) ;;
21432         *)
21433                 cat <<EOM
21434 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21435 EOM
21436                 echo "# Variables propagated from previous config.sh file." >>config.sh
21437                 for sym in `cat UU/oldsyms`; do
21438                         echo "    Propagating $hint variable "'$'"$sym..."
21439                         eval 'tmp="$'"${sym}"'"'
21440                         echo "$tmp" | \
21441                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21442                 done
21443                 ;;
21444         esac
21445 fi
21446
21447 : Finish up by extracting the .SH files
21448 case "$alldone" in
21449 exit)
21450         $rm -rf UU
21451         echo "Extraction done."
21452         exit 0
21453         ;;
21454 cont)
21455         ;;
21456 '')
21457         dflt=''
21458         nostick=true
21459         $cat <<EOM
21460
21461 If you'd like to make any changes to the config.sh file before I begin
21462 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21463
21464 EOM
21465         rp="Press return or use a shell escape to edit config.sh:"
21466         . UU/myread
21467         nostick=''
21468         case "$ans" in
21469         '') ;;
21470         *) : in case they cannot read
21471                 sh 1>&4 -c "$ans";;
21472         esac
21473         ;;
21474 esac
21475
21476 : if this fails, just run all the .SH files by hand
21477 . ./config.sh
21478
21479 echo " "
21480 exec 1>&4
21481 pwd=`pwd`
21482 . ./UU/extract
21483 cd "$pwd"
21484
21485 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21486         dflt=y
21487         case "$silent" in
21488         true) ;;
21489         *)
21490                 $cat <<EOM
21491
21492 Now you need to generate make dependencies by running "$make depend".
21493 You might prefer to run it in background: "$make depend > makedepend.out &"
21494 It can take a while, so you might not want to run it right now.
21495
21496 EOM
21497                 ;;
21498         esac
21499         rp="Run $make depend now?"
21500         . UU/myread
21501         case "$ans" in
21502         y*)
21503                 $make depend && echo "Now you must run '$make'."
21504                 ;;
21505         *)
21506                 echo "You must run '$make depend' then '$make'."
21507                 ;;
21508         esac
21509 elif test -f [Mm]akefile; then
21510         echo " "
21511         echo "Now you must run a $make."
21512 else
21513         echo "Configure done."
21514 fi
21515
21516 if $test -f Policy.sh; then
21517     $cat <<EOM
21518
21519 If you compile $package on a different machine or from a different object
21520 directory, copy the Policy.sh file from this object directory to the
21521 new one before you run Configure -- this will help you with most of
21522 the policy defaults.
21523
21524 EOM
21525 fi
21526 if $test -f config.msg; then
21527     echo "Hmm.  I also noted the following information while running:"
21528     echo " "
21529     $cat config.msg >&4
21530     $rm -f config.msg
21531 fi
21532 $rm -f kit*isdone ark*isdone
21533 $rm -rf UU
21534
21535 : End of Configure
21536